From 8427691db4114590237bf08214ddbcb02776bfbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Andr=C3=A9?= Date: Sat, 14 Mar 2020 23:10:21 +0100 Subject: [PATCH] Fix --- Back/skydiveLogs-api/Data/JumpsDb-log.db | Bin 0 -> 24576 bytes .../src/app/login/login.component.ts | 9 ++- Front/skydivelogs-app/src/models/user.ts | 15 ++-- .../src/services/authentication.service.ts | 64 +++++++++++------- 4 files changed, 55 insertions(+), 33 deletions(-) create mode 100644 Back/skydiveLogs-api/Data/JumpsDb-log.db diff --git a/Back/skydiveLogs-api/Data/JumpsDb-log.db b/Back/skydiveLogs-api/Data/JumpsDb-log.db new file mode 100644 index 0000000000000000000000000000000000000000..f849812e728d4978df60963724e233e03e378454 GIT binary patch literal 24576 zcmeI(u}T9$5P;#?NwgHfScuIP+A4N7DWYhR7_rbo8#&N~gT#a6P<#y^NANLh1Yg7^ z&W=euC15O-e<8Wuo!ve7xNdf8B2pQRn=IN$R_s@OQIR*Th$NHX_*t{4dO!B2TfePh zI78qICVDf3elfKqVbwlB@huTkTvS8sY7B*GNMk7YBA-+HxM>I=fB*srAbv|hlBpi+ z*=YGPyNVN{huL6Q9H;$jS+HS|7rE$BTAs>^%%<{gc2in%k`9M=`QS>{Y}aYOdDd%m zTDQ&n{k_h4cX#_@r_rs~E#z-Ju#UemrfSPar9~<_?@_jwh5!NxAb { diff --git a/Front/skydivelogs-app/src/models/user.ts b/Front/skydivelogs-app/src/models/user.ts index 2a232f8..8937564 100644 --- a/Front/skydivelogs-app/src/models/user.ts +++ b/Front/skydivelogs-app/src/models/user.ts @@ -1,8 +1,9 @@ export class User { - id: number; - username: string; - password: string; - firstName: string; - lastName: string; - authdata?: string; -} \ No newline at end of file + id: number; + login: string; + password: string; + firstName: string; + lastName: string; + authdata?: string; + expired?: number; +} diff --git a/Front/skydivelogs-app/src/services/authentication.service.ts b/Front/skydivelogs-app/src/services/authentication.service.ts index 03e59c0..698af7e 100644 --- a/Front/skydivelogs-app/src/services/authentication.service.ts +++ b/Front/skydivelogs-app/src/services/authentication.service.ts @@ -1,16 +1,15 @@ -import { Injectable } from '@angular/core'; -import { HttpClient } from '@angular/common/http'; +import { Injectable } from "@angular/core"; +import { HttpClient } from "@angular/common/http"; -import { BehaviorSubject, Observable } from 'rxjs'; -import { map } from 'rxjs/operators'; - -import { User } from '../models/user'; -import { BaseService } from './base.service'; -import { DateService } from './date.service'; +import { BehaviorSubject, Observable } from "rxjs"; +import { map } from "rxjs/operators"; +import { User } from "../models/user"; +import { BaseService } from "./base.service"; +import { DateService } from "./date.service"; @Injectable({ - providedIn: 'root' + providedIn: "root" }) export class AuthenticationService extends BaseService { private currentUserSubject: BehaviorSubject; @@ -19,16 +18,18 @@ export class AuthenticationService extends BaseService { constructor(private http: HttpClient, private dateService: DateService) { super(); - this.currentUserSubject = new BehaviorSubject(JSON.parse(localStorage.getItem('currentUser'))); + this.currentUserSubject = new BehaviorSubject( + JSON.parse(localStorage.getItem("currentUser")) + ); this.currentUser = this.currentUserSubject.asObservable(); } public get currentUserValue(): User { - const tmp = localStorage.getItem('currentUser'); + const tmp = localStorage.getItem("currentUser"); if (tmp) { const storedUser = JSON.parse(tmp); if (new Date().getTime() > storedUser.expired) { - localStorage.removeItem('currentUser'); + localStorage.removeItem("currentUser"); } } @@ -41,23 +42,38 @@ export class AuthenticationService extends BaseService { password: password }; - return this.http.post(`${this.apiUrl}/User/Authenticate`, bodyLogin, { - headers: this.headers - }) - .pipe(map(user => { - // store user details and basic auth credentials in local storage to keep user logged in between page refreshes - user.authdata = window.btoa(username + ':' + password); - user.expired = this.dateService.AddDays(new Date(), 1).getTime(); + return this.http + .post(`${this.apiUrl}/User/Authenticate`, bodyLogin, { + headers: this.headers + }) + .pipe( + map(user => { + // store user details and basic auth credentials in local storage to keep user logged in between page refreshes + user.authdata = window.btoa(username + ":" + password); + user.expired = this.dateService.AddDays(new Date(), 1).getTime(); - localStorage.setItem('currentUser', JSON.stringify(user)); - this.currentUserSubject.next(user); - return user; - })); + localStorage.setItem("currentUser", JSON.stringify(user)); + this.currentUserSubject.next(user); + return user; + }) + ); + } + + create(newUser: User) { + return this.http + .post(`${this.apiUrl}/User`, newUser, { + headers: this.headers + }) + .pipe( + map(result => { + this.login(newUser.login, newUser.password); + }) + ); } logout() { // remove user from local storage to log user out - localStorage.removeItem('currentUser'); + localStorage.removeItem("currentUser"); this.currentUserSubject.next(null); } }