fix(userModuleAccess): small return fixes

This commit is contained in:
Matthieu Haineault 2025-11-28 10:01:59 -05:00
parent 42060ad9b4
commit f499abbb78
4 changed files with 26 additions and 11 deletions

View File

@ -1,6 +1,5 @@
import { DisplayLanguage, PreferencesDto } from "../dtos/preferences.dto"; import { DisplayLanguage, PreferencesDto } from "../dtos/preferences.dto";
import { PrismaService } from "src/prisma/prisma.service"; import { PrismaService } from "src/prisma/prisma.service";
import { Preferences } from "@prisma/client";
import { Injectable } from "@nestjs/common"; import { Injectable } from "@nestjs/common";
import { Result } from "src/common/errors/result-error.factory"; import { Result } from "src/common/errors/result-error.factory";
import { EmailToIdResolver } from "src/common/mappers/email-id.mapper"; import { EmailToIdResolver } from "src/common/mappers/email-id.mapper";

View File

@ -5,6 +5,6 @@ export class ModuleAccess {
@IsBoolean() timesheets_approval!: boolean; @IsBoolean() timesheets_approval!: boolean;
@IsBoolean() employee_list!: boolean; @IsBoolean() employee_list!: boolean;
@IsBoolean() employee_management!: boolean; @IsBoolean() employee_management!: boolean;
@IsBoolean() personnal_profile!: boolean; @IsBoolean() personal_profile!: boolean;
@IsBoolean() dashboard!: boolean; @IsBoolean() dashboard!: boolean;
} }

View File

@ -34,7 +34,7 @@ export class AccessGetService {
timesheets_approval: access.timesheets_approval, timesheets_approval: access.timesheets_approval,
employee_list: access.employee_list, employee_list: access.employee_list,
employee_management: access.employee_management, employee_management: access.employee_management,
personnal_profile: access.personal_profile, personal_profile: access.personal_profile,
dashboard: access.dashboard, dashboard: access.dashboard,
}; };
return { success: true, data: granted_access } return { success: true, data: granted_access }

View File

@ -11,7 +11,7 @@ export class AccessUpdateService {
private readonly emailResolver: EmailToIdResolver, private readonly emailResolver: EmailToIdResolver,
) { } ) { }
async updateModuleAccess(email: string, dto: ModuleAccess, employee_email?: string): Promise<Result<boolean, string>> { async updateModuleAccess(email: string, dto: ModuleAccess, employee_email?: string): Promise<Result<ModuleAccess, string>> {
const account_email = employee_email ?? email; const account_email = employee_email ?? email;
const user_id = await this.emailResolver.resolveUserIdWithEmail(account_email); const user_id = await this.emailResolver.resolveUserIdWithEmail(account_email);
if (!user_id.success) return { success: false, error: 'EMPLOYEE_NOT_FOUND' }; if (!user_id.success) return { success: false, error: 'EMPLOYEE_NOT_FOUND' };
@ -30,21 +30,29 @@ export class AccessUpdateService {
}); });
if (!orignal_access) return { success: false, error: 'MODULE_ACCESS_NOT_FOUND' }; if (!orignal_access) return { success: false, error: 'MODULE_ACCESS_NOT_FOUND' };
await this.prisma.userModuleAccess.update({ const updated_access:ModuleAccess = await this.prisma.userModuleAccess.update({
where: { id: orignal_access.id }, where: { id: orignal_access.id },
data: { data: {
timesheets: dto.timesheets, timesheets: dto.timesheets,
timesheets_approval: dto.timesheets_approval, timesheets_approval: dto.timesheets_approval,
employee_list: dto.employee_list, employee_list: dto.employee_list,
employee_management: dto.employee_management, employee_management: dto.employee_management,
personal_profile: dto.personnal_profile, personal_profile: dto.personal_profile,
dashboard: dto.dashboard, dashboard: dto.dashboard,
},
select: {
timesheets: true,
timesheets_approval: true,
employee_list: true,
employee_management: true,
personal_profile: true,
dashboard: true,
} }
}) })
return { success: true, data: true }; return { success: true, data: updated_access };
} }
async revokeModuleAccess(email: string, employee_email?: string): Promise<Result<boolean, string>> { async revokeModuleAccess(email: string, employee_email?: string): Promise<Result<ModuleAccess, string>> {
const account_email = employee_email ?? email; const account_email = employee_email ?? email;
const user_id = await this.emailResolver.resolveUserIdWithEmail(account_email); const user_id = await this.emailResolver.resolveUserIdWithEmail(account_email);
if (!user_id.success) return { success: false, error: 'EMPLOYEE_NOT_FOUND' }; if (!user_id.success) return { success: false, error: 'EMPLOYEE_NOT_FOUND' };
@ -55,7 +63,7 @@ export class AccessUpdateService {
}); });
if (!access) return { success: false, error: 'MODULE_ACCESS_NOT_FOUND' }; if (!access) return { success: false, error: 'MODULE_ACCESS_NOT_FOUND' };
await this.prisma.userModuleAccess.update({ const revoked_access: ModuleAccess = await this.prisma.userModuleAccess.update({
where: { id: access.id }, where: { id: access.id },
data: { data: {
timesheets: false, timesheets: false,
@ -63,10 +71,18 @@ export class AccessUpdateService {
employee_list: false, employee_list: false,
employee_management: false, employee_management: false,
personal_profile: false, personal_profile: false,
dashboard: true, dashboard: false,
}, },
select: {
timesheets: true,
timesheets_approval: true,
employee_list: true,
employee_management: true,
personal_profile: true,
dashboard: true,
}
}); });
return { success: true, data: true }; return { success: true, data: revoked_access };
} }
} }