Guest User

Untitled

a guest
May 8th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.39 KB | None | 0 0
  1. import { Injectable } from '@angular/core';
  2. import { HttpClient, HttpHeaders } from '@angular/common/http';
  3. import { Observable } from 'rxjs';
  4. import { AuthResponseModel } from "./auth-response.model";
  5. import { catchError, map } from 'rxjs/operators';
  6. import { HttpErrorResponse } from '@angular/common/http';
  7. import decode from 'jwt-decode'
  8. @Injectable()
  9. export class AuthService {
  10. private authURL: string = "http://localhost:8090/oauth/token";
  11. private loginPath : string = "/login";
  12. isLoggedIn: boolean = false;
  13. redirectURL: string;
  14. public isRefreshing : boolean = false;
  15.  
  16. constructor(private http: HttpClient) {
  17. this.redirectURL = "";
  18. this.isLoggedIn = this.getToken() != null;
  19.  
  20. }
  21. login(user: string, password: string): Observable<boolean> {
  22. var data = new FormData();
  23. data.append("grant_type", "password");
  24. data.append("username", user);
  25. data.append("password ", password);
  26.  
  27. const httpOptions = {
  28. headers: new HttpHeaders({
  29. 'Authorization': 'Basic ' + window.btoa("web:secret")
  30. })
  31. };
  32.  
  33. return this.http.post<AuthResponseModel>(this.authURL, data, httpOptions)
  34. .pipe(
  35. map((r: AuthResponseModel) => {
  36. if (r.access_token) {
  37. localStorage.setItem("access_token", r.access_token);
  38. localStorage.setItem("refresh_token", r.refresh_token);
  39. this.isLoggedIn = true;
  40. return true;
  41. }
  42. }
  43. ));
  44. };
  45.  
  46. refresh() : Observable<any> {
  47. var data = new FormData();
  48. this.isRefreshing = true;
  49. data.append("grant_type", "refresh_token");
  50. data.append("refresh_token", this.getRefreshToken());
  51. const httpOptions = {
  52. headers: new HttpHeaders({
  53. 'Authorization': 'Basic ' + window.btoa("web:secret")
  54. })
  55. };
  56.  
  57. return this.http.post<AuthResponseModel>(this.authURL, data, httpOptions)
  58. .pipe(
  59. map( r => {
  60. console.log("Old token" + this.getToken());
  61. localStorage.setItem("access_token", r.access_token);
  62. localStorage.setItem("refresh_token", r.refresh_token);
  63. this.isLoggedIn = true;
  64. this.isRefreshing = false;
  65. console.log("New token" + r.access_token);
  66. return r.access_token;
  67. })
  68. )
  69.  
  70. }
  71.  
  72. logout(): void {
  73. localStorage.removeItem("access_token");
  74. localStorage.removeItem("refresh_token");
  75. this.isLoggedIn = false;
  76. }
  77.  
  78. checkTokenExpired(checkRefresh = false) : boolean {
  79. if(checkRefresh) { return decode(this.getRefreshToken()).exp < (Date.now().valueOf() / 1000); }
  80. return decode(this.getToken()).exp < (Date.now().valueOf() / 1000);
  81. }
  82. getToken(): string {
  83. return localStorage.getItem("access_token");
  84. }
  85.  
  86. getRefreshToken() : string {
  87. return localStorage.getItem('refresh_token');
  88. }
  89.  
  90.  
  91. }
  92.  
  93. /*
  94. * Public API Surface of auth-lib
  95. */
  96.  
  97. export * from './lib/auth-lib.service';
  98. export * from './lib/auth-interceptor';
  99. export * from './lib/auth-response.model';
  100.  
  101. import { Component, OnInit } from '@angular/core';
  102. import { AuthService } from 'auth-lib';
  103. import { Router } from '@angular/router';
  104. import {Injectable} from '@angular/core';
  105.  
  106. @Component({
  107. selector: 'app-login',
  108. templateUrl: './login.component.html',
  109. styleUrls: ['./login.component.scss']
  110. })
  111.  
  112. export class LoginComponent implements OnInit {
  113.  
  114. user : string;
  115. pass : string;
  116.  
  117. constructor(private authService : AuthService, private router : Router) {
  118. this.user = "";
  119. this.pass = "";
  120. }
Add Comment
Please, Sign In to add comment