constructor(private authService: AuthService) {
   if (this.authService.getToken()) {
     this.authService.getCurrentUser().subscribe(
       data => {},
       error => {
         console.log(error);
       }
     );
   }
 }
 data => {
   this.authService.saveToken(data['accessToken']);
   this.authService.getCurrentUser().subscribe(
     user => {},
     error => {
       console.log(error);
     }
   );
   this.router.navigate([localStorage.getItem('returnUrl')]);
   this.flashMessages.show('Logged in successfull', {
     cssClass: 'alert-success text-center',
     timeout: 2000
   });
 },
  login() {
    const body = { email: this.email, password: this.password };

    this.authService.login(body).subscribe(
      data => {
        this.authService.saveToken(data['accessToken']);
        this.authService.getCurrentUser().subscribe(
          user => {},
          error => {
            console.log(error);
          }
        );
        this.router.navigate([localStorage.getItem('returnUrl')]);
        this.flashMessages.show('Logged in successfull', {
          cssClass: 'alert-success text-center',
          timeout: 2000
        });
      },
      error => {
        console.log(error);
        this.flashMessages.show('Log in unsuccessfull. Please try again', {
          cssClass: 'alert-danger text-center',
          timeout: 2000
        });
      }
    );
  }
 logout() {
   this.authService.logout();
   this.flashMessages.show('Logged out', {
     cssClass: 'alert-success',
     timeout: 2000
   });
 }
 canActivate(route, state: RouterStateSnapshot) {
   if (this.authService.loggedIn()) {
     return true;
   } else {
     this.router.navigate(['/login'], {
       queryParams: { returnUrl: state.url }
     });
     return false;
   }
 }
  canActivate() {
    if (this.authService.loggedIn()) {
      const token = this.authService.getToken();
      const decodedToken = this.jwtHelper.decodeToken(token);
      if (
        decodedToken.userRoles.find(
          role => role.authority === 'ROLE_ADMIN'
        )
      ) {
        return true;
      }
    }

    this.router.navigate(['/']);
    this.flashMessages.show('You don\'t have creadentials for this page', {
      cssClass: 'alert-danger',
      timeout: 3000
    });
    return false;
  }
  register() {
    const user = new User(this.name, this.surname, this.email, this.password);

    this.authService.register(user).subscribe(
      data => {
        console.log(data);
        this.router.navigate(['/login']);
      },

      error => {
        console.log(error);
      }
    );
  }
 isAdmin() {
   if (this.authService.loggedIn()) {
     const token = this.authService.getToken();
     const decodedToken = this.jwtHelper.decodeToken(token);
     if (
       decodedToken.userRoles.find(role => role.authority === 'ROLE_ADMIN')
     ) {
       return true;
     }
   }
 }