First implementation of refresh token.
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
import { Injectable } from "@angular/core";
|
||||
import { inject, Injectable } from "@angular/core";
|
||||
import { User } from "../model/User";
|
||||
import { UserRestService } from "../rest-services/user/user.rest-service";
|
||||
import { RefreshTokenRequest } from "../rest-services/user/model/refresh-token.model";
|
||||
|
||||
const JWT_PARAM = 'jwt';
|
||||
const REFRESH_TOKEN_PARAM = 'refresh-token';
|
||||
|
||||
interface UserDetails {
|
||||
sub: string;
|
||||
@@ -15,8 +18,11 @@ interface UserDetails {
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class AuthenticationService {
|
||||
authenticate(token: string): void {
|
||||
private userRestService = inject(UserRestService);
|
||||
|
||||
authenticate(token: string, refreshToken: string): void {
|
||||
localStorage.setItem(JWT_PARAM, token);
|
||||
localStorage.setItem(REFRESH_TOKEN_PARAM, refreshToken);
|
||||
}
|
||||
|
||||
unauthenticate(): void {
|
||||
@@ -44,6 +50,34 @@ export class AuthenticationService {
|
||||
return localStorage.getItem(JWT_PARAM) ?? undefined;
|
||||
}
|
||||
|
||||
isTokenExpired(): boolean {
|
||||
let result = false;
|
||||
|
||||
const userDetails = this.extractUserDetails();
|
||||
|
||||
if (userDetails) {
|
||||
const expirationDate = new Date(userDetails.exp * 1000);
|
||||
const now = new Date();
|
||||
|
||||
result = expirationDate < now;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
renewToken(): void {
|
||||
const refreshToken = localStorage.getItem(REFRESH_TOKEN_PARAM);
|
||||
if (refreshToken) {
|
||||
const request: RefreshTokenRequest = {
|
||||
refreshTokenValue: refreshToken
|
||||
};
|
||||
this.userRestService.refreshToken(request)
|
||||
.then(refreshTokenResponse => {
|
||||
this.authenticate(refreshTokenResponse.accessToken, refreshTokenResponse.refreshToken);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private extractUserFromLocalStorage(): User | undefined {
|
||||
let result: User | undefined = undefined;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user