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:
@@ -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>('')
|
||||
17
src/module/_global/components/wrap_layout.tsx
Normal file
17
src/module/_global/components/wrap_layout.tsx
Normal 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}
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -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 }
|
||||
|
||||
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user