Merge branch 'dev' into staging

This commit is contained in:
Maxime Lalo 2024-04-23 14:43:51 +02:00
commit 122cd8367f
4 changed files with 74 additions and 34 deletions

View File

@ -6,6 +6,7 @@ import NavigationLink from "../../NavigationLink";
import classes from "./classes.module.scss";
import { AppRuleActions, AppRuleNames } from "@Front/Api/Entities/rule";
import BurgerModalSubmenu from "./BurgerModalSubmenu";
import Rules, { RulesMode } from "@Front/Components/Elements/Rules";
type IProps = {
isOpen: boolean;
@ -21,20 +22,31 @@ export default class BurgerModal extends React.Component<IProps, IState> {
<>
<div className={classes["background"]} onClick={this.props.closeModal} />
<div className={classes["root"]}>
<NavigationLink
path={Module.getInstance().get().modules.pages.Folder.props.path}
text="Dossiers en cours"
routesActive={[
Module.getInstance().get().modules.pages.Folder.pages.FolderInformation.props.path,
Module.getInstance().get().modules.pages.Folder.pages.CreateFolder.props.path,
]}
/>
<NavigationLink
path={Module.getInstance().get().modules.pages.Folder.pages.FolderArchived.props.path}
text="Dossiers archivés"
routesActive={[Module.getInstance().get().modules.pages.Folder.pages.FolderArchived.props.path]}
/>
<div className={classes["separator"]} />
<Rules
mode={RulesMode.OPTIONAL}
rules={[
{
action: AppRuleActions.read,
name: AppRuleNames.officeFolders,
},
]}>
<>
<NavigationLink
path={Module.getInstance().get().modules.pages.Folder.props.path}
text="Dossiers en cours"
routesActive={[
Module.getInstance().get().modules.pages.Folder.pages.FolderInformation.props.path,
Module.getInstance().get().modules.pages.Folder.pages.CreateFolder.props.path,
]}
/>
<NavigationLink
path={Module.getInstance().get().modules.pages.Folder.pages.FolderArchived.props.path}
text="Dossiers archivés"
routesActive={[Module.getInstance().get().modules.pages.Folder.pages.FolderArchived.props.path]}
/>
<div className={classes["separator"]} />
</>
</Rules>
<BurgerModalSubmenu
text={"Espace super admin"}

View File

@ -63,27 +63,30 @@ export default function Navigation() {
return (
<div className={classes["root"]}>
<HeaderLink
text={"Dossiers en cours"}
path={Module.getInstance().get().modules.pages.Folder.props.path}
routesActive={[
Module.getInstance().get().modules.pages.Folder.pages.FolderInformation.props.path,
Module.getInstance().get().modules.pages.Folder.pages.CreateFolder.props.path,
]}
/>
<HeaderLink
text={"Dossiers archivés"}
path={Module.getInstance().get().modules.pages.Folder.pages.FolderArchived.props.path}
routesActive={[Module.getInstance().get().modules.pages.Folder.pages.FolderArchived.props.path]}
/>
{/* <Rules
mode={RulesMode.NECESSARY}
<Rules
mode={RulesMode.OPTIONAL}
rules={[
{
action: AppRuleActions.update,
name: AppRuleNames.officeRoles,
action: AppRuleActions.read,
name: AppRuleNames.officeFolders,
},
]}> */}
]}>
<>
<HeaderLink
text={"Dossiers en cours"}
path={Module.getInstance().get().modules.pages.Folder.props.path}
routesActive={[
Module.getInstance().get().modules.pages.Folder.pages.FolderInformation.props.path,
Module.getInstance().get().modules.pages.Folder.pages.CreateFolder.props.path,
]}
/>
<HeaderLink
text={"Dossiers archivés"}
path={Module.getInstance().get().modules.pages.Folder.pages.FolderArchived.props.path}
routesActive={[Module.getInstance().get().modules.pages.Folder.pages.FolderArchived.props.path]}
/>
</>
</Rules>
<HeaderSubmenu
text={"Espace office"}
links={[

View File

@ -26,6 +26,11 @@ export default function LoginCallBack() {
const token = await Auth.getInstance().getIdnotJwt(code as string);
if (!token) return router.push(Module.getInstance().get().modules.pages.Login.props.path);
await UserStore.instance.connect(token.accessToken, token.refreshToken);
const jwt = JwtService.getInstance().decodeJwt();
if (!jwt) return router.push(Module.getInstance().get().modules.pages.Login.props.path + "?error=1");
if (!jwt.rules.includes("GET folders")) {
return router.push(Module.getInstance().get().modules.pages.Subscription.pages.New.props.path);
}
return router.push(Module.getInstance().get().modules.pages.Folder.props.path);
} catch (e: any) {
if (e.http_status === 401 && e.message === "Email not found") {
@ -40,6 +45,11 @@ export default function LoginCallBack() {
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);
const jwt = JwtService.getInstance().decodeJwt();
if (!jwt) return router.push(Module.getInstance().get().modules.pages.Login.props.path + "?error=1");
if (!jwt.rules.includes("GET folders")) {
return router.push(Module.getInstance().get().modules.pages.Subscription.pages.New.props.path);
}
if (isTokenRefreshed) {
return router.push(Module.getInstance().get().modules.pages.Folder.props.path);
}

View File

@ -31,7 +31,7 @@ export default function SubscriptionFacturation() {
const { close: closeCancelSubscription, isOpen: isCancelSubscriptionOpen } = useOpenable();
const { close: closeConfirmation, isOpen: isConfirmationOpen } = useOpenable();
const { close: closeConfirmationRemoveSeats, isOpen: isConfirmationRemoveSeatsOpen, open: openConfirmationRemoveSeats } = useOpenable();
// const cancelSubscription = useCallback(() => {
// closeCancelSubscription();
// openConfirmation();
@ -160,7 +160,7 @@ export default function SubscriptionFacturation() {
href={
Module.getInstance().get().modules.pages.Subscription.pages.Manage.pages.Standard.props.path
}> */}
<Button onClick={manageBilling} fullwidth variant={EButtonVariant.PRIMARY}>
<Button onClick={openConfirmationRemoveSeats} fullwidth variant={EButtonVariant.PRIMARY}>
Changer de plan
</Button>
{/* </Link> */}
@ -294,6 +294,21 @@ export default function SubscriptionFacturation() {
</MessageBox>
</div>
</Confirm>
<Confirm
isOpen={isConfirmationRemoveSeatsOpen}
onClose={closeConfirmationRemoveSeats}
onAccept={manageBilling}
closeBtn
confirmText={"Continuer"}
cancelText={"Annuler"}>
<div className={classes["modal-content"]}>
<Typography typo={ITypo.P_16} color={ITypoColor.BLACK}>
En cas de suppression de sièges, les derniers comptes ajoutés seront concernés. Vous pouvez réattribuer les sièges
que vous avez dans votre page sur la page "Gérer mes attributions.
</Typography>
</div>
</Confirm>
</DefaultTemplate>
);
}