mirror of https://github.com/Chocobozzz/PeerTube
29 lines
812 B
TypeScript
29 lines
812 B
TypeScript
import { Injectable } from '@angular/core'
|
|
import { ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot } from '@angular/router'
|
|
import { AuthService } from '../auth/auth.service'
|
|
|
|
@Injectable()
|
|
export class UserRightGuard implements CanActivate, CanActivateChild {
|
|
|
|
constructor (
|
|
private router: Router,
|
|
private auth: AuthService
|
|
) {}
|
|
|
|
canActivate (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
|
|
const user = this.auth.getUser()
|
|
if (user) {
|
|
const neededUserRight = route.data.userRight
|
|
|
|
if (user.hasRight(neededUserRight)) return true
|
|
}
|
|
|
|
this.router.navigate([ '/login' ])
|
|
return false
|
|
}
|
|
|
|
canActivateChild (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
|
|
return this.canActivate(route, state)
|
|
}
|
|
}
|