Skip to content

Commit bc8c56e

Browse files
authored
permissions fixes (#652)
* permissions fix
1 parent e1061a0 commit bc8c56e

File tree

6 files changed

+40
-30
lines changed

6 files changed

+40
-30
lines changed

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
</button>
2626
</div>
2727
<div class="button-end">
28-
<button *ngIf="!adminMode && permissions.includes(SystemPermission.CreateScenarioTemplates)"
28+
<button *ngIf="!adminMode && hasPermission(SystemPermission.CreateScenarioTemplates)"
2929
mat-stroked-button (click)="editScenarioTemplate(null)">
3030
Add Scenario Template
3131
</button>
@@ -68,7 +68,7 @@
6868
>
6969
<div class="mat-cell flex-row-cell four-cell">
7070
<button
71-
*ngIf="!adminMode && permissions.includes(SystemPermission.CreateScenarioTemplates)"
71+
*ngIf="!adminMode && hasPermission(SystemPermission.CreateScenarioTemplates)"
7272
mat-icon-button
7373
class="copy-button"
7474
ngxClipboard
@@ -79,7 +79,7 @@
7979
<mat-icon class="mdi-20px copy-icon" fontIcon="mdi-content-copy"></mat-icon>
8080
</button>
8181
<button
82-
*ngIf="!adminMode && canDoAnything(item.id)"
82+
*ngIf="!adminMode && canDoSomething(item)"
8383
mat-icon-button
8484
class="menu-button"
8585
ngxClipboard
@@ -119,18 +119,18 @@
119119
></div>
120120
<mat-menu #contextMenu="matMenu">
121121
<ng-template matMenuContent let-item="item">
122-
<button mat-menu-item (click)="editScenarioTemplate(item)" *ngIf="canEdit(item.id)">
122+
<button mat-menu-item (click)="editScenarioTemplate(item)" *ngIf="canEdit(item)">
123123
Edit
124124
</button>
125125
<button mat-menu-item (click)="copyScenarioTemplate(item)"
126-
*ngIf="permissions.includes(SystemPermission.CreateScenarioTemplates)">
126+
*ngIf="hasPermission(SystemPermission.CreateScenarioTemplates)">
127127
Copy
128128
</button>
129-
<button mat-menu-item (click)="deleteScenarioTemplate(item)" *ngIf="canManage(item.id)">
129+
<button mat-menu-item (click)="deleteScenarioTemplate(item)" *ngIf="canManage(item)">
130130
Delete
131131
</button>
132132
<button mat-menu-item (click)="createScenario(item)"
133-
*ngIf="permissions.includes(SystemPermission.CreateScenarios)">
133+
*ngIf="hasPermission(SystemPermission.CreateScenarios)">
134134
Create a Scenario
135135
</button>
136136
</ng-template>

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

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import {
2020
import { MatSort, Sort } from '@angular/material/sort';
2121
import { MatTableDataSource } from '@angular/material/table';
2222
import { PermissionDataService } from 'src/app/data/permission/permission-data.service';
23-
import { SystemPermission } from 'src/app/generated/steamfitter.api';
23+
import { ScenarioTemplatePermission, SystemPermission } from 'src/app/generated/steamfitter.api';
2424
import { ScenarioTemplateEditDialogComponent } from 'src/app/components/scenario-templates/scenario-template-edit-dialog/scenario-template-edit-dialog.component';
2525
import { ScenarioTemplateEditComponent } from 'src/app/components/scenario-templates/scenario-template-edit/scenario-template-edit.component';
2626
import { ScenarioEditDialogComponent } from 'src/app/components/scenarios/scenario-edit-dialog/scenario-edit-dialog.component';
@@ -52,7 +52,7 @@ export class ScenarioTemplateListComponent implements OnInit, OnChanges {
5252
@Input() scenarioTemplateList: ScenarioTemplate[];
5353
@Input() selectedScenarioTemplate: ScenarioTemplate;
5454
@Input() isLoading: boolean;
55-
@Input() adminMode = false;
55+
@Input() adminMode: boolean;
5656
@Output() saveScenarioTemplate = new EventEmitter<ScenarioTemplate>();
5757
@Output() itemSelected = new EventEmitter<string>();
5858
@ViewChild(ScenarioTemplateEditComponent)
@@ -132,16 +132,22 @@ export class ScenarioTemplateListComponent implements OnInit, OnChanges {
132132
this.contextMenu.openMenu();
133133
}
134134

135-
canManage(id: string): boolean {
136-
return this.permissionDataService.canManageScenarioTemplate(id);
135+
hasPermission(permission: SystemPermission): boolean {
136+
return this.permissionDataService.hasPermission(permission);
137137
}
138138

139-
canEdit(id: string): boolean {
140-
return this.permissionDataService.canEditScenarioTemplate(id);
139+
canManage(scenarioTemplate: ScenarioTemplate): boolean {
140+
return scenarioTemplate.scenarioTemplatePermissions.some(m => m.includes(ScenarioTemplatePermission.ManageScenarioTemplate)) ||
141+
this.permissionDataService.hasPermission(SystemPermission.ManageScenarioTemplates);
141142
}
142143

143-
canDoAnything(id: string): boolean {
144-
return this.canManage(id) || this.canEdit(id);
144+
canEdit(scenarioTemplate: ScenarioTemplate): boolean {
145+
return scenarioTemplate.scenarioTemplatePermissions.some(m => m === ScenarioTemplatePermission.EditScenarioTemplate) ||
146+
this.permissionDataService.hasPermission(SystemPermission.EditScenarioTemplates);
147+
}
148+
149+
canDoSomething(scenarioTemplate: ScenarioTemplate): boolean {
150+
return this.canManage(scenarioTemplate) || this.canEdit(scenarioTemplate);
145151
}
146152

147153
/**

src/app/components/scenarios/scenario-list/scenario-list.component.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@
106106
<mat-icon class="mdi-20px copy-icon" fontIcon="mdi-content-copy"></mat-icon>
107107
</button>
108108
<button
109-
*ngIf="!adminMode && canDoAnything(item.id)"
109+
*ngIf="!adminMode && canDoSomething(item)"
110110
mat-icon-button
111111
class="menu-button"
112112
ngxClipboard
@@ -154,7 +154,7 @@
154154
></div>
155155
<mat-menu #contextMenu="matMenu">
156156
<ng-template matMenuContent let-item="item">
157-
<button mat-menu-item (click)="editScenario(item)" *ngIf="canEdit(item.id)">
157+
<button mat-menu-item (click)="editScenario(item)" *ngIf="canEdit(item)">
158158
Edit
159159
</button>
160160
<button mat-menu-item (click)="copyScenario(item)"
@@ -164,7 +164,7 @@
164164
<button
165165
mat-menu-item
166166
(click)="startScenario(item)"
167-
*ngIf="item.status === 'ready' && !!item.viewId && canExecute(item.id)"
167+
*ngIf="item.status === 'ready' && !!item.viewId && canExecute(item)"
168168
>
169169
Start
170170
</button>
@@ -175,7 +175,7 @@
175175
>
176176
End
177177
</button>
178-
<button mat-menu-item (click)="deleteScenario(item)" *ngIf="canManage(item.id)">
178+
<button mat-menu-item (click)="deleteScenario(item)" *ngIf="canManage(item)">
179179
Delete
180180
</button>
181181
</ng-template>

src/app/components/scenarios/scenario-list/scenario-list.component.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import {
2020
import { MatSort, Sort } from '@angular/material/sort';
2121
import { MatTableDataSource } from '@angular/material/table';
2222
import { PermissionDataService } from 'src/app/data/permission/permission-data.service';
23-
import { SystemPermission } from 'src/app/generated/steamfitter.api';
23+
import { ScenarioPermission, SystemPermission } from 'src/app/generated/steamfitter.api';
2424
import { View } from 'src/app/generated/steamfitter.api';
2525
import { ScenarioEditComponent } from 'src/app/components/scenarios/scenario-edit/scenario-edit.component';
2626
import { ScenarioEditDialogComponent } from 'src/app/components/scenarios/scenario-edit-dialog/scenario-edit-dialog.component';
@@ -143,20 +143,23 @@ export class ScenarioListComponent implements OnInit, OnChanges {
143143
this.contextMenu.openMenu();
144144
}
145145

146-
canManage(id: string): boolean {
147-
return this.permissionDataService.canManageScenario(id);
146+
canManage(scenario: Scenario): boolean {
147+
return scenario.scenarioPermissions.some(m => m === ScenarioPermission.ManageScenario) ||
148+
this.permissionDataService.hasPermission(SystemPermission.ManageScenarios);
148149
}
149150

150-
canEdit(id: string): boolean {
151-
return this.permissionDataService.canEditScenario(id);
151+
canEdit(scenario: Scenario): boolean {
152+
return scenario.scenarioPermissions.some(m => m === ScenarioPermission.EditScenario) ||
153+
this.permissionDataService.hasPermission(SystemPermission.EditScenarios);
152154
}
153155

154-
canExecute(id: string): boolean {
155-
return this.permissionDataService.canExecuteScenario(id);
156+
canExecute(scenario: Scenario): boolean {
157+
return scenario.scenarioPermissions.some(m => m === ScenarioPermission.ExecuteScenario) ||
158+
this.permissionDataService.hasPermission(SystemPermission.ExecuteScenarios);
156159
}
157160

158-
canDoAnything(id: string): boolean {
159-
return this.canManage(id) || this.canEdit(id) || this.canExecute(id);
161+
canDoSomething(scenario: Scenario): boolean {
162+
return this.canManage(scenario) || this.canEdit(scenario) || this.canExecute(scenario);
160163
}
161164

162165
/**

src/app/components/tasks/task-edit/task-edit.component.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ <h2>Action</h2>
6262
*ngIf="param.inputType === 'text'"
6363
matInput
6464
placeholder="{{ param.display }}"
65+
[(ngModel)]="param.value"
6566
[value]="param.value"
6667
(input)="param.value = $event.target.value"
6768
(change)="onCommandChange()"

src/app/components/tasks/task-edit/task-edit.component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ export class TaskEditComponent implements OnInit, OnDestroy {
122122
onCommandChange() {
123123
const actionParameters: Record<string, string> = {};
124124
this.selectedCommand.parameters.forEach((param) => {
125-
actionParameters[param.key] = param.value.toString();
125+
actionParameters[param.key] = param.value?.toString();
126126
if (param.key.toLowerCase() === 'username') {
127127
this.username.next(param.value);
128128
} else if (param.key.toLowerCase() === 'password') {
@@ -153,7 +153,7 @@ export class TaskEditComponent implements OnInit, OnDestroy {
153153
cmd.parameters.forEach((p) => {
154154
p.value = this.data.task.actionParameters[p.key];
155155
// p.value = p.value || !p.default ? p.value : p.default;
156-
p.value = p.value.toLowerCase() === 'false' ? '' : p.value;
156+
p.value = p.value?.toLowerCase() === 'false' ? '' : p.value;
157157
if (p.key.toLowerCase() === 'username') {
158158
this.username.next(p.value);
159159
} else if (p.key.toLowerCase() === 'password') {

0 commit comments

Comments
 (0)