✨ 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() {
|
private async checkJwtToken() {
|
||||||
const accessToken = CookieService.getInstance().getCookie("leCoffreAccessToken");
|
const accessToken = CookieService.getInstance().getCookie("leCoffreAccessToken");
|
||||||
if (!accessToken) {
|
if (!accessToken) return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
const userDecodedToken = jwt_decode(accessToken) as IUserJwtPayload;
|
const userDecodedToken = jwt_decode(accessToken) as IUserJwtPayload;
|
||||||
const customerDecodedToken = jwt_decode(accessToken) as ICustomerJwtPayload;
|
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 JwtService from "@Front/Services/JwtService/JwtService";
|
||||||
import { Subscription } from "le-coffre-resources/dist/Admin";
|
import { Subscription } from "le-coffre-resources/dist/Admin";
|
||||||
import Stripe from "@Front/Api/LeCoffreApi/Admin/Stripe/Stripe";
|
import Stripe from "@Front/Api/LeCoffreApi/Admin/Stripe/Stripe";
|
||||||
|
import CookieService from "@Front/Services/CookieService/CookieService";
|
||||||
|
|
||||||
export default function SubscriptionSuccess() {
|
export default function SubscriptionSuccess() {
|
||||||
const [subscription, setSubscription] = useState<Subscription | null>(null);
|
const [subscription, setSubscription] = useState<Subscription | null>(null);
|
||||||
@ -27,6 +28,14 @@ export default function SubscriptionSuccess() {
|
|||||||
setCustomer(customer);
|
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(() => {
|
const getFrequency = useCallback(() => {
|
||||||
if (!subscription) return;
|
if (!subscription) return;
|
||||||
const start = new Date(subscription.start_date);
|
const start = new Date(subscription.start_date);
|
||||||
@ -38,8 +47,8 @@ export default function SubscriptionSuccess() {
|
|||||||
}, [subscription]);
|
}, [subscription]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
loadSubscription();
|
refreshToken();
|
||||||
}, [loadSubscription]);
|
}, [refreshToken]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<DefaultTemplate title="Abonnement réussi">
|
<DefaultTemplate title="Abonnement réussi">
|
||||||
|
@ -112,6 +112,54 @@ export default class JwtService {
|
|||||||
return false;
|
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) {
|
public hasRule(name: string, action: string) {
|
||||||
const token = this.decodeJwt();
|
const token = this.decodeJwt();
|
||||||
if (!token) return false;
|
if (!token) return false;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user