diff --git a/src/frontend/app/administration/home/administration.component.ts b/src/frontend/app/administration/home/administration.component.ts index 507725d33833c995519fc8a94d27bc2d8dc52249..d70c8338e2406ec3acf2c08793facf415628afdc 100644 --- a/src/frontend/app/administration/home/administration.component.ts +++ b/src/frontend/app/administration/home/administration.component.ts @@ -84,7 +84,7 @@ export class AdministrationComponent implements OnInit, AfterViewInit { } ngAfterViewInit(): void { - if (this.headerService.user.mode === 'root' || this.headerService.user.mode === 'invisible_root') { + if (this.headerService.user.mode === 'root_visible' || this.headerService.user.mode === 'root_invisible') { this.featureTourService.init(); } } diff --git a/src/frontend/app/administration/user/user-administration.component.html b/src/frontend/app/administration/user/user-administration.component.html index 8d3fdcbfd8a6eb8866564cfa4b9818153ce2ebec..552778b6735d8be96b149f975b19669672c8d97a 100755 --- a/src/frontend/app/administration/user/user-administration.component.html +++ b/src/frontend/app/administration/user/user-administration.component.html @@ -215,6 +215,16 @@ {{lang.otherInformations}} </mat-panel-title> </mat-expansion-panel-header> + <div> + <mat-form-field> + <mat-label>{{lang.accountType}}</mat-label> + <mat-select [(ngModel)]="user.mode" id="accountType" name="accountType" [disabled]="headerService.user.mode === 'standard'" required> + <mat-option *ngFor="let mode of adminModes" [value]="mode"> + {{lang[mode]}} + </mat-option> + </mat-select> + </mat-form-field> + </div> <div class="form-group"> <div class="col-sm-12"> <mat-checkbox color="primary" diff --git a/src/frontend/app/administration/user/user-administration.component.ts b/src/frontend/app/administration/user/user-administration.component.ts index f35707155aed52f933b265fbbd98ad87973dce99..f0f73f7c7e5f3f7e99110ecbc0c3e5ba6e7a318c 100755 --- a/src/frontend/app/administration/user/user-administration.component.ts +++ b/src/frontend/app/administration/user/user-administration.component.ts @@ -87,6 +87,10 @@ export class UserAdministrationComponent implements OnInit { canViewPersonalDatas: boolean = false; canManagePersonalDatas: boolean = false; + adminModes: string[] = [ + 'standard', 'root_visible', 'root_invisible' + ]; + @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator; @ViewChild(MatSort, { static: false }) sort: MatSort; diff --git a/src/frontend/app/administration/user/users-administration.component.html b/src/frontend/app/administration/user/users-administration.component.html index b216c5c958b0e8063bbff73743da3cd9c4c2fe77..7c506817117b1ca3418f150154262b557bdd06ab 100755 --- a/src/frontend/app/administration/user/users-administration.component.html +++ b/src/frontend/app/administration/user/users-administration.component.html @@ -95,7 +95,7 @@ <mat-header-cell *matHeaderCellDef> </mat-header-cell> <mat-cell *matCellDef="let element" style="justify-content: flex-end;"> - <button mat-icon-button color="primary" [disabled]="element.user_id==user.user_id" + <button mat-icon-button color="primary" [disabled]="element.id===user.id" *ngIf="element.status != 'SPD'" matTooltip="{{lang.suspend}}" (click)="$event.stopPropagation();deleteUser(element, 'suspend')"> <mat-icon class="fa fa-pause fa-2x" aria-hidden="true"></mat-icon> @@ -105,7 +105,7 @@ (click)="$event.stopPropagation();activateUser(element)"> <mat-icon class="fa fa-check fa-2x" aria-hidden="true"></mat-icon> </button> - <button mat-icon-button color="warn" [disabled]="element.user_id==user.user_id" + <button mat-icon-button color="warn" [disabled]="element.id===user.id || element.mode !== 'standard'" matTooltip="{{lang.delete}}" data-toggle="modal" data-target="#changeDiffListDest" (click)="$event.stopPropagation();deleteUser(element, 'delete')"> <mat-icon class="fa fa-trash-alt fa-2x"></mat-icon> @@ -115,7 +115,7 @@ <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row> <mat-row *matRowDef="let row; columns: displayedColumns;" routerLink="/administration/users/{{row.id}}" style="cursor:pointer;" - matTooltip="{{lang.view}}"></mat-row> + matTooltip="{{lang.view}}" [class.admin]="row.mode !== 'standard'"></mat-row> </mat-table> <div class="mat-paginator" style="min-height:48px;min-height: 48px;display: flex;justify-content: end;align-items: center;padding-right: 20px;"> diff --git a/src/frontend/app/administration/user/users-administration.component.scss b/src/frontend/app/administration/user/users-administration.component.scss index fe089dd18f6f8e436a112b68cad70cedfa41ce4b..2d16ba0e08996a17870cb55d6693e4626c473504 100644 --- a/src/frontend/app/administration/user/users-administration.component.scss +++ b/src/frontend/app/administration/user/users-administration.component.scss @@ -25,3 +25,7 @@ button:disabled{ background-color: #F99830 !important; color: white; } + +.admin { + font-weight: bold; +} \ No newline at end of file diff --git a/src/frontend/app/home/home.component.ts b/src/frontend/app/home/home.component.ts index 498f1de9c273c833564f5ed593d3edabcb161c48..a42630c2ac8b84925f84aa9221930bb62e0716ad 100644 --- a/src/frontend/app/home/home.component.ts +++ b/src/frontend/app/home/home.component.ts @@ -72,7 +72,7 @@ export class HomeComponent implements OnInit, AfterViewInit { } ngAfterViewInit(): void { - if (this.headerService.user.mode === 'root' || this.headerService.user.mode === 'invisible_root') { + if (this.headerService.user.mode === 'root_visible' || this.headerService.user.mode === 'root_invisible') { this.featureTourService.init(); } this.http.get('../rest/home/lastRessources') diff --git a/src/frontend/lang/lang-en.ts b/src/frontend/lang/lang-en.ts index 5ca16acf91358d76813a5f72c81e7a5959d40c98..416db6f415eb4fd67afc1a4dd552b18458702edb 100755 --- a/src/frontend/lang/lang-en.ts +++ b/src/frontend/lang/lang-en.ts @@ -1861,5 +1861,9 @@ export const LANG_EN = { "createScriptTourTitle": "Create the script", "createScriptTourDescription": "Before scheduling the task, we need to create the script.", "updateKO": "Update failed !", - "saveInDocserversInfo": "L'historique de la mise à jour a été sauvegardé dans la zone de stockage <b>migration</b>." + "saveInDocserversInfo": "Update history saved in docserver <b>migration</b>.", + "root_visible": "Administrator", + "root_invisible": "Administrator (invisible)", + "standard": "Default", + "accountType": "Account type" }; \ No newline at end of file diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts index 4e1ccbc7f36890714aa9c002d0e0a473a643bb35..9dffe719e78c3ea08a11dbedefb53274efe14979 100755 --- a/src/frontend/lang/lang-fr.ts +++ b/src/frontend/lang/lang-fr.ts @@ -1852,9 +1852,13 @@ export const LANG_FR = { "notifTour4Title": "Liste des tâches", "notifTour4Description": "La liste de vos <b color=\"primary\">tâches actives</b> apparaît ici", "welcomeTourTitle": "Bienvenue", - "welcomeTourDescription": "Nous allons vous montrer certains points de configuration : <ul><li>Paraméter un <b color=\"primary\">serveur de mail</b></li><li>Configurer votre première <b color=\"primary\">notification</b></li></ul><br/>Pour commencer, cliquez sur <img style=\"width:32px;\" src=\"assets/admin_button.png\"/>", + "welcomeTourDescription": "Nous allons vous montrer certains points de configuration : <ul><li>Paramétrer un <b color=\"primary\">serveur de mail</b></li><li>Configurer votre première <b color=\"primary\">notification</b></li></ul><br/>Pour commencer, cliquez sur <img style=\"width:32px;\" src=\"assets/admin_button.png\"/>", "createScriptTourTitle": "Créer le script", "createScriptTourDescription": "Avant de planifier la tâche, nous devons créer le script.", "updateKO": "Mise à jour échouée !", - "saveInDocserversInfo": "L'historique de la mise à jour a été sauvegardé dans la zone de stockage <b>migration</b>." + "saveInDocserversInfo": "L'historique de la mise à jour a été sauvegardé dans la zone de stockage <b>migration</b>.", + "root_visible": "Administrateur", + "root_invisible": "Administrateur (invisible)", + "standard": "Standard", + "accountType": "Type de compte" }; diff --git a/src/frontend/lang/lang-nl.ts b/src/frontend/lang/lang-nl.ts index 527806d30a351d947b3b9b00209faaf533e80b0a..3b89e28e31f69b1036d31610cdb473abfab2f344 100755 --- a/src/frontend/lang/lang-nl.ts +++ b/src/frontend/lang/lang-nl.ts @@ -1873,5 +1873,9 @@ export const LANG_NL = { "createScriptTourTitle": "Créer le script__TO_TRANSLATE", "createScriptTourDescription": "Avant de planifier la tâche, nous devons créer le script.__TO_TRANSLATE", "updateKO": "Mise à jour échouée !__TO_TRANSLATE", - "saveInDocserversInfo": "L'historique de la mise à jour a été sauvegardé dans la zone de stockage <b>migration</b>.__TO_TRANSLATE" + "saveInDocserversInfo": "L'historique de la mise à jour a été sauvegardé dans la zone de stockage <b>migration</b>.__TO_TRANSLATE", + "root_visible": "Administrateur__TO_TRANSLATE", + "root_invisible": "Administrateur (invisible)__TO_TRANSLATE", + "standard": "Standard__TO_TRANSLATE", + "accountType": "Type de compte__TO_TRANSLATE" }; \ No newline at end of file diff --git a/src/frontend/service/app.guard.ts b/src/frontend/service/app.guard.ts index 26836c887e24762bc6cad5a1561b129ed6ccb9c7..b5c30e3b3cf7ac9b6b36a8363acdfbb9e361cc2f 100644 --- a/src/frontend/service/app.guard.ts +++ b/src/frontend/service/app.guard.ts @@ -49,6 +49,7 @@ export class AppGuard implements CanActivate { .pipe( map((data: any) => { this.headerService.user = { + mode: data.mode, id: data.id, status: data.status, userId: data.user_id, diff --git a/src/frontend/service/header.service.ts b/src/frontend/service/header.service.ts index ed116ea20ea222cb2508c0e49d887ed3498e652e..07f0778f5a6e2093c35cc3316162be55c9fee418 100755 --- a/src/frontend/service/header.service.ts +++ b/src/frontend/service/header.service.ts @@ -68,6 +68,7 @@ export class HeaderService { .pipe( map((data: any) => { this.user = { + mode: data.mode, id: data.id, userId: data.user_id, firstname: data.firstname,