Skip to content

Commit 3348f12

Browse files
committed
Switch disabled to prevent admin from auto-revoke
1 parent e08c025 commit 3348f12

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/app/modules/users/components/users-list/users-list.component.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
<td class="col-3 text-center">
2121
<ui-switch
2222
size="small"
23+
[disabled]="checkRoleCurrentUser(user.email)"
2324
(change)="!isDevelopmentOrProd?switchGroup('time-tracker-admin', user):null; updateRole(ROLES.admin, user, $event);"
2425
[checked]="user.groups.includes('time-tracker-admin')"></ui-switch>
2526
admin

src/app/modules/users/components/users-list/users-list.component.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ import { EnvironmentType } from 'src/environments/enum';
99
import { User } from '../../models/users';
1010
import { LoadUsers, UserActionTypes, AddUserToGroup, RemoveUserFromGroup } from '../../store/user.actions';
1111
import { getIsLoading } from '../../store/user.selectors';
12+
import { UserInfoService } from 'src/app/modules/user/services/user-info.service';
13+
import { LoginService } from '../../../login/services/login.service';
14+
import { JwtHelperService } from '@auth0/angular-jwt';
1215

1316
@Component({
1417
selector: 'app-users-list',
@@ -28,13 +31,15 @@ export class UsersListComponent implements OnInit, OnDestroy, AfterViewInit {
2831
};
2932
switchGroupsSubscription: Subscription;
3033
isDevelopmentOrProd = true;
34+
helper: JwtHelperService;
3135

3236
public get ROLES() {
3337
return ROLES;
3438
}
3539

36-
constructor(private store: Store<User>, private actionsSubject$: ActionsSubject) {
40+
constructor(private store: Store<User>, private actionsSubject$: ActionsSubject, private userInfoService: UserInfoService, private loginService: LoginService) {
3741
this.isLoading$ = store.pipe(delay(0), select(getIsLoading));
42+
this.helper = new JwtHelperService();
3843
}
3944

4045
ngOnInit(): void {
@@ -94,4 +99,11 @@ export class UsersListComponent implements OnInit, OnDestroy, AfterViewInit {
9499
)
95100
);
96101
}
102+
103+
checkRoleCurrentUser(userEmail: string){
104+
const token = this.loginService.getLocalStorage('user');
105+
const user = this.helper.decodeToken(token);
106+
return this.userInfoService.isAdmin() && (userEmail === user.email);
107+
}
108+
97109
}

0 commit comments

Comments
 (0)