Select Git revision
-
florimondmanca authored
remove tutoring app, remove unused student and tutor fields, regenerate migrations for all apps, remove celery
florimondmanca authoredremove tutoring app, remove unused student and tutor fields, regenerate migrations for all apps, remove celery
auth.service.ts 3.04 KiB
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Router } from '@angular/router';
import { Observable, BehaviorSubject } from 'rxjs';
import { tap, map } from 'rxjs/operators';
import { environment } from 'environments/environment';
import { User } from './models';
import { ObjectStoredItem, SimpleStoredItem } from '../storage';
import { UserAdapter } from './adapters';
class StoredUser extends ObjectStoredItem<User> { key = 'oser-cs-user-info'; }
class StoredToken extends SimpleStoredItem { key = 'oser-cs-user-token'; }
@Injectable({
providedIn: 'root',
})
export class AuthService {
private loginUrl = environment. + 'auth/get-token/';
private resetUrl = environment.apiUrl + 'rest-auth/password/reset/';
private resetConfirmUrl = environment.apiUrl + 'rest-auth/password/reset/confirm/';
private mandatorySignatureUrl = environment.apiUrl + '';
fromGuard: boolean;
redirectUrl: string;
fromUnauthorized: boolean;
private userAdapter = new UserAdapter();
private user = new StoredUser();
private token = new StoredToken();
private user$: BehaviorSubject<User>;
constructor(private http: HttpClient, private router: Router) {
const userData = this.getUserSnapshot();
const initialUser = userData ? new User(userData) : null;
this.user$ = new BehaviorSubject(initialUser);
}
login(username: string, password: string): Observable<boolean> {
return this.http.post<any>(this.loginUrl, { username: username, password: password }).pipe(
tap(data => this.token.set(data.token)),
map(data => this.userAdapter.adapt(data.user)),
tap((user: User) => this.user.set(user)),
tap((user: User) => this.user$.next(user)),
map(() => true),
);
}
reset(email: string): Observable<boolean> {
console.log("reset function of auth service");
return this.http.post<any>(this.resetUrl, { email }).pipe(
map(() => true),
);
}
resetConfirm(uid: string, token: string, new_password1: string, new_password2: string): Observable<boolean> {
console.log("reset confirm function");
return this.http.post<any>(this.resetConfirmUrl, { uid, token, new_password1, new_password2 }).pipe(
map(() => true),
);
}
redirectLogin() {
this.router.navigate(['/connexion']);
}
getUserSnapshot(): User {
return this.user.get();
}
getUser(): Observable<User> {
return this.user$.asObservable();
}
getToken(): string {
return this.token.get();
}
// Headers for use in authenticated calls to the backend API.
getAuthorizationHeaders(): HttpHeaders {
return new HttpHeaders({ Authorization: 'Token ' + this.getToken() });
}
checkSignatureCharter(email: string) : Observable<boolean> {
return this.http.post<any>(this.mandatorySignatureUrl, {email : email}).pipe(
map(() => true),
);
}
get isLoggedIn(): boolean {
if (this.user.get()) {
return true;
}
return false;
}
logout() {
this.user.destroy();
this.token.destroy();
this.user$.next(null);
}
}