Projekt

Obecné

Profil

Stáhnout (1.53 KB) Statistiky
| Větev: | Tag: | Revize:
1
import {Injectable} from '@angular/core';
2
import {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from '@angular/router';
3
import {ProfileService} from '../services/util/profile.service';
4
import {UserProfile} from '../models/user.model';
5
import {UserType} from '../enums/common.enum';
6
import {Observable} from 'rxjs';
7
import {BaseGuard} from './base-guard';
8

    
9
@Injectable({
10
  providedIn: 'root'
11
})
12
export class EmployeeComponentGuard extends BaseGuard implements CanActivate {
13

    
14
  constructor(private profileService: ProfileService, protected router: Router) {
15
    super(router);
16
  }
17

    
18
  /**
19
   * Logged user with access rights as employer can navigate to employee component
20
   * Logged user with access rights as employee is navigated to dashboard
21
   * User that is not logged is navigated to login page
22
   * @param route activated route snapshot
23
   * @param state router state snapshot
24
   */
25
  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
26
    return new Observable<boolean>((obs) => {
27
      this.profileService.getLoggedUser()
28
        .subscribe((userProfile: UserProfile) => {
29
            if (userProfile.role === UserType.EMPLOYER) {
30
              console.log('User can navigate to the page');
31
              obs.next(true);
32
            } else {
33
              obs.next(this.navigateUserToDashboard());
34
            }
35
            obs.complete();
36
          },
37
          () => {
38
            obs.next(this.navigateUserToLogin());
39
            obs.complete();
40
          }
41
        );
42
    });
43
  }
44

    
45
}
(3-3/3)