251211:1314 Frontend: reeactor Admin panel
Some checks failed
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:
admin
2025-12-11 13:14:15 +07:00
parent c8a0f281ef
commit 3fa28bd14f
79 changed files with 6571 additions and 206 deletions

View File

@@ -203,13 +203,39 @@ export class UserService {
// --- Roles & Permissions (Helper for Admin/UI) ---
async findAllRoles(): Promise<Role[]> {
return this.roleRepository.find();
return this.roleRepository.find({ relations: ['permissions'] });
}
async findAllPermissions(): Promise<Permission[]> {
return this.permissionRepository.find();
}
async updateRolePermissions(roleId: number, permissionIds: number[]) {
const role = await this.roleRepository.findOne({
where: { roleId },
relations: ['permissions'],
});
if (!role) {
throw new NotFoundException(`Role ID ${roleId} not found`);
}
// Load permissions entities
const permissions = [];
if (permissionIds.length > 0) {
// Note: findByIds is deprecated in newer TypeORM, uses In() instead
// but if current version supports it or using a simplified query:
const perms = await this.permissionRepository
.createQueryBuilder('p')
.where('p.permissionId IN (:...ids)', { ids: permissionIds })
.getMany();
permissions.push(...perms);
}
role.permissions = permissions;
return this.roleRepository.save(role);
}
/**
* Helper สำหรับล้าง Cache เมื่อมีการเปลี่ยนแปลงสิทธิ์หรือบทบาท
*/