diff --git a/src/module/auth/api/funGetUserByCookies.ts b/src/module/auth/api/funGetUserByCookies.ts new file mode 100644 index 0000000..a80515e --- /dev/null +++ b/src/module/auth/api/funGetUserByCookies.ts @@ -0,0 +1,20 @@ +'use server' + +import { pwd_key_config, prisma } from "@/module/_global"; +import { unsealData } from "iron-session"; +import { cookies } from "next/headers"; + +export default async function funGetUserByCookies() { + const sessionCookie = cookies().get("sessionCookieSDM"); + const userId = await unsealData(sessionCookie!.value, { + password: pwd_key_config, + }); + + const user = await prisma.user.findUnique({ + where: { + id: String(userId), + }, + }); + + return { id: user?.id, name: user?.name, idVillage: user?.idVillage }; +} \ No newline at end of file diff --git a/src/module/auth/index.ts b/src/module/auth/index.ts index 9c3273d..228515f 100644 --- a/src/module/auth/index.ts +++ b/src/module/auth/index.ts @@ -1,4 +1,5 @@ import funDetectCookies from "./api/funDetectCookies"; +import funGetUserByCookies from "./api/funGetUserByCookies"; import funSetCookies from "./api/funSetCookies"; import ViewLogin from "./login/view/view_login"; import ViewVerification from "./varification/view/view_verification"; @@ -8,4 +9,5 @@ export { ViewLogin } export { ViewVerification } export { ViewWelcome } export { funSetCookies } -export { funDetectCookies } \ No newline at end of file +export { funDetectCookies } +export { funGetUserByCookies } \ No newline at end of file diff --git a/src/module/auth/varification/view/view_verification.tsx b/src/module/auth/varification/view/view_verification.tsx index 3250127..d03f59a 100644 --- a/src/module/auth/varification/view/view_verification.tsx +++ b/src/module/auth/varification/view/view_verification.tsx @@ -38,8 +38,7 @@ export default function ViewVerification({ phone, otp, user }: IVerification) { toast.success(setCookies.message) if (setCookies.pertamaLogin == true) return router.replace('/welcome') - console.log(setCookies.pertamaLogin) - return router.replace('/home') + return window.location.href = '/home'; } else { toast.error(setCookies.message) } diff --git a/src/module/user/log/fun/createLogUser.tsx b/src/module/user/log/fun/createLogUser.tsx index ac50290..457095b 100644 --- a/src/module/user/log/fun/createLogUser.tsx +++ b/src/module/user/log/fun/createLogUser.tsx @@ -1,20 +1,26 @@ import { prisma } from "@/module/_global"; +import { funDetectCookies, funGetUserByCookies } from "@/module/auth"; export default async function createLogUser({ act, desc, table, data }: { act: string, desc: string, table: string, data: string }) { try { - // diambil dari cookies - const user = 'devAmalia' + // cek cookies + const cek = await funDetectCookies() + if (cek) { + const user = await funGetUserByCookies() - await prisma.userLog.create({ - data: { - idUser: user, - action: act, - desc: desc, - idContent: data, - tbContent: table - } - }) + await prisma.userLog.create({ + data: { + idUser: String(user.id), + action: act, + desc: desc, + idContent: data, + tbContent: table + } + }) + + return { success: true, message: "Success" } + } return { success: true, message: "Success" } diff --git a/src/module/user/profile/view/view_profile.tsx b/src/module/user/profile/view/view_profile.tsx index 50000b1..5b8e22b 100644 --- a/src/module/user/profile/view/view_profile.tsx +++ b/src/module/user/profile/view/view_profile.tsx @@ -16,13 +16,18 @@ import { useState } from "react"; export default function ViewProfile() { const [openModal, setOpenModal] = useState(false); - async function onLogout() { + async function onLogout(val: boolean) { try { - await fetch('/api/auth/logout', { - method: 'DELETE', - }); - toast.success('Logout Success') - window.location.href = '/'; + if (val) { + await fetch('/api/auth/logout', { + method: 'DELETE', + }); + toast.success('Logout Success') + window.location.href = '/'; + } + + setOpenModal(false) + } catch (error) { console.error(error); } @@ -33,9 +38,9 @@ export default function ViewProfile() { - { setOpenModal(true) }} variant="light" bg={WARNA.bgIcon} size="lg" radius="lg" aria-label="Info"> - - + { setOpenModal(true) }} variant="light" bg={WARNA.bgIcon} size="lg" radius="lg" aria-label="Info"> + + setOpenModal(false)} description="Apakah Anda yakin ingin Keluar?" - onYes={() => onLogout()} /> + onYes={(val) => onLogout(val)} /> ) } \ No newline at end of file