IsAdmin is temporary is admin or is manager
This commit is contained in:
parent
e0152b93e6
commit
3ab53b59fa
@ -1,53 +0,0 @@
|
|||||||
import { Injectable } from '@angular/core';
|
|
||||||
import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';
|
|
||||||
import { UserService } from '../user/user.service';
|
|
||||||
import { AppLoadStateService } from '../utils/app-load-state.service';
|
|
||||||
import { Observable } from 'rxjs';
|
|
||||||
import { AppStateService } from '../state/app-state.service';
|
|
||||||
import { NotificationService, NotificationType } from '../notification/notification.service';
|
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root'
|
|
||||||
})
|
|
||||||
export class ProjectMemberGuard implements CanActivate {
|
|
||||||
constructor(
|
|
||||||
private readonly _router: Router,
|
|
||||||
private readonly _appLoadStateService: AppLoadStateService,
|
|
||||||
private readonly _appStateService: AppStateService,
|
|
||||||
private readonly _userService: UserService,
|
|
||||||
private readonly _notificationService: NotificationService,
|
|
||||||
private readonly _translateService: TranslateService
|
|
||||||
) {}
|
|
||||||
|
|
||||||
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
|
|
||||||
return new Observable((obs) => {
|
|
||||||
if (this._userService.isManager(this._userService.user)) {
|
|
||||||
obs.next(true);
|
|
||||||
obs.complete();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const projectId = route.params.projectId;
|
|
||||||
this._appStateService.loadAllProjects().then(() => {
|
|
||||||
const isProjectMember = this._appStateService.allProjects
|
|
||||||
.find((pw) => pw.project.projectId === projectId)
|
|
||||||
?.project.memberIds.includes(this._userService.user.id);
|
|
||||||
if (!isProjectMember) {
|
|
||||||
this._router.navigate(['ui', 'projects']);
|
|
||||||
this._appLoadStateService.pushLoadingEvent(false);
|
|
||||||
this._notificationService.showToastNotification(
|
|
||||||
this._translateService.instant('project-member-guard.access-denied'),
|
|
||||||
null,
|
|
||||||
NotificationType.ERROR
|
|
||||||
);
|
|
||||||
obs.next(false);
|
|
||||||
obs.complete();
|
|
||||||
} else {
|
|
||||||
obs.next(true);
|
|
||||||
obs.complete();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -11,12 +11,7 @@ class UrlTree {}
|
|||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
})
|
})
|
||||||
export class RedRoleGuard implements CanActivate {
|
export class RedRoleGuard implements CanActivate {
|
||||||
constructor(
|
constructor(protected readonly _router: Router, private readonly _appLoadStateService: AppLoadStateService, private readonly _userService: UserService) {}
|
||||||
protected readonly _router: Router,
|
|
||||||
protected readonly _keycloak: KeycloakService,
|
|
||||||
private readonly _appLoadStateService: AppLoadStateService,
|
|
||||||
private readonly _userService: UserService
|
|
||||||
) {}
|
|
||||||
|
|
||||||
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
|
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
|
||||||
return new Observable((obs) => {
|
return new Observable((obs) => {
|
||||||
@ -26,6 +21,11 @@ export class RedRoleGuard implements CanActivate {
|
|||||||
obs.next(false);
|
obs.next(false);
|
||||||
obs.complete();
|
obs.complete();
|
||||||
} else {
|
} else {
|
||||||
|
if (!this._userService.isUser() && state.url.startsWith('/ui/projects')) {
|
||||||
|
this._router.navigate(['/ui/admin-dictionaries']);
|
||||||
|
obs.next(false);
|
||||||
|
obs.complete();
|
||||||
|
}
|
||||||
obs.next(true);
|
obs.next(true);
|
||||||
obs.complete();
|
obs.complete();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -208,6 +208,14 @@ export class PermissionsService {
|
|||||||
if (!user) {
|
if (!user) {
|
||||||
user = this._userService.user;
|
user = this._userService.user;
|
||||||
}
|
}
|
||||||
return user.isAdmin;
|
// TODO temporary
|
||||||
|
return user.isAdmin || user.isManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
isUser(user?: UserWrapper) {
|
||||||
|
if (!user) {
|
||||||
|
user = this._userService.user;
|
||||||
|
}
|
||||||
|
return user.isUser;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -62,6 +62,7 @@
|
|||||||
[mode]="'text'"
|
[mode]="'text'"
|
||||||
[theme]="'tomorrow'"
|
[theme]="'tomorrow'"
|
||||||
[options]="aceOptions"
|
[options]="aceOptions"
|
||||||
|
[readOnly]="!permissionsService.isAdmin()"
|
||||||
(textChanged)="textChanged($event)"
|
(textChanged)="textChanged($event)"
|
||||||
[autoUpdateContent]="true"
|
[autoUpdateContent]="true"
|
||||||
[text]="dictionaryEntriesAsText"
|
[text]="dictionaryEntriesAsText"
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<div class="red-top-bar">
|
<div class="red-top-bar">
|
||||||
<div class="top-bar-row">
|
<div class="top-bar-row">
|
||||||
<div class="menu visible-lt-lg">
|
<div class="menu visible-lt-lg" *ngIf="permissionsService.isUser()">
|
||||||
<button [matMenuTriggerFor]="menuNav" mat-flat-button>
|
<button [matMenuTriggerFor]="menuNav" mat-flat-button>
|
||||||
<mat-icon svgIcon="red:menu"></mat-icon>
|
<mat-icon svgIcon="red:menu"></mat-icon>
|
||||||
</button>
|
</button>
|
||||||
@ -18,7 +18,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</mat-menu>
|
</mat-menu>
|
||||||
</div>
|
</div>
|
||||||
<div class="menu flex-2 visible-lg breadcrumbs-container">
|
<div class="menu flex-2 visible-lg breadcrumbs-container" *ngIf="permissionsService.isUser()">
|
||||||
<a class="breadcrumb" routerLink="/ui/projects" translate="top-bar.navigation-items.projects"></a>
|
<a class="breadcrumb" routerLink="/ui/projects" translate="top-bar.navigation-items.projects"></a>
|
||||||
<mat-icon *ngIf="appStateService.activeProject" svgIcon="red:arrow-right"></mat-icon>
|
<mat-icon *ngIf="appStateService.activeProject" svgIcon="red:arrow-right"></mat-icon>
|
||||||
<a *ngIf="appStateService.activeProject" class="breadcrumb" [routerLink]="'/ui/projects/' + appStateService.activeProjectId">
|
<a *ngIf="appStateService.activeProject" class="breadcrumb" [routerLink]="'/ui/projects/' + appStateService.activeProjectId">
|
||||||
|
|||||||
@ -7,14 +7,16 @@ import { UserService } from '../user/user.service';
|
|||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
})
|
})
|
||||||
export class AppStateGuard implements CanActivate {
|
export class AppStateGuard implements CanActivate {
|
||||||
constructor(
|
constructor(private readonly _appStateService: AppStateService, private readonly _userService: UserService) {}
|
||||||
private readonly _appStateService: AppStateService,
|
|
||||||
private readonly _userService: UserService
|
|
||||||
) {}
|
|
||||||
|
|
||||||
async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
|
async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {
|
||||||
await this._userService.loadAllUsersIfNecessary();
|
await this._userService.loadAllUsersIfNecessary();
|
||||||
await this._appStateService.loadAllProjectsIfNecessary();
|
|
||||||
|
if (this._userService.isUser()) {
|
||||||
|
console.log('jere');
|
||||||
|
await this._appStateService.loadAllProjectsIfNecessary();
|
||||||
|
}
|
||||||
|
|
||||||
await this._appStateService.loadDictionaryDataIfNecessary();
|
await this._appStateService.loadDictionaryDataIfNecessary();
|
||||||
await this._appStateService.updateDictionaryVersion();
|
await this._appStateService.updateDictionaryVersion();
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user