Skip to content
Snippets Groups Projects
login.service.ts 1.64 KiB
Newer Older
  • Learn to ignore specific revisions
  • François Agneray's avatar
    François Agneray committed
    import { Injectable } from '@angular/core';
    import { HttpClient } from '@angular/common/http';
    
    import { Observable, of } from 'rxjs';
    import { map } from 'rxjs/operators';
    
    import { Login, LoginToken, ChangePassword } from './model';
    import { environment } from '../../../environments/environment';
    
    @Injectable()
    export class LoginService {
        private API_PATH: string = environment.apiUrl + '/';
    
        constructor(private http: HttpClient) { }
    
        login(login: Login): Observable<LoginToken> {
            return this.http.post<{data: LoginToken}>(this.API_PATH + 'login', login).pipe(
                map(res => res.data)
            );
        }
    
        resetConnectionToLocalstorage() {
            localStorage.removeItem('email');
            localStorage.removeItem('token');
        }
    
        saveConnectionToLocalstorage(loginToken: LoginToken) {
            localStorage.setItem('email', loginToken.email);
            localStorage.setItem('token', loginToken.token);
        }
    
        getConnectionFromLocalstorage() {
            let loginToken: LoginToken = null;
            const email = localStorage.getItem('email');
            const token = localStorage.getItem('token');
    
            if (email && token) {
                loginToken = {
                    email,
                    token
                };
            }
            return of(loginToken);
        }
    
        register(login: Login) {
            return this.http.post(this.API_PATH + 'register', login);
        }
    
        forgotPassword(email: string) {
            return this.http.post(this.API_PATH + 'new-password', email);
        }
    
        changePassword(email: string, changePassword: ChangePassword) {
            return this.http.post(this.API_PATH + 'change-password', {...changePassword, email});
        }
    }