added comment to validation

This commit is contained in:
sdraris 2025-09-15 12:14:10 +02:00
parent 31fc17fd40
commit dc0e62bac3
2 changed files with 26 additions and 6 deletions

View File

@ -57,14 +57,18 @@ export class UserController {
}
@Patch(':id/valider')
@Roles(RoleType.SUPER_ADMIN, RoleType.GESTIONNAIRE)
@Roles(RoleType.SUPER_ADMIN, RoleType.GESTIONNAIRE, RoleType.ADMINISTRATEUR)
@ApiOperation({ summary: 'Valider un compte utilisateur' })
@ApiParam({ name: 'id', description: "UUID de l'utilisateur" })
@ApiResponse({ status: 400, description: 'ID invalide' })
@ApiResponse({ status: 403, description: 'Accès refusé' })
@ApiResponse({ status: 200, description: 'Compte validé avec succès' })
validerUtilisateur(
@Param('id') id: string,
@User() currentUser: Users
@User() currentUser: Users,
@Body('comment') comment?: string,
) {
return this.userService.validateUser(id, currentUser);
return this.userService.validateUser(id, currentUser, comment);
}

View File

@ -5,12 +5,16 @@ import { Repository } from "typeorm";
import { CreateUserDto } from "./dto/create_user.dto";
import { UpdateUserDto } from "./dto/update_user.dto";
import * as bcrypt from 'bcrypt';
import { StatutValidationType, Validation } from "src/entities/validations.entity";
@Injectable()
export class UserService {
constructor(
@InjectRepository(Users)
private readonly usersRepository: Repository<Users>
private readonly usersRepository: Repository<Users>,
@InjectRepository(Validation)
private readonly validationRepository: Repository<Validation>
) { }
// Création utilisateur
@ -102,14 +106,26 @@ export class UserService {
return this.usersRepository.save(user);
}
async validateUser(user_id: string, currentUser: Users): Promise<Users> {
async validateUser(user_id: string, currentUser: Users, comment?: string): Promise<Users> {
if (![RoleType.SUPER_ADMIN, RoleType.ADMINISTRATEUR, RoleType.GESTIONNAIRE].includes(currentUser.role)) {
throw new ForbiddenException('Accès réservé aux super admins, administrateurs et gestionnaires');
}
const user = await this.usersRepository.findOne({ where: { id: user_id } });
if (!user) throw new NotFoundException('Utilisateur introuvable');
user.statut = StatutUtilisateurType.ACTIF;
return this.usersRepository.save(user);
const savedUser = await this.usersRepository.save(user);
const validation = this.validationRepository.create({
user: savedUser,
type: 'validation_compte',
status: StatutValidationType.VALIDE,
validated_by: currentUser,
comment
});
await this.validationRepository.save(validation);
return savedUser;
}
async remove(id: string): Promise<void> {