Skip to content

Commit 45231e0

Browse files
committed
IOT-1149: Only make permission link if user can view
1 parent 58ca53f commit 45231e0

File tree

3 files changed

+44
-11
lines changed

3 files changed

+44
-11
lines changed

src/app/admin/permission/permission-list/permission-tabel/permission-tabel.component.html

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,14 @@
77
{{ 'PERMISSION.NAME' | translate }}
88
</th>
99
<td mat-cell *matCellDef="let element">
10-
<a (click)="routeToPermissions(element)" routerLinkActive="active" class="permission-link">
11-
{{element.name}}</a>
10+
<a *ngIf="canAccess(element); else justText"
11+
(click)="routeToPermissions(element)"
12+
routerLinkActive="active" class="permission-link">
13+
{{element.name}}
14+
</a>
15+
<ng-template #justText>
16+
{{element.name}}
17+
</ng-template>
1218
</td>
1319
</ng-container>
1420

@@ -48,7 +54,7 @@
4854
<ng-container matColumnDef="menu">
4955
<th mat-header-cell *matHeaderCellDef></th>
5056
<td mat-cell *matCellDef="let element">
51-
<div class="dropdown ">
57+
<div class="dropdown " *ngIf="canAccess(element)">
5258
<a href="#" role="button" id="tableRowDropdown-{{element.id}}"
5359
class="applicationRow__edit dropdown-toggle" data-toggle="dropdown" aria-expanded="false"
5460
[attr.aria-label]="'APPLICATION-TABLE-ROW.SHOW-OPTIONS' | translate"></a>

src/app/admin/permission/permission-list/permission-tabel/permission-tabel.component.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ import { Router } from '@angular/router';
55
import { environment } from '@environments/environment';
66
import { TranslateService } from '@ngx-translate/core';
77
import { DeleteDialogService } from '@shared/components/delete-dialog/delete-dialog.service';
8+
import { MeService } from '@shared/services/me.service';
89
import { merge, Observable, of as observableOf } from 'rxjs';
910
import { startWith, switchMap, map, catchError } from 'rxjs/operators';
1011
import {
1112
PermissionGetManyResponse,
1213
PermissionResponse,
14+
PermissionType,
1315
} from '../../permission.model';
1416
import { PermissionService } from '../../permission.service';
1517

@@ -42,7 +44,8 @@ export class PermissionTabelComponent implements AfterViewInit {
4244
public translate: TranslateService,
4345
private router: Router,
4446
private permissionService: PermissionService,
45-
private deleteDialogService: DeleteDialogService
47+
private deleteDialogService: DeleteDialogService,
48+
private meService: MeService,
4649
) {
4750
translate.use('da');
4851
}
@@ -106,6 +109,13 @@ export class PermissionTabelComponent implements AfterViewInit {
106109
})
107110
}
108111

112+
canAccess(element: PermissionResponse) {
113+
if (element.type == PermissionType.GlobalAdmin) {
114+
return this.meService.hasGlobalAdmin();
115+
}
116+
return this.meService.hasAdminAccessInTargetOrganization(element.organization.id);
117+
}
118+
109119
private refresh() {
110120
const pageEvent = new PageEvent();
111121
pageEvent.pageIndex = this.paginator.pageIndex;

src/app/shared/services/me.service.ts

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,34 @@ import { SharedVariableService } from '@shared/shared-variable/shared-variable.s
99
export class MeService {
1010
private user: UserResponse;
1111

12-
constructor(
13-
private sharedVariableService: SharedVariableService
14-
) {}
12+
constructor(private sharedVariableService: SharedVariableService) {}
1513

1614
canWriteInTargetOrganization(id: number): boolean {
15+
const userInfo = this.sharedVariableService.getUserInfo();
16+
return userInfo.user.permissions.some((permission) => {
17+
return (
18+
permission.type === PermissionType.GlobalAdmin ||
19+
(permission.organization.id === id &&
20+
(permission.type === PermissionType.Write ||
21+
permission.type === PermissionType.OrganizationAdmin))
22+
);
23+
});
24+
}
25+
26+
hasAdminAccessInTargetOrganization(id: number): boolean {
27+
const userInfo = this.sharedVariableService.getUserInfo();
28+
return userInfo.user.permissions.some((permission) => {
29+
return (
30+
permission.type === PermissionType.GlobalAdmin ||
31+
(permission.organization.id === id &&
32+
permission.type === PermissionType.OrganizationAdmin)
33+
);
34+
});
35+
}
36+
hasGlobalAdmin() {
1737
const userInfo = this.sharedVariableService.getUserInfo();
1838
return userInfo.user.permissions.some(
19-
permission => {
20-
return permission.type === PermissionType.GlobalAdmin ||
21-
(permission.organization.id === id && (permission.type === PermissionType.Write || permission.type === PermissionType.OrganizationAdmin));
22-
}
39+
(permission) => permission.type === PermissionType.GlobalAdmin
2340
);
2441
}
2542
}

0 commit comments

Comments
 (0)