|
@@ -10,40 +10,19 @@ import { AlertMessageComponent } from 'src/app/components/shared/alert-message/a
|
|
|
import { map, tap } from 'rxjs/operators';
|
|
import { map, tap } from 'rxjs/operators';
|
|
|
import * as jwt_decode from 'jwt-decode';
|
|
import * as jwt_decode from 'jwt-decode';
|
|
|
import { isPlatformBrowser } from '@angular/common';
|
|
import { isPlatformBrowser } from '@angular/common';
|
|
|
-import { StorageService } from 'src/app/services/storage.service';
|
|
|
|
|
|
|
+import { StorageService } from 'src/app/services/storage.service'; // Assurez-vous de créer ce service
|
|
|
|
|
|
|
|
@Injectable({
|
|
@Injectable({
|
|
|
providedIn: 'root'
|
|
providedIn: 'root'
|
|
|
})
|
|
})
|
|
|
export class AuthService {
|
|
export class AuthService {
|
|
|
private apiUrl = environment.apiUrl;
|
|
private apiUrl = environment.apiUrl;
|
|
|
-
|
|
|
|
|
- // Définir un utilisateur par défaut pour éviter les null
|
|
|
|
|
- private defaultUser: User = {
|
|
|
|
|
- _id: '',
|
|
|
|
|
- firstname: '',
|
|
|
|
|
- lastname: '',
|
|
|
|
|
- email: '',
|
|
|
|
|
- role: '',
|
|
|
|
|
- googleId: '',
|
|
|
|
|
- birthday: new Date(0),
|
|
|
|
|
- phonenumber: 0,
|
|
|
|
|
- adress: '',
|
|
|
|
|
- isActive: false,
|
|
|
|
|
- isGain: false,
|
|
|
|
|
- register_date: new Date(0),
|
|
|
|
|
- gains: []
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
private currentUserSubject: BehaviorSubject<User> = new BehaviorSubject<User>(null);
|
|
private currentUserSubject: BehaviorSubject<User> = new BehaviorSubject<User>(null);
|
|
|
public currentUser: Observable<User> = this.currentUserSubject.asObservable();
|
|
public currentUser: Observable<User> = this.currentUserSubject.asObservable();
|
|
|
-
|
|
|
|
|
private tokenSubject: BehaviorSubject<Token>;
|
|
private tokenSubject: BehaviorSubject<Token>;
|
|
|
public token: Observable<Token>;
|
|
public token: Observable<Token>;
|
|
|
-
|
|
|
|
|
private user_infoSubject: BehaviorSubject<User>;
|
|
private user_infoSubject: BehaviorSubject<User>;
|
|
|
public user_info: Observable<User>;
|
|
public user_info: Observable<User>;
|
|
|
-
|
|
|
|
|
private messageSource = new BehaviorSubject('default message');
|
|
private messageSource = new BehaviorSubject('default message');
|
|
|
currentMessage = this.messageSource.asObservable();
|
|
currentMessage = this.messageSource.asObservable();
|
|
|
|
|
|
|
@@ -54,14 +33,10 @@ export class AuthService {
|
|
|
private storageService: StorageService,
|
|
private storageService: StorageService,
|
|
|
@Inject(PLATFORM_ID) private platformId: Object
|
|
@Inject(PLATFORM_ID) private platformId: Object
|
|
|
) {
|
|
) {
|
|
|
- this.tokenSubject = new BehaviorSubject<Token>(
|
|
|
|
|
- JSON.parse(this.storageService.getItem('token'))
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ this.tokenSubject = new BehaviorSubject<Token>(JSON.parse(this.storageService.getItem('token')));
|
|
|
this.token = this.tokenSubject.asObservable();
|
|
this.token = this.tokenSubject.asObservable();
|
|
|
-
|
|
|
|
|
- // Utiliser defaultUser si rien en storage
|
|
|
|
|
- const storedUser = JSON.parse(this.storageService.getItem('user'));
|
|
|
|
|
- this.user_infoSubject = new BehaviorSubject<User>(storedUser || this.defaultUser);
|
|
|
|
|
|
|
+ const storedUser = this.storageService.getItem('user');
|
|
|
|
|
+ this.user_infoSubject = new BehaviorSubject<User>(JSON.parse(this.storageService.getItem('user')));
|
|
|
this.user_info = this.user_infoSubject.asObservable();
|
|
this.user_info = this.user_infoSubject.asObservable();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -78,7 +53,7 @@ export class AuthService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
signIn(credentials): Observable<Token> {
|
|
signIn(credentials): Observable<Token> {
|
|
|
- return this.http.post<Token>(`https://api-preprod.foodgame.fr/api/auth/login`, credentials)
|
|
|
|
|
|
|
+ return this.http.post<Token>(`https://api-dev.foodgame.fr/api/auth/login`, credentials)
|
|
|
.pipe(map(token => {
|
|
.pipe(map(token => {
|
|
|
this.storageService.setItem('token', JSON.stringify(token));
|
|
this.storageService.setItem('token', JSON.stringify(token));
|
|
|
this.tokenSubject.next(token);
|
|
this.tokenSubject.next(token);
|
|
@@ -89,15 +64,15 @@ export class AuthService {
|
|
|
signInWithGoogle(): Observable<User> {
|
|
signInWithGoogle(): Observable<User> {
|
|
|
return this.http.get<User>(`${this.apiUrl}/api/auth/google`).pipe(
|
|
return this.http.get<User>(`${this.apiUrl}/api/auth/google`).pipe(
|
|
|
map(user => {
|
|
map(user => {
|
|
|
|
|
+ console.log('je suis present', user);
|
|
|
this.storageService.setItem('user', JSON.stringify(user));
|
|
this.storageService.setItem('user', JSON.stringify(user));
|
|
|
- this.user_infoSubject.next(user);
|
|
|
|
|
return user;
|
|
return user;
|
|
|
})
|
|
})
|
|
|
);
|
|
);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
signInAdmin(credentials): Observable<Token> {
|
|
signInAdmin(credentials): Observable<Token> {
|
|
|
- return this.http.post<Token>(`https://api-preprod.foodgame.fr/api/auth/admin`, credentials)
|
|
|
|
|
|
|
+ return this.http.post<Token>(`https://api-dev.foodgame.fr/api/auth/admin`, credentials)
|
|
|
.pipe(map(token => {
|
|
.pipe(map(token => {
|
|
|
this.storageService.setItem('token', JSON.stringify(token));
|
|
this.storageService.setItem('token', JSON.stringify(token));
|
|
|
this.tokenSubject.next(token);
|
|
this.tokenSubject.next(token);
|
|
@@ -106,7 +81,7 @@ export class AuthService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
signUP(data): Observable<Token> {
|
|
signUP(data): Observable<Token> {
|
|
|
- return this.http.post<Token>(`https://api-preprod.foodgame.fr/api/auth/signup`, data)
|
|
|
|
|
|
|
+ return this.http.post<Token>(`https://api-dev.foodgame.fr/api/auth/signup`, data)
|
|
|
.pipe(map(token => {
|
|
.pipe(map(token => {
|
|
|
this.storageService.setItem('token', JSON.stringify(token));
|
|
this.storageService.setItem('token', JSON.stringify(token));
|
|
|
this.tokenSubject.next(token);
|
|
this.tokenSubject.next(token);
|
|
@@ -115,11 +90,11 @@ export class AuthService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
lostPassword(email): Observable<any> {
|
|
lostPassword(email): Observable<any> {
|
|
|
- return this.http.put<any>(`https://api-preprod.foodgame.fr/api/auth/forgot-password`, email);
|
|
|
|
|
|
|
+ return this.http.put<any>(`https://api-dev.foodgame.fr/api/auth/forgot-password`, email);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
resetPassword(data): Observable<any> {
|
|
resetPassword(data): Observable<any> {
|
|
|
- return this.http.put<any>(`https://api-preprod.foodgame.fr/api/auth/reset-password`, data);
|
|
|
|
|
|
|
+ return this.http.put<any>(`https://api-dev.foodgame.fr/api/auth/reset-password`, data);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public isLoggedIn() {
|
|
public isLoggedIn() {
|
|
@@ -138,7 +113,7 @@ export class AuthService {
|
|
|
this.storageService.removeItem('token');
|
|
this.storageService.removeItem('token');
|
|
|
this.tokenSubject.next(null);
|
|
this.tokenSubject.next(null);
|
|
|
this.storageService.removeItem('user');
|
|
this.storageService.removeItem('user');
|
|
|
- this.user_infoSubject.next(this.defaultUser); // Mettre un user vide
|
|
|
|
|
|
|
+ this.user_infoSubject.next(null);
|
|
|
this.router.navigate(['/login']);
|
|
this.router.navigate(['/login']);
|
|
|
if (isPlatformBrowser(this.platformId)) {
|
|
if (isPlatformBrowser(this.platformId)) {
|
|
|
setTimeout(() => {
|
|
setTimeout(() => {
|
|
@@ -148,12 +123,12 @@ export class AuthService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
getUserInfo(): Observable<User> {
|
|
getUserInfo(): Observable<User> {
|
|
|
- let decodedToken: payloadToken = jwt_decode(this.tokenSubject.value.token);
|
|
|
|
|
- return this.http.get<User>(`https://api-preprod.foodgame.fr/api/users/${decodedToken.userId}`)
|
|
|
|
|
|
|
+ let decodedToken: payloadToken = jwt_decode(this.tokenSubject.value.token);
|
|
|
|
|
+ return this.http.get<User>(`https://api-dev.foodgame.fr/api/users/${decodedToken.userId}`)
|
|
|
.pipe(map(user => {
|
|
.pipe(map(user => {
|
|
|
this.storageService.setItem('user', JSON.stringify(user));
|
|
this.storageService.setItem('user', JSON.stringify(user));
|
|
|
this.user_infoSubject.next(user);
|
|
this.user_infoSubject.next(user);
|
|
|
- return user;
|
|
|
|
|
|
|
+ return user;
|
|
|
}));
|
|
}));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -165,3 +140,195 @@ export class AuthService {
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+// import { environment } from 'src/environments/environment';
|
|
|
|
|
+// import { User } from './../models/userResponse';
|
|
|
|
|
+// import { Token, payloadToken } from './../models/token';
|
|
|
|
|
+// import { Injectable } from '@angular/core';
|
|
|
|
|
+// import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
|
|
|
+// import { BehaviorSubject, Observable, throwError } from 'rxjs';
|
|
|
|
|
+// import { Router } from '@angular/router';
|
|
|
|
|
+// import { MatSnackBar } from '@angular/material/snack-bar';
|
|
|
|
|
+// import { AlertMessageComponent } from 'src/app/components/shared/alert-message/alert-message.component'
|
|
|
|
|
+// import { catchError, map, tap } from 'rxjs/operators';
|
|
|
|
|
+// import * as jwt_decode from 'jwt-decode';
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+// @Injectable({
|
|
|
|
|
+// providedIn: 'root'
|
|
|
|
|
+// })
|
|
|
|
|
+// export class AuthService {
|
|
|
|
|
+
|
|
|
|
|
+// //url api
|
|
|
|
|
+// private apiUrl = environment.apiUrl
|
|
|
|
|
+
|
|
|
|
|
+// private currentUserSubject: BehaviorSubject<User> = new BehaviorSubject<User>(null);
|
|
|
|
|
+// public currentUser: Observable<User> = this.currentUserSubject.asObservable();
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+// private tokenSubject: BehaviorSubject<Token>;
|
|
|
|
|
+// public token: Observable<Token>;
|
|
|
|
|
+
|
|
|
|
|
+// private user_infoSubject: BehaviorSubject<User>;
|
|
|
|
|
+// public user_info: Observable<User>;
|
|
|
|
|
+
|
|
|
|
|
+// private messageSource = new BehaviorSubject('default message');
|
|
|
|
|
+// currentMessage = this.messageSource.asObservable();
|
|
|
|
|
+
|
|
|
|
|
+// constructor(private http: HttpClient, public router: Router, public snackBar: MatSnackBar) {
|
|
|
|
|
+
|
|
|
|
|
+// this.tokenSubject = new BehaviorSubject<Token>(JSON.parse(localStorage.getItem('token')));
|
|
|
|
|
+// this.token = this.tokenSubject.asObservable();
|
|
|
|
|
+
|
|
|
|
|
+// this.user_infoSubject = new BehaviorSubject<User>(JSON.parse(localStorage.getItem('user')));
|
|
|
|
|
+// this.user_info = this.user_infoSubject.asObservable();
|
|
|
|
|
+
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+// changeMessage(message: string) {
|
|
|
|
|
+// this.messageSource.next(message)
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+// //get token
|
|
|
|
|
+// public get tokenValue(): Token {
|
|
|
|
|
+// return this.tokenSubject.value;
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+// //get user Info
|
|
|
|
|
+// public get userValue(): User {
|
|
|
|
|
+// return this.user_infoSubject.value;
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+// // login get token on login
|
|
|
|
|
+// signIn(credentials): Observable<Token> {
|
|
|
|
|
+// //debugger;
|
|
|
|
|
+// console.log("url ========",this.apiUrl);
|
|
|
|
|
+
|
|
|
|
|
+// return this.http.post<Token>(`${this.apiUrl}/api/auth/login`, credentials)
|
|
|
|
|
+// .pipe(map(token => {
|
|
|
|
|
+// // store jwt token in local storage
|
|
|
|
|
+// localStorage.setItem('token', JSON.stringify(token));
|
|
|
|
|
+// this.tokenSubject.next(token);
|
|
|
|
|
+// return token;
|
|
|
|
|
+// }));
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+// // Méthode pour s'authentifier avec Google
|
|
|
|
|
+// signInWithGoogle(): Observable<User> {
|
|
|
|
|
+// return this.http.get<User>(`${this.apiUrl}/api/auth/google`).pipe(
|
|
|
|
|
+// map(user => {
|
|
|
|
|
+// console.log('je suis present', user )
|
|
|
|
|
+// localStorage.setItem('user', JSON.stringify(user));
|
|
|
|
|
+// return user;
|
|
|
|
|
+// })
|
|
|
|
|
+// );
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+// // signInWithGoogle(): Observable<string> {
|
|
|
|
|
+// // return this.http.get<any>(`${this.apiUrl}/api/auth/google/callback`).pipe(
|
|
|
|
|
+// // map(response => response.token),
|
|
|
|
|
+// // catchError(error => {
|
|
|
|
|
+// // console.log(error);
|
|
|
|
|
+// // // Gérer l'erreur
|
|
|
|
|
+// // throw error;
|
|
|
|
|
+// // })
|
|
|
|
|
+// // );
|
|
|
|
|
+// // }
|
|
|
|
|
+// // login get token on login admin
|
|
|
|
|
+// signInAdmin(credentials): Observable<Token> {
|
|
|
|
|
+// //debugger;
|
|
|
|
|
+// console.log("url ========",this.apiUrl);
|
|
|
|
|
+
|
|
|
|
|
+// return this.http.post<Token>(`${this.apiUrl}/api/auth/admin`, credentials)
|
|
|
|
|
+// .pipe(map(token => {
|
|
|
|
|
+// // store jwt token in local storage
|
|
|
|
|
+// localStorage.setItem('token', JSON.stringify(token));
|
|
|
|
|
+// this.tokenSubject.next(token);
|
|
|
|
|
+// return token;
|
|
|
|
|
+// }));
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+// // iscription get token on login
|
|
|
|
|
+// signUP(data): Observable<Token> {
|
|
|
|
|
+
|
|
|
|
|
+// return this.http.post<Token>(`${this.apiUrl}/api/auth/signup`, data)
|
|
|
|
|
+// .pipe(map(token => {
|
|
|
|
|
+// // store jwt token in local storage
|
|
|
|
|
+// localStorage.setItem('token', JSON.stringify(token));
|
|
|
|
|
+// this.tokenSubject.next(token);
|
|
|
|
|
+// return token;
|
|
|
|
|
+// }));
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+// // mot de passe oublie
|
|
|
|
|
+// lostPassword(email): Observable<any> {
|
|
|
|
|
+// return this.http.put<any>(`${this.apiUrl}/api/auth/forgot-password`, email)
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+// // réinitialiser mot de passe
|
|
|
|
|
+// resetPassword(data): Observable<any> {
|
|
|
|
|
+// return this.http.put<any>(`${this.apiUrl}/api/auth/reset-password`, data)
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+// // isLoggedIn
|
|
|
|
|
+// public isLoggedIn() {
|
|
|
|
|
+// return localStorage.getItem('token') !== null;
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+// getCurrentUser(): Observable<User> {
|
|
|
|
|
+// return this.http.get<User>('/api/auth/user').pipe(
|
|
|
|
|
+// tap((user) => {
|
|
|
|
|
+// this.currentUserSubject.next(user);
|
|
|
|
|
+// })
|
|
|
|
|
+// );
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+// //logout
|
|
|
|
|
+// public logout() {
|
|
|
|
|
+// // remove token from local storage
|
|
|
|
|
+// localStorage.removeItem('token');
|
|
|
|
|
+// this.tokenSubject.next(null);
|
|
|
|
|
+// // remove user from local storage
|
|
|
|
|
+// localStorage.removeItem('user');
|
|
|
|
|
+// this.user_infoSubject.next(null);
|
|
|
|
|
+// this.router.navigate(['/login']);
|
|
|
|
|
+// setTimeout(() => {
|
|
|
|
|
+// document.location.reload()
|
|
|
|
|
+// },1000)
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+// // get info user
|
|
|
|
|
+// getUserInfo(): Observable<User> {
|
|
|
|
|
+
|
|
|
|
|
+// let decodedToken : payloadToken = jwt_decode(this.tokenSubject.value.token);
|
|
|
|
|
+// return this.http.get<User>(`${this.apiUrl}/api/users/${decodedToken.userId}`)
|
|
|
|
|
+// .pipe(map(user => {
|
|
|
|
|
+// // store user info in local storage
|
|
|
|
|
+// localStorage.setItem('user', JSON.stringify(user));
|
|
|
|
|
+// this.user_infoSubject.next(user);
|
|
|
|
|
+// return user;
|
|
|
|
|
+// }));
|
|
|
|
|
+
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+// openSnackBar(message: string) {
|
|
|
|
|
+// this.snackBar.openFromComponent(AlertMessageComponent, {
|
|
|
|
|
+// data: message,
|
|
|
|
|
+// panelClass: ['blue-snackbar'],
|
|
|
|
|
+// duration: 10000
|
|
|
|
|
+// });
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+// }
|