From 91e98eefb977f11f32773b38cb4cbff2212e3a3a Mon Sep 17 00:00:00 2001
From: Alex ORLUC <alex.orluc@maarch.org>
Date: Mon, 27 Jul 2020 17:46:15 +0200
Subject: [PATCH] fix suspend user if admin

---
 ...ministration-redirect-modal.component.html |  8 +++----
 .../user/users-administration.component.html  |  4 ++--
 .../user/users-administration.component.ts    | 22 +++++++++----------
 3 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/src/frontend/app/administration/user/users-administration-redirect-modal.component.html b/src/frontend/app/administration/user/users-administration-redirect-modal.component.html
index fba5a6f3f2c..14c8c479788 100755
--- a/src/frontend/app/administration/user/users-administration-redirect-modal.component.html
+++ b/src/frontend/app/administration/user/users-administration-redirect-modal.component.html
@@ -33,9 +33,9 @@
             </ng-container>
             <ng-container *ngIf="!data.inDiffListDest && !data.isResDestUser">
                 <div class="alert" role="alert">
-                    <b *ngIf="data.userDestRedirect.mode == 'delete'">{{lang.delete}}
+                    <b *ngIf="data.userDestRedirect.actionMode == 'delete'">{{lang.delete}}
                         {{this.data.userDestRedirect.firstname}} {{this.data.userDestRedirect.lastname}}</b>&nbsp;
-                    <b *ngIf="data.userDestRedirect.mode == 'suspend'">{{lang.suspend}}
+                    <b *ngIf="data.userDestRedirect.actionMode == 'suspend'">{{lang.suspend}}
                         {{this.data.userDestRedirect.firstname}} {{this.data.userDestRedirect.lastname}}</b>&nbsp;
                 </div>
             </ng-container>
@@ -68,11 +68,11 @@
     </mat-dialog-content>
     <span class="divider-modal"></span>
     <mat-dialog-actions>
-        <button mat-raised-button color="warn" *ngIf="data.userDestRedirect.mode == 'delete' && data.isDeletable"
+        <button mat-raised-button color="warn" *ngIf="data.userDestRedirect.actionMode == 'delete' && data.isDeletable"
             type="submit" class="btn btn-danger" (click)="dialogRef.close(this.data)"
             [disabled]="!sendFunction()">{{lang.delete}}
             {{lang.user}}</button>
-        <button mat-raised-button color="primary" *ngIf="data.userDestRedirect.mode == 'suspend' && data.isDeletable"
+        <button mat-raised-button color="primary" *ngIf="data.userDestRedirect.actionMode == 'suspend' && data.isDeletable"
             type="submit" (click)="dialogRef.close(this.data)" [disabled]="!sendFunction()">{{lang.suspend}}
             {{lang.user}}</button>
         <button mat-raised-button color="primary" *ngIf="!data.isDeletable" type="submit"
diff --git a/src/frontend/app/administration/user/users-administration.component.html b/src/frontend/app/administration/user/users-administration.component.html
index c9ae5958bc8..eee78d37d95 100755
--- a/src/frontend/app/administration/user/users-administration.component.html
+++ b/src/frontend/app/administration/user/users-administration.component.html
@@ -95,13 +95,13 @@
                             <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.id===user.id"
+                                <button mat-icon-button color="primary" [disabled]="element.id===user.id || (['root_visible', 'root_invisible'].indexOf(element.mode) > -1 && headerService.user.mode === 'standard')"
                                     *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>
                                 </button>
                                 <button mat-icon-button color="accent" *ngIf="element.status == 'SPD'"
-                                    matTooltip="{{lang.authorize}}"
+                                    matTooltip="{{lang.authorize}}" [disabled]="['root_visible', 'root_invisible'].indexOf(element.mode) > -1 && headerService.user.mode === 'standard'"
                                     (click)="$event.stopPropagation();activateUser(element)">
                                     <mat-icon class="fa fa-check fa-2x" aria-hidden="true"></mat-icon>
                                 </button>
diff --git a/src/frontend/app/administration/user/users-administration.component.ts b/src/frontend/app/administration/user/users-administration.component.ts
index 6023606d5b0..d8fc5a98874 100755
--- a/src/frontend/app/administration/user/users-administration.component.ts
+++ b/src/frontend/app/administration/user/users-administration.component.ts
@@ -55,7 +55,7 @@ export class UsersAdministrationComponent implements OnInit {
         public http: HttpClient,
         private notify: NotificationService,
         public dialog: MatDialog,
-        private headerService: HeaderService,
+        public headerService: HeaderService,
         public appService: AppService,
         public functions: FunctionsService,
         private viewContainerRef: ViewContainerRef
@@ -127,7 +127,7 @@ export class UsersAdministrationComponent implements OnInit {
     }
 
     deleteUser(user: any, mode: string) {
-        user.mode = mode;
+        user.actionMode = mode;
 
         this.http.get('../rest/users/' + user.id + '/isDeletable')
             .subscribe((response: any) => {
@@ -197,7 +197,7 @@ export class UsersAdministrationComponent implements OnInit {
                                                 } else {
 
                                                     // delete user
-                                                    if (user.mode === 'delete') {
+                                                    if (user.actionMode === 'delete') {
                                                         this.http.delete('../rest/users/' + user.id)
                                                             .subscribe(() => {
                                                                 for (const i in this.data) {
@@ -220,7 +220,7 @@ export class UsersAdministrationComponent implements OnInit {
                                                                 this.notify.error(err.error.errors);
                                                             });
                                                         // suspend user
-                                                    } else if (user.mode === 'suspend') {
+                                                    } else if (user.actionMode === 'suspend') {
                                                         this.http.put('../rest/users/' + user.id + '/suspend', user)
                                                             .subscribe(() => {
                                                                 user.status = 'SPD';
@@ -249,7 +249,7 @@ export class UsersAdministrationComponent implements OnInit {
                                 this.http.put('../rest/listTemplates/entityDest/itemId/' + user.id, user)
                                     .subscribe(() => {
                                         // delete user
-                                        if (user.mode === 'delete') {
+                                        if (user.actionMode === 'delete') {
                                             this.http.delete('../rest/users/' + user.id)
                                                 .subscribe(() => {
                                                     for (const i in this.data) {
@@ -272,7 +272,7 @@ export class UsersAdministrationComponent implements OnInit {
                                                     this.notify.error(err.error.errors);
                                                 });
                                             // suspend user
-                                        } else if (user.mode === 'suspend') {
+                                        } else if (user.actionMode === 'suspend') {
                                             this.http.put('../rest/users/' + user.id + '/suspend', user)
                                                 .subscribe(() => {
                                                     user.status = 'SPD';
@@ -300,7 +300,7 @@ export class UsersAdministrationComponent implements OnInit {
                                         } else {
 
                                             // delete user
-                                            if (user.mode === 'delete') {
+                                            if (user.actionMode === 'delete') {
                                                 this.http.delete('../rest/users/' + user.id)
                                                     .subscribe(() => {
                                                         for (const i in this.data) {
@@ -323,7 +323,7 @@ export class UsersAdministrationComponent implements OnInit {
                                                         this.notify.error(err.error.errors);
                                                     });
                                                 // suspend user
-                                            } else if (user.mode === 'suspend') {
+                                            } else if (user.actionMode === 'suspend') {
                                                 this.http.put('../rest/users/' + user.id + '/suspend', user)
                                                     .subscribe(() => {
                                                         user.status = 'SPD';
@@ -347,7 +347,7 @@ export class UsersAdministrationComponent implements OnInit {
                             } else if (!user.inDiffListDest && !user.isResDestUser) { // user is not inDiffListDest and is not isResDestUser
 
                                 // delete user
-                                if (user.mode === 'delete') {
+                                if (user.actionMode === 'delete') {
                                     this.http.delete('../rest/users/' + user.id)
                                         .subscribe(() => {
                                             for (const i in this.data) {
@@ -370,7 +370,7 @@ export class UsersAdministrationComponent implements OnInit {
                                             this.notify.error(err.error.errors);
                                         });
                                     // suspend user
-                                } else if (user.mode === 'suspend') {
+                                } else if (user.actionMode === 'suspend') {
                                     this.http.put('../rest/users/' + user.id + '/suspend', user)
                                         .subscribe(() => {
                                             user.status = 'SPD';
@@ -438,7 +438,7 @@ export class UsersAdministrationRedirectModalComponent implements OnInit {
                 this.data.isResDestUser = true;
             }
         } else {
-            if (this.data.userDestRedirect.mode === 'delete') {
+            if (this.data.userDestRedirect.actionMode === 'delete') {
                 this.modalTitle = this.lang.unableToDelete;
             } else {
                 this.modalTitle = this.lang.unableToSuspend;
-- 
GitLab