feat: add DCB User Service API - Authentication system with KEYCLOAK - Modular architecture with services for each feature

This commit is contained in:
diallolatoile 2025-12-04 20:49:34 +00:00
parent 822d349ffc
commit 7f26a4bdea
2 changed files with 0 additions and 141 deletions

View File

@ -229,10 +229,6 @@
@if (showUserTypeColumn()) { @if (showUserTypeColumn()) {
<th>Type</th> <th>Type</th>
} }
<!-- Colonne Merchant Partner pour la vue admin -->
@if (showMerchantPartnerColumn()) {
<th>Merchant Partner</th>
}
<th (click)="sort('username')" class="cursor-pointer"> <th (click)="sort('username')" class="cursor-pointer">
<div class="d-flex align-items-center"> <div class="d-flex align-items-center">
<span>Utilisateur</span> <span>Utilisateur</span>
@ -272,25 +268,6 @@
</span> </span>
</td> </td>
} }
<!-- Colonne Merchant Partner pour la vue admin -->
@if (showMerchantPartnerColumn()) {
<td>
@if (user.merchantPartnerId) {
<div class="d-flex align-items-center">
<div class="avatar-sm bg-secondary bg-opacity-10 rounded-circle d-flex align-items-center justify-content-center me-2">
<ng-icon name="lucideBuilding" class="text-secondary fs-12"></ng-icon>
</div>
<div>
<small class="text-muted font-monospace" [title]="user.merchantPartnerId">
{{ user.merchantPartnerId.substring(0, 8) }}...
</small>
</div>
</div>
} @else {
<span class="text-muted">-</span>
}
</td>
}
<td> <td>
<div class="d-flex align-items-center"> <div class="d-flex align-items-center">
<div class="avatar-sm bg-primary bg-opacity-10 rounded-circle d-flex align-items-center justify-content-center me-2"> <div class="avatar-sm bg-primary bg-opacity-10 rounded-circle d-flex align-items-center justify-content-center me-2">

View File

@ -316,121 +316,6 @@
</div> </div>
</div> </div>
<!-- Informations de base du marchand (seulement pour DCB_PARTNER) -->
@if (newUser.role === UserRole.DCB_PARTNER) {
<div class="col-12 mt-4">
<h6 class="border-bottom pb-2">
<ng-icon name="lucideStore" class="me-2"></ng-icon>
Informations de base du marchand
</h6>
</div>
<div class="col-md-6">
<label class="form-label">
Nom du marchand <span class="text-danger">*</span>
</label>
<input
type="text"
class="form-control"
placeholder="Ex: Boutique ABC"
[(ngModel)]="newMerchant.name"
name="merchantName"
required
[disabled]="creatingUser"
#merchantName="ngModel"
>
@if (merchantName.invalid && merchantName.touched) {
<div class="text-danger small">
Le nom du marchand est requis
</div>
}
</div>
<div class="col-md-6">
<label class="form-label">Logo URL</label>
<input
type="text"
class="form-control"
placeholder="https://exemple.com/logo.png"
[(ngModel)]="newMerchant.logo"
name="merchantLogo"
[disabled]="creatingUser"
>
</div>
<div class="col-12">
<label class="form-label">Description</label>
<textarea
class="form-control"
placeholder="Description du marchand"
[(ngModel)]="newMerchant.description"
name="merchantDescription"
[disabled]="creatingUser"
rows="2"
></textarea>
</div>
<div class="col-md-6">
<label class="form-label">
Adresse <span class="text-danger">*</span>
</label>
<input
type="text"
class="form-control"
placeholder="Adresse complète"
[(ngModel)]="newMerchant.adresse"
name="merchantAdresse"
required
[disabled]="creatingUser"
#merchantAdresse="ngModel"
>
@if (merchantAdresse.invalid && merchantAdresse.touched) {
<div class="text-danger small">
L'adresse est requise
</div>
}
</div>
<div class="col-md-6">
<label class="form-label">
Téléphone <span class="text-danger">*</span>
</label>
<input
type="text"
class="form-control"
placeholder="+XX X XX XX XX XX"
[(ngModel)]="newMerchant.phone"
name="merchantPhone"
required
[disabled]="creatingUser"
#merchantPhone="ngModel"
>
@if (merchantPhone.invalid && merchantPhone.touched) {
<div class="text-danger small">
Le téléphone est requis
</div>
}
</div>
}
<!-- Avertissement pour les non-DCB_PARTNER -->
@if (!canManageRoles) {
<div class="col-12">
<div class="alert alert-warning">
<div class="d-flex align-items-center">
<ng-icon name="lucideInfo" class="me-2"></ng-icon>
<div>
<small>
<strong>Permissions limitées :</strong>
Vous ne pouvez créer que des utilisateurs avec des rôles spécifiques.
Seul un <strong>DCB Partner</strong> peut attribuer tous les rôles.
</small>
</div>
</div>
</div>
</div>
}
@if (newUser.role) { @if (newUser.role) {
<div class="col-12"> <div class="col-12">
<div class="alert alert-info"> <div class="alert alert-info">
@ -498,9 +383,6 @@
• Type d'utilisateur : HUB<br> • Type d'utilisateur : HUB<br>
• Créé par : Utilisateur courant<br> • Créé par : Utilisateur courant<br>
• Votre rôle : {{ currentUserRole || 'Non défini' }} • Votre rôle : {{ currentUserRole || 'Non défini' }}
@if (newUser.role === UserRole.DCB_PARTNER) {
<br>• Un marchand sera créé avec cet utilisateur
}
</small> </small>
</div> </div>
</div> </div>