Advertisement
Guest User

Authentication Service - DL Angular 6 - 2019

a guest
Jan 30th, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { HttpClient } from '@angular/common/http';
  2. import { Injectable } from '@angular/core';
  3. import { environment } from '../../../environments/environment';
  4.  
  5. @Injectable({
  6.   providedIn: 'root'
  7. })
  8. export class AuthService {
  9.  
  10.   constructor(
  11.     private http: HttpClient
  12.   ) { }
  13.  
  14.   getAuthToken(): string {
  15.     return localStorage.getItem('authToken');
  16.   }
  17.  
  18.   async RegisterAsync(username: string, password: string): Promise<void> {
  19.     return new Promise<void>((resolve, reject) => {
  20.  
  21.       let newUser: any = {
  22.         username: username,
  23.         password: password,
  24.       };
  25.  
  26.       this.http.put<any>(`${environment.API_BASE_URL}${environment.API_Register}`, newUser, { withCredentials: true }).toPromise().then(
  27.         data => {
  28.             resolve();
  29.         },
  30.         error => {
  31.           reject(error);
  32.         }
  33.       ).catch(e => {
  34.         reject(e);
  35.       });
  36.     });
  37.   }
  38.  
  39.   async isLoggedInAsync(): Promise<boolean> {
  40.     let userDetails: any = await this.getUserDetailsAsync();
  41.     return (userDetails != null);
  42.   }
  43.  
  44.   async getUserDetailsAsync(): Promise<any> {
  45.     return new Promise<any>((resolve, reject) => {
  46.       this.http.get<any>(`${environment.API_BASE_URL}${environment.API_GetAuthenticatedUser}`).toPromise()
  47.         .then((data: any) => {
  48.           resolve(data);
  49.         }).catch((reason: any) => {
  50.           resolve(null); // Soft error
  51.           //reject(reason); // Hard error
  52.         });
  53.     });
  54.   }
  55.  
  56.   async LoginAsync(username: string, password: string): Promise<boolean> {
  57.     localStorage.removeItem('authToken');
  58.     return new Promise<boolean>((resolve, reject) => {
  59.  
  60.       let loginCredentials: any = {
  61.         username: username,
  62.         password: password,
  63.       };
  64.  
  65.       this.http.post<any>(`${environment.API_BASE_URL}${environment.API_Login}`, loginCredentials, { withCredentials: true }).toPromise().then(
  66.         data => {
  67.           if (data && data['token']) {
  68.             localStorage.setItem('authToken', data['token']);
  69.             resolve(true);
  70.           }
  71.           else {
  72.             resolve(false);
  73.           }
  74.         },
  75.         error => {
  76.           resolve(false);
  77.           //reject(error); // Hard error
  78.         }
  79.       ).catch(e => {
  80.         console.log(e);
  81.       });
  82.     });
  83.   }
  84.  
  85.   async LogoutAsync(): Promise<boolean> {
  86.     return new Promise<boolean>((resolve, reject) => {
  87.       this.http.post<any>(`${environment.API_BASE_URL}${environment.API_Logout}`, {}).toPromise().then(
  88.         data => {
  89.           localStorage.removeItem('authToken');
  90.           resolve(true);
  91.         },
  92.         error => {
  93.           resolve(false);
  94.           //reject(error); // Hard error
  95.         }
  96.       ).catch(e => {
  97.         console.log(e);
  98.       });
  99.     });
  100.   }
  101.  
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement