Files
bowlingManager/backend/seeders/20250423-init-admin-user.js
2025-04-24 12:01:51 +09:00

46 lines
1.5 KiB
JavaScript

'use strict';
const bcrypt = require('bcrypt');
module.exports = {
async up (queryInterface, Sequelize) {
// 환경변수 기반으로 관리자 계정 생성
const adminEmail = process.env.ADMIN_EMAIL;
const adminPassword = process.env.ADMIN_PASSWORD;
const adminName = process.env.ADMIN_NAME;
const adminUsername = process.env.ADMIN_USERNAME;
// 이미 존재하는지 체크
const [results] = await queryInterface.sequelize.query(
`SELECT id FROM Users WHERE email = :email LIMIT 1`,
{ replacements: { email: adminEmail } }
);
if (results.length > 0) return;
const salt = await bcrypt.genSalt(10);
const hashedPassword = await bcrypt.hash(adminPassword, salt);
await queryInterface.bulkInsert('Users', [{
username: adminUsername,
name: adminName,
email: adminEmail,
password: hashedPassword,
role: 'admin',
status: 'active',
createdAt: new Date(),
updatedAt: new Date()
}], {});
},
async down (queryInterface, Sequelize) {
const adminEmail = process.env.ADMIN_EMAIL;
// 먼저 ActivityLogs에서 admin 유저의 로그를 삭제
const [results] = await queryInterface.sequelize.query(
`SELECT id FROM Users WHERE email = :email LIMIT 1`,
{ replacements: { email: adminEmail } }
);
if (results.length > 0) {
const adminId = results[0].id;
await queryInterface.bulkDelete('ActivityLogs', { userId: adminId }, {});
}
await queryInterface.bulkDelete('Users', { email: adminEmail }, {});
}
};