Skip to content

Commit

Permalink
Don't let users see creator when admin_only (#4876)
Browse files Browse the repository at this point in the history
Signed-off-by: Thomas Quandt <[email protected]>
  • Loading branch information
thquad authored and richard-cox committed Apr 16, 2021
1 parent 4de9dec commit da9bc2c
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
</div>
</app-meta-card-value>
</app-meta-card-item>
<app-meta-card-item *ngIf="enableUserEndpoints$ | async">
<app-meta-card-item *ngIf="viewCreator$ | async">
<app-meta-card-key>Creator</app-meta-card-key>
<app-meta-card-value>
<div>{{ row.creator.name }}</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
ViewContainerRef,
} from '@angular/core';
import { Store } from '@ngrx/store';
import { Observable, of, ReplaySubject, Subscription } from 'rxjs';
import { combineLatest, Observable, of, ReplaySubject, Subscription } from 'rxjs';
import { map, startWith } from 'rxjs/operators';

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

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

private componentRef: ComponentRef<EndpointListDetailsComponent>;

Expand Down Expand Up @@ -123,6 +125,7 @@ export class EndpointCardComponent extends CardCell<EndpointModel> implements On
private endpointListHelper: EndpointListHelper,
private componentFactoryResolver: ComponentFactoryResolver,
private userFavoriteManager: UserFavoriteManager,
private currentUserPermissionsService: CurrentUserPermissionsService,
private sessionService: SessionService,
) {
super();
Expand All @@ -133,7 +136,15 @@ export class EndpointCardComponent extends CardCell<EndpointModel> implements On
this.favorite = this.userFavoriteManager.getFavoriteEndpointFromEntity(this.row);
const e = this.endpointCatalogEntity.definition;
this.hasDetails = !!e && !!e.listDetailsComponent;
this.enableUserEndpoints$ = this.sessionService.userEndpointsNotDisabled();
this.viewCreator$ = combineLatest([
this.sessionService.userEndpointsEnabled(),
this.sessionService.userEndpointsNotDisabled(),
this.currentUserPermissionsService.can(StratosCurrentUserPermissions.EDIT_ADMIN_ENDPOINT),
]).pipe(
map(([userEndpointsEnabled, userEndpointsNotDisabled, isAdmin]) => {
return userEndpointsEnabled || (userEndpointsNotDisabled && isAdmin);
})
);
}

ngOnDestroy(): void {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ import { EndpointModel } from '../../../../../../../store/src/types/endpoint.typ
import { PaginationEntityState } from '../../../../../../../store/src/types/pagination.types';
import { UserFavoriteManager } from '../../../../../../../store/src/user-favorite-manager';
import { SessionService } from '../../../../services/session.service';
import { CurrentUserPermissionsService } from '../../../../../core/permissions/current-user-permissions.service';
import { StratosCurrentUserPermissions } from '../../../../../core/permissions/stratos-user-permissions.checker';
import { createTableColumnFavorite } from '../../list-table/table-cell-favorite/table-cell-favorite.component';
import { ITableColumn } from '../../list-table/table.types';
import {
Expand Down Expand Up @@ -116,14 +118,23 @@ export class EndpointsListConfigService implements IListConfig<EndpointModel> {
internalEventMonitorFactory: InternalEventMonitorFactory,
endpointListHelper: EndpointListHelper,
userFavoriteManager: UserFavoriteManager,
currentUserPermissionsService: CurrentUserPermissionsService,
sessionService: SessionService
) {
this.singleActions = endpointListHelper.endpointActions();
const favoriteCell = createTableColumnFavorite(
(row: EndpointModel) => userFavoriteManager.getFavoriteEndpointFromEntity(row)
);
this.columns.push(favoriteCell);
sessionService.userEndpointsNotDisabled().pipe(first()).subscribe(enabled => {
combineLatest([
sessionService.userEndpointsEnabled(),
sessionService.userEndpointsNotDisabled(),
currentUserPermissionsService.can(StratosCurrentUserPermissions.EDIT_ADMIN_ENDPOINT),
]).pipe(
map(([userEndpointsEnabled, userEndpointsNotDisabled, isAdmin]) => {
return userEndpointsEnabled || (userEndpointsNotDisabled && isAdmin);
})
).subscribe(enabled => {
if (enabled) {
this.columns.splice(4, 0, {
columnId: 'creator',
Expand Down

0 comments on commit da9bc2c

Please sign in to comment.