123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import { Injectable } from '@angular/core';
- import { HttpClient } from '@angular/common/http';
- import { Observable } from 'rxjs';
- import { map } from 'rxjs/operators';
- import { LocalStorageService, SessionStorageService } from 'ngx-webstorage';
-
- import { SERVER_API_URL } from 'app/app.constants';
-
- @Injectable({ providedIn: 'root' })
- export class AuthServerProvider {
- constructor(private http: HttpClient, private $localStorage: LocalStorageService, private $sessionStorage: SessionStorageService) {}
-
- getToken() {
- return this.$localStorage.retrieve('authenticationToken') || this.$sessionStorage.retrieve('authenticationToken');
- }
-
- login(credentials): Observable<any> {
- const data = {
- username: credentials.username,
- password: credentials.password,
- rememberMe: credentials.rememberMe
- };
- return this.http.post(SERVER_API_URL + 'api/authenticate', data, { observe: 'response' }).pipe(map(authenticateSuccess.bind(this)));
-
- function authenticateSuccess(resp) {
- const bearerToken = resp.headers.get('Authorization');
- if (bearerToken && bearerToken.slice(0, 7) === 'Bearer ') {
- const jwt = bearerToken.slice(7, bearerToken.length);
- this.storeAuthenticationToken(jwt, credentials.rememberMe);
- return jwt;
- }
- }
- }
-
- loginWithToken(jwt, rememberMe) {
- if (jwt) {
- this.storeAuthenticationToken(jwt, rememberMe);
- return Promise.resolve(jwt);
- } else {
- return Promise.reject('auth-jwt-service Promise reject'); // Put appropriate error message here
- }
- }
-
- storeAuthenticationToken(jwt, rememberMe) {
- if (rememberMe) {
- this.$localStorage.store('authenticationToken', jwt);
- } else {
- this.$sessionStorage.store('authenticationToken', jwt);
- }
- }
-
- logout(): Observable<any> {
- return new Observable(observer => {
- this.$localStorage.clear('authenticationToken');
- this.$sessionStorage.clear('authenticationToken');
- observer.complete();
- });
- }
- }
|