251208:0010 Backend & Frontend Debug
Spec Validation / validate-markdown (push) Has been cancelled
Spec Validation / validate-diagrams (push) Has been cancelled
Spec Validation / check-todos (push) Has been cancelled

This commit is contained in:
2025-12-08 00:10:37 +07:00
parent 32d820ea6b
commit dcd126d704
99 changed files with 2775 additions and 1480 deletions
+29 -9
View File
@@ -1,45 +1,54 @@
import { DataSource } from 'typeorm';
import { User } from '../../modules/users/entities/user.entity';
import { Role } from '../../modules/auth/entities/role.entity';
import { User } from '../../modules/user/entities/user.entity';
import { Role, RoleScope } from '../../modules/user/entities/role.entity';
import { UserAssignment } from '../../modules/user/entities/user-assignment.entity';
import * as bcrypt from 'bcrypt';
export async function seedUsers(dataSource: DataSource) {
const userRepo = dataSource.getRepository(User);
const roleRepo = dataSource.getRepository(Role);
const assignmentRepo = dataSource.getRepository(UserAssignment);
// Create Roles
const rolesData = [
{
roleName: 'Superadmin',
scope: RoleScope.GLOBAL,
description:
'ผู้ดูแลระบบสูงสุด: สามารถทำทุกอย่างในระบบ, จัดการองค์กร, และจัดการข้อมูลหลักระดับ Global',
},
{
roleName: 'Org Admin',
scope: RoleScope.ORGANIZATION,
description:
'ผู้ดูแลองค์กร: จัดการผู้ใช้ในองค์กร, จัดการบทบาท / สิทธิ์ภายในองค์กร, และดูรายงานขององค์กร',
},
{
roleName: 'Document Control',
scope: RoleScope.ORGANIZATION,
description:
'ควบคุมเอกสารขององค์กร: เพิ่ม / แก้ไข / ลบเอกสาร, และกำหนดสิทธิ์เอกสารภายในองค์กร',
},
{
roleName: 'Editor',
scope: RoleScope.PROJECT,
description:
'ผู้แก้ไขเอกสารขององค์กร: เพิ่ม / แก้ไขเอกสารที่ได้รับมอบหมาย',
},
{
roleName: 'Viewer',
scope: RoleScope.PROJECT,
description: 'ผู้ดูเอกสารขององค์กร: ดูเอกสารที่มีสิทธิ์เข้าถึงเท่านั้น',
},
{
roleName: 'Project Manager',
scope: RoleScope.PROJECT,
description:
'ผู้จัดการโครงการ: จัดการสมาชิกในโครงการ, สร้าง / จัดการสัญญาในโครงการ, และดูรายงานโครงการ',
},
{
roleName: 'Contract Admin',
scope: RoleScope.CONTRACT,
description:
'ผู้ดูแลสัญญา: จัดการสมาชิกในสัญญา, สร้าง / จัดการข้อมูลหลักเฉพาะสัญญา, และอนุมัติเอกสารในสัญญา',
},
@@ -49,6 +58,7 @@ export async function seedUsers(dataSource: DataSource) {
for (const r of rolesData) {
let role = await roleRepo.findOneBy({ roleName: r.roleName });
if (!role) {
// @ts-ignore
role = await roleRepo.save(roleRepo.create(r));
}
roleMap.set(r.roleName, role);
@@ -87,20 +97,30 @@ export async function seedUsers(dataSource: DataSource) {
];
const salt = await bcrypt.genSalt();
const passwordHash = await bcrypt.hash('password123', salt); // Default password
const password = await bcrypt.hash('password123', salt); // Default password
for (const u of usersData) {
const exists = await userRepo.findOneBy({ username: u.username });
if (!exists) {
const user = userRepo.create({
let user = await userRepo.findOneBy({ username: u.username });
if (!user) {
user = userRepo.create({
username: u.username,
email: u.email,
firstName: u.firstName,
lastName: u.lastName,
passwordHash,
roles: [roleMap.get(u.roleName)],
password, // Fixed: password instead of passwordHash
});
await userRepo.save(user);
user = await userRepo.save(user);
// Create Assignment
const role = roleMap.get(u.roleName);
if (role) {
const assignment = assignmentRepo.create({
user,
role,
assignedAt: new Date(),
});
await assignmentRepo.save(assignment);
}
}
}
}