refacto customer middleware

This commit is contained in:
OxSaitama 2023-09-06 09:48:33 +02:00
parent a8693714b8
commit 255c1bdc23
3 changed files with 19 additions and 25 deletions

View File

@ -4,31 +4,31 @@ import Typography, { ITypo } from "../Typography";
import ChevronIcon from "@Assets/Icons/chevron.svg";
import Image from "next/image";
export type IBlock = {
export type IFolder = {
name: string;
id: string;
selected: boolean;
};
type IProps = {
blocks: IBlock[];
onSelectedBlock: (block: IBlock) => void;
list: IFolder[];
onSelectedFolder: (block: IFolder) => void;
};
export default function BlockList({ blocks, onSelectedBlock }: IProps) {
const selectBlock = useCallback(
export default function FolderList({ list, onSelectedFolder }: IProps) {
const selectFolder = useCallback(
(e: React.MouseEvent<HTMLDivElement>) => {
onSelectedBlock && onSelectedBlock(blocks.find((block) => block.id === e.currentTarget.id)!);
onSelectedFolder && onSelectedFolder(list.find((folder) => folder.id === e.currentTarget.id)!);
},
[blocks, onSelectedBlock],
[list, onSelectedFolder],
);
return (
<div>
{blocks.map((block) => {
{list.map((folder) => {
return (
<div onClick={selectBlock} key={block.id} id={block.id}>
<div className={classes["root"]} data-selected={block.selected.toString()}>
<div onClick={selectFolder} key={folder.id} id={folder.id}>
<div className={classes["root"]} data-selected={folder.selected.toString()}>
<div className={classes["left-side"]}>
<Typography typo={ITypo.P_16}>{block.name}</Typography>
<Typography typo={ITypo.P_16}>{folder.name}</Typography>
</div>
<Image alt="chevron" src={ChevronIcon} />
</div>

View File

@ -1,5 +1,5 @@
import Folders from "@Front/Api/LeCoffreApi/Customer/Folders/Folders";
import BlockList, { IBlock } from "@Front/Components/DesignSystem/BlockList";
import FolderList, { IFolder } from "@Front/Components/DesignSystem/BlockList";
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
import DefaultDoubleSidePage from "@Front/Components/LayoutTemplates/DefaultDoubleSidePage";
import { OfficeFolder } from "le-coffre-resources/dist/Customer";
@ -36,9 +36,9 @@ export default function SelectFolder() {
getFolders();
}, []);
const handleSelectBlock = useCallback(
(block: IBlock) => {
router.push("/client-dashboard/" + block.id);
const handleSelectFolder = useCallback(
(folder: IFolder) => {
router.push("/client-dashboard/" + folder.id);
},
[router],
);
@ -51,9 +51,9 @@ export default function SelectFolder() {
<Typography typo={ITypo.H1}>Vos dossiers</Typography>
</div>
<div className={classes["folders-container"]}>
<BlockList
onSelectedBlock={handleSelectBlock}
blocks={folders.map((folder) => {
<FolderList
onSelectedFolder={handleSelectFolder}
list={folders.map((folder) => {
return {
id: folder.uid!,
name: folder.name!,

View File

@ -21,14 +21,8 @@ export async function middleware(request: NextRequest) {
if (userDecodedToken.role !== "admin" && userDecodedToken.role !== "super-admin")
return NextResponse.redirect(new URL("/404", request.url));
}
if (requestUrlPath.startsWith("/folders")) {
if (userDecodedToken.role !== "notary" && userDecodedToken.role !== "admin" && userDecodedToken.role !== "super-admin")
return NextResponse.redirect(new URL("/404", request.url));
}
if (requestUrlPath.startsWith("/my-account") && !userDecodedToken) return NextResponse.redirect(new URL("/404", request.url));
if (requestUrlPath.startsWith("/client-dashboard") || request.nextUrl.pathname.split("/")[2] !== customerDecodedToken.customerId)
return NextResponse.redirect(new URL("/404", request.url));
if (requestUrlPath.startsWith("/client-dashboard") && !customerDecodedToken) return NextResponse.redirect(new URL("/404", request.url));
return NextResponse.next();
}