mirror of https://github.com/Chocobozzz/PeerTube
30 lines
807 B
TypeScript
30 lines
807 B
TypeScript
import { Injectable } from '@angular/core'
|
|
import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'
|
|
import { AuthService } from '../auth/auth.service'
|
|
import { RedirectService } from './redirect.service'
|
|
|
|
@Injectable()
|
|
export class UserRightGuard {
|
|
|
|
constructor (
|
|
private redirectService: RedirectService,
|
|
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.redirectService.redirectToLogin()
|
|
return false
|
|
}
|
|
|
|
canActivateChild (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
|
|
return this.canActivate(route, state)
|
|
}
|
|
}
|