feat: Implement cuser management with role updates, activation, and deactivation.

This commit is contained in:
JakkrapartXD 2026-01-15 15:26:30 +07:00
parent a59b144ebf
commit 1caeac6226
5 changed files with 100 additions and 18 deletions

View file

@ -6,7 +6,6 @@ import jwt from 'jsonwebtoken';
import {
ListUsersResponse,
GetUserResponse,
ActivateAccount,
UpdateUser,
UpdateRoleResponse,
DeactivateAccountResponse,
@ -58,6 +57,48 @@ export class UserManagementService {
}
}
async updateUserRole(id: number, role_id: number): Promise<UpdateRoleResponse> {
try {
const user = await prisma.user.findUnique({ where: { id } });
if (!user) throw new UnauthorizedError('User not found');
const role = await prisma.role.findUnique({ where: { id: role_id } });
if (!role) throw new UnauthorizedError('Role not found');
await prisma.user.update({
where: { id },
data: { role_id }
});
return {
code: 200,
message: 'User role updated successfully'
};
} catch (error) {
logger.error('Failed to update user role', { error });
throw error;
}
}
async deleteUser(id: number): Promise<DeactivateAccountResponse> {
try {
const user = await prisma.user.findUnique({ where: { id } });
if (!user) throw new UnauthorizedError('User not found');
await prisma.user.update({
where: { id },
data: { is_deactivated: true }
});
return {
code: 200,
message: 'User deactivated successfully'
};
} catch (error) {
logger.error('Failed to deactivate user', { error });
throw error;
}
}
async deactivateAccount(token: string): Promise<DeactivateAccountResponse> {
try {
// Decode JWT token to get user ID