upd: pembatasan user

Deskripsi:
- menyimpan role pada variable global
- pembatasan pada position
- pembatasan pada fitur home
- memasang log user pada position

No Issues
This commit is contained in:
amel
2024-09-04 14:11:49 +08:00
parent 878294e063
commit 19f94879d0
12 changed files with 189 additions and 138 deletions

View File

@@ -1 +1,4 @@
export const pwd_key_config = "fchgvjknlmdfnbvghhujlaknsdvjbhknlkmsdbdyu567t8y9u30r4587638y9uipkoeghjvuyi89ipkoefmnrjbhtiu4or9ipkoemnjfbhjiuoijdklnjhbviufojkejnshbiuojijknehgruyu"
import { hookstate } from "@hookstate/core"
export const pwd_key_config = "fchgvjknlmdfnbvghhujlaknsdvjbhknlkmsdbdyu567t8y9u30r4587638y9uipkoeghjvuyi89ipkoefmnrjbhtiu4or9ipkoemnjfbhjiuoijdklnjhbviufojkejnshbiuojijknehgruyu"
export const globalRole = hookstate<string>('')

View File

@@ -0,0 +1,17 @@
'use client'
import { useHookstate } from "@hookstate/core";
import { globalRole } from "../bin/val_global";
import { useShallowEffect } from "@mantine/hooks";
export default function WrapLayout({ children, role }: { children: React.ReactNode, role: any }) {
const roleLogin = useHookstate(globalRole)
useShallowEffect(() => {
roleLogin.set(role)
}, [])
return (
<>
{children}
</>
);
}

View File

@@ -1,10 +1,11 @@
import prisma from "./bin/prisma";
import { pwd_key_config } from "./bin/val_global";
import { globalRole, pwd_key_config } from "./bin/val_global";
import SkeletonDetailDiscussionComment from "./components/skeleton_detail_discussion_comment";
import SkeletonDetailDiscussionMember from "./components/skeleton_detail_discussion_member";
import SkeletonDetailListTugasTask from "./components/skeleton_detail_list_tugas_task";
import SkeletonDetailProfile from "./components/skeleton_detail_profile";
import SkeletonSingle from "./components/skeleton_single";
import WrapLayout from "./components/wrap_layout";
import { WARNA } from "./fun/WARNA";
import LayoutDrawer from "./layout/layout_drawer";
import LayoutIconBack from "./layout/layout_icon_back";
@@ -31,3 +32,5 @@ export { SkeletonDetailDiscussionMember }
export { SkeletonDetailProfile }
export { SkeletonDetailListTugasTask }
export { LayoutModalViewFile }
export { globalRole }
export { WrapLayout }

View File

@@ -1,23 +1,21 @@
'use client'
import { Box, Group, Divider, Button, Text, Skeleton, rem } from "@mantine/core";
import { useEffect, useState } from "react";
import { useState } from "react";
import { FaCheck } from "react-icons/fa6";
import { WARNA } from "../fun/WARNA";
import LayoutNavbarNew from "../layout/layout_navbar_new";
import { useRouter } from "next/navigation";
import { useRouter, useSearchParams } from "next/navigation";
import { funGetAllGroup, IDataGroup } from "@/module/group";
import { useShallowEffect } from "@mantine/hooks";
import toast from "react-hot-toast";
export default function ViewFilter({ linkFilter }: { linkFilter: string }) {
const [selectedFilter, setSelectedFilter] = useState<string | null>(null);
const [selectedFilter, setSelectedFilter] = useState<any>('');
const [checked, setChecked] = useState<IDataGroup[]>([]);
const [searchParams, setSearchParams] = useState({ groupId: '' });
const [loading, setLoading] = useState(true)
const searchParams = useSearchParams()
const group = searchParams.get('group')
const handleFilterClick = (id: string) => {
setSelectedFilter(id);
};
async function getAllGroupFilter() {
try {
@@ -37,15 +35,14 @@ export default function ViewFilter({ linkFilter }: { linkFilter: string }) {
}
}
useEffect(() => {
if (selectedFilter) {
setSearchParams({ groupId: selectedFilter });
}
}, [selectedFilter]);
useShallowEffect(() => {
setSelectedFilter(group)
}, [group]);
useShallowEffect(() => {
getAllGroupFilter();
}, [searchParams.groupId]);
}, []);
const router = useRouter()
@@ -71,7 +68,7 @@ export default function ViewFilter({ linkFilter }: { linkFilter: string }) {
justify="space-between"
align="center"
mb={10}
onClick={() => handleFilterClick(filter.id)}
onClick={() => setSelectedFilter(filter.id)}
>
<Text fw={selectedFilter === filter.id ? 'bold' : 'normal'}>
{filter.name}