Merge Dev in Staging

This commit is contained in:
Arnaud D. Natali 2023-10-11 14:53:44 +02:00 committed by GitHub
commit 13f8cfc97c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 60 additions and 20 deletions

View File

@ -17,7 +17,7 @@ export default function Login() {
const router = useRouter();
const error = router.query["error"];
const [isErrorModalOpen, setIsErrorModalOpen] = useState(false);
const [isErrorModalOpen, setIsErrorModalOpen] = useState(0);
const redirectUserOnConnection = useCallback(() => {
const variables = FrontendVariables.getInstance();
@ -28,16 +28,25 @@ export default function Login() {
);
}, [router]);
const openErrorModal = useCallback(() => {
setIsErrorModalOpen(true);
const openErrorModal = useCallback((index: number) => {
setIsErrorModalOpen(index);
}, []);
const closeErrorModal = useCallback(() => {
setIsErrorModalOpen(false);
setIsErrorModalOpen(0);
}, []);
useEffect(() => {
if (error === "1") openErrorModal();
switch (error) {
case "1":
openErrorModal(1);
break;
case "2":
openErrorModal(2);
break;
default:
break;
}
}, [error, openErrorModal]);
return (
@ -58,7 +67,7 @@ export default function Login() {
</Link>
</div>
<Confirm
isOpen={isErrorModalOpen}
isOpen={isErrorModalOpen === 1}
onClose={closeErrorModal}
showCancelButton={false}
onAccept={closeErrorModal}
@ -71,6 +80,20 @@ export default function Login() {
</Typography>
</div>
</Confirm>
<Confirm
isOpen={isErrorModalOpen === 2}
onClose={closeErrorModal}
showCancelButton={false}
onAccept={closeErrorModal}
closeBtn
header={"Session expirée"}
confirmText={"OK"}>
<div className={classes["modal-content"]}>
<Typography typo={ITypo.P_16} className={classes["text"]}>
Veuillez vous reconnecter.
</Typography>
</div>
</Confirm>
</DefaultDoubleSidePage>
);
}

View File

@ -13,6 +13,7 @@ import Loader from "@Front/Components/DesignSystem/Loader";
import UserStore from "@Front/Stores/UserStore";
import Link from "next/link";
import JwtService from "@Front/Services/JwtService/JwtService";
import CookieService from "@Front/Services/CookieService/CookieService";
export default function LoginCallBack() {
const router = useRouter();
@ -20,10 +21,6 @@ export default function LoginCallBack() {
useEffect(() => {
async function getUser() {
const code = router.query["code"];
const refreshedTokens = await JwtService.getInstance().refreshToken();
if (refreshedTokens) {
return router.push(Module.getInstance().get().modules.pages.Folder.props.path);
}
if (code) {
try {
const token = await Auth.getInstance().getIdnotJwt(code as string);
@ -35,7 +32,13 @@ export default function LoginCallBack() {
return;
}
}
return router.push(Module.getInstance().get().modules.pages.Login.props.path + "?error=1");
const refreshToken = CookieService.getInstance().getCookie("leCoffreRefreshToken");
if(!refreshToken) return router.push(Module.getInstance().get().modules.pages.Login.props.path + "?error=1");
const isTokenRefreshed = await JwtService.getInstance().refreshToken(refreshToken);
if (isTokenRefreshed) {
return router.push(Module.getInstance().get().modules.pages.Folder.props.path);
}
return router.push(Module.getInstance().get().modules.pages.Login.props.path + "?error=2");
}
getUser();
}),

View File

@ -13,6 +13,7 @@ import CustomerStore from "@Front/Stores/CustomerStore";
import Module from "@Front/Config/Module";
import Link from "next/link";
import JwtService from "@Front/Services/JwtService/JwtService";
import CookieService from "@Front/Services/CookieService/CookieService";
export default function LoginCallBackCustomer() {
const router = useRouter();
@ -20,10 +21,6 @@ export default function LoginCallBackCustomer() {
useEffect(() => {
const getReport = async () => {
const tokenid360 = router.query["token"];
const refreshedTokens = await JwtService.getInstance().refreshToken();
if (refreshedTokens) {
return router.push(Module.getInstance().get().modules.pages.Folder.pages.Select.props.path);
}
if (tokenid360) {
let token: ICustomerTokens | undefined;
try {
@ -36,7 +33,13 @@ export default function LoginCallBackCustomer() {
CustomerStore.instance.connect(token.accessToken, token.refreshToken);
router.push(Module.getInstance().get().modules.pages.Folder.pages.Select.props.path);
}
return router.push(Module.getInstance().get().modules.pages.CustomersLogin.props.path + "?error=1");
const refreshToken = CookieService.getInstance().getCookie("leCoffreRefreshToken");
if(!refreshToken) return router.push(Module.getInstance().get().modules.pages.Login.props.path + "?error=1");
const isTokenRefreshed = await JwtService.getInstance().refreshToken(refreshToken);
if (isTokenRefreshed) {
return router.push(Module.getInstance().get().modules.pages.Folder.pages.Select.props.path);
}
return router.push(Module.getInstance().get().modules.pages.Login.props.path + "?error=2");
};
getReport();
}),

View File

@ -35,6 +35,19 @@ export default class JwtService {
return (this.instance ??= new this());
}
public getUserJwtPayload(): IUserJwtPayload | undefined {
const accessToken = CookieService.getInstance().getCookie("leCoffreAccessToken");
if (!accessToken) return;
return jwt_decode(accessToken);
}
public getCustomerJwtPayload(): ICustomerJwtPayload | undefined {
const accessToken = CookieService.getInstance().getCookie("leCoffreAccessToken");
if (!accessToken) return;
return jwt_decode(accessToken);
}
public decodeJwt(): IUserJwtPayload | undefined {
const accessToken = CookieService.getInstance().getCookie("leCoffreAccessToken");
if (!accessToken) return;
@ -51,14 +64,12 @@ export default class JwtService {
* @description : set a cookie with a name and a value that expire in 7 days
* @throws {Error} If the name or the value is empty
*/
public async refreshToken() {
const refreshToken = CookieService.getInstance().getCookie("leCoffreRefreshToken");
const variables = await FrontendVariables.getInstance();
if (!refreshToken) return false;
public async refreshToken(refreshToken: string): Promise<boolean> {
const userToken = jwt_decode(refreshToken) as IUserJwtPayload;
const customerToken = jwt_decode(refreshToken) as ICustomerJwtPayload;
if (userToken?.exp && userToken.exp > Math.floor(Date.now() / 1000)) {
const variables = FrontendVariables.getInstance();
if (userToken?.userId) {
try {
const headers = new Headers();