Skip to content

Commit 0fe925a

Browse files
committed
fix access permissions
1 parent 6198c50 commit 0fe925a

File tree

3 files changed

+32
-20
lines changed

3 files changed

+32
-20
lines changed

src/app/components/scenario-templates/scenario-template-memberships/scenario-template-memberships/scenario-template-memberships.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ <h1>{{ scenarioTemplate.name }}</h1>
1111
</div>
1212
<div class="d-flex gap-5 justify-content-center">
1313
<app-scenario-template-membership-list [users]="nonMembers$ | async" [groups]="groupNonMembers$ | async"
14-
[canEdit]="canEdit" (createMembership)="createMembership($event)"></app-scenario-template-membership-list>
14+
[canEdit]="canEdit$ | async" (createMembership)="createMembership($event)"></app-scenario-template-membership-list>
1515

1616
<app-scenario-template-member-list [memberships]="memberships$ | async" [users]="members$ | async"
17-
[groups]="groupMembers$ | async" [roles]="roles$ | async" [canEdit]="canEdit"
17+
[groups]="groupMembers$ | async" [roles]="roles$ | async" [canEdit]="canEdit$ | async"
1818
(deleteMembership)="deleteMembership($event)"
1919
(editMembership)="editMembership($event)"></app-scenario-template-member-list>
2020
</div>

src/app/components/scenario-templates/scenario-template-memberships/scenario-template-memberships/scenario-template-memberships.component.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,11 @@ import {
88
EventEmitter,
99
Input,
1010
OnChanges,
11-
OnDestroy,
1211
OnInit,
1312
Output,
1413
SimpleChanges,
1514
} from '@angular/core';
16-
import { combineLatest, forkJoin, Observable } from 'rxjs';
15+
import { combineLatest, forkJoin, Observable, of } from 'rxjs';
1716
import { filter, map, tap } from 'rxjs/operators';
1817
import { ScenarioTemplateQuery } from 'src/app/data/scenario-template/scenario-template.query';
1918
import { ScenarioTemplateMembershipDataService } from 'src/app/data/scenario-template/scenario-template-membership-data.service';
@@ -26,6 +25,7 @@ import {
2625
} from 'src/app/generated/steamfitter.api';
2726
import { GroupDataService } from 'src/app/data/group/group-data.service';
2827
import { PermissionDataService } from 'src/app/data/permission/permission-data.service';
28+
import { ActivatedRoute } from '@angular/router';
2929

3030
@Component({
3131
selector: 'app-scenario-template-memberships',
@@ -50,7 +50,7 @@ export class ScenarioTemplateMembershipsComponent implements OnInit, OnChanges {
5050
groupNonMembers$ = this.selectGroups(false);
5151
groupMembers$ = this.selectGroups(true);
5252

53-
canEdit: boolean;
53+
canEdit$: Observable<boolean>;
5454

5555
constructor(
5656
private scenarioTemplateQuery: ScenarioTemplateQuery,
@@ -59,7 +59,8 @@ export class ScenarioTemplateMembershipsComponent implements OnInit, OnChanges {
5959
private userDataService: UserDataService,
6060
private userQuery: UserQuery,
6161
private groupDataService: GroupDataService,
62-
private permissionDataService: PermissionDataService
62+
private permissionDataService: PermissionDataService,
63+
private activatedRoute: ActivatedRoute
6364
) {}
6465

6566
ngOnInit(): void {
@@ -71,6 +72,10 @@ export class ScenarioTemplateMembershipsComponent implements OnInit, OnChanges {
7172
this.scenarioTemplateRolesDataService.loadRoles(),
7273
this.groupDataService.load(),
7374
]).subscribe();
75+
this.permissionDataService
76+
.loadScenarioTemplatePermissions(this.scenarioTemplateId)
77+
.subscribe((x) =>
78+
this.canEdit$ = of(this.permissionDataService.canEditScenarioTemplate(this.scenarioTemplateId)));
7479
}
7580

7681
ngOnChanges(changes: SimpleChanges) {
@@ -79,11 +84,9 @@ export class ScenarioTemplateMembershipsComponent implements OnInit, OnChanges {
7984
.pipe(
8085
filter((x) => x != null),
8186
tap(
82-
(x) =>
83-
(this.canEdit = this.permissionDataService.canEditScenarioTemplate(
84-
x.id
85-
))
86-
)
87+
(x) => {
88+
this.canEdit$ = of(this.permissionDataService.canEditScenarioTemplate(this.scenarioTemplateId));
89+
})
8790
);
8891
}
8992

src/app/data/permission/permission-data.service.ts

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -81,24 +81,33 @@ export class PermissionDataService {
8181
.getMyScenarioTemplatePermissions(scenarioTemplateId)
8282
.pipe(
8383
take(1),
84-
tap((x) => (this._scenarioTemplatePermissions = x))
84+
tap((x) => {
85+
this._scenarioTemplatePermissions = x;
86+
})
8587
);
8688
}
8789

8890
canEditScenario(scenarioId: string): boolean {
8991
return this.canScenario(
90-
SystemPermission.EditScenarios,
91-
scenarioId,
92-
ScenarioPermission.EditScenario
93-
);
92+
SystemPermission.EditScenarios,
93+
scenarioId,
94+
ScenarioPermission.EditScenario) ||
95+
this.canScenario(
96+
SystemPermission.ManageScenarios,
97+
scenarioId,
98+
ScenarioPermission.ManageScenario);
9499
}
95100

96101
canEditScenarioTemplate(scenarioTemplateId: string): boolean {
97102
return this.canScenarioTemplate(
98-
SystemPermission.EditScenarioTemplates,
99-
scenarioTemplateId,
100-
ScenarioTemplatePermission.EditScenarioTemplate
101-
);
103+
SystemPermission.EditScenarioTemplates,
104+
scenarioTemplateId,
105+
ScenarioTemplatePermission.EditScenarioTemplate) ||
106+
this.canScenarioTemplate(
107+
SystemPermission.ManageScenarioTemplates,
108+
scenarioTemplateId,
109+
ScenarioTemplatePermission.ManageScenarioTemplate
110+
);
102111
}
103112

104113
canManageScenario(scenarioId: string): boolean {

0 commit comments

Comments
 (0)