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

View File

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

View File

@ -21,14 +21,8 @@ export async function middleware(request: NextRequest) {
if (userDecodedToken.role !== "admin" && userDecodedToken.role !== "super-admin") if (userDecodedToken.role !== "admin" && userDecodedToken.role !== "super-admin")
return NextResponse.redirect(new URL("/404", request.url)); 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("/my-account") && !userDecodedToken) return NextResponse.redirect(new URL("/404", request.url));
if (requestUrlPath.startsWith("/client-dashboard") && !customerDecodedToken) 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));
return NextResponse.next(); return NextResponse.next();
} }