Feature/Fix: Auth service will check local storage during get user in case another window has refreshed the token
This commit is contained in:
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "overlord",
|
"name": "overlord",
|
||||||
"version": "7.1.1",
|
"version": "7.2.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"ng": "ng",
|
"ng": "ng",
|
||||||
"start": "ng serve",
|
"start": "ng serve",
|
||||||
|
|||||||
@ -16,28 +16,39 @@ export class AuthService {
|
|||||||
public currentUser: Observable<User>;
|
public currentUser: Observable<User>;
|
||||||
|
|
||||||
constructor(private http: HttpClient) {
|
constructor(private http: HttpClient) {
|
||||||
|
this.checkStorage();
|
||||||
|
this.currentUser = this.currentUserSubject.asObservable();
|
||||||
|
}
|
||||||
|
|
||||||
|
checkStorage(): User {
|
||||||
const existingToken: User = JSON.parse(localStorage.getItem(JWT_USER));
|
const existingToken: User = JSON.parse(localStorage.getItem(JWT_USER));
|
||||||
if (existingToken === null || Date.now() > existingToken.exp * 1000) {
|
if (existingToken === null || Date.now() > existingToken.exp * 1000) {
|
||||||
localStorage.removeItem(JWT_USER);
|
localStorage.removeItem(JWT_USER);
|
||||||
this.currentUserSubject = new BehaviorSubject<User>(null);
|
this.currentUserSubject = new BehaviorSubject<User>(null);
|
||||||
|
return null;
|
||||||
} else {
|
} else {
|
||||||
this.currentUserSubject = new BehaviorSubject<User>(existingToken);
|
this.currentUserSubject = new BehaviorSubject<User>(existingToken);
|
||||||
|
return existingToken;
|
||||||
}
|
}
|
||||||
this.currentUser = this.currentUserSubject.asObservable();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public get user(): User {
|
public get user(): User {
|
||||||
const val = this.currentUserSubject.value;
|
let val = this.currentUserSubject.value;
|
||||||
if (val == null) {
|
if (val == null) {
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
const expired = Date.now() > val.exp * 1000;
|
let expired = Date.now() > val.exp * 1000;
|
||||||
|
if (expired) {
|
||||||
|
val = this.checkStorage();
|
||||||
|
}
|
||||||
|
if (val == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
expired = Date.now() > val.exp * 1000;
|
||||||
if (expired) {
|
if (expired) {
|
||||||
this.logout();
|
this.logout();
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
return this.currentUserSubject.value;
|
|
||||||
}
|
}
|
||||||
|
return this.currentUserSubject.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
login(username: string, password: string, otp: string) {
|
login(username: string, password: string, otp: string) {
|
||||||
|
|||||||
2
setup.py
2
setup.py
@ -11,7 +11,7 @@ with open(os.path.join(here, 'requirements.txt'), "r") as r:
|
|||||||
requires = r.read().splitlines()
|
requires = r.read().splitlines()
|
||||||
|
|
||||||
setup(name='brewman',
|
setup(name='brewman',
|
||||||
version='7.1.1',
|
version='7.2.0',
|
||||||
description='brewman',
|
description='brewman',
|
||||||
long_description=README + '\n\n' + CHANGES,
|
long_description=README + '\n\n' + CHANGES,
|
||||||
classifiers=[
|
classifiers=[
|
||||||
|
|||||||
Reference in New Issue
Block a user