Skip to content

Commit da9bc2c

Browse files
thquadrichard-cox
authored andcommitted
Don't let users see creator when admin_only (#4876)
Signed-off-by: Thomas Quandt <[email protected]>
1 parent 4de9dec commit da9bc2c

File tree

3 files changed

+27
-5
lines changed

3 files changed

+27
-5
lines changed

src/frontend/packages/core/src/shared/components/list/list-types/endpoint/endpoint-card/endpoint-card.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
</div>
4545
</app-meta-card-value>
4646
</app-meta-card-item>
47-
<app-meta-card-item *ngIf="enableUserEndpoints$ | async">
47+
<app-meta-card-item *ngIf="viewCreator$ | async">
4848
<app-meta-card-key>Creator</app-meta-card-key>
4949
<app-meta-card-value>
5050
<div>{{ row.creator.name }}</div>

src/frontend/packages/core/src/shared/components/list/list-types/endpoint/endpoint-card/endpoint-card.component.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
ViewContainerRef,
1010
} from '@angular/core';
1111
import { Store } from '@ngrx/store';
12-
import { Observable, of, ReplaySubject, Subscription } from 'rxjs';
12+
import { combineLatest, Observable, of, ReplaySubject, Subscription } from 'rxjs';
1313
import { map, startWith } from 'rxjs/operators';
1414

1515
import { AppState } from '../../../../../../../../store/src/app-state';
@@ -33,6 +33,8 @@ import { EndpointListDetailsComponent, EndpointListHelper } from '../endpoint-li
3333
import { RouterNav } from './../../../../../../../../store/src/actions/router.actions';
3434
import { CopyToClipboardComponent } from './../../../../copy-to-clipboard/copy-to-clipboard.component';
3535
import { SessionService } from '../../../../../services/session.service';
36+
import { CurrentUserPermissionsService } from '../../../../../../core/permissions/current-user-permissions.service';
37+
import { StratosCurrentUserPermissions } from '../../../../../../core/permissions/stratos-user-permissions.checker';
3638

3739
@Component({
3840
selector: 'app-endpoint-card',
@@ -55,7 +57,7 @@ export class EndpointCardComponent extends CardCell<EndpointModel> implements On
5557
public cardStatus$: Observable<StratosStatus>;
5658
private subs: Subscription[] = [];
5759
public connectionStatus: string;
58-
public enableUserEndpoints$: Observable<boolean>;
60+
public viewCreator$: Observable<boolean>;
5961

6062
private componentRef: ComponentRef<EndpointListDetailsComponent>;
6163

@@ -123,6 +125,7 @@ export class EndpointCardComponent extends CardCell<EndpointModel> implements On
123125
private endpointListHelper: EndpointListHelper,
124126
private componentFactoryResolver: ComponentFactoryResolver,
125127
private userFavoriteManager: UserFavoriteManager,
128+
private currentUserPermissionsService: CurrentUserPermissionsService,
126129
private sessionService: SessionService,
127130
) {
128131
super();
@@ -133,7 +136,15 @@ export class EndpointCardComponent extends CardCell<EndpointModel> implements On
133136
this.favorite = this.userFavoriteManager.getFavoriteEndpointFromEntity(this.row);
134137
const e = this.endpointCatalogEntity.definition;
135138
this.hasDetails = !!e && !!e.listDetailsComponent;
136-
this.enableUserEndpoints$ = this.sessionService.userEndpointsNotDisabled();
139+
this.viewCreator$ = combineLatest([
140+
this.sessionService.userEndpointsEnabled(),
141+
this.sessionService.userEndpointsNotDisabled(),
142+
this.currentUserPermissionsService.can(StratosCurrentUserPermissions.EDIT_ADMIN_ENDPOINT),
143+
]).pipe(
144+
map(([userEndpointsEnabled, userEndpointsNotDisabled, isAdmin]) => {
145+
return userEndpointsEnabled || (userEndpointsNotDisabled && isAdmin);
146+
})
147+
);
137148
}
138149

139150
ngOnDestroy(): void {

src/frontend/packages/core/src/shared/components/list/list-types/endpoint/endpoints-list-config.service.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import { EndpointModel } from '../../../../../../../store/src/types/endpoint.typ
1515
import { PaginationEntityState } from '../../../../../../../store/src/types/pagination.types';
1616
import { UserFavoriteManager } from '../../../../../../../store/src/user-favorite-manager';
1717
import { SessionService } from '../../../../services/session.service';
18+
import { CurrentUserPermissionsService } from '../../../../../core/permissions/current-user-permissions.service';
19+
import { StratosCurrentUserPermissions } from '../../../../../core/permissions/stratos-user-permissions.checker';
1820
import { createTableColumnFavorite } from '../../list-table/table-cell-favorite/table-cell-favorite.component';
1921
import { ITableColumn } from '../../list-table/table.types';
2022
import {
@@ -116,14 +118,23 @@ export class EndpointsListConfigService implements IListConfig<EndpointModel> {
116118
internalEventMonitorFactory: InternalEventMonitorFactory,
117119
endpointListHelper: EndpointListHelper,
118120
userFavoriteManager: UserFavoriteManager,
121+
currentUserPermissionsService: CurrentUserPermissionsService,
119122
sessionService: SessionService
120123
) {
121124
this.singleActions = endpointListHelper.endpointActions();
122125
const favoriteCell = createTableColumnFavorite(
123126
(row: EndpointModel) => userFavoriteManager.getFavoriteEndpointFromEntity(row)
124127
);
125128
this.columns.push(favoriteCell);
126-
sessionService.userEndpointsNotDisabled().pipe(first()).subscribe(enabled => {
129+
combineLatest([
130+
sessionService.userEndpointsEnabled(),
131+
sessionService.userEndpointsNotDisabled(),
132+
currentUserPermissionsService.can(StratosCurrentUserPermissions.EDIT_ADMIN_ENDPOINT),
133+
]).pipe(
134+
map(([userEndpointsEnabled, userEndpointsNotDisabled, isAdmin]) => {
135+
return userEndpointsEnabled || (userEndpointsNotDisabled && isAdmin);
136+
})
137+
).subscribe(enabled => {
127138
if (enabled) {
128139
this.columns.splice(4, 0, {
129140
columnId: 'creator',

0 commit comments

Comments
 (0)