Redirect and notify for perms guard, add frontend tests

This commit is contained in:
Michael Shamoon
2022-11-25 00:10:34 -08:00
parent 28d70438ec
commit 4279ba13e9
3 changed files with 172 additions and 3 deletions

View File

@@ -2,18 +2,34 @@ import {
CanActivate,
ActivatedRouteSnapshot,
RouterStateSnapshot,
UrlTree,
Router,
} from '@angular/router'
import { Injectable } from '@angular/core'
import { PermissionsService } from '../services/permissions.service'
import { ToastService } from '../services/toast.service'
@Injectable()
export class PermissionsGuard implements CanActivate {
constructor(private permissionsService: PermissionsService) {}
constructor(
private permissionsService: PermissionsService,
private router: Router,
private toastService: ToastService
) {}
canActivate(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): boolean {
return this.permissionsService.currentUserCan(route.data.requiredPermission)
): boolean | UrlTree {
if (
!this.permissionsService.currentUserCan(route.data.requiredPermission)
) {
this.toastService.showError(
$localize`You don't have permissions to do that`
)
return this.router.parseUrl('/dashboard')
} else {
return true
}
}
}