Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import {AuthService} from "./auth.service";
- import {UsersService} from "./users.service";
- import {User} from "../models/user.model";
- @Injectable()
- export class AuthGuard implements CanActivate, CanActivateChild {
- private user: User;
- constructor( private userService: UsersService,
- private authService: AuthService,
- private router: Router ) {}
- canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {
- if (window.localStorage.getItem("user") !== null) {
- this.user = JSON.parse(window.localStorage.getItem("user"));
- this.userService.getUserByEmail(this.user.email)
- .subscribe((user: User) => {
- if (user) {
- if (user.password === this.user.password) {
- return true;
- }
- else {
- this.router.navigate(['/login'], {
- queryParams: {
- accessDenied: true
- }
- });
- return false;
- }
- }
- else {
- this.router.navigate(['/login'], {
- queryParams: {
- accessDenied: true
- }
- });
- return false;
- }
- });
- }
- else {
- this.router.navigate(['/login'], { queryParams: {
- accessDenied: true
- }
- });
- console.log("false 3");
- return false;
- }
- }
- canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {
- return this.canActivate(childRoute, state);
- }
- }
- import {Http} from '@angular/http';
- import {Injectable} from '@angular/core';
- import {Observable} from 'rxjs/Observable';
- import {User} from '../models/user.model';
- import {BaseApi} from '../core/base-api';
- @Injectable()
- export class UsersService extends BaseApi {
- constructor(public http: Http) {
- super(http);
- }
- getUserByEmail(email: string): Observable<User> {
- return this.get('users?email=' + email)
- .map((user: User[]) => user[0] ? user [0] : undefined);
- }
- createNewUser(user: User): Observable<User> {
- return this.post('users', user);
- }
- }
Add Comment
Please, Sign In to add comment