diff --git a/console/src/app/modules/actions-two/actions-two-actions/actions-two-actions-table/actions-two-actions-table.component.html b/console/src/app/modules/actions-two/actions-two-actions/actions-two-actions-table/actions-two-actions-table.component.html
index 82f04fb124..7948ba7554 100644
--- a/console/src/app/modules/actions-two/actions-two-actions/actions-two-actions-table/actions-two-actions-table.component.html
+++ b/console/src/app/modules/actions-two/actions-two-actions/actions-two-actions-table/actions-two-actions-table.component.html
@@ -24,8 +24,8 @@
{{ 'ACTIONSTWO.EXECUTION.TABLE.TARGET' | translate }} |
- {{ target.name }}
+
+ {{ target.name }}
|
diff --git a/console/src/app/modules/actions-two/actions-two-actions/actions-two-actions-table/actions-two-actions-table.component.ts b/console/src/app/modules/actions-two/actions-two-actions/actions-two-actions-table/actions-two-actions-table.component.ts
index 658c205c4e..af9673dbf5 100644
--- a/console/src/app/modules/actions-two/actions-two-actions/actions-two-actions-table/actions-two-actions-table.component.ts
+++ b/console/src/app/modules/actions-two/actions-two-actions/actions-two-actions-table/actions-two-actions-table.component.ts
@@ -55,13 +55,9 @@ export class ActionsTwoActionsTableComponent {
}
return executions.map((execution) => {
- const mappedTargets = execution.targets.map((target) => {
- const targetType = targetsMap.get(target);
- if (!targetType) {
- throw new Error(`Target with id ${target} not found`);
- }
- return targetType;
- });
+ const mappedTargets = execution.targets
+ .map((target) => targetsMap.get(target))
+ .filter((target): target is NonNullable => !!target);
return { execution, mappedTargets };
});
});
diff --git a/console/src/app/modules/settings-list/settings.ts b/console/src/app/modules/settings-list/settings.ts
index c96431fa30..7ec7fdea15 100644
--- a/console/src/app/modules/settings-list/settings.ts
+++ b/console/src/app/modules/settings-list/settings.ts
@@ -228,8 +228,7 @@ export const ACTIONS: SidenavSetting = {
i18nKey: 'SETTINGS.LIST.ACTIONS',
groupI18nKey: 'SETTINGS.GROUPS.ACTIONS',
requiredRoles: {
- // todo: figure out roles
- [PolicyComponentServiceType.ADMIN]: ['iam.policy.read'],
+ [PolicyComponentServiceType.ADMIN]: ['action.execution.write', 'action.target.write'],
},
beta: true,
};
@@ -239,8 +238,7 @@ export const ACTIONS_TARGETS: SidenavSetting = {
i18nKey: 'SETTINGS.LIST.TARGETS',
groupI18nKey: 'SETTINGS.GROUPS.ACTIONS',
requiredRoles: {
- // todo: figure out roles
- [PolicyComponentServiceType.ADMIN]: ['iam.policy.read'],
+ [PolicyComponentServiceType.ADMIN]: ['action.execution.write', 'action.target.write'],
},
beta: true,
};
diff --git a/console/src/app/services/grpc-auth.service.ts b/console/src/app/services/grpc-auth.service.ts
index 3967f1df06..198d048b6a 100644
--- a/console/src/app/services/grpc-auth.service.ts
+++ b/console/src/app/services/grpc-auth.service.ts
@@ -1,7 +1,18 @@
import { Injectable } from '@angular/core';
import { SortDirection } from '@angular/material/sort';
import { OAuthService } from 'angular-oauth2-oidc';
-import { BehaviorSubject, combineLatestWith, EMPTY, mergeWith, NEVER, Observable, of, shareReplay, Subject } from 'rxjs';
+import {
+ BehaviorSubject,
+ combineLatestWith,
+ EMPTY,
+ identity,
+ mergeWith,
+ NEVER,
+ Observable,
+ of,
+ shareReplay,
+ Subject,
+} from 'rxjs';
import { catchError, distinctUntilChanged, filter, finalize, map, startWith, switchMap, tap, timeout } from 'rxjs/operators';
import {
@@ -326,7 +337,7 @@ export class GrpcAuthService {
return new RegExp(reqRegexp).test(role);
});
- const allCheck = requestedRoles.map(test).every((x) => !!x);
+ const allCheck = requestedRoles.map(test).every(identity);
const oneCheck = requestedRoles.some(test);
return requiresAll ? allCheck : oneCheck;