user-right-guard.service.ts 807 B

1234567891011121314151617181920212223242526272829
  1. import { Injectable } from '@angular/core'
  2. import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'
  3. import { AuthService } from '../auth/auth.service'
  4. import { RedirectService } from './redirect.service'
  5. @Injectable()
  6. export class UserRightGuard {
  7. constructor (
  8. private redirectService: RedirectService,
  9. private auth: AuthService
  10. ) {}
  11. canActivate (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
  12. const user = this.auth.getUser()
  13. if (user) {
  14. const neededUserRight = route.data.userRight
  15. if (user.hasRight(neededUserRight)) return true
  16. }
  17. this.redirectService.redirectToLogin()
  18. return false
  19. }
  20. canActivateChild (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
  21. return this.canActivate(route, state)
  22. }
  23. }