46 lines
1.5 KiB
JavaScript
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 }, {});
|
|
}
|
|
};
|