Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
- if (state.url !== '/login' && !this.authService.isLoggedIn()) {
- this.router.navigate(['/login']);
- return false;
- }
- return true;
- }
- import { Injectable } from '@angular/core';
- import { Http, Response, Headers } from '@angular/http';
- import { Router } from '@angular/router'
- import { Observable } from 'rxjs/Rx';
- import { IMenu } from '../interfaces/menu';
- import { AppSettings } from '../AppSettings';
- @Injectable()
- export class LoginService{
- private _baseUrl:string = AppSettings.API_ENDPOINT;
- private _loggedIn = false;
- constructor(private _http : Http, private _router : Router){
- this._loggedIn = !!localStorage.getItem('auth_token')
- && !!localStorage.getItem('role')
- && !!localStorage.getItem('menu')
- }
- //Post function to send username and password to authorize in the server
- login(Username:string, Password:string) : Observable<IMenu[]>{
- let headers = new Headers();
- headers.append("Authorization", "Basic " + btoa(Username + ":" + Password));
- headers.append("Content-Type", "application/x-www-form-urlencoded");
- return this._http.post(this._baseUrl+"auth/login", " " , {headers: headers} ).delay(2000).
- map((response: Response) => {
- <IMenu[]>response.json();
- localStorage.setItem("menu",JSON.stringify(<IMenu[]>response.json()));
- localStorage.setItem("auth_token", response.headers.get("Token"));
- localStorage.setItem("role", response.headers.get("Role"));
- }).catch(this.handleError);
- }
- logout() {
- localStorage.removeItem("auth_token");
- localStorage.removeItem("menu");
- localStorage.removeItem("role");
- this._router.navigate(['/login']);
- return false;
- }
- isLoggedIn() {
- return this._loggedIn;
- }
- private handleError(error: Response){
- return Observable.throw(error.json().error || 'Server Error!');
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement