✨ Force refresh token at the end of subscription
This commit is contained in:
parent
5c63e04ba0
commit
2851c5834d
@ -135,9 +135,8 @@ export default abstract class BaseApiService {
|
||||
|
||||
private async checkJwtToken() {
|
||||
const accessToken = CookieService.getInstance().getCookie("leCoffreAccessToken");
|
||||
if (!accessToken) {
|
||||
return;
|
||||
}
|
||||
if (!accessToken) return;
|
||||
|
||||
const userDecodedToken = jwt_decode(accessToken) as IUserJwtPayload;
|
||||
const customerDecodedToken = jwt_decode(accessToken) as ICustomerJwtPayload;
|
||||
|
||||
|
@ -13,6 +13,7 @@ import Subscriptions from "@Front/Api/LeCoffreApi/Admin/Subscriptions/Subscripti
|
||||
import JwtService from "@Front/Services/JwtService/JwtService";
|
||||
import { Subscription } from "le-coffre-resources/dist/Admin";
|
||||
import Stripe from "@Front/Api/LeCoffreApi/Admin/Stripe/Stripe";
|
||||
import CookieService from "@Front/Services/CookieService/CookieService";
|
||||
|
||||
export default function SubscriptionSuccess() {
|
||||
const [subscription, setSubscription] = useState<Subscription | null>(null);
|
||||
@ -27,6 +28,14 @@ export default function SubscriptionSuccess() {
|
||||
setCustomer(customer);
|
||||
}, []);
|
||||
|
||||
const refreshToken = useCallback(async () => {
|
||||
CookieService.getInstance().deleteCookie("leCoffreAccessToken");
|
||||
const refreshToken = CookieService.getInstance().getCookie("leCoffreRefreshToken");
|
||||
if (!refreshToken) return;
|
||||
await JwtService.getInstance().forceRefreshToken(refreshToken);
|
||||
await loadSubscription();
|
||||
}, [loadSubscription]);
|
||||
|
||||
const getFrequency = useCallback(() => {
|
||||
if (!subscription) return;
|
||||
const start = new Date(subscription.start_date);
|
||||
@ -38,8 +47,8 @@ export default function SubscriptionSuccess() {
|
||||
}, [subscription]);
|
||||
|
||||
useEffect(() => {
|
||||
loadSubscription();
|
||||
}, [loadSubscription]);
|
||||
refreshToken();
|
||||
}, [refreshToken]);
|
||||
|
||||
return (
|
||||
<DefaultTemplate title="Abonnement réussi">
|
||||
|
@ -112,6 +112,54 @@ export default class JwtService {
|
||||
return false;
|
||||
}
|
||||
|
||||
public async forceRefreshToken(refreshToken: string): Promise<boolean> {
|
||||
const userToken = jwt_decode(refreshToken) as IUserJwtPayload;
|
||||
const customerToken = jwt_decode(refreshToken) as ICustomerJwtPayload;
|
||||
|
||||
const variables = FrontendVariables.getInstance();
|
||||
if (userToken?.userId) {
|
||||
try {
|
||||
const headers = new Headers();
|
||||
headers.append("Authorization", `Bearer ${refreshToken}`);
|
||||
const response = await fetch(
|
||||
`${
|
||||
variables.BACK_API_PROTOCOL + variables.BACK_API_HOST + variables.BACK_API_ROOT_URL + variables.BACK_API_VERSION
|
||||
}/idnot/user/auth/refresh-token`,
|
||||
{ method: "POST", headers: headers },
|
||||
);
|
||||
const newAccessToken: { accessToken: string } = await response.json();
|
||||
if (newAccessToken) {
|
||||
await UserStore.instance.connect(newAccessToken.accessToken, refreshToken);
|
||||
return true;
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
return false;
|
||||
}
|
||||
} else if (customerToken?.customerId) {
|
||||
try {
|
||||
const headers = new Headers();
|
||||
headers.append("Authorization", `Bearer ${refreshToken}`);
|
||||
const response = await fetch(
|
||||
`${
|
||||
variables.BACK_API_PROTOCOL + variables.BACK_API_HOST + variables.BACK_API_ROOT_URL + variables.BACK_API_VERSION
|
||||
}/id360/customers/refresh-token`,
|
||||
{ method: "POST", headers: headers },
|
||||
);
|
||||
const newAccessToken: { accessToken: string } = await response.json();
|
||||
if (newAccessToken) {
|
||||
await CustomerStore.instance.connect(newAccessToken.accessToken, refreshToken);
|
||||
return true;
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public hasRule(name: string, action: string) {
|
||||
const token = this.decodeJwt();
|
||||
if (!token) return false;
|
||||
|
Loading…
x
Reference in New Issue
Block a user