refacto header depending on rules (#60)

This commit is contained in:
Arnaud D. Natali 2023-09-19 18:28:37 +02:00 committed by GitHub
commit 7b2d13ef3b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 185 additions and 86 deletions

View File

@ -13,4 +13,7 @@ export enum AppRuleActions {
export enum AppRuleNames { export enum AppRuleNames {
users = "users", users = "users",
officeFolders = "folders", officeFolders = "folders",
officeRoles = "office-roles",
deedTypes = "deed-types",
offices = "offices"
} }

View File

@ -4,6 +4,8 @@ import React from "react";
import NavigationLink from "../../NavigationLink"; import NavigationLink from "../../NavigationLink";
import classes from "./classes.module.scss"; import classes from "./classes.module.scss";
import Rules, { RulesMode } from "@Front/Components/Elements/Rules";
import { AppRuleActions, AppRuleNames } from "@Front/Api/Entities/rule";
type IProps = { type IProps = {
isOpen: boolean; isOpen: boolean;
@ -32,49 +34,94 @@ export default class BurgerModal extends React.Component<IProps, IState> {
text="Dossiers archivés" text="Dossiers archivés"
routesActive={[Module.getInstance().get().modules.pages.Folder.pages.FolderArchived.props.path]} routesActive={[Module.getInstance().get().modules.pages.Folder.pages.FolderArchived.props.path]}
/> />
<NavigationLink <Rules
path={Module.getInstance().get().modules.pages.Collaborators.props.path} mode={RulesMode.NECESSARY}
text="Collaborateurs" rules={[
routesActive={[Module.getInstance().get().modules.pages.Collaborators.props.path]} {
/> action: AppRuleActions.update,
<NavigationLink name: AppRuleNames.officeRoles,
path={Module.getInstance().get().modules.pages.DeedTypes.props.path} },
text="Paramétrage des listes de pièces" ]}>
routesActive={[ <NavigationLink
Module.getInstance().get().modules.pages.DeedTypes.props.path, path={Module.getInstance().get().modules.pages.Collaborators.props.path}
Module.getInstance().get().modules.pages.DeedTypes.pages.Create.props.path, text="Collaborateurs"
Module.getInstance().get().modules.pages.DeedTypes.pages.DeedTypesInformations.props.path, routesActive={[Module.getInstance().get().modules.pages.Collaborators.props.path]}
Module.getInstance().get().modules.pages.DeedTypes.pages.Edit.props.path, />
Module.getInstance().get().modules.pages.DocumentTypes.pages.Edit.props.path, </Rules>
Module.getInstance().get().modules.pages.DocumentTypes.pages.Create.props.path, <Rules
Module.getInstance().get().modules.pages.DocumentTypes.pages.DocumentTypesInformations.props.path, mode={RulesMode.NECESSARY}
Module.getInstance().get().modules.pages.DocumentTypes.props.path, rules={[
]} {
/> action: AppRuleActions.update,
<NavigationLink name: AppRuleNames.deedTypes,
path={Module.getInstance().get().modules.pages.Roles.props.path} },
text="Gestion des rôles" ]}>
routesActive={[ <NavigationLink
Module.getInstance().get().modules.pages.Roles.props.path, path={Module.getInstance().get().modules.pages.DeedTypes.props.path}
Module.getInstance().get().modules.pages.Roles.pages.RolesInformations.props.path, text="Paramétrage des listes de pièces"
]} routesActive={[
/> Module.getInstance().get().modules.pages.DeedTypes.props.path,
<NavigationLink Module.getInstance().get().modules.pages.DeedTypes.pages.Create.props.path,
path={Module.getInstance().get().modules.pages.Users.props.path} Module.getInstance().get().modules.pages.DeedTypes.pages.DeedTypesInformations.props.path,
text="Gestion des utilisateurs" Module.getInstance().get().modules.pages.DeedTypes.pages.Edit.props.path,
routesActive={[ Module.getInstance().get().modules.pages.DocumentTypes.pages.Edit.props.path,
Module.getInstance().get().modules.pages.Users.props.path, Module.getInstance().get().modules.pages.DocumentTypes.pages.Create.props.path,
Module.getInstance().get().modules.pages.Users.pages.UsersInformations.props.path, Module.getInstance().get().modules.pages.DocumentTypes.pages.DocumentTypesInformations.props.path,
]} Module.getInstance().get().modules.pages.DocumentTypes.props.path,
/> ]}
<NavigationLink />
path={Module.getInstance().get().modules.pages.Offices.props.path} </Rules>
text="Gestion des offices" <Rules
routesActive={[ mode={RulesMode.NECESSARY}
Module.getInstance().get().modules.pages.Offices.props.path, rules={[
Module.getInstance().get().modules.pages.Offices.pages.OfficesInformations.props.path, {
]} action: AppRuleActions.update,
/> name: AppRuleNames.officeRoles,
},
]}>
<NavigationLink
path={Module.getInstance().get().modules.pages.Roles.props.path}
text="Gestion des rôles"
routesActive={[
Module.getInstance().get().modules.pages.Roles.props.path,
Module.getInstance().get().modules.pages.Roles.pages.RolesInformations.props.path,
]}
/>
</Rules>
<Rules
mode={RulesMode.NECESSARY}
rules={[
{
action: AppRuleActions.create,
name: AppRuleNames.officeRoles,
},
]}>
<NavigationLink
path={Module.getInstance().get().modules.pages.Users.props.path}
text="Gestion des utilisateurs"
routesActive={[
Module.getInstance().get().modules.pages.Users.props.path,
Module.getInstance().get().modules.pages.Users.pages.UsersInformations.props.path,
]}
/>
</Rules>
<Rules
mode={RulesMode.NECESSARY}
rules={[
{
action: AppRuleActions.update,
name: AppRuleNames.offices,
},
]}>
<NavigationLink
path={Module.getInstance().get().modules.pages.Offices.props.path}
text="Gestion des offices"
routesActive={[
Module.getInstance().get().modules.pages.Offices.props.path,
Module.getInstance().get().modules.pages.Offices.pages.OfficesInformations.props.path,
]}
/>
</Rules>
<NavigationLink path={Module.getInstance().get().modules.pages.MyAccount.props.path} text="Mon compte" /> <NavigationLink path={Module.getInstance().get().modules.pages.MyAccount.props.path} text="Mon compte" />
<NavigationLink text="CGU" /> <NavigationLink text="CGU" />
<div className={classes["separator"]} /> <div className={classes["separator"]} />

View File

@ -3,6 +3,8 @@ import React from "react";
import HeaderLink from "../HeaderLink"; import HeaderLink from "../HeaderLink";
import classes from "./classes.module.scss"; import classes from "./classes.module.scss";
import Rules, { RulesMode } from "@Front/Components/Elements/Rules";
import { AppRuleActions, AppRuleNames } from "@Front/Api/Entities/rule";
type IProps = {}; type IProps = {};
type IState = {}; type IState = {};
@ -24,11 +26,20 @@ export default class Navigation extends React.Component<IProps, IState> {
path={Module.getInstance().get().modules.pages.Folder.pages.FolderArchived.props.path} path={Module.getInstance().get().modules.pages.Folder.pages.FolderArchived.props.path}
routesActive={[Module.getInstance().get().modules.pages.Folder.pages.FolderArchived.props.path]} routesActive={[Module.getInstance().get().modules.pages.Folder.pages.FolderArchived.props.path]}
/> />
<HeaderLink <Rules
text={"Collaborateurs"} mode={RulesMode.NECESSARY}
path={Module.getInstance().get().modules.pages.Collaborators.props.path} rules={[
routesActive={[Module.getInstance().get().modules.pages.Collaborators.props.path]} {
/> action: AppRuleActions.update,
name: AppRuleNames.officeRoles,
},
]}>
<HeaderLink
text={"Collaborateurs"}
path={Module.getInstance().get().modules.pages.Collaborators.props.path}
routesActive={[Module.getInstance().get().modules.pages.Collaborators.props.path]}
/>
</Rules>
</div> </div>
); );
} }

View File

@ -4,6 +4,8 @@ import React from "react";
import NavigationLink from "../../NavigationLink"; import NavigationLink from "../../NavigationLink";
import classes from "./classes.module.scss"; import classes from "./classes.module.scss";
import Rules, { RulesMode } from "@Front/Components/Elements/Rules";
import { AppRuleActions, AppRuleNames } from "@Front/Api/Entities/rule";
type IProps = { type IProps = {
isOpen: boolean; isOpen: boolean;
@ -20,44 +22,80 @@ export default class ProfileModal extends React.Component<IProps, IState> {
<div className={classes["background"]} onClick={this.props.closeModal} /> <div className={classes["background"]} onClick={this.props.closeModal} />
<div className={classes["root"]}> <div className={classes["root"]}>
<NavigationLink path={Module.getInstance().get().modules.pages.MyAccount.props.path} text="Mon compte" /> <NavigationLink path={Module.getInstance().get().modules.pages.MyAccount.props.path} text="Mon compte" />
<NavigationLink <Rules
path={Module.getInstance().get().modules.pages.Roles.props.path} mode={RulesMode.NECESSARY}
text="Gestion des rôles" rules={[
routesActive={[ {
Module.getInstance().get().modules.pages.Roles.props.path, action: AppRuleActions.update,
Module.getInstance().get().modules.pages.Roles.pages.RolesInformations.props.path, name: AppRuleNames.officeRoles,
]} },
/> ]}>
<NavigationLink <NavigationLink
path={Module.getInstance().get().modules.pages.DeedTypes.props.path} path={Module.getInstance().get().modules.pages.Roles.props.path}
text="Paramétrage des listes de pièces" text="Gestion des rôles"
routesActive={[ routesActive={[
Module.getInstance().get().modules.pages.DeedTypes.props.path, Module.getInstance().get().modules.pages.Roles.props.path,
Module.getInstance().get().modules.pages.DeedTypes.pages.Create.props.path, Module.getInstance().get().modules.pages.Roles.pages.RolesInformations.props.path,
Module.getInstance().get().modules.pages.DeedTypes.pages.DeedTypesInformations.props.path, ]}
Module.getInstance().get().modules.pages.DeedTypes.pages.Edit.props.path, />
Module.getInstance().get().modules.pages.DocumentTypes.pages.Edit.props.path, </Rules>
Module.getInstance().get().modules.pages.DocumentTypes.pages.Create.props.path, <Rules
Module.getInstance().get().modules.pages.DocumentTypes.pages.DocumentTypesInformations.props.path, mode={RulesMode.NECESSARY}
Module.getInstance().get().modules.pages.DocumentTypes.props.path, rules={[
]} {
/> action: AppRuleActions.update,
<NavigationLink name: AppRuleNames.deedTypes,
path={Module.getInstance().get().modules.pages.Users.props.path} },
text="Gestion des utilisateurs" ]}>
routesActive={[ <NavigationLink
Module.getInstance().get().modules.pages.Users.props.path, path={Module.getInstance().get().modules.pages.DeedTypes.props.path}
Module.getInstance().get().modules.pages.Users.pages.UsersInformations.props.path, text="Paramétrage des listes de pièces"
]} routesActive={[
/> Module.getInstance().get().modules.pages.DeedTypes.props.path,
<NavigationLink Module.getInstance().get().modules.pages.DeedTypes.pages.Create.props.path,
path={Module.getInstance().get().modules.pages.Offices.props.path} Module.getInstance().get().modules.pages.DeedTypes.pages.DeedTypesInformations.props.path,
text="Gestion des offices" Module.getInstance().get().modules.pages.DeedTypes.pages.Edit.props.path,
routesActive={[ Module.getInstance().get().modules.pages.DocumentTypes.pages.Edit.props.path,
Module.getInstance().get().modules.pages.Offices.props.path, Module.getInstance().get().modules.pages.DocumentTypes.pages.Create.props.path,
Module.getInstance().get().modules.pages.Offices.pages.OfficesInformations.props.path, Module.getInstance().get().modules.pages.DocumentTypes.pages.DocumentTypesInformations.props.path,
]} Module.getInstance().get().modules.pages.DocumentTypes.props.path,
/> ]}
/>
</Rules>
<Rules
mode={RulesMode.NECESSARY}
rules={[
{
action: AppRuleActions.create,
name: AppRuleNames.officeRoles,
},
]}>
<NavigationLink
path={Module.getInstance().get().modules.pages.Users.props.path}
text="Gestion des utilisateurs"
routesActive={[
Module.getInstance().get().modules.pages.Users.props.path,
Module.getInstance().get().modules.pages.Users.pages.UsersInformations.props.path,
]}
/>
</Rules>
<Rules
mode={RulesMode.NECESSARY}
rules={[
{
action: AppRuleActions.update,
name: AppRuleNames.offices,
},
]}>
<NavigationLink
path={Module.getInstance().get().modules.pages.Offices.props.path}
text="Gestion des offices"
routesActive={[
Module.getInstance().get().modules.pages.Offices.props.path,
Module.getInstance().get().modules.pages.Offices.pages.OfficesInformations.props.path,
]}
/>
</Rules>
<NavigationLink text="CGU" /> <NavigationLink text="CGU" />
<div className={classes["separator"]} /> <div className={classes["separator"]} />
<LogOutButton /> <LogOutButton />