From 6ee43ed20faa273cbca0be948295e95d36bbd760 Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Wed, 18 Sep 2024 14:39:39 +0800 Subject: [PATCH 1/3] feat: tambah dependensi 'jose' versi 5.9.2 pada package.json refactor: rapikan identasi dan buat field 'expires' opsional di model UserSession pada schema prisma chore: bersihkan import tidak terpakai di route login dan register API --- package.json | 1 + prisma/schema.prisma | 14 +- src/app/api/auth/login/route.ts | 4 - src/app/api/auth/register/route.ts | 7 +- src/app/api/auth/validasi/route.ts | 7 +- src/app/api/check-cookies/route.ts | 19 +++ src/app/dev/admin/layout.tsx | 3 + src/app/dev/auth/validasi/[id]/page.tsx | 3 + src/app/dev/check-cookies/page.tsx | 5 + src/app/dev/colab/detail/group/[id]/page.tsx | 3 + .../colab/detail/main_detail/[id]/page.tsx | 3 + src/app/dev/colab/main/beranda/page.tsx | 4 +- .../create/cerita_penggalang/[id]/page.tsx | 6 +- .../donasi/detail/detail_main/[id]/page.tsx | 3 + .../detail/detail_publish/[id]/page.tsx | 10 +- src/app/dev/donasi/main/layout.tsx | 13 +- .../metode_pembayaran/[id]/page.tsx | 7 +- src/app/dev/event/create/page.tsx | 7 +- src/app/dev/event/detail/main/[id]/page.tsx | 7 +- src/app/dev/event/main/status_page/page.tsx | 7 +- .../forum/detail/main-detail/[id]/page.tsx | 4 +- src/app/dev/forum/main/layout.tsx | 7 +- src/app/dev/forum/main/page.tsx | 6 +- .../report/komentar-lainnya/[id]/page.tsx | 3 + .../report/posting-lainnya/[id]/page.tsx | 5 +- .../dev/forum/report/posting/[id]/page.tsx | 4 +- src/app/dev/home/page.tsx | 16 +- src/app/dev/investasi/detail/[id]/page.tsx | 13 +- .../dev/investasi/main/portofolio/page.tsx | 11 +- src/app/dev/investasi/main/transaksi/page.tsx | 7 +- .../investasi/metode_transfer/[id]/page.tsx | 7 +- .../investasi/proses_transaksi/[id]/page.tsx | 7 +- src/app/dev/katalog/[id]/layout.tsx | 6 +- src/app/dev/katalog/[id]/page.tsx | 10 +- src/app/dev/layout.tsx | 19 +++ src/app/dev/portofolio/main/[id]/layout.tsx | 5 +- src/app/dev/user-not-active/page.tsx | 8 +- .../vote/detail/kontribusi/[id]/layout.tsx | 5 +- src/app/dev/vote/detail/main/[id]/layout.tsx | 2 + src/app/dev/vote/detail/main/[id]/page.tsx | 6 +- .../dev/vote/detail/publish/[id]/layout.tsx | 7 +- .../vote/detail/semua_riwayat/[id]/layout.tsx | 7 +- src/app/fun/my_console.ts | 6 - src/app/layout.tsx | 34 +++- src/app/lib/index.ts | 2 - src/app/lib/pwd.ts | 5 - src/app/lib/router_hipmi/router_auth.ts | 1 + src/app/lib/server_env.ts | 15 ++ src/app/lib/token.ts | 25 ++- src/app/makuro/page.tsx | 54 +------ .../_global/fun/get/fun_cek_token.ts | 17 ++ .../fun/get/fun_get_user_id_by_token.ts | 18 +++ src/app_modules/_global/fun/get/index.ts | 4 + .../fun/edit/fun_report_project_by_id.ts | 6 + src/app_modules/auth/fun/fun_logout.ts | 30 +++- src/app_modules/auth/fun/fun_register.ts | 29 +++- src/app_modules/auth/fun/fun_validasi.ts | 64 +++++--- src/app_modules/auth/login/view.tsx | 27 ++-- src/app_modules/auth/logout/view.tsx | 10 +- src/app_modules/auth/register/view.tsx | 18 +-- src/app_modules/auth/validasi/view.tsx | 12 +- src/app_modules/check_cookies/index.ts | 5 + .../check_cookies/layout_cek_cookies.tsx | 27 ++++ .../check_cookies/ui_check_cookies.tsx | 23 +++ .../colab/fun/create/fun_create_room_chat.ts | 6 + .../colab/fun/get/cek_notifikasi.ts | 6 + .../fun/get/get_list_notifikasi_by_user_id.ts | 6 + .../room_chat/get_list_room_by_author_id.ts | 17 +- src/app_modules/fun_global/get_user_token.ts | 35 ++-- src/app_modules/home/component/ui_home.tsx | 4 +- .../investasi/fun/fun_delete_berita.ts | 3 - .../katalog/profile/fun/upload_foto.ts | 5 - .../user_search/fun/get/get_all_user.ts | 11 +- .../vote/fun/create/create_vote.ts | 6 + .../vote/fun/get/get_all_list_riwayat_saya.ts | 13 +- .../vote/fun/get/status/get_all_draft.tsx | 7 +- .../vote/fun/get/status/get_all_publish.tsx | 7 +- .../vote/fun/get/status/get_all_reject.tsx | 6 + .../vote/fun/get/status/get_all_review.tsx | 6 + src/bin/HipmiProvider.tsx | 11 ++ src/bin/hipmi_env.ts | 31 ++++ src/middleware.ts | 152 ++++++++++++++++++ yarn.lock | 5 + 83 files changed, 794 insertions(+), 273 deletions(-) create mode 100644 src/app/api/check-cookies/route.ts create mode 100644 src/app/dev/check-cookies/page.tsx create mode 100644 src/app/dev/layout.tsx delete mode 100644 src/app/fun/my_console.ts delete mode 100644 src/app/lib/pwd.ts create mode 100644 src/app/lib/server_env.ts create mode 100644 src/app_modules/_global/fun/get/fun_cek_token.ts create mode 100644 src/app_modules/_global/fun/get/fun_get_user_id_by_token.ts create mode 100644 src/app_modules/check_cookies/index.ts create mode 100644 src/app_modules/check_cookies/layout_cek_cookies.tsx create mode 100644 src/app_modules/check_cookies/ui_check_cookies.tsx create mode 100644 src/bin/HipmiProvider.tsx create mode 100644 src/bin/hipmi_env.ts create mode 100644 src/middleware.ts diff --git a/package.json b/package.json index 44a695dd..30f6db17 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,7 @@ "eslint": "8.45.0", "eslint-config-next": "13.4.12", "iron-session": "^6.3.1", + "jose": "^5.9.2", "jotai": "^2.4.3", "lodash": "^4.17.21", "mapbox-gl": "^3.5.2", diff --git a/prisma/schema.prisma b/prisma/schema.prisma index c391b394..05d2d670 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -60,14 +60,14 @@ model MasterUserRole { } model UserSession { - id String @id @default(cuid()) + id String @id @default(cuid()) token String - expires DateTime - active Boolean @default(true) - createdAt DateTime @default(now()) - updatedAt DateTime @default(now()) @updatedAt - User User @relation(fields: [userId], references: [id]) - userId String @unique + expires DateTime? + active Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt + User User @relation(fields: [userId], references: [id]) + userId String @unique } model KodeOtp { diff --git a/src/app/api/auth/login/route.ts b/src/app/api/auth/login/route.ts index f7442d2c..dd99a4b9 100644 --- a/src/app/api/auth/login/route.ts +++ b/src/app/api/auth/login/route.ts @@ -1,8 +1,4 @@ -import { redirect } from "next/navigation"; -import { myConsole } from "@/app/fun/my_console"; -import prisma from "@/app/lib/prisma"; -import { RouterAdminDashboard } from "@/app/lib/router_hipmi/router_admin"; import { NextResponse } from "next/server"; diff --git a/src/app/api/auth/register/route.ts b/src/app/api/auth/register/route.ts index 61382554..2c5ff71a 100644 --- a/src/app/api/auth/register/route.ts +++ b/src/app/api/auth/register/route.ts @@ -1,6 +1,5 @@ -import { myConsole } from "@/app/fun/my_console"; -import { PwdCookies } from "@/app/lib"; import prisma from "@/app/lib/prisma"; +import { ServerEnv } from "@/app/lib/server_env"; import { sealData } from "iron-session"; import { cookies } from "next/headers"; import { NextResponse } from "next/server"; @@ -16,8 +15,6 @@ export async function POST(req: Request) { }, }); - myConsole(cekUsername); - if (cekUsername) return NextResponse.json({ status: 400, message: "Username sudah ada" }); @@ -35,7 +32,7 @@ export async function POST(req: Request) { username: data.username, }), { - password: PwdCookies, + password: ServerEnv.value?.WIBU_PWD as string, } ); diff --git a/src/app/api/auth/validasi/route.ts b/src/app/api/auth/validasi/route.ts index 471e1434..09a38ff6 100644 --- a/src/app/api/auth/validasi/route.ts +++ b/src/app/api/auth/validasi/route.ts @@ -1,6 +1,5 @@ -import { myConsole } from "@/app/fun/my_console"; -import { PwdCookies } from "@/app/lib"; import prisma from "@/app/lib/prisma"; +import { ServerEnv } from "@/app/lib/server_env"; import { sealData } from "iron-session"; import { revalidatePath } from "next/cache"; import { cookies } from "next/headers"; @@ -22,8 +21,6 @@ export async function POST(req: Request) { }, }); - myConsole(data); - if (!data) return NextResponse.json({ status: 404 }); if (data) { @@ -33,7 +30,7 @@ export async function POST(req: Request) { username: data.username, }), { - password: await PwdCookies, + password: ServerEnv.value?.WIBU_PWD as string, } ); diff --git a/src/app/api/check-cookies/route.ts b/src/app/api/check-cookies/route.ts new file mode 100644 index 00000000..20cfde82 --- /dev/null +++ b/src/app/api/check-cookies/route.ts @@ -0,0 +1,19 @@ +import _ from "lodash"; +import { cookies } from "next/headers"; + +export async function GET(req: Request) { + try { + const cekCookies = cookies(); + const c = cekCookies.get("ssn"); + + if (!c || !c?.value || _.isEmpty(c?.value) || _.isUndefined(c?.value)) { + return Response.json({ success: false }); + } + + return Response.json({ success: true }); + } catch (error) { + console.log(error); + } + + return Response.json({ success: false }); +} diff --git a/src/app/dev/admin/layout.tsx b/src/app/dev/admin/layout.tsx index 3ee61021..900242fc 100644 --- a/src/app/dev/admin/layout.tsx +++ b/src/app/dev/admin/layout.tsx @@ -1,6 +1,7 @@ import { AdminLayout } from "@/app_modules/admin/main_dashboard"; import adminNotifikasi_countNotifikasi from "@/app_modules/admin/notifikasi/fun/count/count_is_read"; import adminNotifikasi_getByUserId from "@/app_modules/admin/notifikasi/fun/get/get_notifikasi_by_user_id"; +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import { user_getOneByUserId } from "@/app_modules/home/fun/get/get_one_user_by_id"; import React from "react"; @@ -11,6 +12,8 @@ export default async function Layout({ children: React.ReactNode; }) { const userId = await user_funGetOneUserId(); + if (!userId) return ; + const dataUser = await user_getOneByUserId(userId); const listNotif = await adminNotifikasi_getByUserId(); const countNotifikasi = await adminNotifikasi_countNotifikasi(); diff --git a/src/app/dev/auth/validasi/[id]/page.tsx b/src/app/dev/auth/validasi/[id]/page.tsx index fbd553f8..922daa6a 100644 --- a/src/app/dev/auth/validasi/[id]/page.tsx +++ b/src/app/dev/auth/validasi/[id]/page.tsx @@ -1,9 +1,12 @@ import { Validasi } from "@/app_modules/auth"; import { auth_getKodeOtpById } from "@/app_modules/auth/fun/get_kode_otp_by_id"; +import { ServerEnv } from "@/app/lib/server_env"; + export default async function Page({ params }: { params: { id: string } }) { let kodeOtpId = params.id; const dataOtp = await auth_getKodeOtpById(kodeOtpId); + return ; } diff --git a/src/app/dev/check-cookies/page.tsx b/src/app/dev/check-cookies/page.tsx new file mode 100644 index 00000000..fb26eb65 --- /dev/null +++ b/src/app/dev/check-cookies/page.tsx @@ -0,0 +1,5 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; + +export default function Page() { + return ; +} diff --git a/src/app/dev/colab/detail/group/[id]/page.tsx b/src/app/dev/colab/detail/group/[id]/page.tsx index 51c5968a..d0e2cd2e 100644 --- a/src/app/dev/colab/detail/group/[id]/page.tsx +++ b/src/app/dev/colab/detail/group/[id]/page.tsx @@ -1,4 +1,5 @@ import adminColab_getOneRoomChatById from "@/app_modules/admin/colab/fun/get/get_one_room_chat_by_id"; +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { Colab_DetailGrupDiskusi, Colab_GroupChatView, @@ -11,6 +12,8 @@ import _ from "lodash"; export default async function Page({ params }: { params: { id: string } }) { const roomId = params.id; const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; + const getData = (await adminColab_getOneRoomChatById({ roomId: roomId })) .data; const dataRoom = _.omit(getData, [ diff --git a/src/app/dev/colab/detail/main_detail/[id]/page.tsx b/src/app/dev/colab/detail/main_detail/[id]/page.tsx index eb4eed2a..ad0711c8 100644 --- a/src/app/dev/colab/detail/main_detail/[id]/page.tsx +++ b/src/app/dev/colab/detail/main_detail/[id]/page.tsx @@ -1,3 +1,4 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { Colab_MainDetail } from "@/app_modules/colab"; import colab_funCekPartisipasiById from "@/app_modules/colab/fun/get/cek_partisipasi_by_user_id"; import colab_getListPartisipanByColabId from "@/app_modules/colab/fun/get/get_list_partisipan_by_id"; @@ -7,6 +8,8 @@ import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({ params }: { params: { id: string } }) { let colabId = params.id; const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; + const dataColab = await colab_getOneCollaborationById(colabId); const listPartisipan = await colab_getListPartisipanByColabId(colabId); const cekPartisipan = await colab_funCekPartisipasiById(colabId); diff --git a/src/app/dev/colab/main/beranda/page.tsx b/src/app/dev/colab/main/beranda/page.tsx index a049bf12..0f2b7737 100644 --- a/src/app/dev/colab/main/beranda/page.tsx +++ b/src/app/dev/colab/main/beranda/page.tsx @@ -1,10 +1,12 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { Colab_Beranda } from "@/app_modules/colab"; import colab_getListAllProyek from "@/app_modules/colab/fun/get/get_list_all_proyek"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page() { - const listData = await colab_getListAllProyek({page: 1}); + const listData = await colab_getListAllProyek({ page: 1 }); const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; return ( <> diff --git a/src/app/dev/donasi/create/cerita_penggalang/[id]/page.tsx b/src/app/dev/donasi/create/cerita_penggalang/[id]/page.tsx index 1f141e66..35459e1d 100644 --- a/src/app/dev/donasi/create/cerita_penggalang/[id]/page.tsx +++ b/src/app/dev/donasi/create/cerita_penggalang/[id]/page.tsx @@ -1,16 +1,18 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { CreateCeritaPenggalangDonasi } from "@/app_modules/donasi"; import { Donasi_getTemporaryCreate } from "@/app_modules/donasi/fun/get/get_temporary_create"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({ params }: { params: { id: string } }) { const getTemporaryCreate = await Donasi_getTemporaryCreate(params.id); - const userId = await user_funGetOneUserId(); + const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; return ( <> ); diff --git a/src/app/dev/donasi/detail/detail_main/[id]/page.tsx b/src/app/dev/donasi/detail/detail_main/[id]/page.tsx index 804c103a..3f0abcd1 100644 --- a/src/app/dev/donasi/detail/detail_main/[id]/page.tsx +++ b/src/app/dev/donasi/detail/detail_main/[id]/page.tsx @@ -1,3 +1,4 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { DetailMainDonasi } from "@/app_modules/donasi"; import { Donasi_getCountDonatur } from "@/app_modules/donasi/fun/count/get_count_donatur"; import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id"; @@ -8,6 +9,8 @@ export default async function Page({ params }: { params: { id: string } }) { const dataDonasi = await Donasi_getOneById(donasiId); const countDonatur = await Donasi_getCountDonatur(donasiId) const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; + return ( <> diff --git a/src/app/dev/donasi/detail/detail_publish/[id]/page.tsx b/src/app/dev/donasi/detail/detail_publish/[id]/page.tsx index b92e8928..117b8518 100644 --- a/src/app/dev/donasi/detail/detail_publish/[id]/page.tsx +++ b/src/app/dev/donasi/detail/detail_publish/[id]/page.tsx @@ -1,3 +1,4 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { DetailPublishDonasi } from "@/app_modules/donasi"; import { Donasi_getCountDonatur } from "@/app_modules/donasi/fun/count/get_count_donatur"; import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id"; @@ -5,14 +6,19 @@ import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({ params }: { params: { id: string } }) { const dataPublish = await Donasi_getOneById(params.id); - const countDonatur= await Donasi_getCountDonatur(params.id) + const countDonatur = await Donasi_getCountDonatur(params.id); const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; // console.log(userLoginId) return ( <> - + ); } diff --git a/src/app/dev/donasi/main/layout.tsx b/src/app/dev/donasi/main/layout.tsx index a37c2dd6..1cfc23e7 100644 --- a/src/app/dev/donasi/main/layout.tsx +++ b/src/app/dev/donasi/main/layout.tsx @@ -1,3 +1,4 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { LayoutDonasi } from "@/app_modules/donasi"; import { Donasi_getNotifByUserId } from "@/app_modules/donasi/fun/get/get_notif_by_user_id"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; @@ -8,16 +9,16 @@ export default async function Layout({ }: { children: React.ReactNode; }) { - const userId = await user_funGetOneUserId(); - // console.log(userId) - const isRead = await Donasi_getNotifByUserId(userId).then((res: any) => - res.map((val: any) => val.isRead) + const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; + + const isRead = await Donasi_getNotifByUserId(userLoginId).then((res: any) => + res.map((val: any) => val.isRead) ); - // console.log(isRead) return ( <> - + {children} diff --git a/src/app/dev/donasi/proses_donasi/metode_pembayaran/[id]/page.tsx b/src/app/dev/donasi/proses_donasi/metode_pembayaran/[id]/page.tsx index 797d8742..c4a87583 100644 --- a/src/app/dev/donasi/proses_donasi/metode_pembayaran/[id]/page.tsx +++ b/src/app/dev/donasi/proses_donasi/metode_pembayaran/[id]/page.tsx @@ -1,3 +1,4 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { Donasi_MetodePembayaran } from "@/app_modules/donasi"; import { Donasi_getMasterBank } from "@/app_modules/donasi/fun/master/get_bank"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; @@ -5,9 +6,11 @@ import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({params}: {params: {id: string}}) { let donasiId= params.id const listBank = await Donasi_getMasterBank() - const authorId = await user_funGetOneUserId() + const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; + return<> - + } \ No newline at end of file diff --git a/src/app/dev/event/create/page.tsx b/src/app/dev/event/create/page.tsx index 96e80d5f..2f9a2e0c 100644 --- a/src/app/dev/event/create/page.tsx +++ b/src/app/dev/event/create/page.tsx @@ -1,13 +1,16 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { Event_Create } from "@/app_modules/event"; import { Event_getMasterTipeAcara } from "@/app_modules/event/fun/master/get_tipe_acara"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import _ from "lodash"; export default async function Page() { - const userId = await user_funGetOneUserId(); + const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; + const listTipeAcara = await Event_getMasterTipeAcara(); return ( - + ); } diff --git a/src/app/dev/event/detail/main/[id]/page.tsx b/src/app/dev/event/detail/main/[id]/page.tsx index 9326b5ed..d0c3880d 100644 --- a/src/app/dev/event/detail/main/[id]/page.tsx +++ b/src/app/dev/event/detail/main/[id]/page.tsx @@ -1,3 +1,4 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { Event_DetailMain } from "@/app_modules/event"; import { Event_countTotalPesertaById } from "@/app_modules/event/fun/count/count_total_peserta_by_id"; import { Event_CekUserJoinById } from "@/app_modules/event/fun/get/cek_user_join_by_id"; @@ -7,11 +8,13 @@ import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({ params }: { params: { id: string } }) { let eventId = params.id; + const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; + const dataEvent = await Event_getOneById(eventId); const listPeserta = await Event_getListPesertaById(eventId); - const userLoginId = await user_funGetOneUserId(); const isJoin = await Event_CekUserJoinById(eventId, userLoginId); - const totalPeserta = await Event_countTotalPesertaById(eventId) + const totalPeserta = await Event_countTotalPesertaById(eventId); return ( <> diff --git a/src/app/dev/event/main/status_page/page.tsx b/src/app/dev/event/main/status_page/page.tsx index 6bb4d32a..80f5f2a8 100644 --- a/src/app/dev/event/main/status_page/page.tsx +++ b/src/app/dev/event/main/status_page/page.tsx @@ -1,3 +1,4 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { Event_StatusPage } from "@/app_modules/event"; import { event_getAllDraft } from "@/app_modules/event/fun/get/status/get_all_draft"; import { event_getAllReject } from "@/app_modules/event/fun/get/status/get_all_reject"; @@ -6,7 +7,9 @@ import { event_funGetAllStatusPublish } from "@/app_modules/event/fun/get/status import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page() { - const authorId = await user_funGetOneUserId(); + const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; + const listPublish = await event_funGetAllStatusPublish({ page: 1 }); const listReview = await event_getAllReview({ page: 1 }); const listDraft = await event_getAllDraft({ page: 1 }); @@ -14,7 +17,7 @@ export default async function Page() { return ( ; + const dataPosting = await forum_getOnePostingById(postingId); const listKomentar = await forum_funGetAllKomentarById({ postingId: postingId, diff --git a/src/app/dev/forum/main/layout.tsx b/src/app/dev/forum/main/layout.tsx index f42ac00d..56f3baeb 100644 --- a/src/app/dev/forum/main/layout.tsx +++ b/src/app/dev/forum/main/layout.tsx @@ -1,3 +1,4 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { LayoutForum_Main } from "@/app_modules/forum"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import { user_getOneByUserId } from "@/app_modules/home/fun/get/get_one_user_by_id"; @@ -8,8 +9,10 @@ export default async function Layout({ }: { children: React.ReactNode; }) { - const authorId = await user_funGetOneUserId(); - const dataAuthor = await user_getOneByUserId(authorId); + const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; + + const dataAuthor = await user_getOneByUserId(userLoginId); return ( <> diff --git a/src/app/dev/forum/main/page.tsx b/src/app/dev/forum/main/page.tsx index 2b5bc1e8..a26f83f5 100644 --- a/src/app/dev/forum/main/page.tsx +++ b/src/app/dev/forum/main/page.tsx @@ -1,10 +1,14 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { Forum_Beranda } from "@/app_modules/forum"; import { forum_new_getAllPosting } from "@/app_modules/forum/fun/get/new_get_all_posting"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page() { + const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; + const listForum = await forum_new_getAllPosting({ page: 1 }); - const userLoginId = await user_funGetOneUserId(); + // console.log(JSON.stringify(listForum, null, 2)); diff --git a/src/app/dev/forum/report/komentar-lainnya/[id]/page.tsx b/src/app/dev/forum/report/komentar-lainnya/[id]/page.tsx index 8edbbf4f..5d4bf124 100644 --- a/src/app/dev/forum/report/komentar-lainnya/[id]/page.tsx +++ b/src/app/dev/forum/report/komentar-lainnya/[id]/page.tsx @@ -1,9 +1,12 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { Forum_ReportKomentarLainnya } from "@/app_modules/forum"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({ params }: { params: { id: string } }) { let komentarId = params.id; const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; + return ( <> diff --git a/src/app/dev/forum/report/posting-lainnya/[id]/page.tsx b/src/app/dev/forum/report/posting-lainnya/[id]/page.tsx index 84b1abda..176b6df6 100644 --- a/src/app/dev/forum/report/posting-lainnya/[id]/page.tsx +++ b/src/app/dev/forum/report/posting-lainnya/[id]/page.tsx @@ -1,9 +1,12 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { Forum_ReportPostingLainnya } from "@/app_modules/forum"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({ params }: { params: { id: string } }) { let postingId = params.id; - const userLoginId = await user_funGetOneUserId() + const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; + return ( <> diff --git a/src/app/dev/forum/report/posting/[id]/page.tsx b/src/app/dev/forum/report/posting/[id]/page.tsx index 17f48e47..cb797bb6 100644 --- a/src/app/dev/forum/report/posting/[id]/page.tsx +++ b/src/app/dev/forum/report/posting/[id]/page.tsx @@ -1,3 +1,4 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { Forum_ReportPosting } from "@/app_modules/forum"; import { forum_getMasterKategoriReport } from "@/app_modules/forum/fun/master/get_master_kategori_report"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; @@ -5,7 +6,8 @@ import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({ params }: { params: { id: string } }) { let postingId = params.id; const listReport = await forum_getMasterKategoriReport(); - const userLoginId = await user_funGetOneUserId(); + const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; return ( <> diff --git a/src/app/dev/home/page.tsx b/src/app/dev/home/page.tsx index f6878fd1..8664f3fc 100644 --- a/src/app/dev/home/page.tsx +++ b/src/app/dev/home/page.tsx @@ -1,5 +1,6 @@ import { RouterAdminDashboard } from "@/app/lib/router_hipmi/router_admin"; import { RouterHome } from "@/app/lib/router_hipmi/router_home"; +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import { HomeView } from "@/app_modules/home"; import { user_getOneByUserId } from "@/app_modules/home/fun/get/get_one_user_by_id"; @@ -8,8 +9,10 @@ import notifikasi_countUserNotifikasi from "@/app_modules/notifikasi/fun/count/f import { redirect } from "next/navigation"; export default async function Page() { - const userId = await user_funGetOneUserId(); - const dataUser = await user_getOneByUserId(userId); + const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; + + const dataUser = await user_getOneByUserId(userLoginId); const dataJob = await job_getTwoForHomeView(); if (dataUser?.active === false) { @@ -19,14 +22,11 @@ export default async function Page() { if (dataUser?.masterUserRoleId === "2" || dataUser?.masterUserRoleId === "3") return redirect(RouterAdminDashboard.splash_admin); - // if (dataUser?.Profile === null) return ; - - // await new Promise((a, b) => { - // setTimeout(a, 3000); - // }); - const countNotifikasi = await notifikasi_countUserNotifikasi(); + // const cekCookies = await fetch("/api/check-cookies"); + // console.log(await cekCookies.json()); + return ( <> ; return ( <> ); diff --git a/src/app/dev/investasi/main/portofolio/page.tsx b/src/app/dev/investasi/main/portofolio/page.tsx index 681557a2..5a5eef1d 100644 --- a/src/app/dev/investasi/main/portofolio/page.tsx +++ b/src/app/dev/investasi/main/portofolio/page.tsx @@ -15,6 +15,7 @@ import { export default async function Page() { const userId = await user_funGetOneUserId(); + if (!userId) return
{"User Tidak ditemukan"}
; const listStatus = await getStatusInvestasi(); const dataDraft = await getPortoByStatusId(userId, 1); const dataReview = await getPortoByStatusId(userId, 2); @@ -30,12 +31,10 @@ export default async function Page() { page: 1, statusId: "3", }); - const listDataReject = await investasi_funGetAllInvestasiNonPublishByUserId({ - page: 1, - statusId: "4", - }); - - + const listDataReject = await investasi_funGetAllInvestasiNonPublishByUserId({ + page: 1, + statusId: "4", + }); return ( <> diff --git a/src/app/dev/investasi/main/transaksi/page.tsx b/src/app/dev/investasi/main/transaksi/page.tsx index 1e6468fc..3737e26f 100644 --- a/src/app/dev/investasi/main/transaksi/page.tsx +++ b/src/app/dev/investasi/main/transaksi/page.tsx @@ -4,11 +4,14 @@ import getMaster_StatusTransaksiInvestasi from "@/app_modules/investasi/fun/mast import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import { investasi_funGetTransaksiByUserId } from "@/app_modules/investasi/_fun"; import { Investasi_UiDaftarTransaksi } from "@/app_modules/investasi/_ui"; +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; export default async function Page() { - const userId = await user_funGetOneUserId(); + const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; + const statusTransaksi = await getMaster_StatusTransaksiInvestasi(); - const listTransaksi = await getListAllTransaksiById_Investasi(userId); + const listTransaksi = await getListAllTransaksiById_Investasi(userLoginId); // NEW const dataTransaksi = await investasi_funGetTransaksiByUserId({ page: 1 }); diff --git a/src/app/dev/investasi/metode_transfer/[id]/page.tsx b/src/app/dev/investasi/metode_transfer/[id]/page.tsx index 4e21a4fc..e1fa67d5 100644 --- a/src/app/dev/investasi/metode_transfer/[id]/page.tsx +++ b/src/app/dev/investasi/metode_transfer/[id]/page.tsx @@ -3,9 +3,12 @@ import getOneInvestasiById from "@/app_modules/investasi/fun/get_one_investasi_b import getMaster_NamaBank from "@/app_modules/investasi/fun/master/get_nama_bank"; import { user_funGetOneUserId } from "@/app_modules/fun_global"; +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; export default async function Page({ params }: { params: { id: string } }) { - const authorId = await user_funGetOneUserId(); + const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; + const dataInvestasi = await getOneInvestasiById(params.id); const namaBank = await getMaster_NamaBank(); // console.log(namaBank) @@ -14,7 +17,7 @@ export default async function Page({ params }: { params: { id: string } }) { ); diff --git a/src/app/dev/investasi/proses_transaksi/[id]/page.tsx b/src/app/dev/investasi/proses_transaksi/[id]/page.tsx index 276b5b65..2ed091d9 100644 --- a/src/app/dev/investasi/proses_transaksi/[id]/page.tsx +++ b/src/app/dev/investasi/proses_transaksi/[id]/page.tsx @@ -1,11 +1,14 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { user_funGetOneUserId } from "@/app_modules/fun_global"; import { funGetUserProfile } from "@/app_modules/fun_global/get_user_profile"; import { ProsesTransaksiInvestasi } from "@/app_modules/investasi"; import getOneInvestasiById from "@/app_modules/investasi/fun/get_one_investasi_by_id"; export default async function Page({ params }: { params: { id: string } }) { - const authorId = await user_funGetOneUserId(); - const userLogin = await funGetUserProfile(authorId); + const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; + + const userLogin = await funGetUserProfile(userLoginId); const dataInvestasi = await getOneInvestasiById(params.id); // console.log(dataInvestasi); diff --git a/src/app/dev/katalog/[id]/layout.tsx b/src/app/dev/katalog/[id]/layout.tsx index adc07fd4..fe4dc504 100644 --- a/src/app/dev/katalog/[id]/layout.tsx +++ b/src/app/dev/katalog/[id]/layout.tsx @@ -1,3 +1,5 @@ +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import { KatalogLayout } from "@/app_modules/katalog/main"; import { Profile_getOneProfileAndUserById } from "@/app_modules/katalog/profile/fun/get/get_one_user_profile"; @@ -10,10 +12,10 @@ export default async function Layout({ params: { id: string }; }) { const profileId = params.id; - const dataProfile = await Profile_getOneProfileAndUserById(profileId) + const dataProfile = await Profile_getOneProfileAndUserById(profileId); const authorId = dataProfile?.userId; - const userLoginId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); return ( <> diff --git a/src/app/dev/katalog/[id]/page.tsx b/src/app/dev/katalog/[id]/page.tsx index 851209c8..218d5daa 100644 --- a/src/app/dev/katalog/[id]/page.tsx +++ b/src/app/dev/katalog/[id]/page.tsx @@ -1,21 +1,25 @@ +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import { Katalog_MainView } from "@/app_modules/katalog"; import { funGetListPortofolio } from "@/app_modules/katalog/portofolio/fun/get/get_list_portofolio"; import { Profile_getOneProfileAndUserById } from "@/app_modules/katalog/profile/fun/get/get_one_user_profile"; - export default async function Page({ params }: { params: { id: string } }) { let profileId = params.id; - const userLoginId = await user_funGetOneUserId(); + const listPorto = await funGetListPortofolio(profileId); const dataProfile = await Profile_getOneProfileAndUserById(profileId); + const userLoginId = await funGetUserIdByToken(); + + return ( <> ); diff --git a/src/app/dev/layout.tsx b/src/app/dev/layout.tsx new file mode 100644 index 00000000..e90d3a18 --- /dev/null +++ b/src/app/dev/layout.tsx @@ -0,0 +1,19 @@ +import { funCheckToken } from "@/app_modules/_global/fun/get"; +import { redirect } from "next/navigation"; +import { RouterAuth } from "../lib/router_hipmi/router_auth"; +import { CheckCookies_UiLayout } from "@/app_modules/check_cookies"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + // const cekCookies = await funCheckToken(); + // if (cekCookies === false) redirect(RouterAuth.login); + + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/portofolio/main/[id]/layout.tsx b/src/app/dev/portofolio/main/[id]/layout.tsx index 30f2c15e..06f7dcad 100644 --- a/src/app/dev/portofolio/main/[id]/layout.tsx +++ b/src/app/dev/portofolio/main/[id]/layout.tsx @@ -1,3 +1,4 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import { PortofolioLayout } from "@/app_modules/katalog/portofolio"; import { portofolio_getOneById } from "@/app_modules/katalog/portofolio/fun/get/get_one_portofolio"; @@ -12,8 +13,8 @@ export default async function Layout({ let portoId = params.id; const getPorto = await portofolio_getOneById(portoId); const userLoginId = await user_funGetOneUserId(); - // console.log(userLoginId); - // console.log(getPorto?.Profile?.User?.id); + if (!userLoginId) return ; + return ( <> ; + + const dataUser = await user_getOneByUserId(userLoginId); if (dataUser?.active === true) { return redirect(RouterHome.main_home); diff --git a/src/app/dev/vote/detail/kontribusi/[id]/layout.tsx b/src/app/dev/vote/detail/kontribusi/[id]/layout.tsx index b580b73a..b29c65da 100644 --- a/src/app/dev/vote/detail/kontribusi/[id]/layout.tsx +++ b/src/app/dev/vote/detail/kontribusi/[id]/layout.tsx @@ -1,3 +1,4 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { user_funGetOneUserId } from "@/app_modules/fun_global"; import { LayoutVote_DetailKontribusi } from "@/app_modules/vote"; import React from "react"; @@ -10,7 +11,9 @@ export default async function Layout({ params: { id: string }; }) { const votingId = params.id; - const userLoginId = await user_funGetOneUserId(); + const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; + return ( <> diff --git a/src/app/dev/vote/detail/main/[id]/layout.tsx b/src/app/dev/vote/detail/main/[id]/layout.tsx index 5514893f..baf71b43 100644 --- a/src/app/dev/vote/detail/main/[id]/layout.tsx +++ b/src/app/dev/vote/detail/main/[id]/layout.tsx @@ -1,3 +1,4 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import { LayoutVote_MainDetail } from "@/app_modules/vote"; import React from "react"; @@ -11,6 +12,7 @@ export default async function Layout({ }) { const votingId = params.id; const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; return ( <> diff --git a/src/app/dev/vote/detail/main/[id]/page.tsx b/src/app/dev/vote/detail/main/[id]/page.tsx index f331be1f..1767fe98 100644 --- a/src/app/dev/vote/detail/main/[id]/page.tsx +++ b/src/app/dev/vote/detail/main/[id]/page.tsx @@ -5,15 +5,19 @@ import { Vote_getHasilVoteById } from "@/app_modules/vote/fun/get/get_list_hasil import { Vote_getListKontributorById } from "@/app_modules/vote/fun/get/get_list_kontributor_by_id"; import { voting_funGetOneVotingbyId } from "@/app_modules/vote/fun/get/fun_get_one_by_id"; import { Vote_getOnePilihanVotingByUserId } from "@/app_modules/vote/fun/get/get_one_pilihan_voting_by_user_id"; +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; export default async function Page({ params }: { params: { id: string } }) { const voteId = params.id; + + const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; + const dataVote = await voting_funGetOneVotingbyId(voteId); const hasilVoting = await Vote_getHasilVoteById(voteId as any); const isKontributor = await Vote_cekKontributorById(voteId); const pilihanKontributor = await Vote_getOnePilihanVotingByUserId(voteId); const listKontributor = await Vote_getListKontributorById(voteId); - const userLoginId = await user_funGetOneUserId(); return ( <> diff --git a/src/app/dev/vote/detail/publish/[id]/layout.tsx b/src/app/dev/vote/detail/publish/[id]/layout.tsx index 1865f488..9db9b517 100644 --- a/src/app/dev/vote/detail/publish/[id]/layout.tsx +++ b/src/app/dev/vote/detail/publish/[id]/layout.tsx @@ -1,3 +1,4 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { user_funGetOneUserId } from "@/app_modules/fun_global"; import { LayoutVote_DetailPublish } from "@/app_modules/vote"; import { Voting_funGetOneVotingbyId } from "@/app_modules/vote/fun/get"; @@ -12,16 +13,14 @@ export default async function Layout({ }) { const votingId = params.id; const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; const dataVoting = await Voting_funGetOneVotingbyId(votingId); const authorId = dataVoting?.authorId; return ( <> - + {children} diff --git a/src/app/dev/vote/detail/semua_riwayat/[id]/layout.tsx b/src/app/dev/vote/detail/semua_riwayat/[id]/layout.tsx index 5906589f..05370a9d 100644 --- a/src/app/dev/vote/detail/semua_riwayat/[id]/layout.tsx +++ b/src/app/dev/vote/detail/semua_riwayat/[id]/layout.tsx @@ -1,3 +1,4 @@ +import { CheckCookies_UiView } from "@/app_modules/check_cookies"; import { user_funGetOneUserId } from "@/app_modules/fun_global"; import { LayoutVote_DetailSemuaRiwayat } from "@/app_modules/vote"; import React from "react"; @@ -9,9 +10,9 @@ export default async function Layout({ children: React.ReactNode; params: { id: string }; }) { - const votingId = params.id; - const userLoginId = await user_funGetOneUserId(); - + const votingId = params.id; + const userLoginId = await user_funGetOneUserId(); + if (!userLoginId) return ; return ( <> diff --git a/src/app/fun/my_console.ts b/src/app/fun/my_console.ts deleted file mode 100644 index c6dd9398..00000000 --- a/src/app/fun/my_console.ts +++ /dev/null @@ -1,6 +0,0 @@ -export function myConsole(value: any) { - const onData = false - if (onData) { - console.log(value); - } -} diff --git a/src/app/layout.tsx b/src/app/layout.tsx index b797258d..1c54d780 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -2,9 +2,37 @@ import MqttLoader from "@/util/mqtt_loader"; import RootStyleRegistry from "./emotion"; import "./globals.css"; import { TokenProvider } from "./lib/token"; +import dotenv from "dotenv"; +import { ServerEnv } from "./lib/server_env"; +dotenv.config({ + path: ".env", +}); const token = process.env.WS_APIKEY; -const pwdCookies = process.env.PWD; + +const DATABASE_URL = process.env.DATABASE_URL!; +const WIBU_PWD = process.env.WIBU_PWD!; +const Client_KEY = process.env.Client_KEY!; +const Server_KEY = process.env.Server_KEY!; +const MAPBOX_TOKEN = process.env.MAPBOX_TOKEN!; +const WS_APIKEY = process.env.WS_APIKEY!; + +if (!DATABASE_URL) throw new Error("Require DATABASE_URL"); +if (!WIBU_PWD) throw new Error("Require PWD"); +if (!Client_KEY) throw new Error("Require Client_KEY"); +if (!Server_KEY) throw new Error("Require Server_KEY"); +if (!MAPBOX_TOKEN) throw new Error("Require MAPBOX_TOKEN"); +if (!WS_APIKEY) throw new Error("Require WS_APIKEY"); + +const envObject = { + DATABASE_URL, + WIBU_PWD, + Client_KEY, + Server_KEY, + MAPBOX_TOKEN, + WS_APIKEY, +}; +ServerEnv.set(envObject); export default function RootLayout({ children, @@ -12,11 +40,11 @@ export default function RootLayout({ children: React.ReactNode; }) { if (!token) return <>Require Token Storage; - console.log(pwdCookies) + return ( - + {children} ); diff --git a/src/app/lib/index.ts b/src/app/lib/index.ts index 6fc9de69..e9c5bc8c 100644 --- a/src/app/lib/index.ts +++ b/src/app/lib/index.ts @@ -1,9 +1,7 @@ import APIs from "./APIs"; import DIRECTORY_ID from "./id-derectory"; import prisma from "./prisma"; -import { PwdCookies } from "./pwd"; export { DIRECTORY_ID }; export { prisma }; export { APIs }; -export { PwdCookies }; diff --git a/src/app/lib/pwd.ts b/src/app/lib/pwd.ts deleted file mode 100644 index 724e148a..00000000 --- a/src/app/lib/pwd.ts +++ /dev/null @@ -1,5 +0,0 @@ -import "dotenv/config"; -const dotenv = require("dotenv").config(".env"); -const PwdCookies = dotenv?.parsed.PWD; - -export { PwdCookies }; diff --git a/src/app/lib/router_hipmi/router_auth.ts b/src/app/lib/router_hipmi/router_auth.ts index 6149df2b..30e2b445 100644 --- a/src/app/lib/router_hipmi/router_auth.ts +++ b/src/app/lib/router_hipmi/router_auth.ts @@ -2,4 +2,5 @@ export const RouterAuth = { login: "/dev/auth/login", validasi: "/dev/auth/validasi/", register: "/dev/auth/register/", + check_cookies: "/dev/check-cookies", }; diff --git a/src/app/lib/server_env.ts b/src/app/lib/server_env.ts new file mode 100644 index 00000000..57b5294c --- /dev/null +++ b/src/app/lib/server_env.ts @@ -0,0 +1,15 @@ +type ENV = { + DATABASE_URL: string; + WIBU_PWD: string; + Client_KEY: string; + Server_KEY: string; + MAPBOX_TOKEN: string; + WS_APIKEY: string; +}; +export class ServerEnv { + static value: ENV | null = null; + + static set(val: ENV) { + ServerEnv.value = val; + } +} diff --git a/src/app/lib/token.ts b/src/app/lib/token.ts index 7ce27bae..78484de0 100644 --- a/src/app/lib/token.ts +++ b/src/app/lib/token.ts @@ -10,8 +10,31 @@ class TokenStorage { } } -function TokenProvider({ token }: { token: string }) { +type ENV = { + DATABASE_URL: string; + WIBU_PWD: string; + Client_KEY: string; + Server_KEY: string; + MAPBOX_TOKEN: string; + WS_APIKEY: string; +}; +export class GlobalEnv { + static value: ENV | null = null; + + static set(val: ENV) { + GlobalEnv.value = val; + } +} + +function TokenProvider({ + token, + envObject, +}: { + token: string; + envObject: ENV; +}) { TokenStorage.set(token); + GlobalEnv.set(envObject); return null; } diff --git a/src/app/makuro/page.tsx b/src/app/makuro/page.tsx index 62e9732c..6c7195c5 100644 --- a/src/app/makuro/page.tsx +++ b/src/app/makuro/page.tsx @@ -1,51 +1,9 @@ -"use client"; -import Coba from "@/ui/Coba"; -import { useState } from "react"; -// Beda Package -import InfiniteScroll from "react-infinite-scroll-component"; +import { ServerEnv } from "../lib/server_env"; export default function App() { - const [data, setData] = useState([]); - const [isLoading, setIsLoading] = useState(false); - - const ttlData = Array.from({ length: 21 }); - const [list, setList] = useState(ttlData); - - // useShallowEffect(() => { - // setData(createItems()); - // }, []); - - // const next = async (direction: ScrollDirection) => { - // console.log("next", direction); - // try { - // setIsLoading(true); - // const newData = await loadMore(); - - // const d = direction === "up" ? [...newData, ...data] : []; - // setData(d); - // } finally { - // setIsLoading(false); - // } - // }; - - // const ref = useInfiniteScroll({ - // next, - // rowCount: data.length, - // hasMore: { up: true }, - // }); - - const fetchMoreData = () => { - setTimeout(() => { - setList(list.concat(Array.from({ length: 20 }))); - }, 100); - }; - - const style = { - height: 30, - border: "1px solid green", - margin: 6, - padding: 8, - }; - - return <>; + return ( +
+
{JSON.stringify(ServerEnv.value, null, 2)}
+
+ ); } diff --git a/src/app_modules/_global/fun/get/fun_cek_token.ts b/src/app_modules/_global/fun/get/fun_cek_token.ts new file mode 100644 index 00000000..f0b16bc0 --- /dev/null +++ b/src/app_modules/_global/fun/get/fun_cek_token.ts @@ -0,0 +1,17 @@ +"use server"; + +import { prisma } from "@/app/lib"; +import _ from "lodash"; +import { cookies } from "next/headers"; + +export async function funCheckToken() { + const c = cookies().get("ssn"); + const cekToken = await prisma.userSession.findFirst({ + where: { + token: c?.value, + }, + }); + + if (cekToken === null) return false; + return true; +} diff --git a/src/app_modules/_global/fun/get/fun_get_user_id_by_token.ts b/src/app_modules/_global/fun/get/fun_get_user_id_by_token.ts new file mode 100644 index 00000000..489e8172 --- /dev/null +++ b/src/app_modules/_global/fun/get/fun_get_user_id_by_token.ts @@ -0,0 +1,18 @@ +"use server"; + +import { cookies } from "next/headers"; +import prisma from "@/app/lib/prisma"; +import { redirect } from "next/navigation"; +import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; + +export async function funGetUserIdByToken() { + const c = cookies().get("ssn"); + const cekToken = await prisma.userSession.findFirst({ + where: { + token: c?.value, + }, + }); + + if (cekToken === null) return redirect(RouterAuth.login); + return cekToken.userId; +} diff --git a/src/app_modules/_global/fun/get/index.ts b/src/app_modules/_global/fun/get/index.ts index 3e6f8403..e3fe3fa9 100644 --- a/src/app_modules/_global/fun/get/index.ts +++ b/src/app_modules/_global/fun/get/index.ts @@ -1,5 +1,9 @@ +import { funCheckToken } from "./fun_cek_token"; import { funGlobal_getNomorAdmin } from "./fun_get_nomor_admin"; +import { funGetUserIdByToken } from "./fun_get_user_id_by_token"; import { funGlobal_getMasterKategoriApp } from "./fun_master_kategori_app"; export { funGlobal_getMasterKategoriApp }; export { funGlobal_getNomorAdmin }; +export { funCheckToken }; +export { funGetUserIdByToken }; diff --git a/src/app_modules/admin/colab/fun/edit/fun_report_project_by_id.ts b/src/app_modules/admin/colab/fun/edit/fun_report_project_by_id.ts index 9dba8149..30ea7c55 100644 --- a/src/app_modules/admin/colab/fun/edit/fun_report_project_by_id.ts +++ b/src/app_modules/admin/colab/fun/edit/fun_report_project_by_id.ts @@ -2,8 +2,10 @@ import prisma from "@/app/lib/prisma"; import { RouterAdminColab } from "@/app/lib/router_admin/router_admin_colab"; +import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import { revalidatePath } from "next/cache"; +import { redirect } from "next/navigation"; export default async function adminColab_funReportProjectById({ colabId, @@ -13,6 +15,10 @@ export default async function adminColab_funReportProjectById({ report: string; }) { const authorId = await user_funGetOneUserId(); + if (!authorId) { + redirect(RouterAuth.login); + // return { status: 400, message: "Gagal mendapatkan authorId" }; + } const projectUpdate = await prisma.projectCollaboration.update({ where: { diff --git a/src/app_modules/auth/fun/fun_logout.ts b/src/app_modules/auth/fun/fun_logout.ts index 88c8d311..31165b42 100644 --- a/src/app_modules/auth/fun/fun_logout.ts +++ b/src/app_modules/auth/fun/fun_logout.ts @@ -1,18 +1,32 @@ "use server"; import prisma from "@/app/lib/prisma"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { revalidatePath } from "next/cache"; import { cookies } from "next/headers"; export async function auth_Logout(kodeId: string) { - cookies().set({ - name: "ssn", - value: "", - maxAge: 0, - }); - - const c = cookies().get("ssn"); - if (c?.value !== "") return { status: 400, message: "Gagal Logout" }; + const userId = await funGetUserIdByToken(); + + try { + const delToken = await prisma.userSession.delete({ + where: { + userId: userId, + }, + }); + + if (!delToken) return { status: 400, message: "Gagal Hapus User Session" }; + cookies().set({ + name: "ssn", + value: "", + maxAge: 0, + expires: 0, + }); + + return { status: 200, message: "Logout Berhasil" }; + } catch (error) { + console.log(error); + } // const del = await prisma.kodeOtp.delete({ // where: { diff --git a/src/app_modules/auth/fun/fun_register.ts b/src/app_modules/auth/fun/fun_register.ts index 390b7b1c..06aa8c67 100644 --- a/src/app_modules/auth/fun/fun_register.ts +++ b/src/app_modules/auth/fun/fun_register.ts @@ -1,13 +1,16 @@ "use server"; -import { PwdCookies } from "@/app/lib"; import prisma from "@/app/lib/prisma"; import { sealData } from "iron-session"; import { cookies } from "next/headers"; - -export async function Auth_funRegister(data: any) { - +export async function Auth_funRegister({ + data, + HIPMI_PWD, +}: { + data: any; + HIPMI_PWD: string; +}) { const cekUsername = await prisma.user.findUnique({ where: { username: data.username, @@ -28,21 +31,31 @@ export async function Auth_funRegister(data: any) { }); if (!create) return { status: 400, message: "Gagal Mendaftar" }; - const seal = await sealData( + const sealToken = await sealData( JSON.stringify({ id: create.id, username: create.username, }), { - password: PwdCookies + password: HIPMI_PWD, } ); cookies().set({ name: "ssn", - value: seal, - maxAge: 60 * 60 * 24 * 7, + value: sealToken, + // maxAge: 60 * 60 * 24 * 7, }); + const createUserSession = await prisma.userSession.create({ + data: { + token: sealToken, + userId: create.id, + }, + }); + + if (!createUserSession) + return { status: 400, message: "Gagal Membuat User Session" }; + return { status: 200, message: "Berhasil Mendaftar" }; } diff --git a/src/app_modules/auth/fun/fun_validasi.ts b/src/app_modules/auth/fun/fun_validasi.ts index 0e215288..5fbbbbee 100644 --- a/src/app_modules/auth/fun/fun_validasi.ts +++ b/src/app_modules/auth/fun/fun_validasi.ts @@ -1,15 +1,19 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { sealData } from "iron-session"; -import { cookies } from "next/headers"; -import { revalidatePath } from "next/cache"; import { RouterHome } from "@/app/lib/router_hipmi/router_home"; -import { PwdCookies } from "@/app/lib"; +import { sealData, unsealData } from "iron-session"; +import { revalidatePath } from "next/cache"; +import { cookies } from "next/headers"; - -export async function auth_funValidasi(nomor: string) { - const cek = await prisma.user.findUnique({ +export async function auth_funValidasi({ + nomor, + HIPMI_PWD, +}: { + nomor: string; + HIPMI_PWD: string; +}) { + const cekUser = await prisma.user.findUnique({ where: { nomor: nomor, }, @@ -21,30 +25,44 @@ export async function auth_funValidasi(nomor: string) { }, }); - if (cek === null) return { status: 400, message: "Nomor Belum Terdaftar" }; - if (cek) { - const res = await sealData( - JSON.stringify({ - id: cek.id, - username: cek.username, - }), - { - password: PwdCookies, - } - ); + if (cekUser === null) return { status: 400, message: "Nomor Belum Terdaftar" }; - cookies().set({ - name: "ssn", - value: res, - maxAge: 60 * 60 * 24 * 30, + const sealToken = await sealData( + JSON.stringify({ + id: cekUser.id, + username: cekUser.username, + }), + { + password: HIPMI_PWD, + } + ); + + cookies().set({ + name: "ssn", + value: sealToken, + // maxAge: 60 * 60 * 24 * 30, + // expires: 60 * 60 * 24 * 30, + }); + + try { + const createUserSession = await prisma.userSession.create({ + data: { + token: sealToken, + userId: cekUser.id, + }, }); + if (!createUserSession) + return { status: 401, message: "Gagal Membuat User Session" }; + revalidatePath(RouterHome.main_home); + } catch (error) { + console.log(error); } return { status: 200, message: "Nomor Terverifikasi", - role: cek.masterUserRoleId, + role: cekUser.masterUserRoleId, }; } diff --git a/src/app_modules/auth/login/view.tsx b/src/app_modules/auth/login/view.tsx index 1651faf3..7bd14ebd 100644 --- a/src/app_modules/auth/login/view.tsx +++ b/src/app_modules/auth/login/view.tsx @@ -6,8 +6,6 @@ import { MainColor, } from "@/app_modules/_global/color/color_pallet"; import ComponentGlobal_ErrorInput from "@/app_modules/_global/component/error_input"; -import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/_global/notif_global/notifikasi_berhasil"; -import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/notif_global/notifikasi_peringatan"; import { auth_funLogin } from "@/app_modules/auth/fun/fun_login"; import { BackgroundImage, @@ -17,18 +15,20 @@ import { Text, Title, } from "@mantine/core"; -import { useFocusTrap } from "@mantine/hooks"; import { useAtom } from "jotai"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { PhoneInput } from "react-international-phone"; import "react-international-phone/style.css"; import { gs_kodeId } from "../state/state"; +import { + ComponentGlobal_NotifikasiBerhasil, + ComponentGlobal_NotifikasiPeringatan, +} from "@/app_modules/_global/notif_global"; export default function Login() { const router = useRouter(); const [kodeId, setKodeId] = useAtom(gs_kodeId); - const focusTrapRef = useFocusTrap(); const [phone, setPhone] = useState(""); const [loading, setLoading] = useState(false); const [isError, setError] = useState(false); @@ -38,16 +38,15 @@ export default function Login() { if (nomorHp.length <= 4) return setError(true); - await auth_funLogin(nomorHp).then((res) => { - if (res.status === 200) { - setLoading(true); - ComponentGlobal_NotifikasiBerhasil(res.message, 2000); - setKodeId(res.kodeOtpId); - router.push(RouterAuth.validasi + res.kodeOtpId); - } else { - ComponentGlobal_NotifikasiPeringatan(res.message); - } - }); + const res = await auth_funLogin(nomorHp); + if (res.status === 200) { + setLoading(true); + ComponentGlobal_NotifikasiBerhasil(res.message, 2000); + setKodeId(res.kodeOtpId); + router.push(RouterAuth.validasi + res.kodeOtpId); + } else { + ComponentGlobal_NotifikasiPeringatan(res.message); + } // await fetch(ApiHipmi.login, { // method: "POST", diff --git a/src/app_modules/auth/logout/view.tsx b/src/app_modules/auth/logout/view.tsx index 5562145c..b2e098d6 100644 --- a/src/app_modules/auth/logout/view.tsx +++ b/src/app_modules/auth/logout/view.tsx @@ -4,12 +4,7 @@ import { Warna } from "@/app/lib/warna"; import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/_global/notif_global/notifikasi_berhasil"; import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/notif_global/notifikasi_peringatan"; import UIGlobal_Modal from "@/app_modules/_global/ui/ui_modal"; -import { - ActionIcon, - Button, - Stack, - Text -} from "@mantine/core"; +import { ActionIcon, Button, Stack, Text } from "@mantine/core"; import { IconLogout } from "@tabler/icons-react"; import { useAtom } from "jotai"; import { useRouter } from "next/navigation"; @@ -24,9 +19,6 @@ export default function Component_Logout() { const [loading, setLoading] = useState(false); async function onClickLogout() { - // await auth_Logout(kodeId).then((res) => { - // ComponentGlobal_NotifikasiBerhasil("Berhasil Logout"); - // }); await auth_Logout(kodeId).then((res) => { if (res.status === 200) { ComponentGlobal_NotifikasiBerhasil(res.message); diff --git a/src/app_modules/auth/register/view.tsx b/src/app_modules/auth/register/view.tsx index 087db307..af8f4bd2 100644 --- a/src/app_modules/auth/register/view.tsx +++ b/src/app_modules/auth/register/view.tsx @@ -15,17 +15,16 @@ import { Stack, Text, TextInput, - Title + Title, } from "@mantine/core"; import { useFocusTrap } from "@mantine/hooks"; -import { - IconUserCircle -} from "@tabler/icons-react"; +import { IconUserCircle } from "@tabler/icons-react"; import _ from "lodash"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { auth_funDeleteAktivasiKodeOtpById } from "../fun/fun_edit_aktivasi_kode_otp_by_id"; import { Auth_funRegister } from "../fun/fun_register"; +import { GlobalEnv } from "@/app/lib/token"; export default function Register({ dataOtp }: { dataOtp: any }) { const router = useRouter(); @@ -40,7 +39,6 @@ export default function Register({ dataOtp }: { dataOtp: any }) { username: value, nomor: nomor, }; - // console.log(body); if (body.username === "") { setIsValue(true); @@ -49,7 +47,7 @@ export default function Register({ dataOtp }: { dataOtp: any }) { if (body.username.length < 5) return null; if (_.values(body.username).includes(" ")) return null; - const res = await Auth_funRegister(body) + const res = await Auth_funRegister({data: body, HIPMI_PWD: GlobalEnv.value?.WIBU_PWD as string}); if (res.status === 200) { await auth_funDeleteAktivasiKodeOtpById(dataOtp.id).then((val) => { if (val.status === 200) { @@ -67,16 +65,12 @@ export default function Register({ dataOtp }: { dataOtp: any }) { return ( <> - {/*
{JSON.stringify(dataOtp,null,2)}
*/} - +
REGISTRASI + {GlobalEnv.value?.DATABASE_URL} diff --git a/src/app_modules/auth/validasi/view.tsx b/src/app_modules/auth/validasi/view.tsx index c80cab25..a03cf40f 100644 --- a/src/app_modules/auth/validasi/view.tsx +++ b/src/app_modules/auth/validasi/view.tsx @@ -26,6 +26,7 @@ import { useRouter } from "next/navigation"; import { useState } from "react"; import { auth_funDeleteAktivasiKodeOtpById } from "../fun/fun_edit_aktivasi_kode_otp_by_id"; import { auth_funValidasi } from "../fun/fun_validasi"; +import { GlobalEnv } from "@/app/lib/token"; export default function Validasi({ dataOtp }: { dataOtp: any }) { const router = useRouter(); @@ -41,9 +42,11 @@ export default function Validasi({ dataOtp }: { dataOtp: any }) { if (code != inputCode) return ComponentGlobal_NotifikasiPeringatan("Kode Salah"); - const res = await auth_funValidasi(nomor); + const res = await auth_funValidasi({ + nomor: nomor, + HIPMI_PWD: GlobalEnv.value?.WIBU_PWD as string, + }); if (res.status === 200) { - const resAktivasi = await auth_funDeleteAktivasiKodeOtpById(dataOtp.id); if (resAktivasi.status === 200) { if (res.role === "1") { @@ -51,12 +54,13 @@ export default function Validasi({ dataOtp }: { dataOtp: any }) { setLoading(true); router.push(RouterHome.main_home, { scroll: false }); } else { - router.push(RouterAdminDashboard.splash_admin); + ComponentGlobal_NotifikasiBerhasil("Admin Logged in"); + setLoading(true); + router.push(RouterAdminDashboard.splash_admin, { scroll: false }); } } else { ComponentGlobal_NotifikasiPeringatan(resAktivasi.message); } - } else { ComponentGlobal_NotifikasiBerhasil(res.message); router.push(RouterAuth.register + dataOtp.id, { scroll: false }); diff --git a/src/app_modules/check_cookies/index.ts b/src/app_modules/check_cookies/index.ts new file mode 100644 index 00000000..c5fdd44c --- /dev/null +++ b/src/app_modules/check_cookies/index.ts @@ -0,0 +1,5 @@ +import { CheckCookies_UiLayout } from "./layout_cek_cookies"; +import { CheckCookies_UiView } from "./ui_check_cookies"; + +export { CheckCookies_UiView }; +export { CheckCookies_UiLayout }; diff --git a/src/app_modules/check_cookies/layout_cek_cookies.tsx b/src/app_modules/check_cookies/layout_cek_cookies.tsx new file mode 100644 index 00000000..75070c50 --- /dev/null +++ b/src/app_modules/check_cookies/layout_cek_cookies.tsx @@ -0,0 +1,27 @@ +"use client"; + +import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; +import { useShallowEffect } from "@mantine/hooks"; +import { useRouter } from "next/navigation"; + +export function CheckCookies_UiLayout({ + children, +}: { + children: React.ReactNode; +}) { + const router = useRouter(); + + useShallowEffect(() => { + onCheckCookies(); + }, []); + + async function onCheckCookies() { + const cek = await fetch("/api/check-cookies"); + const result = await cek.json(); + if (result.success === false) { + router.push(RouterAuth.login); + } + } + + return <>{children}; +} diff --git a/src/app_modules/check_cookies/ui_check_cookies.tsx b/src/app_modules/check_cookies/ui_check_cookies.tsx new file mode 100644 index 00000000..9a62aca7 --- /dev/null +++ b/src/app_modules/check_cookies/ui_check_cookies.tsx @@ -0,0 +1,23 @@ +"use client"; + +import { Button, Center } from "@mantine/core"; +import { UIGlobal_LayoutTamplate } from "../_global/ui"; +import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; +import { useRouter } from "next/navigation"; +import { useShallowEffect } from "@mantine/hooks"; + +export function CheckCookies_UiView() { + const router = useRouter(); + + return ( + <> + +
+ +
+
+ + ); +} diff --git a/src/app_modules/colab/fun/create/fun_create_room_chat.ts b/src/app_modules/colab/fun/create/fun_create_room_chat.ts index 8111d59c..ef4e0b50 100644 --- a/src/app_modules/colab/fun/create/fun_create_room_chat.ts +++ b/src/app_modules/colab/fun/create/fun_create_room_chat.ts @@ -1,7 +1,9 @@ "use server"; import prisma from "@/app/lib/prisma"; +import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { redirect } from "next/navigation"; export default async function colab_funCreateRoomChat( nameRoom: string, @@ -9,6 +11,10 @@ export default async function colab_funCreateRoomChat( colabId: string ) { const authorId = await user_funGetOneUserId(); + if (!authorId) { + redirect(RouterAuth.login); + // return { status: 400, message: "Gagal mendapatkan authorId" }; + } const createRoom = await prisma.projectCollaboration_RoomChat.create({ data: { diff --git a/src/app_modules/colab/fun/get/cek_notifikasi.ts b/src/app_modules/colab/fun/get/cek_notifikasi.ts index a22e80f6..3a29b5a3 100644 --- a/src/app_modules/colab/fun/get/cek_notifikasi.ts +++ b/src/app_modules/colab/fun/get/cek_notifikasi.ts @@ -1,10 +1,16 @@ "use server"; import prisma from "@/app/lib/prisma"; +import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { redirect } from "next/navigation"; export default async function colab_CekNotifikasi() { const authorId = await user_funGetOneUserId(); + if (!authorId) { + redirect(RouterAuth.login); + // return { status: 400, message: "Gagal mendapatkan authorId" }; + } const cekNotif = await prisma.projectCollaboration_Notifikasi.findMany({ where: { diff --git a/src/app_modules/colab/fun/get/get_list_notifikasi_by_user_id.ts b/src/app_modules/colab/fun/get/get_list_notifikasi_by_user_id.ts index 523f5146..ee3815b9 100644 --- a/src/app_modules/colab/fun/get/get_list_notifikasi_by_user_id.ts +++ b/src/app_modules/colab/fun/get/get_list_notifikasi_by_user_id.ts @@ -1,10 +1,16 @@ "use server"; import prisma from "@/app/lib/prisma"; +import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { redirect } from "next/navigation"; export default async function colab_getListNotifikasiByUserId() { const authorId = await user_funGetOneUserId(); + if (!authorId) { + redirect(RouterAuth.login); + // return { status: 400, message: "Gagal mendapatkan authorId" }; + } const get = await prisma.projectCollaboration_Notifikasi.findMany({ orderBy: { diff --git a/src/app_modules/colab/fun/get/room_chat/get_list_room_by_author_id.ts b/src/app_modules/colab/fun/get/room_chat/get_list_room_by_author_id.ts index f0da803f..ab1a2463 100644 --- a/src/app_modules/colab/fun/get/room_chat/get_list_room_by_author_id.ts +++ b/src/app_modules/colab/fun/get/room_chat/get_list_room_by_author_id.ts @@ -1,10 +1,20 @@ "use server"; import prisma from "@/app/lib/prisma"; +import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { redirect } from "next/navigation"; -export default async function colab_getListRoomChatByAuthorId({page}: {page: number}) { - const userLoginId = await user_funGetOneUserId(); +export default async function colab_getListRoomChatByAuthorId({ + page, +}: { + page: number; +}) { + const authorId = await user_funGetOneUserId(); + if (!authorId) { + redirect(RouterAuth.login); + // return { status: 400, message: "Gagal mendapatkan authorId" }; + } const takeData = 10; const skipData = page * takeData - takeData; @@ -15,7 +25,7 @@ export default async function colab_getListRoomChatByAuthorId({page}: {page: num createdAt: "desc", }, where: { - userId: userLoginId, + userId: authorId, }, select: { ProjectCollaboration_RoomChat: { @@ -36,5 +46,4 @@ export default async function colab_getListRoomChatByAuthorId({page}: {page: num // console.log(listRoom); return listRoom; - } diff --git a/src/app_modules/fun_global/get_user_token.ts b/src/app_modules/fun_global/get_user_token.ts index 9e35b3ae..4e57ff36 100644 --- a/src/app_modules/fun_global/get_user_token.ts +++ b/src/app_modules/fun_global/get_user_token.ts @@ -1,24 +1,27 @@ "use server"; -import { cookies } from "next/headers"; -import { unsealData } from "iron-session"; -import { redirect } from "next/navigation"; import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; +import { ServerEnv } from "@/app/lib/server_env"; +import { unsealData } from "iron-session"; import _ from "lodash"; -import { PwdCookies } from "@/app/lib"; +import { cookies } from "next/headers"; +import { redirect } from "next/navigation"; +export async function user_funGetOneUserId(): Promise { + try { + const kukis = cookies(); + const c = kukis.get("ssn"); + if (!c || !c?.value || _.isEmpty(c?.value) || _.isUndefined(c?.value)) + return redirect(RouterAuth.login); -export async function user_funGetOneUserId() { - const kukis = cookies(); - const c = kukis.get("ssn"); - if (!c || !c?.value || _.isEmpty(c?.value) || _.isUndefined(c?.value)) - return redirect(RouterAuth.login); + const token = JSON.parse( + await unsealData(c?.value as string, { + password: ServerEnv.value?.WIBU_PWD as string, + }) + ); - const token = JSON.parse( - await unsealData(c?.value as string, { - password: PwdCookies, - }) - ); - - return token.id; + return token.id; + } catch (error) { + return null; + } } diff --git a/src/app_modules/home/component/ui_home.tsx b/src/app_modules/home/component/ui_home.tsx index 0d878552..77665aa7 100644 --- a/src/app_modules/home/component/ui_home.tsx +++ b/src/app_modules/home/component/ui_home.tsx @@ -127,7 +127,7 @@ export function Home_UiView({ onClick={() => { if (dataUser.Profile === null) { return ComponentGlobal_NotifikasiPeringatan( - "Lengkapi Data Profile" + "Lengkapi Profile" ); } else { if (e.link === "") { @@ -176,7 +176,7 @@ export function Home_UiView({ onClick={() => { if (dataUser.Profile === null) { return ComponentGlobal_NotifikasiPeringatan( - "Lengkapi Data Profile" + "Lengkapi Profile" ); } else { if (routePageJob.link === "") { diff --git a/src/app_modules/investasi/fun/fun_delete_berita.ts b/src/app_modules/investasi/fun/fun_delete_berita.ts index e599ab68..91245bc6 100644 --- a/src/app_modules/investasi/fun/fun_delete_berita.ts +++ b/src/app_modules/investasi/fun/fun_delete_berita.ts @@ -1,9 +1,6 @@ "use server"; -import { myConsole } from "@/app/fun/my_console"; import prisma from "@/app/lib/prisma"; -import { RouterInvestasi_OLD } from "@/app/lib/router_hipmi/router_investasi"; -import { revalidatePath } from "next/cache"; export default async function funDeleteBeritaInvestasi(id: string) { const res = await prisma.beritaInvestasi.delete({ diff --git a/src/app_modules/katalog/profile/fun/upload_foto.ts b/src/app_modules/katalog/profile/fun/upload_foto.ts index 043bd563..2ece22cf 100644 --- a/src/app_modules/katalog/profile/fun/upload_foto.ts +++ b/src/app_modules/katalog/profile/fun/upload_foto.ts @@ -1,10 +1,8 @@ "use server"; -import { myConsole } from "@/app/fun/my_console"; import prisma from "@/app/lib/prisma"; import fs from "fs"; import _ from "lodash"; -import { cookies } from "next/headers"; import { v4 } from "uuid"; /** @@ -18,9 +16,6 @@ export async function funUploadFoto(formData: FormData, id: string) { const fExt = _.lowerCase(file.name.split(".").pop()); const fRandomName = v4(fName) + "." + fExt; - myConsole(id); - myConsole(fExt); - const upload = await prisma.images.create({ data: { url: fRandomName, diff --git a/src/app_modules/user_search/fun/get/get_all_user.ts b/src/app_modules/user_search/fun/get/get_all_user.ts index 8741bbe6..407de439 100644 --- a/src/app_modules/user_search/fun/get/get_all_user.ts +++ b/src/app_modules/user_search/fun/get/get_all_user.ts @@ -1,7 +1,9 @@ "use server"; import prisma from "@/app/lib/prisma"; +import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { redirect } from "next/navigation"; export async function userSearch_getAllUser({ page, @@ -10,7 +12,12 @@ export async function userSearch_getAllUser({ page: number; search?: string; }) { - const userLoginId = await user_funGetOneUserId(); + const authorId = await user_funGetOneUserId(); + if (!authorId) { + redirect(RouterAuth.login); + // return { status: 400, message: "Gagal mendapatkan authorId" }; + } + const takeData = 20; const skipData = page * takeData - takeData; @@ -33,7 +40,7 @@ export async function userSearch_getAllUser({ OR: [ { NOT: { - id: userLoginId, + id: authorId, }, }, ], diff --git a/src/app_modules/vote/fun/create/create_vote.ts b/src/app_modules/vote/fun/create/create_vote.ts index 73aec734..8b356660 100644 --- a/src/app_modules/vote/fun/create/create_vote.ts +++ b/src/app_modules/vote/fun/create/create_vote.ts @@ -5,9 +5,15 @@ import { MODEL_VOTING } from "../../model/interface"; import prisma from "@/app/lib/prisma"; import { revalidatePath } from "next/cache"; import _ from "lodash"; +import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; +import { redirect } from "next/navigation"; export async function Vote_funCreate(req: MODEL_VOTING, listVote: any[]) { const authorId = await user_funGetOneUserId(); + if (!authorId) { + redirect(RouterAuth.login); + // return { status: 400, message: "Gagal mendapatkan authorId" }; + } const create = await prisma.voting.create({ data: { diff --git a/src/app_modules/vote/fun/get/get_all_list_riwayat_saya.ts b/src/app_modules/vote/fun/get/get_all_list_riwayat_saya.ts index dc46be67..ac7704f9 100644 --- a/src/app_modules/vote/fun/get/get_all_list_riwayat_saya.ts +++ b/src/app_modules/vote/fun/get/get_all_list_riwayat_saya.ts @@ -2,17 +2,22 @@ import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import prisma from "@/app/lib/prisma"; +import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; +import { redirect } from "next/navigation"; export async function Vote_getAllListRiwayatSaya({ page }: { page: number }) { const authorId = await user_funGetOneUserId(); - const takeData = 5; - const skipData = page * takeData - takeData; - + if (!authorId) { + redirect(RouterAuth.login); + // return { status: 400, message: "Gagal mendapatkan authorId" }; + } + const takeData = 5; + const skipData = page * takeData - takeData; const data = await prisma.voting.findMany({ take: takeData, skip: skipData, - + orderBy: { createdAt: "asc", }, diff --git a/src/app_modules/vote/fun/get/status/get_all_draft.tsx b/src/app_modules/vote/fun/get/status/get_all_draft.tsx index 0d170e4a..b0a9d9b8 100644 --- a/src/app_modules/vote/fun/get/status/get_all_draft.tsx +++ b/src/app_modules/vote/fun/get/status/get_all_draft.tsx @@ -1,11 +1,16 @@ "use server"; import prisma from "@/app/lib/prisma"; +import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { redirect } from "next/navigation"; export async function vote_getAllDraft({ page }: { page: number }) { const authorId = await user_funGetOneUserId(); - + if (!authorId) { + redirect(RouterAuth.login); + // return { status: 400, message: "Gagal mendapatkan authorId" }; + } const takeData = 10; const skipData = page * takeData - takeData; diff --git a/src/app_modules/vote/fun/get/status/get_all_publish.tsx b/src/app_modules/vote/fun/get/status/get_all_publish.tsx index a9e953ea..91de0df8 100644 --- a/src/app_modules/vote/fun/get/status/get_all_publish.tsx +++ b/src/app_modules/vote/fun/get/status/get_all_publish.tsx @@ -1,10 +1,16 @@ "use server"; import prisma from "@/app/lib/prisma"; +import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { redirect } from "next/navigation"; export async function vote_getAllPublish({ page }: { page: number }) { const authorId = await user_funGetOneUserId(); + if (!authorId) { + redirect(RouterAuth.login); + // return { status: 400, message: "Gagal mendapatkan authorId" }; + } const takeData = 5; const skipData = page * takeData - takeData; @@ -32,6 +38,5 @@ export async function vote_getAllPublish({ page }: { page: number }) { }, }); - return data; } diff --git a/src/app_modules/vote/fun/get/status/get_all_reject.tsx b/src/app_modules/vote/fun/get/status/get_all_reject.tsx index 940b335c..b332cb2d 100644 --- a/src/app_modules/vote/fun/get/status/get_all_reject.tsx +++ b/src/app_modules/vote/fun/get/status/get_all_reject.tsx @@ -1,10 +1,16 @@ "use server"; import prisma from "@/app/lib/prisma"; +import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { redirect } from "next/navigation"; export async function vote_getAllReject({ page }: { page: number }) { const authorId = await user_funGetOneUserId(); + if (!authorId) { + redirect(RouterAuth.login); + // return { status: 400, message: "Gagal mendapatkan authorId" }; + } const takeData = 10; const skipData = page * takeData - takeData; diff --git a/src/app_modules/vote/fun/get/status/get_all_review.tsx b/src/app_modules/vote/fun/get/status/get_all_review.tsx index 0a2b074e..59e89ad9 100644 --- a/src/app_modules/vote/fun/get/status/get_all_review.tsx +++ b/src/app_modules/vote/fun/get/status/get_all_review.tsx @@ -1,10 +1,16 @@ "use server"; import prisma from "@/app/lib/prisma"; +import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { redirect } from "next/navigation"; export async function vote_getAllReview({ page }: { page: number }) { const authorId = await user_funGetOneUserId(); + if (!authorId) { + redirect(RouterAuth.login); + // return { status: 400, message: "Gagal mendapatkan authorId" }; + } const takeData = 10; const skipData = page * takeData - takeData; diff --git a/src/bin/HipmiProvider.tsx b/src/bin/HipmiProvider.tsx new file mode 100644 index 00000000..f46e83d1 --- /dev/null +++ b/src/bin/HipmiProvider.tsx @@ -0,0 +1,11 @@ +"use client"; + +import { GlobalEnv } from "@/app/lib/token"; + +export function HipmiProvider( + { children }: { children: React.ReactNode }, + onEnv: (val: string) => void +) { + onEnv(GlobalEnv.value?.WIBU_PWD as string); + return children; +} diff --git a/src/bin/hipmi_env.ts b/src/bin/hipmi_env.ts new file mode 100644 index 00000000..e5828c02 --- /dev/null +++ b/src/bin/hipmi_env.ts @@ -0,0 +1,31 @@ +import dotenv from "dotenv"; +import path from "path"; +dotenv.config({ + path: path.join(process.cwd(), ".env"), +}); + +const DATABASE_URL = process.env.DATABASE_URL!; +const WIBU_PWD = process.env.WIBU_PWD!; +const Client_KEY = process.env.Client_KEY!; +const Server_KEY = process.env.Server_KEY!; +const MAPBOX_TOKEN = process.env.MAPBOX_TOKEN!; +const WS_APIKEY = process.env.WS_APIKEY!; + +if (!DATABASE_URL) throw new Error("Require DATABASE_URL"); +if (!WIBU_PWD) throw new Error("Require PWD"); +if (!Client_KEY) throw new Error("Require Client_KEY"); +if (!Server_KEY) throw new Error("Require Server_KEY"); +if (!MAPBOX_TOKEN) throw new Error("Require MAPBOX_TOKEN"); +if (!WS_APIKEY) throw new Error("Require WS_APIKEY"); + +export function hipmiEnv() { + const envObject = { + DATABASE_URL, + WIBU_PWD, + Client_KEY, + Server_KEY, + MAPBOX_TOKEN, + WS_APIKEY, + }; + return envObject; +} diff --git a/src/middleware.ts b/src/middleware.ts new file mode 100644 index 00000000..7c58084c --- /dev/null +++ b/src/middleware.ts @@ -0,0 +1,152 @@ +// Import type NextRequest buat nanganin request, dan NextResponse buat balikin response. +// Juga import jwtVerify dan SignJWT dari "jose" buat verifikasi dan bikin JWT. +import type { NextRequest } from "next/server"; +import { NextResponse } from "next/server"; +import { jwtVerify, SignJWT } from "jose"; + +// Kunci rahasia buat konfigurasi +const secretKey = process.env.SESSION_SECRET || ""; // Kalo SESSION_SECRET nggak ada, pake string kosong biar gak error +const encodedKey = new TextEncoder().encode(secretKey); // Kunci ini bakal diencode buat dipake di JWT + +// Konfigurasi middleware +const middlewareConfig = { + publicRoute: [ + // Daftar route yang bisa diakses tanpa login + "/", + "/auth/login", + "/auth/register", + "/api/signin", + "/api/register" + ], + publicPatterns: [/^\/api\/files\/\w+/], // Regex buat nge-match route API yang bisa diakses bebas + signinPath: "/auth/login", // Brute buat halaman login + userPath: "/user", // Route buat halaman user setelah login + apiRoute: "/api", + tokenKey: "ws_token", + exp: "7 year" +}; + +// Fungsi buat decode token JWT +async function decrypt(token: string): Promise | null> { + try { + // Cek token JWT pake algoritma HS256 dan kunci terenkripsi + const { payload } = await jwtVerify(token, encodedKey, { + algorithms: ["HS256"] + }); + // Balikin data 'user' dari payload atau null kalo nggak ada + return (payload.user as Record) || null; + } catch (error) { + console.error("Gagal verifikasi session", error); // Kalo error, log error-nya + return null; // Balikin null kalo verifikasi gagal + } +} + +// Fungsi buat bikin (encode) token JWT +export async function encrypt( + user: Record, // Data user yang mau dimasukkan ke token + exp = middlewareConfig.exp // Waktu expired token, default 7 tahun +): Promise { + return new SignJWT({ user }) // Bikin token baru dengan data user + .setProtectedHeader({ alg: "HS256" }) // Set header buat algoritma HS256 + .setIssuedAt() // Waktu token dibuat + .setExpirationTime(exp) // Waktu expired token + .sign(encodedKey); // Sign token pake kunci terenkripsi +} + +// Fungsi buat verifikasi token dan balikin data user +async function verifyToken( + token: string | undefined +): Promise | null> { + if (!token) return null; // Kalo nggak ada token, balikin null + return await decrypt(token); // Kalo ada, decrypt token dan ambil datanya +} + +// Fungsi buat set header CORS +function setCorsHeaders(res: NextResponse): void { + res.headers.set("Access-Control-Allow-Origin", "*"); // Semua origin diizinkan buat akses + res.headers.set( + "Access-Control-Allow-Methods", + "GET, POST, PUT, DELETE, OPTIONS" + ); // Metode HTTP yang diizinkan + res.headers.set( + "Access-Control-Allow-Headers", + "Content-Type, Authorization" + ); // Header yang diizinkan +} + +// Fungsi buat nanganin setup CORS dan preflight request (OPTIONS) +function handleCors(req: NextRequest, res: NextResponse): NextResponse { + setCorsHeaders(res); // Set header CORS + + // Kalo request-nya OPTIONS (preflight) + if (req.method === "OPTIONS") { + // Balikin response tanpa konten dengan status 204 + return new NextResponse(null, { + status: 204, + headers: { + "Access-Control-Allow-Origin": "*", // Semua origin diizinkan + "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS", // Metode HTTP yang diizinkan + "Access-Control-Allow-Headers": "Content-Type, Authorization", // Header yang diizinkan + "Access-Control-Max-Age": "86400" // Cache preflight response selama 1 hari + } + }); + } + + return res; // Kalo bukan OPTIONS, balikin response biasa +} + +// Fungsi utama middleware +export async function middleware(req: NextRequest) { + const { pathname } = req.nextUrl; // Ambil path dari URL request + + // Ngecek apakah route termasuk route publik + if ( + middlewareConfig.publicRoute.includes(pathname) || // Kalo route-nya ada di daftar route publik + middlewareConfig.publicPatterns.some((pattern) => pattern.test(pathname)) // Atau cocok sama pola publik + ) { + return handleCors(req, NextResponse.next()); // Lanjutkan ke route berikutnya tanpa cek token + } + + // Ngecek token di cookies atau header Authorization + const token = + req.cookies.get(middlewareConfig.tokenKey)?.value || // Coba dapetin token dari cookie + req.headers.get("Authorization")?.split(" ")[1]; // Kalo nggak ada, cek di header Authorization + const user = await verifyToken(token); // Verifikasi token + + if (!user) { + // Kalo user nggak valid (token nggak ada atau nggak sah) + if (pathname.startsWith(middlewareConfig.apiRoute)) { + // Kalo rutenya API + return handleCors(req, unauthorizedResponse()); // Balikin response "Unauthorized" + } + return handleCors( + req, + NextResponse.redirect(new URL(middlewareConfig.signinPath, req.url)) // Alihkan ke halaman login + ); + } + + // Kalo user udah login dan coba akses halaman login lagi, alihkan ke halaman user + if (pathname === middlewareConfig.signinPath) { + return handleCors( + req, + NextResponse.redirect(new URL(middlewareConfig.userPath, req.url)) // Alihkan ke halaman user + ); + } + + // User terautentikasi, lanjut ke route berikutnya + return handleCors(req, NextResponse.next()); +} + +// Fungsi buat balikin response unauthorized (gak ada hak akses) untuk request API +function unauthorizedResponse(): NextResponse { + return new NextResponse(JSON.stringify({ error: "Unauthorized" }), { + // Balikin JSON berisi error + status: 401, // Status Unauthorized + headers: { "Content-Type": "application/json" } // Set header type konten ke JSON + }); +} + +// Konfigurasi buat middleware Next.js +export const config = { + matcher: ["/((?!_next|static|favicon.ico).*)"] // Cocokin semua route kecuali yang dimulai dengan _next, static, atau favicon.ico +}; diff --git a/yarn.lock b/yarn.lock index 6222d99c..695e2fe2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4281,6 +4281,11 @@ jiti@^1.18.2: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== +jose@^5.9.2: + version "5.9.2" + resolved "https://registry.yarnpkg.com/jose/-/jose-5.9.2.tgz#22a22da06edb8fb9e583aa24bafc1e8457b4db92" + integrity sha512-ILI2xx/I57b20sd7rHZvgiiQrmp2mcotwsAH+5ajbpFQbrYVQdNHYlQhoA5cFb78CgtBOxtC05TeA+mcgkuCqQ== + jotai@^2.4.3: version "2.9.3" resolved "https://registry.yarnpkg.com/jotai/-/jotai-2.9.3.tgz#abcae49a737cd50e3144a6c9eb39840db077c727" From 128dc988398e017a150ba346e1161b7fd092e775 Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Wed, 18 Sep 2024 14:56:31 +0800 Subject: [PATCH 2/3] refactor: standarisasi antarmuka fungsi login dan pengambilan OTP Mengubah parameter fungsi auth_funLogin dan auth_getKodeOtpById di backend untuk menggunakan objek, meningkatkan konsistensi dan memudahkan pemahaman tentang data yang diproses. Selain itu, memperbaiki struktur respons fungsi untuk menambahkan dalam output, memperjelas sumber terjadinya error. - Di , fungsi auth_funLogin diubah untuk menerima sebuah objek daripada hanya . - Di , perubahan variabel ke untuk menyelaraskan dengan parameter terbaru dari fungsi yang diinvokasi. --- src/app/dev/auth/validasi/[id]/page.tsx | 4 ++-- src/app_modules/auth/fun/fun_login.ts | 11 ++++++----- src/app_modules/auth/fun/get_kode_otp_by_id.ts | 4 ++-- src/app_modules/auth/login/view.tsx | 10 ++++------ .../check_cookies/layout_cek_cookies.tsx | 16 ++++++++-------- src/{middleware.ts => middleware.bak.txt} | 8 ++++---- 6 files changed, 26 insertions(+), 27 deletions(-) rename src/{middleware.ts => middleware.bak.txt} (96%) diff --git a/src/app/dev/auth/validasi/[id]/page.tsx b/src/app/dev/auth/validasi/[id]/page.tsx index 922daa6a..331bbfe7 100644 --- a/src/app/dev/auth/validasi/[id]/page.tsx +++ b/src/app/dev/auth/validasi/[id]/page.tsx @@ -4,8 +4,8 @@ import { ServerEnv } from "@/app/lib/server_env"; export default async function Page({ params }: { params: { id: string } }) { - let kodeOtpId = params.id; - const dataOtp = await auth_getKodeOtpById(kodeOtpId); + let nomor = params.id; + const dataOtp = await auth_getKodeOtpById({nomor: nomor}); return ; diff --git a/src/app_modules/auth/fun/fun_login.ts b/src/app_modules/auth/fun/fun_login.ts index 7f53c3a2..aea77dd7 100644 --- a/src/app_modules/auth/fun/fun_login.ts +++ b/src/app_modules/auth/fun/fun_login.ts @@ -3,7 +3,7 @@ import prisma from "@/app/lib/prisma"; import { randomOTP } from "./rondom_otp"; -export async function auth_funLogin(nomor: string) { +export async function auth_funLogin({ nomor }: { nomor: string }) { const codeOtp = randomOTP(); // console.log(nomor) @@ -17,7 +17,7 @@ export async function auth_funLogin(nomor: string) { const sendWa = await res.json(); if (sendWa.status !== "success") - return { status: 400, message: "WA Tidak Terdaftar" }; + return { status: 400, message: "WA Tidak Terdaftar", nomorUser: {} }; const createOtpId = await prisma.kodeOtp.create({ data: { @@ -26,15 +26,16 @@ export async function auth_funLogin(nomor: string) { }, }); - if (!createOtpId) return { status: 400, message: "Gagal Membuat Kode OTP" }; + if (!createOtpId) + return { status: 400, message: "Gagal Membuat Kode OTP", nomorUser: {} }; return { status: 200, message: "Kode Verifikasi Dikirim", - kodeOtpId: createOtpId.id, + nomorUser: nomor, }; } catch (error) { console.log(error); - return { status: 500, message: "Server Error !!!" }; + return { status: 500, message: "Server Error !!!", nomorUser: {} }; } } diff --git a/src/app_modules/auth/fun/get_kode_otp_by_id.ts b/src/app_modules/auth/fun/get_kode_otp_by_id.ts index 7780afad..f1ac7365 100644 --- a/src/app_modules/auth/fun/get_kode_otp_by_id.ts +++ b/src/app_modules/auth/fun/get_kode_otp_by_id.ts @@ -2,10 +2,10 @@ import prisma from "@/app/lib/prisma"; -export async function auth_getKodeOtpById(otpId: string) { +export async function auth_getKodeOtpById({nomor}: {nomor: string}) { const data = await prisma.kodeOtp.findFirst({ where: { - id: otpId, + nomor: nomor, }, }); diff --git a/src/app_modules/auth/login/view.tsx b/src/app_modules/auth/login/view.tsx index 7bd14ebd..5166adee 100644 --- a/src/app_modules/auth/login/view.tsx +++ b/src/app_modules/auth/login/view.tsx @@ -34,16 +34,14 @@ export default function Login() { const [isError, setError] = useState(false); async function onLogin() { - const nomorHp = phone.substring(1); + const nomor = phone.substring(1); + if (nomor.length <= 4) return setError(true); - if (nomorHp.length <= 4) return setError(true); - - const res = await auth_funLogin(nomorHp); + const res = await auth_funLogin({ nomor: nomor }); if (res.status === 200) { setLoading(true); ComponentGlobal_NotifikasiBerhasil(res.message, 2000); - setKodeId(res.kodeOtpId); - router.push(RouterAuth.validasi + res.kodeOtpId); + router.push(RouterAuth.validasi + res.nomorUser, { scroll: false }); } else { ComponentGlobal_NotifikasiPeringatan(res.message); } diff --git a/src/app_modules/check_cookies/layout_cek_cookies.tsx b/src/app_modules/check_cookies/layout_cek_cookies.tsx index 75070c50..19e6a371 100644 --- a/src/app_modules/check_cookies/layout_cek_cookies.tsx +++ b/src/app_modules/check_cookies/layout_cek_cookies.tsx @@ -12,16 +12,16 @@ export function CheckCookies_UiLayout({ const router = useRouter(); useShallowEffect(() => { - onCheckCookies(); + // onCheckCookies(); }, []); - async function onCheckCookies() { - const cek = await fetch("/api/check-cookies"); - const result = await cek.json(); - if (result.success === false) { - router.push(RouterAuth.login); - } - } + // async function onCheckCookies() { + // const cek = await fetch("/api/check-cookies"); + // const result = await cek.json(); + // if (result.success === false) { + // router.push(RouterAuth.login); + // } + // } return <>{children}; } diff --git a/src/middleware.ts b/src/middleware.bak.txt similarity index 96% rename from src/middleware.ts rename to src/middleware.bak.txt index 7c58084c..2fcb6752 100644 --- a/src/middleware.ts +++ b/src/middleware.bak.txt @@ -13,17 +13,17 @@ const middlewareConfig = { publicRoute: [ // Daftar route yang bisa diakses tanpa login "/", - "/auth/login", + "/dev/auth/login", "/auth/register", "/api/signin", "/api/register" ], - publicPatterns: [/^\/api\/files\/\w+/], // Regex buat nge-match route API yang bisa diakses bebas - signinPath: "/auth/login", // Brute buat halaman login + publicPatterns: [/^\/api\/files\/\w+/, /^\/aset\/global\/\w+/], // Regex buat nge-match route API yang bisa diakses bebas + signinPath: "/dev/auth/login", // Brute buat halaman login userPath: "/user", // Route buat halaman user setelah login apiRoute: "/api", tokenKey: "ws_token", - exp: "7 year" + exp: "7 year", }; // Fungsi buat decode token JWT From f96d80d55d0a0bc7c835bf0837223e1f0fe6736a Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Thu, 19 Sep 2024 15:59:21 +0800 Subject: [PATCH 3/3] fix Deskripsi: - Upload ke stroage untuk job ## Np Issuee --- prisma/schema.prisma | 1 + src/app/api/auth/validasi/route.ts | 1 + src/app/api/check-cookies/route.ts | 19 +- .../dev/admin/donasi/sub-menu/review/page.tsx | 1 - src/app/dev/admin/layout.tsx | 8 +- src/app/dev/auth/login/page.tsx | 2 +- src/app/dev/auth/register/[id]/page.tsx | 6 +- src/app/dev/auth/splash/page.tsx | 4 +- src/app/dev/auth/validasi/[id]/page.tsx | 12 +- src/app/dev/colab/detail/group/[id]/page.tsx | 11 +- .../colab/detail/main_detail/[id]/layout.tsx | 5 +- .../colab/detail/main_detail/[id]/page.tsx | 6 +- src/app/dev/colab/main/beranda/page.tsx | 6 +- .../create/cerita_penggalang/[id]/page.tsx | 6 +- .../dev/donasi/create/create_donasi/page.tsx | 1 - .../donasi/detail/detail_main/[id]/page.tsx | 16 +- .../detail/detail_publish/[id]/page.tsx | 8 +- src/app/dev/donasi/main/galang_dana/page.tsx | 20 +- src/app/dev/donasi/main/layout.tsx | 6 +- .../metode_pembayaran/[id]/page.tsx | 25 +- src/app/dev/event/create/page.tsx | 8 +- src/app/dev/event/detail/main/[id]/page.tsx | 6 +- .../dev/event/detail/riwayat/[id]/page.tsx | 2 - src/app/dev/event/main/kontribusi/page.tsx | 1 - src/app/dev/event/main/riwayat/page.tsx | 1 - src/app/dev/event/main/status_page/page.tsx | 6 +- .../forum/detail/main-detail/[id]/page.tsx | 11 +- src/app/dev/forum/forumku/[id]/layout.tsx | 1 - src/app/dev/forum/forumku/[id]/page.tsx | 13 +- src/app/dev/forum/komentar/[id]/page.tsx | 5 +- src/app/dev/forum/main/layout.tsx | 11 +- src/app/dev/forum/main/page.tsx | 10 +- .../report/komentar-lainnya/[id]/page.tsx | 7 +- .../dev/forum/report/komentar/[id]/page.tsx | 6 +- .../report/posting-lainnya/[id]/page.tsx | 7 +- .../dev/forum/report/posting/[id]/page.tsx | 7 +- src/app/dev/home/page.tsx | 9 +- src/app/dev/investasi/detail/[id]/page.tsx | 7 +- .../dev/investasi/main/portofolio/page.tsx | 25 +- src/app/dev/investasi/main/transaksi/page.tsx | 6 +- .../investasi/metode_transfer/[id]/page.tsx | 6 +- .../investasi/proses_transaksi/[id]/page.tsx | 6 +- src/app/dev/katalog/[id]/layout.tsx | 2 - src/app/dev/katalog/[id]/page.tsx | 6 +- src/app/dev/layout.tsx | 3 - src/app/dev/portofolio/main/[id]/layout.tsx | 6 +- src/app/dev/portofolio/main/[id]/page.tsx | 5 +- src/app/dev/profile/create/page.tsx | 6 +- src/app/dev/user-not-active/page.tsx | 6 +- .../vote/detail/kontribusi/[id]/layout.tsx | 7 +- src/app/dev/vote/detail/main/[id]/layout.tsx | 6 +- src/app/dev/vote/detail/main/[id]/page.tsx | 9 +- .../dev/vote/detail/publish/[id]/layout.tsx | 7 +- .../vote/detail/semua_riwayat/[id]/layout.tsx | 5 +- .../component/comp_box_upload_image.tsx | 24 + src/app_modules/_global/component/index.ts | 2 + .../admin/_admin_global/logout.tsx | 2 +- .../fun/edit/fun_report_project_by_id.ts | 12 +- .../admin/job/child/review/index.tsx | 5 + .../notifikasi/fun/count/count_is_read.ts | 6 +- .../fun/create/fun_create_notif_user.ts | 6 +- .../fun/get/get_notifikasi_by_user_id.ts | 7 +- src/app_modules/auth/fun/fun_login.ts | 8 +- src/app_modules/auth/fun/fun_logout.ts | 13 +- src/app_modules/auth/fun/fun_register.ts | 23 +- src/app_modules/auth/fun/fun_validasi.ts | 22 +- .../auth/fun/get_kode_otp_by_id.ts | 4 +- src/app_modules/auth/login/view.tsx | 3 +- src/app_modules/auth/logout/view.tsx | 6 +- src/app_modules/auth/validasi/view.tsx | 12 +- .../check_cookies/layout_cek_cookies.tsx | 16 +- .../colab/fun/create/fun_create_proyek.ts | 11 +- .../colab/fun/create/fun_create_room_chat.ts | 14 +- .../room/fun_create_message_by_user_id.ts | 5 +- .../colab/fun/get/cek_notifikasi.ts | 12 +- .../fun/get/cek_partisipasi_by_user_id.ts | 11 +- .../colab/fun/get/get_list_by_status_id.ts | 7 +- .../fun/get/get_list_notifikasi_by_user_id.ts | 16 +- ...et_list_partisipasi_proyek_by_author_id.ts | 6 +- .../get_list_proyek_saya_by_author_id.ts | 6 +- .../room_chat/get_list_room_by_author_id.ts | 13 +- .../fun/get/get_all_invoice_by_author_id.tsx | 7 +- .../fun/get/status/get_all_status_draft.ts | 9 +- .../fun/get/status/get_all_status_publish.ts | 14 +- .../fun/get/status/get_all_status_reject.ts | 7 +- .../fun/get/status/get_all_status_review.ts | 39 +- .../fun/get/get_list_kontribusi_by_user_id.ts | 16 +- .../event/fun/get/get_list_riwayat_saya.ts | 10 +- .../event/fun/get/status/get_all_draft.ts | 7 +- .../event/fun/get/status/get_all_reject.ts | 7 +- .../event/fun/get/status/get_all_review.ts | 7 +- .../fun/get/status/get_all_status_publish.ts | 7 +- .../komentar_button_more.tsx | 40 +- .../more_button/detail_more_button.tsx | 31 +- .../more_button/posting_button_more.tsx | 49 +- .../fun/count/count_posting_by_author_id.ts | 7 +- .../forum/fun/create/fun_create.tsx | 9 +- .../forum/fun/create/fun_create_komentar.tsx | 6 +- .../fun/create/fun_create_report_komentar.ts | 13 +- .../fun_create_report_komentar_lainnya.ts | 7 +- .../fun/create/fun_create_report_posting.ts | 9 +- .../fun_create_report_posting_lainnya.ts | 7 +- .../fun/get/get_list_posting_by_author_id.ts | 2 - src/app_modules/forum/main/beranda.tsx | 4 - src/app_modules/fun_global/get_user_token.ts | 1 + src/app_modules/fun_global/index.ts | 4 +- .../_fun/create/fun_create_invoice.ts | 8 +- .../get/fun_get_all_investasi_by_user_id.ts | 7 +- ...t_all_investasi_non_publish_by_user_id.tsx | 7 +- .../get/fun_get_all_transaksi_by_user_id.ts | 7 +- .../get/fun_get_success_transaction_by_id.ts | 7 +- .../investasi/fun/fun_create_investasi.ts | 16 +- .../button/comp_button_update_beranda.tsx | 49 ++ ...update.tsx => comp_button_update_data.tsx} | 3 +- .../job/component/button/create_button.tsx | 66 --- src/app_modules/job/component/index.ts | 6 +- src/app_modules/job/create/view.tsx | 11 +- src/app_modules/job/edit/view.tsx | 32 +- .../job/fun/create/fun_create_no_file.ts | 4 +- .../job/fun/create/fun_create_with_file.ts | 13 +- .../job/fun/edit/fun_edit_by_id.ts | 17 +- src/app_modules/job/fun/get/get_all_arsip.ts | 9 +- .../job/fun/get/get_all_publish.ts | 1 - .../job/fun/get/status/get_list_draft.ts | 7 +- .../job/fun/get/status/get_list_publish.ts | 7 +- .../job/fun/get/status/get_list_reject.ts | 6 +- .../job/fun/get/status/get_list_review.ts | 6 +- .../job/main/beranda/ui_beranda.tsx | 46 +- src/app_modules/katalog/component/index.ts | 0 .../button/comp_button_selanjutnya.tsx | 83 ++++ .../katalog/portofolio/component/index.ts | 3 + .../katalog/portofolio/create/view.tsx | 181 ++----- .../button/comp_create_new_profile.tsx | 86 ++++ .../katalog/profile/_component/index.ts | 3 + .../katalog/profile/create/view.tsx | 132 ++---- .../map/fun/create/fun_create_pin.ts | 8 +- .../notifikasi/fun/count/fun_count_by_id.ts | 8 +- .../fun/get/get_notifiaksi_by_id.ts | 8 +- .../user_search/fun/get/get_all_user.ts | 12 +- .../vote/fun/create/create_hasil.ts | 6 +- .../vote/fun/create/create_pilihan_voting.ts | 10 +- .../vote/fun/create/create_vote.ts | 16 +- .../vote/fun/get/cek_kontributor_by_id.ts | 18 +- .../vote/fun/get/get_all_list_publish.ts | 1 - .../vote/fun/get/get_all_list_riwayat_saya.ts | 13 +- .../get/get_list_kontribusi_by_author_id.ts | 6 +- .../get/get_one_pilihan_voting_by_user_id.ts | 7 +- .../vote/fun/get/status/get_all_draft.tsx | 13 +- .../vote/fun/get/status/get_all_publish.tsx | 12 +- .../vote/fun/get/status/get_all_reject.tsx | 12 +- .../vote/fun/get/status/get_all_review.tsx | 12 +- src/lib/routes.ts | 448 ++++++++++++++++++ src/middleware.bak.txt | 152 ------ 153 files changed, 1369 insertions(+), 1200 deletions(-) create mode 100644 src/app_modules/_global/component/comp_box_upload_image.tsx create mode 100644 src/app_modules/job/component/button/comp_button_update_beranda.tsx rename src/app_modules/job/component/button/{comp_button_update.tsx => comp_button_update_data.tsx} (97%) delete mode 100644 src/app_modules/job/component/button/create_button.tsx create mode 100644 src/app_modules/katalog/component/index.ts create mode 100644 src/app_modules/katalog/portofolio/component/button/comp_button_selanjutnya.tsx create mode 100644 src/app_modules/katalog/profile/_component/button/comp_create_new_profile.tsx create mode 100644 src/app_modules/katalog/profile/_component/index.ts create mode 100644 src/lib/routes.ts delete mode 100644 src/middleware.bak.txt diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 05d2d670..74ed0d31 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -147,6 +147,7 @@ model Portofolio { logoId String? Portofolio_MediaSosial Portofolio_MediaSosial? BusinessMaps BusinessMaps? + imageId String? } model Portofolio_MediaSosial { diff --git a/src/app/api/auth/validasi/route.ts b/src/app/api/auth/validasi/route.ts index 09a38ff6..27858a53 100644 --- a/src/app/api/auth/validasi/route.ts +++ b/src/app/api/auth/validasi/route.ts @@ -38,6 +38,7 @@ export async function POST(req: Request) { name: "ssn", value: res, maxAge: 60 * 60 * 24 * 7, + }); revalidatePath("/dev/home"); diff --git a/src/app/api/check-cookies/route.ts b/src/app/api/check-cookies/route.ts index 20cfde82..c6e67b93 100644 --- a/src/app/api/check-cookies/route.ts +++ b/src/app/api/check-cookies/route.ts @@ -1,19 +1,14 @@ import _ from "lodash"; import { cookies } from "next/headers"; +import { NextResponse } from "next/server"; export async function GET(req: Request) { - try { - const cekCookies = cookies(); - const c = cekCookies.get("ssn"); + const cekCookies = cookies(); + const c = cekCookies.get("ssn"); - if (!c || !c?.value || _.isEmpty(c?.value) || _.isUndefined(c?.value)) { - return Response.json({ success: false }); - } - - return Response.json({ success: true }); - } catch (error) { - console.log(error); + if (!c || !c?.value || _.isEmpty(c?.value) || _.isUndefined(c?.value)) { + return NextResponse.json({ success: false }); + // return new Response(JSON.stringify({ success: false })); } - - return Response.json({ success: false }); + return NextResponse.json({ success: true }); } diff --git a/src/app/dev/admin/donasi/sub-menu/review/page.tsx b/src/app/dev/admin/donasi/sub-menu/review/page.tsx index 0031b08a..6e25d7fe 100644 --- a/src/app/dev/admin/donasi/sub-menu/review/page.tsx +++ b/src/app/dev/admin/donasi/sub-menu/review/page.tsx @@ -1,6 +1,5 @@ import { AdminDonasi_TableReview } from "@/app_modules/admin/donasi"; import adminDonasi_getListReview from "@/app_modules/admin/donasi/fun/get/get_list_review"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page() { const listReview = await adminDonasi_getListReview({page: 1}); diff --git a/src/app/dev/admin/layout.tsx b/src/app/dev/admin/layout.tsx index 900242fc..e46fd26f 100644 --- a/src/app/dev/admin/layout.tsx +++ b/src/app/dev/admin/layout.tsx @@ -1,8 +1,7 @@ +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { AdminLayout } from "@/app_modules/admin/main_dashboard"; import adminNotifikasi_countNotifikasi from "@/app_modules/admin/notifikasi/fun/count/count_is_read"; import adminNotifikasi_getByUserId from "@/app_modules/admin/notifikasi/fun/get/get_notifikasi_by_user_id"; -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import { user_getOneByUserId } from "@/app_modules/home/fun/get/get_one_user_by_id"; import React from "react"; @@ -11,10 +10,9 @@ export default async function Layout({ }: { children: React.ReactNode; }) { - const userId = await user_funGetOneUserId(); - if (!userId) return ; + const userLoginId = await funGetUserIdByToken(); - const dataUser = await user_getOneByUserId(userId); + const dataUser = await user_getOneByUserId(userLoginId); const listNotif = await adminNotifikasi_getByUserId(); const countNotifikasi = await adminNotifikasi_countNotifikasi(); diff --git a/src/app/dev/auth/login/page.tsx b/src/app/dev/auth/login/page.tsx index 60cc8469..30fe153d 100644 --- a/src/app/dev/auth/login/page.tsx +++ b/src/app/dev/auth/login/page.tsx @@ -1,6 +1,6 @@ import { Login } from "@/app_modules/auth"; -export default function Page() { +export default async function Page() { return ( <> diff --git a/src/app/dev/auth/register/[id]/page.tsx b/src/app/dev/auth/register/[id]/page.tsx index b17e670f..ff588e30 100644 --- a/src/app/dev/auth/register/[id]/page.tsx +++ b/src/app/dev/auth/register/[id]/page.tsx @@ -1,8 +1,8 @@ import { Register } from "@/app_modules/auth"; -import { auth_getKodeOtpById } from "@/app_modules/auth/fun/get_kode_otp_by_id"; +import { auth_getCodeOtpByNumber } from "@/app_modules/auth/fun/get_kode_otp_by_id"; export default async function Page({ params }: { params: { id: string } }) { - let otpId = params.id - const dataOtp = await auth_getKodeOtpById(otpId) + let otpId = params.id; + const dataOtp = await auth_getCodeOtpByNumber({ kodeId: otpId }); return ; } diff --git a/src/app/dev/auth/splash/page.tsx b/src/app/dev/auth/splash/page.tsx index 0107e340..69fd531d 100644 --- a/src/app/dev/auth/splash/page.tsx +++ b/src/app/dev/auth/splash/page.tsx @@ -1,8 +1,8 @@ +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { SplashScreen } from "@/app_modules/auth"; -import { user_funGetOneUserId } from "@/app_modules/fun_global"; export default async function PageSplash() { - const userLoginId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); return ( <> diff --git a/src/app/dev/auth/validasi/[id]/page.tsx b/src/app/dev/auth/validasi/[id]/page.tsx index 331bbfe7..a09b59c2 100644 --- a/src/app/dev/auth/validasi/[id]/page.tsx +++ b/src/app/dev/auth/validasi/[id]/page.tsx @@ -1,12 +1,12 @@ import { Validasi } from "@/app_modules/auth"; -import { auth_getKodeOtpById } from "@/app_modules/auth/fun/get_kode_otp_by_id"; -import { ServerEnv } from "@/app/lib/server_env"; - +import { auth_getCodeOtpByNumber } from "@/app_modules/auth/fun/get_kode_otp_by_id"; +import { redirect } from "next/navigation"; +import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; export default async function Page({ params }: { params: { id: string } }) { - let nomor = params.id; - const dataOtp = await auth_getKodeOtpById({nomor: nomor}); - + let kodeId = params.id; + const dataOtp = await auth_getCodeOtpByNumber({ kodeId: kodeId }); + if (dataOtp === null) return redirect(RouterAuth.login); return ; } diff --git a/src/app/dev/colab/detail/group/[id]/page.tsx b/src/app/dev/colab/detail/group/[id]/page.tsx index d0e2cd2e..42f17eef 100644 --- a/src/app/dev/colab/detail/group/[id]/page.tsx +++ b/src/app/dev/colab/detail/group/[id]/page.tsx @@ -1,18 +1,13 @@ +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import adminColab_getOneRoomChatById from "@/app_modules/admin/colab/fun/get/get_one_room_chat_by_id"; -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; -import { - Colab_DetailGrupDiskusi, - Colab_GroupChatView, -} from "@/app_modules/colab"; +import { Colab_GroupChatView } from "@/app_modules/colab"; import colab_getMessageByRoomId from "@/app_modules/colab/fun/get/room_chat/get_message_by_room_id"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import { user_getOneByUserId } from "@/app_modules/home/fun/get/get_one_user_by_id"; import _ from "lodash"; export default async function Page({ params }: { params: { id: string } }) { const roomId = params.id; - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; + const userLoginId = await funGetUserIdByToken(); const getData = (await adminColab_getOneRoomChatById({ roomId: roomId })) .data; diff --git a/src/app/dev/colab/detail/main_detail/[id]/layout.tsx b/src/app/dev/colab/detail/main_detail/[id]/layout.tsx index fd2f6a6b..d07a0230 100644 --- a/src/app/dev/colab/detail/main_detail/[id]/layout.tsx +++ b/src/app/dev/colab/detail/main_detail/[id]/layout.tsx @@ -1,6 +1,6 @@ +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { LayoutColab_MainDetail } from "@/app_modules/colab"; import colab_getOneCollaborationById from "@/app_modules/colab/fun/get/get_one_by_id"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import React from "react"; export default async function Layout({ @@ -11,9 +11,10 @@ export default async function Layout({ params: { id: string }; }) { const colabId = params.id; + const userLoginId = await funGetUserIdByToken(); + const dataColab = await colab_getOneCollaborationById(colabId); const authorId = dataColab?.Author?.id; - const userLoginId = await user_funGetOneUserId(); return ( <> diff --git a/src/app/dev/colab/detail/main_detail/[id]/page.tsx b/src/app/dev/colab/detail/main_detail/[id]/page.tsx index ad0711c8..7571cb15 100644 --- a/src/app/dev/colab/detail/main_detail/[id]/page.tsx +++ b/src/app/dev/colab/detail/main_detail/[id]/page.tsx @@ -1,14 +1,12 @@ -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { Colab_MainDetail } from "@/app_modules/colab"; import colab_funCekPartisipasiById from "@/app_modules/colab/fun/get/cek_partisipasi_by_user_id"; import colab_getListPartisipanByColabId from "@/app_modules/colab/fun/get/get_list_partisipan_by_id"; import colab_getOneCollaborationById from "@/app_modules/colab/fun/get/get_one_by_id"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({ params }: { params: { id: string } }) { let colabId = params.id; - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; + const userLoginId = await funGetUserIdByToken(); const dataColab = await colab_getOneCollaborationById(colabId); const listPartisipan = await colab_getListPartisipanByColabId(colabId); diff --git a/src/app/dev/colab/main/beranda/page.tsx b/src/app/dev/colab/main/beranda/page.tsx index 0f2b7737..723874e5 100644 --- a/src/app/dev/colab/main/beranda/page.tsx +++ b/src/app/dev/colab/main/beranda/page.tsx @@ -1,12 +1,10 @@ -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { Colab_Beranda } from "@/app_modules/colab"; import colab_getListAllProyek from "@/app_modules/colab/fun/get/get_list_all_proyek"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page() { const listData = await colab_getListAllProyek({ page: 1 }); - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; + const userLoginId = await funGetUserIdByToken(); return ( <> diff --git a/src/app/dev/donasi/create/cerita_penggalang/[id]/page.tsx b/src/app/dev/donasi/create/cerita_penggalang/[id]/page.tsx index 35459e1d..160d135d 100644 --- a/src/app/dev/donasi/create/cerita_penggalang/[id]/page.tsx +++ b/src/app/dev/donasi/create/cerita_penggalang/[id]/page.tsx @@ -1,12 +1,10 @@ -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { CreateCeritaPenggalangDonasi } from "@/app_modules/donasi"; import { Donasi_getTemporaryCreate } from "@/app_modules/donasi/fun/get/get_temporary_create"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({ params }: { params: { id: string } }) { const getTemporaryCreate = await Donasi_getTemporaryCreate(params.id); - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; + const userLoginId = await funGetUserIdByToken(); return ( <> diff --git a/src/app/dev/donasi/create/create_donasi/page.tsx b/src/app/dev/donasi/create/create_donasi/page.tsx index d1d187a9..2202dfdf 100644 --- a/src/app/dev/donasi/create/create_donasi/page.tsx +++ b/src/app/dev/donasi/create/create_donasi/page.tsx @@ -3,7 +3,6 @@ import { Donasi_getMasterDurasi, Donasi_getMasterKategori, } from "@/app_modules/donasi/fun"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page() { const masterKategori = await Donasi_getMasterKategori(); diff --git a/src/app/dev/donasi/detail/detail_main/[id]/page.tsx b/src/app/dev/donasi/detail/detail_main/[id]/page.tsx index 3f0abcd1..ef3f8022 100644 --- a/src/app/dev/donasi/detail/detail_main/[id]/page.tsx +++ b/src/app/dev/donasi/detail/detail_main/[id]/page.tsx @@ -1,20 +1,22 @@ -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { DetailMainDonasi } from "@/app_modules/donasi"; import { Donasi_getCountDonatur } from "@/app_modules/donasi/fun/count/get_count_donatur"; import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({ params }: { params: { id: string } }) { let donasiId = params.id; - const dataDonasi = await Donasi_getOneById(donasiId); - const countDonatur = await Donasi_getCountDonatur(donasiId) - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; + const userLoginId = await funGetUserIdByToken(); + const dataDonasi = await Donasi_getOneById(donasiId); + const countDonatur = await Donasi_getCountDonatur(donasiId); return ( <> - + ); } diff --git a/src/app/dev/donasi/detail/detail_publish/[id]/page.tsx b/src/app/dev/donasi/detail/detail_publish/[id]/page.tsx index 117b8518..b39b7180 100644 --- a/src/app/dev/donasi/detail/detail_publish/[id]/page.tsx +++ b/src/app/dev/donasi/detail/detail_publish/[id]/page.tsx @@ -1,16 +1,12 @@ -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { DetailPublishDonasi } from "@/app_modules/donasi"; import { Donasi_getCountDonatur } from "@/app_modules/donasi/fun/count/get_count_donatur"; import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({ params }: { params: { id: string } }) { const dataPublish = await Donasi_getOneById(params.id); const countDonatur = await Donasi_getCountDonatur(params.id); - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; - - // console.log(userLoginId) + const userLoginId = await funGetUserIdByToken(); return ( <> diff --git a/src/app/dev/donasi/main/galang_dana/page.tsx b/src/app/dev/donasi/main/galang_dana/page.tsx index cda297bf..fca4f380 100644 --- a/src/app/dev/donasi/main/galang_dana/page.tsx +++ b/src/app/dev/donasi/main/galang_dana/page.tsx @@ -1,23 +1,23 @@ import { PostingDonasi } from "@/app_modules/donasi"; -import Donasi_getByStatus from "@/app_modules/donasi/fun/get/get_donasi_by_status"; import { donasi_funGetAllStatusDraft } from "@/app_modules/donasi/fun/get/status/get_all_status_draft"; import { donasi_funGetAllStatusPublish } from "@/app_modules/donasi/fun/get/status/get_all_status_publish"; import { donasi_funGetAllStatusReject } from "@/app_modules/donasi/fun/get/status/get_all_status_reject"; import { donasi_funGetAllStatusReview } from "@/app_modules/donasi/fun/get/status/get_all_status_review"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page() { - const authorId = await user_funGetOneUserId(); - const listPublish = await donasi_funGetAllStatusPublish({page: 1}); - const listReview = await donasi_funGetAllStatusReview({page: 1}); - const listDraft = await donasi_funGetAllStatusDraft({page: 1}); - const listReject = await donasi_funGetAllStatusReject({page: 1}); - - + const listPublish = await donasi_funGetAllStatusPublish({ page: 1 }); + const listReview = await donasi_funGetAllStatusReview({ page: 1 }); + const listDraft = await donasi_funGetAllStatusDraft({ page: 1 }); + const listReject = await donasi_funGetAllStatusReject({ page: 1 }); return ( <> - + ); } diff --git a/src/app/dev/donasi/main/layout.tsx b/src/app/dev/donasi/main/layout.tsx index 1cfc23e7..2a1803f9 100644 --- a/src/app/dev/donasi/main/layout.tsx +++ b/src/app/dev/donasi/main/layout.tsx @@ -1,7 +1,6 @@ -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { LayoutDonasi } from "@/app_modules/donasi"; import { Donasi_getNotifByUserId } from "@/app_modules/donasi/fun/get/get_notif_by_user_id"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import React from "react"; export default async function Layout({ @@ -9,8 +8,7 @@ export default async function Layout({ }: { children: React.ReactNode; }) { - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; + const userLoginId = await funGetUserIdByToken(); const isRead = await Donasi_getNotifByUserId(userLoginId).then((res: any) => res.map((val: any) => val.isRead) diff --git a/src/app/dev/donasi/proses_donasi/metode_pembayaran/[id]/page.tsx b/src/app/dev/donasi/proses_donasi/metode_pembayaran/[id]/page.tsx index c4a87583..3a32402a 100644 --- a/src/app/dev/donasi/proses_donasi/metode_pembayaran/[id]/page.tsx +++ b/src/app/dev/donasi/proses_donasi/metode_pembayaran/[id]/page.tsx @@ -1,16 +1,19 @@ -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { Donasi_MetodePembayaran } from "@/app_modules/donasi"; import { Donasi_getMasterBank } from "@/app_modules/donasi/fun/master/get_bank"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; -export default async function Page({params}: {params: {id: string}}) { - let donasiId= params.id - const listBank = await Donasi_getMasterBank() - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; +export default async function Page({ params }: { params: { id: string } }) { + let donasiId = params.id; + const listBank = await Donasi_getMasterBank(); + const userLoginId = await funGetUserIdByToken(); - - return<> - + return ( + <> + -} \ No newline at end of file + ); +} diff --git a/src/app/dev/event/create/page.tsx b/src/app/dev/event/create/page.tsx index 2f9a2e0c..8997cc6b 100644 --- a/src/app/dev/event/create/page.tsx +++ b/src/app/dev/event/create/page.tsx @@ -1,13 +1,9 @@ -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { Event_Create } from "@/app_modules/event"; import { Event_getMasterTipeAcara } from "@/app_modules/event/fun/master/get_tipe_acara"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; -import _ from "lodash"; export default async function Page() { - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; - + const userLoginId = await funGetUserIdByToken(); const listTipeAcara = await Event_getMasterTipeAcara(); return ( diff --git a/src/app/dev/event/detail/main/[id]/page.tsx b/src/app/dev/event/detail/main/[id]/page.tsx index d0c3880d..923ebbd3 100644 --- a/src/app/dev/event/detail/main/[id]/page.tsx +++ b/src/app/dev/event/detail/main/[id]/page.tsx @@ -1,15 +1,13 @@ -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { Event_DetailMain } from "@/app_modules/event"; import { Event_countTotalPesertaById } from "@/app_modules/event/fun/count/count_total_peserta_by_id"; import { Event_CekUserJoinById } from "@/app_modules/event/fun/get/cek_user_join_by_id"; import { Event_getListPesertaById } from "@/app_modules/event/fun/get/get_list_peserta_by_id"; import { Event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({ params }: { params: { id: string } }) { let eventId = params.id; - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; + const userLoginId = await funGetUserIdByToken(); const dataEvent = await Event_getOneById(eventId); const listPeserta = await Event_getListPesertaById(eventId); diff --git a/src/app/dev/event/detail/riwayat/[id]/page.tsx b/src/app/dev/event/detail/riwayat/[id]/page.tsx index 859ac000..af560086 100644 --- a/src/app/dev/event/detail/riwayat/[id]/page.tsx +++ b/src/app/dev/event/detail/riwayat/[id]/page.tsx @@ -1,10 +1,8 @@ import { Event_DetailRiwayat } from "@/app_modules/event"; import { Event_countTotalPesertaById } from "@/app_modules/event/fun/count/count_total_peserta_by_id"; -import { Event_CekUserJoinById } from "@/app_modules/event/fun/get/cek_user_join_by_id"; import { Event_getListPesertaById } from "@/app_modules/event/fun/get/get_list_peserta_by_id"; import { Event_getOneById } from "@/app_modules/event/fun/get/get_one_by_id"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({ params }: { params: { id: string } }) { let eventId = params.id; diff --git a/src/app/dev/event/main/kontribusi/page.tsx b/src/app/dev/event/main/kontribusi/page.tsx index c62ad6cd..0a883c1b 100644 --- a/src/app/dev/event/main/kontribusi/page.tsx +++ b/src/app/dev/event/main/kontribusi/page.tsx @@ -1,6 +1,5 @@ import { Event_Kontribusi } from "@/app_modules/event"; import { event_getListKontibusiByUserId } from "@/app_modules/event/fun/get/get_list_kontribusi_by_user_id"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page() { const listKontribusi = await event_getListKontibusiByUserId({page: 1}) diff --git a/src/app/dev/event/main/riwayat/page.tsx b/src/app/dev/event/main/riwayat/page.tsx index 0b44a8db..44f99fd3 100644 --- a/src/app/dev/event/main/riwayat/page.tsx +++ b/src/app/dev/event/main/riwayat/page.tsx @@ -1,7 +1,6 @@ import { Event_Riwayat } from "@/app_modules/event"; import { event_getListRiwayatSaya } from "@/app_modules/event/fun/get/get_list_riwayat_saya"; import { event_getListSemuaRiwayat } from "@/app_modules/event/fun/get/riwayat/get_list_semua_riwayat"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({ params }: { params: { id: string } }) { let eventId = params.id; diff --git a/src/app/dev/event/main/status_page/page.tsx b/src/app/dev/event/main/status_page/page.tsx index 80f5f2a8..4c02d9a1 100644 --- a/src/app/dev/event/main/status_page/page.tsx +++ b/src/app/dev/event/main/status_page/page.tsx @@ -1,14 +1,12 @@ -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { Event_StatusPage } from "@/app_modules/event"; import { event_getAllDraft } from "@/app_modules/event/fun/get/status/get_all_draft"; import { event_getAllReject } from "@/app_modules/event/fun/get/status/get_all_reject"; import { event_getAllReview } from "@/app_modules/event/fun/get/status/get_all_review"; import { event_funGetAllStatusPublish } from "@/app_modules/event/fun/get/status/get_all_status_publish"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page() { - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; + const userLoginId = await funGetUserIdByToken(); const listPublish = await event_funGetAllStatusPublish({ page: 1 }); const listReview = await event_getAllReview({ page: 1 }); diff --git a/src/app/dev/forum/detail/main-detail/[id]/page.tsx b/src/app/dev/forum/detail/main-detail/[id]/page.tsx index eb6d780a..1782aa35 100644 --- a/src/app/dev/forum/detail/main-detail/[id]/page.tsx +++ b/src/app/dev/forum/detail/main-detail/[id]/page.tsx @@ -1,17 +1,14 @@ +import { RouterForum } from "@/app/lib/router_hipmi/router_forum"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import Forum_MainDetail from "@/app_modules/forum/detail/main_detail"; +import { forum_countTotalKomenById } from "@/app_modules/forum/fun/count/count_total_komentar_by_id"; import { forum_funGetAllKomentarById } from "@/app_modules/forum/fun/get/get_all_komentar_by_id"; import { forum_getOnePostingById } from "@/app_modules/forum/fun/get/get_one_posting_by_id"; -import { forum_countOneTotalKomentarById } from "@/app_modules/forum/fun/count/count_one_total_komentar_by_id"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; -import { RouterForum } from "@/app/lib/router_hipmi/router_forum"; import { redirect } from "next/navigation"; -import { forum_countTotalKomenById } from "@/app_modules/forum/fun/count/count_total_komentar_by_id"; -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; export default async function Page({ params }: { params: { id: string } }) { let postingId = params.id; - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; + const userLoginId = await funGetUserIdByToken(); const dataPosting = await forum_getOnePostingById(postingId); const listKomentar = await forum_funGetAllKomentarById({ diff --git a/src/app/dev/forum/forumku/[id]/layout.tsx b/src/app/dev/forum/forumku/[id]/layout.tsx index 6fcc7d0f..1043a279 100644 --- a/src/app/dev/forum/forumku/[id]/layout.tsx +++ b/src/app/dev/forum/forumku/[id]/layout.tsx @@ -1,5 +1,4 @@ import { LayoutForum_Forumku } from "@/app_modules/forum"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import { user_getOneByUserId } from "@/app_modules/home/fun/get/get_one_user_by_id"; import React from "react"; diff --git a/src/app/dev/forum/forumku/[id]/page.tsx b/src/app/dev/forum/forumku/[id]/page.tsx index 40789dc1..ba3aa54c 100644 --- a/src/app/dev/forum/forumku/[id]/page.tsx +++ b/src/app/dev/forum/forumku/[id]/page.tsx @@ -1,14 +1,14 @@ +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { Forum_Forumku } from "@/app_modules/forum"; +import { forum_countPostingByAuthorId } from "@/app_modules/forum/fun/count/count_posting_by_author_id"; import { forum_getAllPostingByAuhtorId } from "@/app_modules/forum/fun/get/get_list_posting_by_author_id"; -import { forum_countOneTotalKomentarById } from "@/app_modules/forum/fun/count/count_one_total_komentar_by_id"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import { user_getOneByUserId } from "@/app_modules/home/fun/get/get_one_user_by_id"; import _ from "lodash"; -import { forum_countPostingByAuthorId } from "@/app_modules/forum/fun/count/count_posting_by_author_id"; export default async function Page({ params }: { params: { id: string } }) { const authorId = params.id; - const userLoginId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); + const dataAuthor = await user_getOneByUserId(authorId); const auhtorSelectedData = _.omit(dataAuthor, [ "Profile.email", @@ -25,7 +25,10 @@ export default async function Page({ params }: { params: { id: string } }) { // setTimeout(a, 1000); // }); - const dataPosting = await forum_getAllPostingByAuhtorId({authorId: authorId, page: 1}); + const dataPosting = await forum_getAllPostingByAuhtorId({ + authorId: authorId, + page: 1, + }); const totalPosting = await forum_countPostingByAuthorId(authorId); return ( diff --git a/src/app/dev/forum/komentar/[id]/page.tsx b/src/app/dev/forum/komentar/[id]/page.tsx index 03f99668..728b2ba5 100644 --- a/src/app/dev/forum/komentar/[id]/page.tsx +++ b/src/app/dev/forum/komentar/[id]/page.tsx @@ -1,11 +1,12 @@ +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { Forum_Komentar } from "@/app_modules/forum"; import { forum_getOnePostingById } from "@/app_modules/forum/fun/get/get_one_posting_by_id"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({ params }: { params: { id: string } }) { let postingId = params.id; const dataPosting = await forum_getOnePostingById(postingId); - const userLoginId = await user_funGetOneUserId() + const userLoginId = await funGetUserIdByToken(); + return ( <> diff --git a/src/app/dev/forum/main/layout.tsx b/src/app/dev/forum/main/layout.tsx index 56f3baeb..7f10d77f 100644 --- a/src/app/dev/forum/main/layout.tsx +++ b/src/app/dev/forum/main/layout.tsx @@ -1,6 +1,5 @@ -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { LayoutForum_Main } from "@/app_modules/forum"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import { user_getOneByUserId } from "@/app_modules/home/fun/get/get_one_user_by_id"; import React from "react"; @@ -9,14 +8,14 @@ export default async function Layout({ }: { children: React.ReactNode; }) { - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; - + const userLoginId = await funGetUserIdByToken(); const dataAuthor = await user_getOneByUserId(userLoginId); return ( <> - {children} + + {children} + ); } diff --git a/src/app/dev/forum/main/page.tsx b/src/app/dev/forum/main/page.tsx index a26f83f5..f9ce25e5 100644 --- a/src/app/dev/forum/main/page.tsx +++ b/src/app/dev/forum/main/page.tsx @@ -1,16 +1,10 @@ -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { Forum_Beranda } from "@/app_modules/forum"; import { forum_new_getAllPosting } from "@/app_modules/forum/fun/get/new_get_all_posting"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page() { - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; - + const userLoginId = await funGetUserIdByToken(); const listForum = await forum_new_getAllPosting({ page: 1 }); - - - // console.log(JSON.stringify(listForum, null, 2)); return ( <> diff --git a/src/app/dev/forum/report/komentar-lainnya/[id]/page.tsx b/src/app/dev/forum/report/komentar-lainnya/[id]/page.tsx index 5d4bf124..6c9533b6 100644 --- a/src/app/dev/forum/report/komentar-lainnya/[id]/page.tsx +++ b/src/app/dev/forum/report/komentar-lainnya/[id]/page.tsx @@ -1,12 +1,9 @@ -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { Forum_ReportKomentarLainnya } from "@/app_modules/forum"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({ params }: { params: { id: string } }) { let komentarId = params.id; - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; - + const userLoginId = await funGetUserIdByToken(); return ( <> diff --git a/src/app/dev/forum/report/komentar/[id]/page.tsx b/src/app/dev/forum/report/komentar/[id]/page.tsx index 11a226e5..e88c332d 100644 --- a/src/app/dev/forum/report/komentar/[id]/page.tsx +++ b/src/app/dev/forum/report/komentar/[id]/page.tsx @@ -1,11 +1,13 @@ +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { Forum_ReportKomentar } from "@/app_modules/forum"; import { forum_getMasterKategoriReport } from "@/app_modules/forum/fun/master/get_master_kategori_report"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({ params }: { params: { id: string } }) { let komentarId = params.id; + const userLoginId = await funGetUserIdByToken(); + const listReport = await forum_getMasterKategoriReport(); - const userLoginId = await user_funGetOneUserId(); + return ( diff --git a/src/app/dev/forum/report/posting-lainnya/[id]/page.tsx b/src/app/dev/forum/report/posting-lainnya/[id]/page.tsx index 176b6df6..2f3cb327 100644 --- a/src/app/dev/forum/report/posting-lainnya/[id]/page.tsx +++ b/src/app/dev/forum/report/posting-lainnya/[id]/page.tsx @@ -1,12 +1,9 @@ -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { Forum_ReportPostingLainnya } from "@/app_modules/forum"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({ params }: { params: { id: string } }) { let postingId = params.id; - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; - + const userLoginId = await funGetUserIdByToken(); return ( <> diff --git a/src/app/dev/forum/report/posting/[id]/page.tsx b/src/app/dev/forum/report/posting/[id]/page.tsx index cb797bb6..a19ed624 100644 --- a/src/app/dev/forum/report/posting/[id]/page.tsx +++ b/src/app/dev/forum/report/posting/[id]/page.tsx @@ -1,13 +1,12 @@ -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { Forum_ReportPosting } from "@/app_modules/forum"; import { forum_getMasterKategoriReport } from "@/app_modules/forum/fun/master/get_master_kategori_report"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({ params }: { params: { id: string } }) { let postingId = params.id; + const userLoginId = await funGetUserIdByToken(); + const listReport = await forum_getMasterKategoriReport(); - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; return ( <> diff --git a/src/app/dev/home/page.tsx b/src/app/dev/home/page.tsx index 8664f3fc..097eba0c 100644 --- a/src/app/dev/home/page.tsx +++ b/src/app/dev/home/page.tsx @@ -1,7 +1,6 @@ import { RouterAdminDashboard } from "@/app/lib/router_hipmi/router_admin"; import { RouterHome } from "@/app/lib/router_hipmi/router_home"; -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { HomeView } from "@/app_modules/home"; import { user_getOneByUserId } from "@/app_modules/home/fun/get/get_one_user_by_id"; import { job_getTwoForHomeView } from "@/app_modules/job/fun/get/get_two_for_home_view"; @@ -9,8 +8,7 @@ import notifikasi_countUserNotifikasi from "@/app_modules/notifikasi/fun/count/f import { redirect } from "next/navigation"; export default async function Page() { - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; + const userLoginId = await funGetUserIdByToken(); const dataUser = await user_getOneByUserId(userLoginId); const dataJob = await job_getTwoForHomeView(); @@ -24,9 +22,6 @@ export default async function Page() { const countNotifikasi = await notifikasi_countUserNotifikasi(); - // const cekCookies = await fetch("/api/check-cookies"); - // console.log(await cekCookies.json()); - return ( <> ; return ( <> diff --git a/src/app/dev/investasi/main/portofolio/page.tsx b/src/app/dev/investasi/main/portofolio/page.tsx index 5a5eef1d..25df448f 100644 --- a/src/app/dev/investasi/main/portofolio/page.tsx +++ b/src/app/dev/investasi/main/portofolio/page.tsx @@ -1,26 +1,12 @@ -import { PortofolioInvestasi } from "@/app_modules/investasi"; -import { cookies } from "next/headers"; -import fs from "fs"; -import yaml from "yaml"; -import { unsealData } from "iron-session"; -import getInvestasiByStatusId from "@/app_modules/investasi/fun/get_investasi_by_id"; -import getStatusInvestasi from "@/app_modules/investasi/fun/master/get_status_investasi"; -import getPortoByStatusId from "@/app_modules/investasi/fun/get_porto_status_by_id"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; -import { Investasi_UiPortofolio } from "@/app_modules/investasi/_ui"; import { investasi_funGetAllInvestasiNonPublishByUserId, investasi_funGetAllPublishByUserId, } from "@/app_modules/investasi/_fun"; +import { Investasi_UiPortofolio } from "@/app_modules/investasi/_ui"; +import getStatusInvestasi from "@/app_modules/investasi/fun/master/get_status_investasi"; export default async function Page() { - const userId = await user_funGetOneUserId(); - if (!userId) return
{"User Tidak ditemukan"}
; const listStatus = await getStatusInvestasi(); - const dataDraft = await getPortoByStatusId(userId, 1); - const dataReview = await getPortoByStatusId(userId, 2); - const dataPublish = await getPortoByStatusId(userId, 3); - const dataReject = await getPortoByStatusId(userId, 4); const listDataPublish = await investasi_funGetAllPublishByUserId({ page: 1 }); const listDataReview = await investasi_funGetAllInvestasiNonPublishByUserId({ @@ -38,13 +24,6 @@ export default async function Page() { return ( <> - {/* */} ; + const userLoginId = await funGetUserIdByToken(); const statusTransaksi = await getMaster_StatusTransaksiInvestasi(); const listTransaksi = await getListAllTransaksiById_Investasi(userLoginId); diff --git a/src/app/dev/investasi/metode_transfer/[id]/page.tsx b/src/app/dev/investasi/metode_transfer/[id]/page.tsx index e1fa67d5..f97e4b94 100644 --- a/src/app/dev/investasi/metode_transfer/[id]/page.tsx +++ b/src/app/dev/investasi/metode_transfer/[id]/page.tsx @@ -2,12 +2,10 @@ import { MetodeTransferInvestasi } from "@/app_modules/investasi"; import getOneInvestasiById from "@/app_modules/investasi/fun/get_one_investasi_by_id"; import getMaster_NamaBank from "@/app_modules/investasi/fun/master/get_nama_bank"; -import { user_funGetOneUserId } from "@/app_modules/fun_global"; -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export default async function Page({ params }: { params: { id: string } }) { - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; + const userLoginId = await funGetUserIdByToken(); const dataInvestasi = await getOneInvestasiById(params.id); const namaBank = await getMaster_NamaBank(); diff --git a/src/app/dev/investasi/proses_transaksi/[id]/page.tsx b/src/app/dev/investasi/proses_transaksi/[id]/page.tsx index 2ed091d9..1fb2327c 100644 --- a/src/app/dev/investasi/proses_transaksi/[id]/page.tsx +++ b/src/app/dev/investasi/proses_transaksi/[id]/page.tsx @@ -1,12 +1,10 @@ -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; -import { user_funGetOneUserId } from "@/app_modules/fun_global"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { funGetUserProfile } from "@/app_modules/fun_global/get_user_profile"; import { ProsesTransaksiInvestasi } from "@/app_modules/investasi"; import getOneInvestasiById from "@/app_modules/investasi/fun/get_one_investasi_by_id"; export default async function Page({ params }: { params: { id: string } }) { - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; + const userLoginId = await funGetUserIdByToken(); const userLogin = await funGetUserProfile(userLoginId); const dataInvestasi = await getOneInvestasiById(params.id); diff --git a/src/app/dev/katalog/[id]/layout.tsx b/src/app/dev/katalog/[id]/layout.tsx index fe4dc504..1b4ef9c7 100644 --- a/src/app/dev/katalog/[id]/layout.tsx +++ b/src/app/dev/katalog/[id]/layout.tsx @@ -1,6 +1,4 @@ import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import { KatalogLayout } from "@/app_modules/katalog/main"; import { Profile_getOneProfileAndUserById } from "@/app_modules/katalog/profile/fun/get/get_one_user_profile"; diff --git a/src/app/dev/katalog/[id]/page.tsx b/src/app/dev/katalog/[id]/page.tsx index 218d5daa..24cccdab 100644 --- a/src/app/dev/katalog/[id]/page.tsx +++ b/src/app/dev/katalog/[id]/page.tsx @@ -1,19 +1,15 @@ import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import { Katalog_MainView } from "@/app_modules/katalog"; import { funGetListPortofolio } from "@/app_modules/katalog/portofolio/fun/get/get_list_portofolio"; import { Profile_getOneProfileAndUserById } from "@/app_modules/katalog/profile/fun/get/get_one_user_profile"; export default async function Page({ params }: { params: { id: string } }) { let profileId = params.id; + const userLoginId = await funGetUserIdByToken(); const listPorto = await funGetListPortofolio(profileId); const dataProfile = await Profile_getOneProfileAndUserById(profileId); - const userLoginId = await funGetUserIdByToken(); - - return ( <> {children} diff --git a/src/app/dev/portofolio/main/[id]/layout.tsx b/src/app/dev/portofolio/main/[id]/layout.tsx index 06f7dcad..a3be099c 100644 --- a/src/app/dev/portofolio/main/[id]/layout.tsx +++ b/src/app/dev/portofolio/main/[id]/layout.tsx @@ -1,5 +1,4 @@ -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { PortofolioLayout } from "@/app_modules/katalog/portofolio"; import { portofolio_getOneById } from "@/app_modules/katalog/portofolio/fun/get/get_one_portofolio"; @@ -12,8 +11,7 @@ export default async function Layout({ }) { let portoId = params.id; const getPorto = await portofolio_getOneById(portoId); - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; + const userLoginId = await funGetUserIdByToken(); return ( <> diff --git a/src/app/dev/portofolio/main/[id]/page.tsx b/src/app/dev/portofolio/main/[id]/page.tsx index 89a0bd87..60746aea 100644 --- a/src/app/dev/portofolio/main/[id]/page.tsx +++ b/src/app/dev/portofolio/main/[id]/page.tsx @@ -1,12 +1,11 @@ -import ComponentGlobal_IsEmptyData from "@/app_modules/_global/component/is_empty_data"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { ViewPortofolio } from "@/app_modules/katalog/portofolio"; import { portofolio_getOneById } from "@/app_modules/katalog/portofolio/fun/get/get_one_portofolio"; const mapboxToken = process.env.MAPBOX_TOKEN!; export default async function Page({ params }: { params: { id: string } }) { const getPorto = await portofolio_getOneById(params.id); - const userLoginId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); return ( <> diff --git a/src/app/dev/profile/create/page.tsx b/src/app/dev/profile/create/page.tsx index 4c849b39..b8e3ca19 100644 --- a/src/app/dev/profile/create/page.tsx +++ b/src/app/dev/profile/create/page.tsx @@ -1,12 +1,12 @@ -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { CreateProfile } from "@/app_modules/katalog/profile"; export default async function Page() { - const userId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); return ( <> - + ); } diff --git a/src/app/dev/user-not-active/page.tsx b/src/app/dev/user-not-active/page.tsx index 9f272d75..f2a9cf38 100644 --- a/src/app/dev/user-not-active/page.tsx +++ b/src/app/dev/user-not-active/page.tsx @@ -1,13 +1,11 @@ import { RouterHome } from "@/app/lib/router_hipmi/router_home"; -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { Home_UserNonActive } from "@/app_modules/home"; import { user_getOneByUserId } from "@/app_modules/home/fun/get/get_one_user_by_id"; import { redirect } from "next/navigation"; export default async function Page() { - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; + const userLoginId = await funGetUserIdByToken(); const dataUser = await user_getOneByUserId(userLoginId); diff --git a/src/app/dev/vote/detail/kontribusi/[id]/layout.tsx b/src/app/dev/vote/detail/kontribusi/[id]/layout.tsx index b29c65da..e591dd90 100644 --- a/src/app/dev/vote/detail/kontribusi/[id]/layout.tsx +++ b/src/app/dev/vote/detail/kontribusi/[id]/layout.tsx @@ -1,5 +1,4 @@ -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; -import { user_funGetOneUserId } from "@/app_modules/fun_global"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { LayoutVote_DetailKontribusi } from "@/app_modules/vote"; import React from "react"; @@ -11,9 +10,7 @@ export default async function Layout({ params: { id: string }; }) { const votingId = params.id; - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; - + const userLoginId = await funGetUserIdByToken(); return ( <> diff --git a/src/app/dev/vote/detail/main/[id]/layout.tsx b/src/app/dev/vote/detail/main/[id]/layout.tsx index baf71b43..7a3d7e0d 100644 --- a/src/app/dev/vote/detail/main/[id]/layout.tsx +++ b/src/app/dev/vote/detail/main/[id]/layout.tsx @@ -1,5 +1,4 @@ -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { LayoutVote_MainDetail } from "@/app_modules/vote"; import React from "react"; @@ -11,8 +10,7 @@ export default async function Layout({ params: { id: string }; }) { const votingId = params.id; - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; + const userLoginId = await funGetUserIdByToken(); return ( <> diff --git a/src/app/dev/vote/detail/main/[id]/page.tsx b/src/app/dev/vote/detail/main/[id]/page.tsx index 1767fe98..1792a614 100644 --- a/src/app/dev/vote/detail/main/[id]/page.tsx +++ b/src/app/dev/vote/detail/main/[id]/page.tsx @@ -1,17 +1,14 @@ -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { Vote_MainDetail } from "@/app_modules/vote"; import { Vote_cekKontributorById } from "@/app_modules/vote/fun/get/cek_kontributor_by_id"; +import { voting_funGetOneVotingbyId } from "@/app_modules/vote/fun/get/fun_get_one_by_id"; import { Vote_getHasilVoteById } from "@/app_modules/vote/fun/get/get_list_hasil_by_id"; import { Vote_getListKontributorById } from "@/app_modules/vote/fun/get/get_list_kontributor_by_id"; -import { voting_funGetOneVotingbyId } from "@/app_modules/vote/fun/get/fun_get_one_by_id"; import { Vote_getOnePilihanVotingByUserId } from "@/app_modules/vote/fun/get/get_one_pilihan_voting_by_user_id"; -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; export default async function Page({ params }: { params: { id: string } }) { const voteId = params.id; - - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; + const userLoginId = await funGetUserIdByToken(); const dataVote = await voting_funGetOneVotingbyId(voteId); const hasilVoting = await Vote_getHasilVoteById(voteId as any); diff --git a/src/app/dev/vote/detail/publish/[id]/layout.tsx b/src/app/dev/vote/detail/publish/[id]/layout.tsx index 9db9b517..4047d0b1 100644 --- a/src/app/dev/vote/detail/publish/[id]/layout.tsx +++ b/src/app/dev/vote/detail/publish/[id]/layout.tsx @@ -1,5 +1,4 @@ -import { CheckCookies_UiView } from "@/app_modules/check_cookies"; -import { user_funGetOneUserId } from "@/app_modules/fun_global"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { LayoutVote_DetailPublish } from "@/app_modules/vote"; import { Voting_funGetOneVotingbyId } from "@/app_modules/vote/fun/get"; import React from "react"; @@ -12,11 +11,9 @@ export default async function Layout({ params: { id: string }; }) { const votingId = params.id; - const userLoginId = await user_funGetOneUserId(); - if (!userLoginId) return ; + const userLoginId = await funGetUserIdByToken(); const dataVoting = await Voting_funGetOneVotingbyId(votingId); - const authorId = dataVoting?.authorId; return ( <> diff --git a/src/app/dev/vote/detail/semua_riwayat/[id]/layout.tsx b/src/app/dev/vote/detail/semua_riwayat/[id]/layout.tsx index 05370a9d..7759f942 100644 --- a/src/app/dev/vote/detail/semua_riwayat/[id]/layout.tsx +++ b/src/app/dev/vote/detail/semua_riwayat/[id]/layout.tsx @@ -1,5 +1,5 @@ +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { CheckCookies_UiView } from "@/app_modules/check_cookies"; -import { user_funGetOneUserId } from "@/app_modules/fun_global"; import { LayoutVote_DetailSemuaRiwayat } from "@/app_modules/vote"; import React from "react"; @@ -11,7 +11,8 @@ export default async function Layout({ params: { id: string }; }) { const votingId = params.id; - const userLoginId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); + if (!userLoginId) return ; return ( diff --git a/src/app_modules/_global/component/comp_box_upload_image.tsx b/src/app_modules/_global/component/comp_box_upload_image.tsx new file mode 100644 index 00000000..8b59b73f --- /dev/null +++ b/src/app_modules/_global/component/comp_box_upload_image.tsx @@ -0,0 +1,24 @@ +import { ComponentGlobal_CardStyles } from "@/app_modules/_global/component"; +import { Box } from "@mantine/core"; + +export function ComponentGlobal_BoxUploadImage({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + + + {children} + + + + ); +} diff --git a/src/app_modules/_global/component/index.ts b/src/app_modules/_global/component/index.ts index dcd7dc74..1191da65 100644 --- a/src/app_modules/_global/component/index.ts +++ b/src/app_modules/_global/component/index.ts @@ -1,5 +1,6 @@ import ComponentGlobal_BoxInformation from "./box_information"; import ComponentGlobal_AvatarAndAuthorName from "./comp_author_name_and_avatar"; +import { ComponentGlobal_BoxUploadImage } from "./comp_box_upload_image"; import { ComponentGlobal_CardStyles } from "./comp_card_box_and_background"; import ComponentGlobal_CardLoadingOverlay from "./comp_loading_card"; import ComponentGlobal_TampilanAngkaRatusan from "./comp_tampilan_angka_ratusan"; @@ -13,3 +14,4 @@ export { ComponentGlobal_CardLoadingOverlay }; export { ComponentGlobal_BoxInformation }; export { ComponentGlobal_InputCountDown }; export { ComponentGlobal_CardStyles }; +export { ComponentGlobal_BoxUploadImage }; diff --git a/src/app_modules/admin/_admin_global/logout.tsx b/src/app_modules/admin/_admin_global/logout.tsx index 837d3423..abace7b6 100644 --- a/src/app_modules/admin/_admin_global/logout.tsx +++ b/src/app_modules/admin/_admin_global/logout.tsx @@ -28,7 +28,7 @@ export default function Admin_Logout() { const [loadingLogout, setLoadingLogout] = useState(false); async function onClickLogout() { - await auth_Logout(kodeId).then((res) => { + await auth_Logout().then((res) => { if (res.status === 200) { setLoadingLogout(true); ComponentGlobal_NotifikasiBerhasil(res.message); diff --git a/src/app_modules/admin/colab/fun/edit/fun_report_project_by_id.ts b/src/app_modules/admin/colab/fun/edit/fun_report_project_by_id.ts index 30ea7c55..fd1657b4 100644 --- a/src/app_modules/admin/colab/fun/edit/fun_report_project_by_id.ts +++ b/src/app_modules/admin/colab/fun/edit/fun_report_project_by_id.ts @@ -2,10 +2,8 @@ import prisma from "@/app/lib/prisma"; import { RouterAdminColab } from "@/app/lib/router_admin/router_admin_colab"; -import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { revalidatePath } from "next/cache"; -import { redirect } from "next/navigation"; export default async function adminColab_funReportProjectById({ colabId, @@ -14,11 +12,7 @@ export default async function adminColab_funReportProjectById({ colabId: string; report: string; }) { - const authorId = await user_funGetOneUserId(); - if (!authorId) { - redirect(RouterAuth.login); - // return { status: 400, message: "Gagal mendapatkan authorId" }; - } + const userLoginId = await funGetUserIdByToken(); const projectUpdate = await prisma.projectCollaboration.update({ where: { @@ -39,7 +33,7 @@ export default async function adminColab_funReportProjectById({ const updateReport = await prisma.projectCollaboration_Notifikasi.create({ data: { projectCollaborationId: colabId, - adminId: authorId, + adminId: userLoginId, userId: projectUpdate.userId as any, note: "Project Anda Telah Direport Admin", }, diff --git a/src/app_modules/admin/job/child/review/index.tsx b/src/app_modules/admin/job/child/review/index.tsx index bc794da0..6773ca72 100644 --- a/src/app_modules/admin/job/child/review/index.tsx +++ b/src/app_modules/admin/job/child/review/index.tsx @@ -353,6 +353,11 @@ async function onPublish({ "USER", JSON.stringify({ userId: publish?.data?.authorId, count: 1 }) ); + + mqtt_client.publish( + "Job_new_post", + JSON.stringify({ isNewPost: true, count: 1 }) + ); } ComponentGlobal_NotifikasiBerhasil(publish.message); diff --git a/src/app_modules/admin/notifikasi/fun/count/count_is_read.ts b/src/app_modules/admin/notifikasi/fun/count/count_is_read.ts index 646069ea..fd6f9357 100644 --- a/src/app_modules/admin/notifikasi/fun/count/count_is_read.ts +++ b/src/app_modules/admin/notifikasi/fun/count/count_is_read.ts @@ -1,14 +1,14 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export default async function adminNotifikasi_countNotifikasi() { - const adminId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); const data = await prisma.notifikasi.findMany({ where: { - adminId: adminId, + adminId: userLoginId, isRead: false, userRoleId: "2", }, diff --git a/src/app_modules/admin/notifikasi/fun/create/fun_create_notif_user.ts b/src/app_modules/admin/notifikasi/fun/create/fun_create_notif_user.ts index fd4dfcfb..2bc156fa 100644 --- a/src/app_modules/admin/notifikasi/fun/create/fun_create_notif_user.ts +++ b/src/app_modules/admin/notifikasi/fun/create/fun_create_notif_user.ts @@ -1,7 +1,7 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { MODEL_NOTIFIKASI } from "@/app_modules/notifikasi/model/interface"; export default async function adminNotifikasi_funCreateToUser({ @@ -9,11 +9,11 @@ export default async function adminNotifikasi_funCreateToUser({ }: { data: MODEL_NOTIFIKASI; }) { - const adminId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); const create = await prisma.notifikasi.create({ data: { - adminId: adminId, + adminId: userLoginId, userId: data.userId, appId: data.appId, status: data.status, diff --git a/src/app_modules/admin/notifikasi/fun/get/get_notifikasi_by_user_id.ts b/src/app_modules/admin/notifikasi/fun/get/get_notifikasi_by_user_id.ts index 5df0ec4b..f06f543b 100644 --- a/src/app_modules/admin/notifikasi/fun/get/get_notifikasi_by_user_id.ts +++ b/src/app_modules/admin/notifikasi/fun/get/get_notifikasi_by_user_id.ts @@ -1,11 +1,10 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; -import { NextRequest } from "next/server"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export default async function adminNotifikasi_getByUserId() { - const adminId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); const data = await prisma.notifikasi.findMany({ orderBy: [ @@ -17,7 +16,7 @@ export default async function adminNotifikasi_getByUserId() { }, ], where: { - adminId: adminId, + adminId: userLoginId, userRoleId: "2", }, }); diff --git a/src/app_modules/auth/fun/fun_login.ts b/src/app_modules/auth/fun/fun_login.ts index aea77dd7..1f2f944f 100644 --- a/src/app_modules/auth/fun/fun_login.ts +++ b/src/app_modules/auth/fun/fun_login.ts @@ -17,7 +17,7 @@ export async function auth_funLogin({ nomor }: { nomor: string }) { const sendWa = await res.json(); if (sendWa.status !== "success") - return { status: 400, message: "WA Tidak Terdaftar", nomorUser: {} }; + return { status: 400, message: "WA Tidak Terdaftar", kodeId: {} }; const createOtpId = await prisma.kodeOtp.create({ data: { @@ -27,15 +27,15 @@ export async function auth_funLogin({ nomor }: { nomor: string }) { }); if (!createOtpId) - return { status: 400, message: "Gagal Membuat Kode OTP", nomorUser: {} }; + return { status: 400, message: "Gagal Membuat Kode OTP", kodeId: {} }; return { status: 200, message: "Kode Verifikasi Dikirim", - nomorUser: nomor, + kodeId: createOtpId.id, }; } catch (error) { console.log(error); - return { status: 500, message: "Server Error !!!", nomorUser: {} }; + return { status: 500, message: "Server Error !!!", kodeId: {} }; } } diff --git a/src/app_modules/auth/fun/fun_logout.ts b/src/app_modules/auth/fun/fun_logout.ts index 31165b42..59998447 100644 --- a/src/app_modules/auth/fun/fun_logout.ts +++ b/src/app_modules/auth/fun/fun_logout.ts @@ -5,7 +5,7 @@ import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { revalidatePath } from "next/cache"; import { cookies } from "next/headers"; -export async function auth_Logout(kodeId: string) { +export async function auth_Logout() { const userId = await funGetUserIdByToken(); try { @@ -19,8 +19,7 @@ export async function auth_Logout(kodeId: string) { cookies().set({ name: "ssn", value: "", - maxAge: 0, - expires: 0, + }); return { status: 200, message: "Logout Berhasil" }; @@ -28,12 +27,6 @@ export async function auth_Logout(kodeId: string) { console.log(error); } - // const del = await prisma.kodeOtp.delete({ - // where: { - // id: kodeId, - // }, - // }); - // if (!del) return { status: 400, message: "Gagal Hapus Kode OTP Id"}; - // revalidatePath("/dev/katalog") + revalidatePath("/"); return { status: 200, message: "Logout Berhasil" }; } diff --git a/src/app_modules/auth/fun/fun_register.ts b/src/app_modules/auth/fun/fun_register.ts index 06aa8c67..10886f0a 100644 --- a/src/app_modules/auth/fun/fun_register.ts +++ b/src/app_modules/auth/fun/fun_register.ts @@ -1,7 +1,9 @@ "use server"; import prisma from "@/app/lib/prisma"; +import { RouterHome } from "@/app/lib/router_hipmi/router_home"; import { sealData } from "iron-session"; +import { revalidatePath } from "next/cache"; import { cookies } from "next/headers"; export async function Auth_funRegister({ @@ -47,15 +49,20 @@ export async function Auth_funRegister({ // maxAge: 60 * 60 * 24 * 7, }); - const createUserSession = await prisma.userSession.create({ - data: { - token: sealToken, - userId: create.id, - }, - }); + try { + const createUserSession = await prisma.userSession.create({ + data: { + token: sealToken, + userId: create.id, + }, + }); - if (!createUserSession) - return { status: 400, message: "Gagal Membuat User Session" }; + if (!createUserSession) + return { status: 401, message: "Gagal Membuat User Session" }; + revalidatePath(RouterHome.main_home); + } catch (error) { + console.log(error); + } return { status: 200, message: "Berhasil Mendaftar" }; } diff --git a/src/app_modules/auth/fun/fun_validasi.ts b/src/app_modules/auth/fun/fun_validasi.ts index 5fbbbbee..0743df66 100644 --- a/src/app_modules/auth/fun/fun_validasi.ts +++ b/src/app_modules/auth/fun/fun_validasi.ts @@ -25,7 +25,8 @@ export async function auth_funValidasi({ }, }); - if (cekUser === null) return { status: 400, message: "Nomor Belum Terdaftar" }; + if (cekUser === null) + return { status: 400, message: "Nomor Belum Terdaftar", role: {} }; const sealToken = await sealData( JSON.stringify({ @@ -40,10 +41,23 @@ export async function auth_funValidasi({ cookies().set({ name: "ssn", value: sealToken, - // maxAge: 60 * 60 * 24 * 30, - // expires: 60 * 60 * 24 * 30, + maxAge: 60 * 60 * 24 * 30, }); + const cekSessionUser = await prisma.userSession.findFirst({ + where: { + userId: cekUser.id, + }, + }); + + if (cekSessionUser !== null) { + await prisma.userSession.delete({ + where: { + userId: cekUser.id, + }, + }); + } + try { const createUserSession = await prisma.userSession.create({ data: { @@ -53,7 +67,7 @@ export async function auth_funValidasi({ }); if (!createUserSession) - return { status: 401, message: "Gagal Membuat User Session" }; + return { status: 401, message: "Gagal Membuat User Session", role: {} }; revalidatePath(RouterHome.main_home); } catch (error) { diff --git a/src/app_modules/auth/fun/get_kode_otp_by_id.ts b/src/app_modules/auth/fun/get_kode_otp_by_id.ts index f1ac7365..67a74ce8 100644 --- a/src/app_modules/auth/fun/get_kode_otp_by_id.ts +++ b/src/app_modules/auth/fun/get_kode_otp_by_id.ts @@ -2,10 +2,10 @@ import prisma from "@/app/lib/prisma"; -export async function auth_getKodeOtpById({nomor}: {nomor: string}) { +export async function auth_getCodeOtpByNumber({kodeId}: {kodeId: string}) { const data = await prisma.kodeOtp.findFirst({ where: { - nomor: nomor, + id: kodeId, }, }); diff --git a/src/app_modules/auth/login/view.tsx b/src/app_modules/auth/login/view.tsx index 5166adee..cf1b432d 100644 --- a/src/app_modules/auth/login/view.tsx +++ b/src/app_modules/auth/login/view.tsx @@ -28,7 +28,6 @@ import { export default function Login() { const router = useRouter(); - const [kodeId, setKodeId] = useAtom(gs_kodeId); const [phone, setPhone] = useState(""); const [loading, setLoading] = useState(false); const [isError, setError] = useState(false); @@ -41,7 +40,7 @@ export default function Login() { if (res.status === 200) { setLoading(true); ComponentGlobal_NotifikasiBerhasil(res.message, 2000); - router.push(RouterAuth.validasi + res.nomorUser, { scroll: false }); + router.push(RouterAuth.validasi + res.kodeId, { scroll: false }); } else { ComponentGlobal_NotifikasiPeringatan(res.message); } diff --git a/src/app_modules/auth/logout/view.tsx b/src/app_modules/auth/logout/view.tsx index b2e098d6..4f26f061 100644 --- a/src/app_modules/auth/logout/view.tsx +++ b/src/app_modules/auth/logout/view.tsx @@ -6,23 +6,19 @@ import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/noti import UIGlobal_Modal from "@/app_modules/_global/ui/ui_modal"; import { ActionIcon, Button, Stack, Text } from "@mantine/core"; import { IconLogout } from "@tabler/icons-react"; -import { useAtom } from "jotai"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { auth_Logout } from "../fun/fun_logout"; -import { gs_kodeId } from "../state/state"; export default function Component_Logout() { const router = useRouter(); const [opened, setOpened] = useState(false); - const [kodeId, setKodeId] = useAtom(gs_kodeId); const [loading, setLoading] = useState(false); async function onClickLogout() { - await auth_Logout(kodeId).then((res) => { + await auth_Logout().then((res) => { if (res.status === 200) { ComponentGlobal_NotifikasiBerhasil(res.message); - setKodeId(""); } else { ComponentGlobal_NotifikasiPeringatan(res.message); } diff --git a/src/app_modules/auth/validasi/view.tsx b/src/app_modules/auth/validasi/view.tsx index a03cf40f..faf637c3 100644 --- a/src/app_modules/auth/validasi/view.tsx +++ b/src/app_modules/auth/validasi/view.tsx @@ -61,10 +61,20 @@ export default function Validasi({ dataOtp }: { dataOtp: any }) { } else { ComponentGlobal_NotifikasiPeringatan(resAktivasi.message); } - } else { + } + + if (res.status === 400) { ComponentGlobal_NotifikasiBerhasil(res.message); router.push(RouterAuth.register + dataOtp.id, { scroll: false }); } + + if (res.status === 401) { + const resAktivasi = await auth_funDeleteAktivasiKodeOtpById(dataOtp.id); + if (resAktivasi.status === 200) { + ComponentGlobal_NotifikasiPeringatan(res.message); + router.push(RouterAuth.login, { scroll: false }); + } + } } return ( diff --git a/src/app_modules/check_cookies/layout_cek_cookies.tsx b/src/app_modules/check_cookies/layout_cek_cookies.tsx index 19e6a371..75070c50 100644 --- a/src/app_modules/check_cookies/layout_cek_cookies.tsx +++ b/src/app_modules/check_cookies/layout_cek_cookies.tsx @@ -12,16 +12,16 @@ export function CheckCookies_UiLayout({ const router = useRouter(); useShallowEffect(() => { - // onCheckCookies(); + onCheckCookies(); }, []); - // async function onCheckCookies() { - // const cek = await fetch("/api/check-cookies"); - // const result = await cek.json(); - // if (result.success === false) { - // router.push(RouterAuth.login); - // } - // } + async function onCheckCookies() { + const cek = await fetch("/api/check-cookies"); + const result = await cek.json(); + if (result.success === false) { + router.push(RouterAuth.login); + } + } return <>{children}; } diff --git a/src/app_modules/colab/fun/create/fun_create_proyek.ts b/src/app_modules/colab/fun/create/fun_create_proyek.ts index 77ad80a2..22e689ea 100644 --- a/src/app_modules/colab/fun/create/fun_create_proyek.ts +++ b/src/app_modules/colab/fun/create/fun_create_proyek.ts @@ -1,16 +1,15 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { MODEL_COLLABORATION } from "../../model/interface"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; -import { revalidatePath } from "next/cache"; import { RouterColab } from "@/app/lib/router_hipmi/router_colab"; -import _ from "lodash"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import { revalidatePath } from "next/cache"; +import { MODEL_COLLABORATION } from "../../model/interface"; export default async function colab_funCreateProyek( value: MODEL_COLLABORATION ) { - const AuthorId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); const data = await prisma.projectCollaboration.create({ data: { @@ -20,7 +19,7 @@ export default async function colab_funCreateProyek( benefit: value.benefit, projectCollaborationMaster_IndustriId: value.projectCollaborationMaster_IndustriId, - userId: AuthorId, + userId: userLoginId, // jumlah_partisipan: + value.jumlah_partisipan, }, }); diff --git a/src/app_modules/colab/fun/create/fun_create_room_chat.ts b/src/app_modules/colab/fun/create/fun_create_room_chat.ts index ef4e0b50..d697c5ff 100644 --- a/src/app_modules/colab/fun/create/fun_create_room_chat.ts +++ b/src/app_modules/colab/fun/create/fun_create_room_chat.ts @@ -1,25 +1,19 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; -import { redirect } from "next/navigation"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export default async function colab_funCreateRoomChat( nameRoom: string, value: any[], colabId: string ) { - const authorId = await user_funGetOneUserId(); - if (!authorId) { - redirect(RouterAuth.login); - // return { status: 400, message: "Gagal mendapatkan authorId" }; - } + const userLoginId = await funGetUserIdByToken(); const createRoom = await prisma.projectCollaboration_RoomChat.create({ data: { name: nameRoom, - userId: authorId, + userId: userLoginId, projectCollaborationId: colabId, }, }); @@ -57,7 +51,7 @@ export default async function colab_funCreateRoomChat( const createForAuthor = await prisma.projectCollaboration_AnggotaRoomChat.create({ data: { - userId: authorId, + userId: userLoginId, projectCollaboration_RoomChatId: createRoom.id, }, }); diff --git a/src/app_modules/colab/fun/create/room/fun_create_message_by_user_id.ts b/src/app_modules/colab/fun/create/room/fun_create_message_by_user_id.ts index 491d858e..f10a3e9b 100644 --- a/src/app_modules/colab/fun/create/room/fun_create_message_by_user_id.ts +++ b/src/app_modules/colab/fun/create/room/fun_create_message_by_user_id.ts @@ -2,14 +2,15 @@ import prisma from "@/app/lib/prisma"; import { RouterColab } from "@/app/lib/router_hipmi/router_colab"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { revalidatePath } from "next/cache"; export default async function colab_funCreateMessageByUserId( message: string, roomId: string ) { - const userLoginId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); + const msg = await prisma.projectCollaboration_Message.create({ data: { userId: userLoginId, diff --git a/src/app_modules/colab/fun/get/cek_notifikasi.ts b/src/app_modules/colab/fun/get/cek_notifikasi.ts index 3a29b5a3..78c16068 100644 --- a/src/app_modules/colab/fun/get/cek_notifikasi.ts +++ b/src/app_modules/colab/fun/get/cek_notifikasi.ts @@ -1,20 +1,14 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; -import { redirect } from "next/navigation"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export default async function colab_CekNotifikasi() { - const authorId = await user_funGetOneUserId(); - if (!authorId) { - redirect(RouterAuth.login); - // return { status: 400, message: "Gagal mendapatkan authorId" }; - } + const userLoginId = await funGetUserIdByToken(); const cekNotif = await prisma.projectCollaboration_Notifikasi.findMany({ where: { - userId: authorId, + userId: userLoginId, isRead: false, }, select: { diff --git a/src/app_modules/colab/fun/get/cek_partisipasi_by_user_id.ts b/src/app_modules/colab/fun/get/cek_partisipasi_by_user_id.ts index cb8c3aa1..4afacf5c 100644 --- a/src/app_modules/colab/fun/get/cek_partisipasi_by_user_id.ts +++ b/src/app_modules/colab/fun/get/cek_partisipasi_by_user_id.ts @@ -1,22 +1,21 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export default async function colab_funCekPartisipasiById(colabId: string) { - const UserLoginId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); const cek = await prisma.projectCollaboration_Partisipasi.findFirst({ where: { projectCollaborationId: colabId, - userId: UserLoginId, + userId: userLoginId, }, }); - if (cek === null) { - return (false); + return false; } else { - return (true); + return true; } } diff --git a/src/app_modules/colab/fun/get/get_list_by_status_id.ts b/src/app_modules/colab/fun/get/get_list_by_status_id.ts index 926ae766..80800b55 100644 --- a/src/app_modules/colab/fun/get/get_list_by_status_id.ts +++ b/src/app_modules/colab/fun/get/get_list_by_status_id.ts @@ -1,13 +1,14 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export default async function colab_getListByStatusId(statusId: number) { - const AuthorId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); + const data = await prisma.projectCollaboration.findMany({ where: { - userId: AuthorId, + userId: userLoginId, projectCollaborationMaster_StatusId: statusId, }, select: { diff --git a/src/app_modules/colab/fun/get/get_list_notifikasi_by_user_id.ts b/src/app_modules/colab/fun/get/get_list_notifikasi_by_user_id.ts index ee3815b9..d682a291 100644 --- a/src/app_modules/colab/fun/get/get_list_notifikasi_by_user_id.ts +++ b/src/app_modules/colab/fun/get/get_list_notifikasi_by_user_id.ts @@ -1,26 +1,20 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; -import { redirect } from "next/navigation"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export default async function colab_getListNotifikasiByUserId() { - const authorId = await user_funGetOneUserId(); - if (!authorId) { - redirect(RouterAuth.login); - // return { status: 400, message: "Gagal mendapatkan authorId" }; - } + const userLoginId = await funGetUserIdByToken(); const get = await prisma.projectCollaboration_Notifikasi.findMany({ orderBy: { - createdAt: "desc", + createdAt: "desc", }, where: { - userId: authorId, + userId: userLoginId, }, select: { - id:true, + id: true, createdAt: true, isRead: true, note: true, diff --git a/src/app_modules/colab/fun/get/pasrtisipan/get_list_partisipasi_proyek_by_author_id.ts b/src/app_modules/colab/fun/get/pasrtisipan/get_list_partisipasi_proyek_by_author_id.ts index 147fe2a7..f65e3d82 100644 --- a/src/app_modules/colab/fun/get/pasrtisipan/get_list_partisipasi_proyek_by_author_id.ts +++ b/src/app_modules/colab/fun/get/pasrtisipan/get_list_partisipasi_proyek_by_author_id.ts @@ -1,14 +1,14 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export default async function colab_getListPartisipasiProyekByAuthorId({ page, }: { page: number; }) { - const authorId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); const takeData = 5; const skipData = page * takeData - takeData; @@ -20,7 +20,7 @@ export default async function colab_getListPartisipasiProyekByAuthorId({ createdAt: "desc", }, where: { - userId: authorId, + userId: userLoginId, isActive: true, AND: { ProjectCollaboration: { diff --git a/src/app_modules/colab/fun/get/pasrtisipan/get_list_proyek_saya_by_author_id.ts b/src/app_modules/colab/fun/get/pasrtisipan/get_list_proyek_saya_by_author_id.ts index 594d9398..7b149e7e 100644 --- a/src/app_modules/colab/fun/get/pasrtisipan/get_list_proyek_saya_by_author_id.ts +++ b/src/app_modules/colab/fun/get/pasrtisipan/get_list_proyek_saya_by_author_id.ts @@ -1,14 +1,14 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export default async function colab_getListAllProyekSayaByAuthorId({ page, }: { page: number; }) { - const authorId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); const takeData = 5; const skipData = page * takeData - takeData; @@ -17,7 +17,7 @@ export default async function colab_getListAllProyekSayaByAuthorId({ take: takeData, skip: skipData, orderBy: { createdAt: "desc" }, - where: { userId: authorId, isActive: true }, + where: { userId: userLoginId, isActive: true }, select: { id: true, isActive: true, diff --git a/src/app_modules/colab/fun/get/room_chat/get_list_room_by_author_id.ts b/src/app_modules/colab/fun/get/room_chat/get_list_room_by_author_id.ts index ab1a2463..2f53e1f9 100644 --- a/src/app_modules/colab/fun/get/room_chat/get_list_room_by_author_id.ts +++ b/src/app_modules/colab/fun/get/room_chat/get_list_room_by_author_id.ts @@ -1,20 +1,15 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; -import { redirect } from "next/navigation"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export default async function colab_getListRoomChatByAuthorId({ page, }: { page: number; }) { - const authorId = await user_funGetOneUserId(); - if (!authorId) { - redirect(RouterAuth.login); - // return { status: 400, message: "Gagal mendapatkan authorId" }; - } + const userLoginId = await funGetUserIdByToken(); + const takeData = 10; const skipData = page * takeData - takeData; @@ -25,7 +20,7 @@ export default async function colab_getListRoomChatByAuthorId({ createdAt: "desc", }, where: { - userId: authorId, + userId: userLoginId, }, select: { ProjectCollaboration_RoomChat: { diff --git a/src/app_modules/donasi/fun/get/get_all_invoice_by_author_id.tsx b/src/app_modules/donasi/fun/get/get_all_invoice_by_author_id.tsx index 9daafdf1..079c1047 100644 --- a/src/app_modules/donasi/fun/get/get_all_invoice_by_author_id.tsx +++ b/src/app_modules/donasi/fun/get/get_all_invoice_by_author_id.tsx @@ -1,14 +1,15 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export async function donasi_funGetAllInvoiceByAuthorId({ page, }: { page: number; }) { - const authorId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); + const takeData = 5; const skipData = page * takeData - takeData; @@ -19,7 +20,7 @@ export async function donasi_funGetAllInvoiceByAuthorId({ createdAt: "desc", }, where: { - authorId: authorId, + authorId: userLoginId, }, select: { id: true, diff --git a/src/app_modules/donasi/fun/get/status/get_all_status_draft.ts b/src/app_modules/donasi/fun/get/status/get_all_status_draft.ts index e0a9f38f..ba740354 100644 --- a/src/app_modules/donasi/fun/get/status/get_all_status_draft.ts +++ b/src/app_modules/donasi/fun/get/status/get_all_status_draft.ts @@ -1,10 +1,11 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export async function donasi_funGetAllStatusDraft({ page }: { page: number }) { - const authorId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); + const takeData = 5; const skipData = page * takeData - takeData; @@ -15,10 +16,10 @@ export async function donasi_funGetAllStatusDraft({ page }: { page: number }) { updatedAt: "desc", }, where: { - authorId: authorId, + authorId: userLoginId, donasiMaster_StatusDonasiId: "3", }, }); - + return data; } diff --git a/src/app_modules/donasi/fun/get/status/get_all_status_publish.ts b/src/app_modules/donasi/fun/get/status/get_all_status_publish.ts index bd1b4b9b..623fd1eb 100644 --- a/src/app_modules/donasi/fun/get/status/get_all_status_publish.ts +++ b/src/app_modules/donasi/fun/get/status/get_all_status_publish.ts @@ -1,14 +1,18 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; + +export async function donasi_funGetAllStatusPublish({ + page, +}: { + page: number; +}) { + const userLoginId = await funGetUserIdByToken(); -export async function donasi_funGetAllStatusPublish({ page }: { page: number }) { - const authorId = await user_funGetOneUserId(); const takeData = 5; const skipData = page * takeData - takeData; - const data = await prisma.donasi.findMany({ take: takeData, skip: skipData, @@ -16,7 +20,7 @@ export async function donasi_funGetAllStatusPublish({ page }: { page: number }) publishTime: "desc", }, where: { - authorId: authorId, + authorId: userLoginId, donasiMaster_StatusDonasiId: "1", active: true, }, diff --git a/src/app_modules/donasi/fun/get/status/get_all_status_reject.ts b/src/app_modules/donasi/fun/get/status/get_all_status_reject.ts index c528212d..b4781315 100644 --- a/src/app_modules/donasi/fun/get/status/get_all_status_reject.ts +++ b/src/app_modules/donasi/fun/get/status/get_all_status_reject.ts @@ -1,10 +1,11 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export async function donasi_funGetAllStatusReject({ page }: { page: number }) { - const authorId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); + const takeData = 5; const skipData = page * takeData - takeData; @@ -15,7 +16,7 @@ export async function donasi_funGetAllStatusReject({ page }: { page: number }) { updatedAt: "desc", }, where: { - authorId: authorId, + authorId: userLoginId, donasiMaster_StatusDonasiId: "4", }, }); diff --git a/src/app_modules/donasi/fun/get/status/get_all_status_review.ts b/src/app_modules/donasi/fun/get/status/get_all_status_review.ts index 81266566..272cf89f 100644 --- a/src/app_modules/donasi/fun/get/status/get_all_status_review.ts +++ b/src/app_modules/donasi/fun/get/status/get_all_status_review.ts @@ -1,24 +1,25 @@ -"use server" +"use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -export async function donasi_funGetAllStatusReview({page}: {page: number}) { - const authorId = await user_funGetOneUserId(); - const takeData = 5; - const skipData = page * takeData - takeData; +export async function donasi_funGetAllStatusReview({ page }: { page: number }) { + const userLoginId = await funGetUserIdByToken(); - const data = await prisma.donasi.findMany({ - take: takeData, - skip: skipData, - orderBy: { - updatedAt: "desc", - }, - where: { - authorId: authorId, - donasiMaster_StatusDonasiId: "2", - }, - }); + const takeData = 5; + const skipData = page * takeData - takeData; - return data; -} \ No newline at end of file + const data = await prisma.donasi.findMany({ + take: takeData, + skip: skipData, + orderBy: { + updatedAt: "desc", + }, + where: { + authorId: userLoginId, + donasiMaster_StatusDonasiId: "2", + }, + }); + + return data; +} diff --git a/src/app_modules/event/fun/get/get_list_kontribusi_by_user_id.ts b/src/app_modules/event/fun/get/get_list_kontribusi_by_user_id.ts index daf92344..e715788b 100644 --- a/src/app_modules/event/fun/get/get_list_kontribusi_by_user_id.ts +++ b/src/app_modules/event/fun/get/get_list_kontribusi_by_user_id.ts @@ -1,10 +1,14 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -export async function event_getListKontibusiByUserId({page}: {page: number}) { - const userLoginId = await user_funGetOneUserId(); +export async function event_getListKontibusiByUserId({ + page, +}: { + page: number; +}) { + const userLoginId = await funGetUserIdByToken(); const takeData = 10; const skipData = page * takeData - takeData; @@ -41,8 +45,8 @@ export async function event_getListKontibusiByUserId({page}: {page: number}) { userId: true, User: { select: { - Profile: true - } + Profile: true, + }, }, }, }, @@ -50,7 +54,7 @@ export async function event_getListKontibusiByUserId({page}: {page: number}) { }, }, }); -// console.log(data); + // console.log(data); return data; } diff --git a/src/app_modules/event/fun/get/get_list_riwayat_saya.ts b/src/app_modules/event/fun/get/get_list_riwayat_saya.ts index dabb4675..76432ab5 100644 --- a/src/app_modules/event/fun/get/get_list_riwayat_saya.ts +++ b/src/app_modules/event/fun/get/get_list_riwayat_saya.ts @@ -1,16 +1,14 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; -import _ from "lodash"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; -export async function event_getListRiwayatSaya({page}: {page: number}) { - const authorId = await user_funGetOneUserId(); +export async function event_getListRiwayatSaya({ page }: { page: number }) { + const userLoginId = await funGetUserIdByToken(); const takeData = 10; const skipData = page * takeData - takeData; - const data = await prisma.event.findMany({ take: takeData, skip: skipData, @@ -18,7 +16,7 @@ export async function event_getListRiwayatSaya({page}: {page: number}) { tanggal: "desc", }, where: { - authorId: authorId, + authorId: userLoginId, eventMaster_StatusId: "1", tanggal: { lte: new Date(), diff --git a/src/app_modules/event/fun/get/status/get_all_draft.ts b/src/app_modules/event/fun/get/status/get_all_draft.ts index 4bcd2da8..2bfcdcb3 100644 --- a/src/app_modules/event/fun/get/status/get_all_draft.ts +++ b/src/app_modules/event/fun/get/status/get_all_draft.ts @@ -1,10 +1,11 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export async function event_getAllDraft({ page }: { page: number }) { - const authorId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); + const takeData = 10; const skipData = page * takeData - takeData; @@ -17,7 +18,7 @@ export async function event_getAllDraft({ page }: { page: number }) { where: { active: true, eventMaster_StatusId: "3", - authorId: authorId, + authorId: userLoginId, }, select: { id: true, diff --git a/src/app_modules/event/fun/get/status/get_all_reject.ts b/src/app_modules/event/fun/get/status/get_all_reject.ts index d6622298..7cb1d020 100644 --- a/src/app_modules/event/fun/get/status/get_all_reject.ts +++ b/src/app_modules/event/fun/get/status/get_all_reject.ts @@ -1,10 +1,11 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export async function event_getAllReject({ page }: { page: number }) { - const authorId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); + const takeData = 10; const skipData = page * takeData - takeData; @@ -17,7 +18,7 @@ export async function event_getAllReject({ page }: { page: number }) { where: { active: true, eventMaster_StatusId: "4", - authorId: authorId, + authorId: userLoginId, }, select: { id: true, diff --git a/src/app_modules/event/fun/get/status/get_all_review.ts b/src/app_modules/event/fun/get/status/get_all_review.ts index 37d84f9a..facb92ba 100644 --- a/src/app_modules/event/fun/get/status/get_all_review.ts +++ b/src/app_modules/event/fun/get/status/get_all_review.ts @@ -1,10 +1,11 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export async function event_getAllReview({ page }: { page: number }) { - const authorId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); + const takeData = 10; const skipData = page * takeData - takeData; @@ -17,7 +18,7 @@ export async function event_getAllReview({ page }: { page: number }) { where: { active: true, eventMaster_StatusId: "2", - authorId: authorId, + authorId: userLoginId, }, select: { id: true, diff --git a/src/app_modules/event/fun/get/status/get_all_status_publish.ts b/src/app_modules/event/fun/get/status/get_all_status_publish.ts index 73dd34af..a4acc07c 100644 --- a/src/app_modules/event/fun/get/status/get_all_status_publish.ts +++ b/src/app_modules/event/fun/get/status/get_all_status_publish.ts @@ -1,10 +1,11 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export async function event_funGetAllStatusPublish({ page }: { page: number }) { - const authorId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); + const takeData = 10; const skipData = page * takeData - takeData; @@ -17,7 +18,7 @@ export async function event_funGetAllStatusPublish({ page }: { page: number }) { where: { active: true, eventMaster_StatusId: "1", - authorId: authorId, + authorId: userLoginId, tanggal: { gte: new Date(), }, diff --git a/src/app_modules/forum/component/komentar_component/komentar_button_more.tsx b/src/app_modules/forum/component/komentar_component/komentar_button_more.tsx index a6b4b9be..40de0bae 100644 --- a/src/app_modules/forum/component/komentar_component/komentar_button_more.tsx +++ b/src/app_modules/forum/component/komentar_component/komentar_button_more.tsx @@ -3,38 +3,30 @@ import { RouterForum } from "@/app/lib/router_hipmi/router_forum"; import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/_global/notif_global/notifikasi_berhasil"; import { - Drawer, - Stack, - Grid, - Button, - Modal, - Title, - Group, ActionIcon, - Text, - Box, - Center, + Button, + Drawer, + Grid, + Group, Loader, + Modal, + Stack, + Text, + Title, } from "@mantine/core"; -import { useDisclosure, useShallowEffect } from "@mantine/hooks"; -import { IconTrash, IconEdit, IconFlag3, IconDots } from "@tabler/icons-react"; +import { useDisclosure } from "@mantine/hooks"; +import { IconDots, IconFlag3, IconTrash } from "@tabler/icons-react"; import { useRouter } from "next/navigation"; import { useState } from "react"; -import { createStyles } from "@mantine/core"; -import ComponentGlobal_V2_LoadingPage from "@/app_modules/_global/loading_page_v2"; -import { useAtom } from "jotai"; -import { gs_forum_loading_edit_posting } from "../../global_state"; -import ComponentForum_LoadingDrawer from "../loading_drawer"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; -import { forum_funDeletePostingById } from "../../fun/delete/fun_delete_posting_by_id"; -import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/_global/notif_global/notifikasi_gagal"; -import { forum_funDeleteKomentarById } from "../../fun/delete/fun_delete_komentar_by_id"; -import { forum_funGetAllKomentarById } from "../../fun/get/get_all_komentar_by_id"; import { AccentColor, MainColor, } from "@/app_modules/_global/color/color_pallet"; +import ComponentGlobal_V2_LoadingPage from "@/app_modules/_global/loading_page_v2"; +import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/_global/notif_global/notifikasi_gagal"; +import { forum_funDeleteKomentarById } from "../../fun/delete/fun_delete_komentar_by_id"; +import { forum_funGetAllKomentarById } from "../../fun/get/get_all_komentar_by_id"; export default function ComponentForum_KomentarButtonMore({ userId, @@ -200,7 +192,9 @@ function ButtonDelete({ return ( <> - Yakin menghapus komentar ini ? + + Yakin menghapus komentar ini ? + +
+ + + ); +} diff --git a/src/app_modules/job/component/button/comp_button_update.tsx b/src/app_modules/job/component/button/comp_button_update_data.tsx similarity index 97% rename from src/app_modules/job/component/button/comp_button_update.tsx rename to src/app_modules/job/component/button/comp_button_update_data.tsx index 225cb84d..edee3ede 100644 --- a/src/app_modules/job/component/button/comp_button_update.tsx +++ b/src/app_modules/job/component/button/comp_button_update_data.tsx @@ -15,7 +15,7 @@ import { MODEL_JOB } from "../../model/interface"; import { funGlobal_UploadToStorage } from "@/app_modules/_global/fun"; import { DIRECTORY_ID } from "@/app/lib"; -export function Job_ComponentButtonUpdate({ +export function Job_ComponentButtonUpdateData({ value, file, }: { @@ -48,6 +48,7 @@ export function Job_ComponentButtonUpdate({ const updateWithFile = await job_EditById({ data: value, + fileId: uploadFile.data.id, }); if (updateWithFile.status !== 200) return ComponentGlobal_NotifikasiGagal(updateWithFile.message); diff --git a/src/app_modules/job/component/button/create_button.tsx b/src/app_modules/job/component/button/create_button.tsx deleted file mode 100644 index 27e83118..00000000 --- a/src/app_modules/job/component/button/create_button.tsx +++ /dev/null @@ -1,66 +0,0 @@ -"use client"; - -import { RouterJob } from "@/app/lib/router_hipmi/router_job"; -import { AccentColor } from "@/app_modules/_global/color/color_pallet"; -import { Affix, rem, ActionIcon, Loader, Box } from "@mantine/core"; -import { IconPencilPlus } from "@tabler/icons-react"; -import { useRouter } from "next/navigation"; -import { useState } from "react"; - -export default function ComponentJob_CreateButton() { - const router = useRouter(); - const [isLoading, setLoading] = useState(false); - - return ( - <> - { - setLoading(true); - router.push(RouterJob.create); - }} - > - {isLoading ? ( - - ) : ( - - )} - - - {/* - { - setLoading(true); - router.push(RouterJob.create); - }} - > - {isLoading ? ( - - ) : ( - - )} - - */} - - ); -} diff --git a/src/app_modules/job/component/index.ts b/src/app_modules/job/component/index.ts index 616e108c..810f60b3 100644 --- a/src/app_modules/job/component/index.ts +++ b/src/app_modules/job/component/index.ts @@ -1,7 +1,9 @@ import Job_ComponentButtonSaveCreate from "./button/comp_button_save_create"; -import { Job_ComponentButtonUpdate } from "./button/comp_button_update"; +import { Job_ComponentButtonUpdateBeranda } from "./button/comp_button_update_beranda"; +import { Job_ComponentButtonUpdateData } from "./button/comp_button_update_data"; import { Job_ComponentBoxUploadImage } from "./detail/comp_box_upload_image"; export { Job_ComponentButtonSaveCreate }; export { Job_ComponentBoxUploadImage }; -export { Job_ComponentButtonUpdate }; +export { Job_ComponentButtonUpdateData as Job_ComponentButtonUpdate }; +export { Job_ComponentButtonUpdateBeranda }; diff --git a/src/app_modules/job/create/view.tsx b/src/app_modules/job/create/view.tsx index 23c6bcce..c111b3ee 100644 --- a/src/app_modules/job/create/view.tsx +++ b/src/app_modules/job/create/view.tsx @@ -2,7 +2,6 @@ import { AspectRatio, - Box, Button, Center, FileButton, @@ -29,13 +28,11 @@ import { import { ComponentGlobal_BoxInformation, + ComponentGlobal_BoxUploadImage, ComponentGlobal_CardStyles, ComponentGlobal_InputCountDown, } from "@/app_modules/_global/component"; -import { - Job_ComponentBoxUploadImage, - Job_ComponentButtonSaveCreate, -} from "../component"; +import { Job_ComponentButtonSaveCreate } from "../component"; import { defaultDeskripsi, defaultSyarat } from "../component/default_value"; export default function Job_Create() { @@ -57,7 +54,7 @@ export default function Job_Create() { - + {img ? ( )} - +
{ return import("react-quill"); }, { ssr: false } ); -import "react-quill/dist/quill.snow.css"; -import { Job_ComponentBoxUploadImage, Job_ComponentButtonUpdate } from "../component"; -import { APIs } from "@/app/lib"; -import { ComponentGlobal_CardStyles } from "@/app_modules/_global/component"; export default function Job_Edit({ dataJob }: { dataJob: MODEL_JOB }) { const [value, setValue] = useState(dataJob); @@ -63,7 +45,7 @@ export default function Job_Edit({ dataJob }: { dataJob: MODEL_JOB }) { <> - + {value.imageId ? ( )} - +
{ + onLoadNewData({ + onLoad(val) { + setData(val); + }, + }); + + mqtt_client.subscribe("Job_new_post"); + mqtt_client.on("message", (topic, message) => { + if (topic === "Job_new_post") { + setIsNewPost(true); + } + }); + }, [setIsNewPost, setData]); + + async function onLoadNewData({ onLoad }: { onLoad: (val: any) => void }) { + const loadData = await job_getAllListPublish({ page: 1 }); + onLoad(loadData); + } + return ( <> - {/* */} - + {isNewPost && ( + setIsNewPost(val)} + onSetData={(val) => setData(val)} + /> + )} + } + icon={} placeholder="Pekerjaan apa yang anda cari ?" onChange={(val) => { onSearch(val.currentTarget.value); diff --git a/src/app_modules/katalog/component/index.ts b/src/app_modules/katalog/component/index.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/app_modules/katalog/portofolio/component/button/comp_button_selanjutnya.tsx b/src/app_modules/katalog/portofolio/component/button/comp_button_selanjutnya.tsx new file mode 100644 index 00000000..6b4e307a --- /dev/null +++ b/src/app_modules/katalog/portofolio/component/button/comp_button_selanjutnya.tsx @@ -0,0 +1,83 @@ +import { RouterMap } from "@/app/lib/router_hipmi/router_map"; +import { MainColor } from "@/app_modules/_global/color"; +import { + ComponentGlobal_NotifikasiGagal, + ComponentGlobal_NotifikasiPeringatan, +} from "@/app_modules/_global/notif_global"; +import { MODEL_PORTOFOLIO_OLD } from "@/app_modules/model_global/portofolio"; +import { Button } from "@mantine/core"; +import _ from "lodash"; + +import { useRouter } from "next/navigation"; +import { useState } from "react"; +import funCreatePortofolio from "../../fun/fun_create_portofolio"; + +export function Portofolio_ComponentButtonSelanjutnya({ + profileId, + dataPorto, + file, + dataMedsos, + setIsFile, +}: { + profileId: string; + dataPorto: MODEL_PORTOFOLIO_OLD; + file: FormData; + dataMedsos: any; + setIsFile: any; +}) { + const router = useRouter(); + const [loading, setLoading] = useState(false); + + async function onSubmit() { + const porto = { + namaBisnis: dataPorto.namaBisnis, + masterBidangBisnisId: dataPorto.masterBidangBisnisId, + alamatKantor: dataPorto.alamatKantor, + tlpn: dataPorto.tlpn, + deskripsi: dataPorto.deskripsi, + }; + + if (_.values(porto).includes("")) + return ComponentGlobal_NotifikasiPeringatan("Lengkapi Data"); + if (file === null) { + setIsFile(true); + return null; + } + + const gambar = new FormData(); + gambar.append("file", file as any); + + const res = await funCreatePortofolio( + profileId, + porto as any, + gambar, + dataMedsos + ); + if (res.status === 201) { + setLoading(true); + // ComponentGlobal_NotifikasiBerhasil("Berhasil disimpan"); + router.replace(RouterMap.create + res.id, { scroll: false }); + } else { + ComponentGlobal_NotifikasiGagal("Gagal disimpan"); + } + } + return ( + <> + + + ); +} diff --git a/src/app_modules/katalog/portofolio/component/index.ts b/src/app_modules/katalog/portofolio/component/index.ts index ce8e74ee..ef253d5f 100644 --- a/src/app_modules/katalog/portofolio/component/index.ts +++ b/src/app_modules/katalog/portofolio/component/index.ts @@ -1 +1,4 @@ +import { Portofolio_ComponentButtonSelanjutnya } from "./button/comp_button_selanjutnya"; + export { ComponentPortofolio_DetailDataMap } from "./detail_data_drawer_map"; +export { Portofolio_ComponentButtonSelanjutnya }; diff --git a/src/app_modules/katalog/portofolio/create/view.tsx b/src/app_modules/katalog/portofolio/create/view.tsx index b11ed7fe..760038cb 100644 --- a/src/app_modules/katalog/portofolio/create/view.tsx +++ b/src/app_modules/katalog/portofolio/create/view.tsx @@ -34,6 +34,8 @@ import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.share import { useRouter } from "next/navigation"; import { useState } from "react"; import funCreatePortofolio from "../fun/fun_create_portofolio"; +import { Portofolio_ComponentButtonSelanjutnya } from "../component"; +import { ComponentGlobal_BoxUploadImage } from "@/app_modules/_global/component"; export default function CreatePortofolio({ bidangBisnis, @@ -42,9 +44,7 @@ export default function CreatePortofolio({ bidangBisnis: BIDANG_BISNIS_OLD; profileId: any; }) { - const router = useRouter(); - const [loading, setLoading] = useState(false); - const [value, setValue] = useState({ + const [dataPortofolio, setDataPortofolio] = useState({ namaBisnis: "", masterBidangBisnisId: "", alamatKantor: "", @@ -52,7 +52,7 @@ export default function CreatePortofolio({ deskripsi: "", }); - const [medsos, setMedsos] = useState({ + const [dataMedsos, setDataMedsos] = useState({ facebook: "", twitter: "", instagram: "", @@ -82,8 +82,8 @@ export default function CreatePortofolio({ placeholder="Nama bisnis" maxLength={100} onChange={(val) => { - setValue({ - ...value, + setDataPortofolio({ + ...dataPortofolio, namaBisnis: _.startCase(val.target.value), }); }} @@ -102,8 +102,8 @@ export default function CreatePortofolio({ label: e.name, }))} onChange={(val) => { - setValue({ - ...value, + setDataPortofolio({ + ...dataPortofolio, masterBidangBisnisId: val as any, }); }} @@ -119,8 +119,8 @@ export default function CreatePortofolio({ placeholder="Alamat bisnis" maxLength={100} onChange={(val) => { - setValue({ - ...value, + setDataPortofolio({ + ...dataPortofolio, alamatKantor: val.target.value, }); }} @@ -136,8 +136,8 @@ export default function CreatePortofolio({ placeholder="Nomor telepon " type="number" onChange={(val) => { - setValue({ - ...value, + setDataPortofolio({ + ...dataPortofolio, tlpn: val.target.value, }); }} @@ -157,15 +157,15 @@ export default function CreatePortofolio({ label="Deskripsi" placeholder="Deskripsi singkat mengenai usaha" onChange={(val) => { - setValue({ - ...value, + setDataPortofolio({ + ...dataPortofolio, deskripsi: val.target.value, }); }} /> @@ -182,52 +182,25 @@ export default function CreatePortofolio({ {isFile ? : ""} */} - {img ? ( - - + + {img ? ( + Foto - - - ) : ( - - - - - Upload Logo Bisnis - - Masukan logo bisnis anda untuk ditampilkan dalam - portofolio - - - - - - )} + + ) : ( + + Upload Logo Bisnis + + Masukan logo bisnis anda untuk ditampilkan dalam portofolio + + + )} +
{ - setMedsos({ - ...medsos, + setDataMedsos({ + ...dataMedsos, facebook: val.target.value, }); }} @@ -296,8 +269,8 @@ export default function CreatePortofolio({ maxLength={100} placeholder="Instagram" onChange={(val) => { - setMedsos({ - ...medsos, + setDataMedsos({ + ...dataMedsos, instagram: val.target.value, }); }} @@ -312,8 +285,8 @@ export default function CreatePortofolio({ maxLength={100} placeholder="Tiktok" onChange={(val) => { - setMedsos({ - ...medsos, + setDataMedsos({ + ...dataMedsos, tiktok: val.target.value, }); }} @@ -328,8 +301,8 @@ export default function CreatePortofolio({ maxLength={100} placeholder="Twitter" onChange={(val) => { - setMedsos({ - ...medsos, + setDataMedsos({ + ...dataMedsos, twitter: val.target.value, }); }} @@ -344,82 +317,24 @@ export default function CreatePortofolio({ maxLength={100} placeholder="Youtube" onChange={(val) => { - setMedsos({ - ...medsos, + setDataMedsos({ + ...dataMedsos, youtube: val.target.value, }); }} /> - + {/*
 {JSON.stringify(bidangBisnis, null, 2)}
*/} ); } - -async function onSubmit( - router: AppRouterInstance, - profileId: string, - dataPorto: MODEL_PORTOFOLIO_OLD, - file: FormData, - dataMedsos: any, - setLoading: any, - setIsFile: any -) { - const porto = { - namaBisnis: dataPorto.namaBisnis, - masterBidangBisnisId: dataPorto.masterBidangBisnisId, - alamatKantor: dataPorto.alamatKantor, - tlpn: dataPorto.tlpn, - deskripsi: dataPorto.deskripsi, - }; - - if (_.values(porto).includes("")) - return ComponentGlobal_NotifikasiPeringatan("Lengkapi Data"); - if (file === null) { - setIsFile(true); - return null; - } - - const gambar = new FormData(); - gambar.append("file", file as any); - - const res = await funCreatePortofolio( - profileId, - porto as any, - gambar, - dataMedsos - ); - if (res.status === 201) { - setLoading(true); - // ComponentGlobal_NotifikasiBerhasil("Berhasil disimpan"); - router.replace(RouterMap.create + res.id , {scroll: false}); - } else { - ComponentGlobal_NotifikasiGagal("Gagal disimpan"); - } -} diff --git a/src/app_modules/katalog/profile/_component/button/comp_create_new_profile.tsx b/src/app_modules/katalog/profile/_component/button/comp_create_new_profile.tsx new file mode 100644 index 00000000..8dc4def5 --- /dev/null +++ b/src/app_modules/katalog/profile/_component/button/comp_create_new_profile.tsx @@ -0,0 +1,86 @@ +"use client" + +import { RouterHome } from "@/app/lib/router_hipmi/router_home"; +import { MainColor, AccentColor } from "@/app_modules/_global/color"; +import { ComponentGlobal_NotifikasiPeringatan, ComponentGlobal_NotifikasiBerhasil, ComponentGlobal_NotifikasiGagal } from "@/app_modules/_global/notif_global"; +import { validRegex } from "@/app_modules/katalog/component/regular_expressions"; +import { Button } from "@mantine/core"; +import _ from "lodash"; + +import { useState } from "react"; +import funCreateNewProfile from "../../fun/fun_create_profile"; +import { MODEL_PROFILE } from "../../model/interface"; +import { useRouter } from "next/navigation"; + +export function Profile_ComponentCreateNewProfile({ + value, + userLoginId, + filePP, + fileBg, +}: { + value: MODEL_PROFILE; + userLoginId: string; + filePP: FormData; + fileBg: FormData; +}) { + const router = useRouter(); + const [loading, setLoading] = useState(false); + + async function onSubmit() { + const body = { + userId: userLoginId, + name: value.name, + email: value.email, + alamat: value.alamat, + jenisKelamin: value.jenisKelamin, + }; + if (_.values(body).includes("")) + return ComponentGlobal_NotifikasiPeringatan("Lengkapi Data"); + if (!body.email.match(validRegex)) return null; + + const gambarPP = new FormData(); + gambarPP.append("filePP", filePP as any); + + const gambarBG = new FormData(); + gambarBG.append("fileBG", fileBg as any); + + if (!gambarPP) + return ComponentGlobal_NotifikasiPeringatan("Lengkapi foto profile"); + if (!gambarBG) + return ComponentGlobal_NotifikasiPeringatan( + "Lengkapi background profile" + ); + + await funCreateNewProfile(body as any, gambarPP, gambarBG).then((res) => { + if (res.status === 201) { + setLoading(true); + ComponentGlobal_NotifikasiBerhasil("Berhasil Membuat Profile", 3000); + router.push(RouterHome.main_home); + } else { + ComponentGlobal_NotifikasiGagal(res.message); + } + }); + } + + return ( + <> + + + ); +} \ No newline at end of file diff --git a/src/app_modules/katalog/profile/_component/index.ts b/src/app_modules/katalog/profile/_component/index.ts new file mode 100644 index 00000000..7dbcec08 --- /dev/null +++ b/src/app_modules/katalog/profile/_component/index.ts @@ -0,0 +1,3 @@ +import { Profile_ComponentCreateNewProfile } from "./button/comp_create_new_profile"; + +export {Profile_ComponentCreateNewProfile} \ No newline at end of file diff --git a/src/app_modules/katalog/profile/create/view.tsx b/src/app_modules/katalog/profile/create/view.tsx index c6d5a1e1..3d9a3589 100644 --- a/src/app_modules/katalog/profile/create/view.tsx +++ b/src/app_modules/katalog/profile/create/view.tsx @@ -1,14 +1,11 @@ "use client"; -import { RouterHome } from "@/app/lib/router_hipmi/router_home"; -import ComponentGlobal_BoxInformation from "@/app_modules/_global/component/box_information"; import { AccentColor, MainColor, } from "@/app_modules/_global/color/color_pallet"; +import ComponentGlobal_BoxInformation from "@/app_modules/_global/component/box_information"; import ComponentGlobal_ErrorInput from "@/app_modules/_global/component/error_input"; -import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/_global/notif_global/notifikasi_berhasil"; -import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/_global/notif_global/notifikasi_gagal"; import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/notif_global/notifikasi_peringatan"; import { AspectRatio, @@ -25,14 +22,16 @@ import { TextInput, } from "@mantine/core"; import { IconAt, IconCamera, IconUpload } from "@tabler/icons-react"; -import _ from "lodash"; -import { useRouter } from "next/navigation"; import { useState } from "react"; import { validRegex } from "../../component/regular_expressions"; -import funCreateNewProfile from "../fun/fun_create_profile"; -import { MODEL_PROFILE } from "../model/interface"; +import { Profile_ComponentCreateNewProfile } from "../_component"; +import { ComponentGlobal_BoxUploadImage } from "@/app_modules/_global/component"; -export default function CreateProfile({ userId }: { userId: any }) { +export default function CreateProfile({ + userLoginId, +}: { + userLoginId: string; +}) { const [filePP, setFilePP] = useState(null); const [imgPP, setImgPP] = useState(); const [fileBG, setFileBG] = useState(null); @@ -47,14 +46,16 @@ export default function CreateProfile({ userId }: { userId: any }) { return ( <> - + - +
{imgPP ? ( @@ -119,22 +122,20 @@ export default function CreateProfile({ userId }: { userId: any }) { - + - - - {imgBG ? ( - Foto - ) : ( - - - - Upload Background - - - )} - - + + {imgBG ? ( + Foto + ) : ( + + + + Upload Background + + + )} +
- @@ -262,76 +263,3 @@ export default function CreateProfile({ userId }: { userId: any }) { ); } - -function ButtonAction({ - value, - userId, - filePP, - fileBg, -}: { - value: MODEL_PROFILE; - userId: string; - filePP: FormData; - fileBg: FormData; -}) { - const router = useRouter(); - const [loading, setLoading] = useState(false); - - async function onSubmit() { - const body = { - userId: userId, - name: value.name, - email: value.email, - alamat: value.alamat, - jenisKelamin: value.jenisKelamin, - }; - if (_.values(body).includes("")) - return ComponentGlobal_NotifikasiPeringatan("Lengkapi Data"); - if (!body.email.match(validRegex)) return null; - - const gambarPP = new FormData(); - gambarPP.append("filePP", filePP as any); - - const gambarBG = new FormData(); - gambarBG.append("fileBG", fileBg as any); - - if (!gambarPP) - return ComponentGlobal_NotifikasiPeringatan("Lengkapi foto profile"); - if (!gambarBG) - return ComponentGlobal_NotifikasiPeringatan( - "Lengkapi background profile" - ); - - await funCreateNewProfile(body as any, gambarPP, gambarBG).then((res) => { - if (res.status === 201) { - setLoading(true); - ComponentGlobal_NotifikasiBerhasil("Berhasil Membuat Profile", 3000); - router.push(RouterHome.main_home, { scroll: false }); - } else { - ComponentGlobal_NotifikasiGagal(res.message); - } - }); - } - - return ( - <> - - - ); -} diff --git a/src/app_modules/map/fun/create/fun_create_pin.ts b/src/app_modules/map/fun/create/fun_create_pin.ts index a1993ed1..05c00366 100644 --- a/src/app_modules/map/fun/create/fun_create_pin.ts +++ b/src/app_modules/map/fun/create/fun_create_pin.ts @@ -2,14 +2,14 @@ import prisma from "@/app/lib/prisma"; import { RouterMap } from "@/app/lib/router_hipmi/router_map"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import fs from "fs"; import _ from "lodash"; import { revalidatePath } from "next/cache"; import { v4 } from "uuid"; -import fs from "fs"; export async function map_funCreatePin({ data }: { data: any }) { - const authorId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); const gambar: any = data.gambar.get("file"); const fileName = gambar.name; @@ -37,7 +37,7 @@ export async function map_funCreatePin({ data }: { data: any }) { longitude: data.long, namePin: data.namePin, portofolioId: data?.portofolioId, - authorId: authorId, + authorId: userLoginId, imageMapId: uploadImage.id, }, }); diff --git a/src/app_modules/notifikasi/fun/count/fun_count_by_id.ts b/src/app_modules/notifikasi/fun/count/fun_count_by_id.ts index 401bf19f..06b2cadd 100644 --- a/src/app_modules/notifikasi/fun/count/fun_count_by_id.ts +++ b/src/app_modules/notifikasi/fun/count/fun_count_by_id.ts @@ -1,16 +1,16 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export default async function notifikasi_countUserNotifikasi() { - const userId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); const count = await prisma.notifikasi.findMany({ where: { - userId: userId, + userId: userLoginId, isRead: false, - userRoleId: "1" + userRoleId: "1", }, }); diff --git a/src/app_modules/notifikasi/fun/get/get_notifiaksi_by_id.ts b/src/app_modules/notifikasi/fun/get/get_notifiaksi_by_id.ts index 42011099..c6dc2569 100644 --- a/src/app_modules/notifikasi/fun/get/get_notifiaksi_by_id.ts +++ b/src/app_modules/notifikasi/fun/get/get_notifiaksi_by_id.ts @@ -1,7 +1,7 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import _ from "lodash"; export default async function notifikasi_getByUserId({ @@ -11,7 +11,7 @@ export default async function notifikasi_getByUserId({ page: number; kategoriApp?: string; }) { - const userId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); const takeData = 10; const skipData = page * takeData - takeData; @@ -26,7 +26,7 @@ export default async function notifikasi_getByUserId({ { createdAt: "desc" }, ], where: { - userId: userId, + userId: userLoginId, userRoleId: "1", }, }); @@ -44,7 +44,7 @@ export default async function notifikasi_getByUserId({ { createdAt: "desc" }, ], where: { - userId: userId, + userId: userLoginId, userRoleId: "1", kategoriApp: _.upperCase(kategoriApp), }, diff --git a/src/app_modules/user_search/fun/get/get_all_user.ts b/src/app_modules/user_search/fun/get/get_all_user.ts index 407de439..5075930a 100644 --- a/src/app_modules/user_search/fun/get/get_all_user.ts +++ b/src/app_modules/user_search/fun/get/get_all_user.ts @@ -1,9 +1,7 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; -import { redirect } from "next/navigation"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export async function userSearch_getAllUser({ page, @@ -12,11 +10,7 @@ export async function userSearch_getAllUser({ page: number; search?: string; }) { - const authorId = await user_funGetOneUserId(); - if (!authorId) { - redirect(RouterAuth.login); - // return { status: 400, message: "Gagal mendapatkan authorId" }; - } + const userLoginId = await funGetUserIdByToken(); const takeData = 20; const skipData = page * takeData - takeData; @@ -40,7 +34,7 @@ export async function userSearch_getAllUser({ OR: [ { NOT: { - id: authorId, + id: userLoginId, }, }, ], diff --git a/src/app_modules/vote/fun/create/create_hasil.ts b/src/app_modules/vote/fun/create/create_hasil.ts index 7e4bd5dd..3d199d6b 100644 --- a/src/app_modules/vote/fun/create/create_hasil.ts +++ b/src/app_modules/vote/fun/create/create_hasil.ts @@ -1,14 +1,14 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { revalidatePath } from "next/cache"; export async function Vote_funCreateHasil( pilihanVotingId: string, votingId: string ) { - const authorId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); const get = await prisma.voting_DaftarNamaVote.findFirst({ where: { @@ -36,7 +36,7 @@ export async function Vote_funCreateHasil( data: { voting_DaftarNamaVoteId: pilihanVotingId, votingId: votingId, - authorId: authorId, + authorId: userLoginId, }, select: { Voting: { diff --git a/src/app_modules/vote/fun/create/create_pilihan_voting.ts b/src/app_modules/vote/fun/create/create_pilihan_voting.ts index b1f6301b..5112ed52 100644 --- a/src/app_modules/vote/fun/create/create_pilihan_voting.ts +++ b/src/app_modules/vote/fun/create/create_pilihan_voting.ts @@ -1,24 +1,24 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import { revalidatePath } from "next/cache"; export async function Vote_funCreatePilihanVotingById( namaVotingId: string, votingId: string ) { - const authorId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); const create = await prisma.voting_Kontributor.create({ data: { voting_DaftarNamaVoteId: namaVotingId, votingId: votingId, - authorId: authorId, + authorId: userLoginId, }, }); - if(!create) return {status: 400, message: "Gagal Voting"} + if (!create) return { status: 400, message: "Gagal Voting" }; revalidatePath("/dev/vote/detail/main/"); - return {status: 201, message: "Berhasil Voting"} + return { status: 201, message: "Berhasil Voting" }; } diff --git a/src/app_modules/vote/fun/create/create_vote.ts b/src/app_modules/vote/fun/create/create_vote.ts index 8b356660..d1779cac 100644 --- a/src/app_modules/vote/fun/create/create_vote.ts +++ b/src/app_modules/vote/fun/create/create_vote.ts @@ -1,19 +1,13 @@ "use server"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; -import { MODEL_VOTING } from "../../model/interface"; import prisma from "@/app/lib/prisma"; -import { revalidatePath } from "next/cache"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; import _ from "lodash"; -import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; -import { redirect } from "next/navigation"; +import { revalidatePath } from "next/cache"; +import { MODEL_VOTING } from "../../model/interface"; export async function Vote_funCreate(req: MODEL_VOTING, listVote: any[]) { - const authorId = await user_funGetOneUserId(); - if (!authorId) { - redirect(RouterAuth.login); - // return { status: 400, message: "Gagal mendapatkan authorId" }; - } + const userLoginId = await funGetUserIdByToken(); const create = await prisma.voting.create({ data: { @@ -21,7 +15,7 @@ export async function Vote_funCreate(req: MODEL_VOTING, listVote: any[]) { deskripsi: req.deskripsi, awalVote: req.awalVote, akhirVote: req.akhirVote, - authorId: authorId, + authorId: userLoginId, }, select: { id: true, diff --git a/src/app_modules/vote/fun/get/cek_kontributor_by_id.ts b/src/app_modules/vote/fun/get/cek_kontributor_by_id.ts index bae7680d..06210b1f 100644 --- a/src/app_modules/vote/fun/get/cek_kontributor_by_id.ts +++ b/src/app_modules/vote/fun/get/cek_kontributor_by_id.ts @@ -1,21 +1,21 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export async function Vote_cekKontributorById(votingId: string) { - const UserId = await user_funGetOneUserId() - + const userLoginId = await funGetUserIdByToken(); + const cek = await prisma.voting_Kontributor.count({ where: { - authorId: UserId, + authorId: userLoginId, votingId: votingId, }, }); - if (cek > 0) { - return true; - } else { - return false; - } + if (cek > 0) { + return true; + } else { + return false; + } } diff --git a/src/app_modules/vote/fun/get/get_all_list_publish.ts b/src/app_modules/vote/fun/get/get_all_list_publish.ts index 8d4b5b10..457efbc0 100644 --- a/src/app_modules/vote/fun/get/get_all_list_publish.ts +++ b/src/app_modules/vote/fun/get/get_all_list_publish.ts @@ -1,7 +1,6 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; export async function vote_getAllListPublish({ page, diff --git a/src/app_modules/vote/fun/get/get_all_list_riwayat_saya.ts b/src/app_modules/vote/fun/get/get_all_list_riwayat_saya.ts index ac7704f9..628078dd 100644 --- a/src/app_modules/vote/fun/get/get_all_list_riwayat_saya.ts +++ b/src/app_modules/vote/fun/get/get_all_list_riwayat_saya.ts @@ -1,16 +1,11 @@ "use server"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; import prisma from "@/app/lib/prisma"; -import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; -import { redirect } from "next/navigation"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export async function Vote_getAllListRiwayatSaya({ page }: { page: number }) { - const authorId = await user_funGetOneUserId(); - if (!authorId) { - redirect(RouterAuth.login); - // return { status: 400, message: "Gagal mendapatkan authorId" }; - } + const userLoginId = await funGetUserIdByToken(); + const takeData = 5; const skipData = page * takeData - takeData; @@ -23,7 +18,7 @@ export async function Vote_getAllListRiwayatSaya({ page }: { page: number }) { }, where: { voting_StatusId: "1", - authorId: authorId, + authorId: userLoginId, isActive: true, akhirVote: { lte: new Date(), diff --git a/src/app_modules/vote/fun/get/get_list_kontribusi_by_author_id.ts b/src/app_modules/vote/fun/get/get_list_kontribusi_by_author_id.ts index 4372159f..be51501d 100644 --- a/src/app_modules/vote/fun/get/get_list_kontribusi_by_author_id.ts +++ b/src/app_modules/vote/fun/get/get_list_kontribusi_by_author_id.ts @@ -1,17 +1,17 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export async function vote_getAllListKontribusiByAuthorId({ page, }: { page: number; }) { + const userLoginId = await funGetUserIdByToken(); const takeData = 5; const skipData = page * takeData - takeData; - const authorId = await user_funGetOneUserId(); const data = await prisma.voting_Kontributor.findMany({ take: takeData, skip: skipData, @@ -19,7 +19,7 @@ export async function vote_getAllListKontribusiByAuthorId({ createdAt: "asc", }, where: { - authorId: authorId, + authorId: userLoginId, }, select: { id: true, diff --git a/src/app_modules/vote/fun/get/get_one_pilihan_voting_by_user_id.ts b/src/app_modules/vote/fun/get/get_one_pilihan_voting_by_user_id.ts index a447cf52..25b21565 100644 --- a/src/app_modules/vote/fun/get/get_one_pilihan_voting_by_user_id.ts +++ b/src/app_modules/vote/fun/get/get_one_pilihan_voting_by_user_id.ts @@ -1,13 +1,14 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export async function Vote_getOnePilihanVotingByUserId(votingId: string) { - const userId = await user_funGetOneUserId(); + const userLoginId = await funGetUserIdByToken(); + const get = await prisma.voting_Kontributor.findFirst({ where: { - authorId: userId, + authorId: userLoginId, votingId: votingId, }, select: { diff --git a/src/app_modules/vote/fun/get/status/get_all_draft.tsx b/src/app_modules/vote/fun/get/status/get_all_draft.tsx index b0a9d9b8..3506ed40 100644 --- a/src/app_modules/vote/fun/get/status/get_all_draft.tsx +++ b/src/app_modules/vote/fun/get/status/get_all_draft.tsx @@ -1,16 +1,11 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; -import { redirect } from "next/navigation"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export async function vote_getAllDraft({ page }: { page: number }) { - const authorId = await user_funGetOneUserId(); - if (!authorId) { - redirect(RouterAuth.login); - // return { status: 400, message: "Gagal mendapatkan authorId" }; - } + const userLoginId = await funGetUserIdByToken(); + const takeData = 10; const skipData = page * takeData - takeData; @@ -22,7 +17,7 @@ export async function vote_getAllDraft({ page }: { page: number }) { }, where: { voting_StatusId: "3", - authorId: authorId, + authorId: userLoginId, isActive: true, }, }); diff --git a/src/app_modules/vote/fun/get/status/get_all_publish.tsx b/src/app_modules/vote/fun/get/status/get_all_publish.tsx index 91de0df8..49571517 100644 --- a/src/app_modules/vote/fun/get/status/get_all_publish.tsx +++ b/src/app_modules/vote/fun/get/status/get_all_publish.tsx @@ -1,16 +1,10 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; -import { redirect } from "next/navigation"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export async function vote_getAllPublish({ page }: { page: number }) { - const authorId = await user_funGetOneUserId(); - if (!authorId) { - redirect(RouterAuth.login); - // return { status: 400, message: "Gagal mendapatkan authorId" }; - } + const userLoginId = await funGetUserIdByToken(); const takeData = 5; const skipData = page * takeData - takeData; @@ -23,7 +17,7 @@ export async function vote_getAllPublish({ page }: { page: number }) { }, where: { voting_StatusId: "1", - authorId: authorId, + authorId: userLoginId, isActive: true, akhirVote: { gte: new Date(), diff --git a/src/app_modules/vote/fun/get/status/get_all_reject.tsx b/src/app_modules/vote/fun/get/status/get_all_reject.tsx index b332cb2d..fd6f2f60 100644 --- a/src/app_modules/vote/fun/get/status/get_all_reject.tsx +++ b/src/app_modules/vote/fun/get/status/get_all_reject.tsx @@ -1,16 +1,10 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; -import { redirect } from "next/navigation"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export async function vote_getAllReject({ page }: { page: number }) { - const authorId = await user_funGetOneUserId(); - if (!authorId) { - redirect(RouterAuth.login); - // return { status: 400, message: "Gagal mendapatkan authorId" }; - } + const userLoginId = await funGetUserIdByToken(); const takeData = 10; const skipData = page * takeData - takeData; @@ -23,7 +17,7 @@ export async function vote_getAllReject({ page }: { page: number }) { }, where: { voting_StatusId: "4", - authorId: authorId, + authorId: userLoginId, isActive: true, }, }); diff --git a/src/app_modules/vote/fun/get/status/get_all_review.tsx b/src/app_modules/vote/fun/get/status/get_all_review.tsx index 59e89ad9..05411c7b 100644 --- a/src/app_modules/vote/fun/get/status/get_all_review.tsx +++ b/src/app_modules/vote/fun/get/status/get_all_review.tsx @@ -1,16 +1,10 @@ "use server"; import prisma from "@/app/lib/prisma"; -import { RouterAuth } from "@/app/lib/router_hipmi/router_auth"; -import { user_funGetOneUserId } from "@/app_modules/fun_global/get_user_token"; -import { redirect } from "next/navigation"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; export async function vote_getAllReview({ page }: { page: number }) { - const authorId = await user_funGetOneUserId(); - if (!authorId) { - redirect(RouterAuth.login); - // return { status: 400, message: "Gagal mendapatkan authorId" }; - } + const userLoginId = await funGetUserIdByToken(); const takeData = 10; const skipData = page * takeData - takeData; @@ -23,7 +17,7 @@ export async function vote_getAllReview({ page }: { page: number }) { }, where: { voting_StatusId: "2", - authorId: authorId, + authorId: userLoginId, isActive: true, }, }); diff --git a/src/lib/routes.ts b/src/lib/routes.ts new file mode 100644 index 00000000..c339a1f9 --- /dev/null +++ b/src/lib/routes.ts @@ -0,0 +1,448 @@ +export const pages = { + "/": "/", + "/zCoba": "/zCoba", + "/makuro": "/makuro", + "/dev/vote/splash": "/dev/vote/splash", + "/dev/vote/main/status": "/dev/vote/main/status", + "/dev/vote/main/riwayat": "/dev/vote/main/riwayat", + "/dev/vote/main/kontribusi": "/dev/vote/main/kontribusi", + "/dev/vote/main/beranda": "/dev/vote/main/beranda", + "/dev/vote/edit/[id]": ({ id }: { id: string }) => `/dev/vote/edit/${id}`, + "/dev/vote/detail/semua_riwayat/[id]": ({ id }: { id: string }) => + `/dev/vote/detail/semua_riwayat/${id}`, + "/dev/vote/detail/riwayat_saya/[id]": ({ id }: { id: string }) => + `/dev/vote/detail/riwayat_saya/${id}`, + "/dev/vote/detail/review/[id]": ({ id }: { id: string }) => + `/dev/vote/detail/review/${id}`, + "/dev/vote/detail/reject/[id]": ({ id }: { id: string }) => + `/dev/vote/detail/reject/${id}`, + "/dev/vote/detail/publish/[id]": ({ id }: { id: string }) => + `/dev/vote/detail/publish/${id}`, + "/dev/vote/detail/main/[id]": ({ id }: { id: string }) => + `/dev/vote/detail/main/${id}`, + "/dev/vote/detail/kontribusi/[id]": ({ id }: { id: string }) => + `/dev/vote/detail/kontribusi/${id}`, + "/dev/vote/detail/draft/[id]": ({ id }: { id: string }) => + `/dev/vote/detail/draft/${id}`, + "/dev/vote/detail/daftar-kontributor/[id]": ({ id }: { id: string }) => + `/dev/vote/detail/daftar-kontributor/${id}`, + "/dev/vote/create": "/dev/vote/create", + "/dev/user-search": "/dev/user-search", + "/dev/user-not-active": "/dev/user-not-active", + "/dev/splash/admin": "/dev/splash/admin", + "/dev/profile/upload/foto/[id]": ({ id }: { id: string }) => + `/dev/profile/upload/foto/${id}`, + "/dev/profile/upload/background/[id]": ({ id }: { id: string }) => + `/dev/profile/upload/background/${id}`, + "/dev/profile/edit/[id]": ({ id }: { id: string }) => + `/dev/profile/edit/${id}`, + "/dev/profile/create": "/dev/profile/create", + "/dev/portofolio/main/[id]": ({ id }: { id: string }) => + `/dev/portofolio/main/${id}`, + "/dev/portofolio/edit/medsos/[id]": ({ id }: { id: string }) => + `/dev/portofolio/edit/medsos/${id}`, + "/dev/portofolio/edit/logo/[id]": ({ id }: { id: string }) => + `/dev/portofolio/edit/logo/${id}`, + "/dev/portofolio/edit/data/[id]": ({ id }: { id: string }) => + `/dev/portofolio/edit/data/${id}`, + "/dev/portofolio/daftar-portofolio/[id]": ({ id }: { id: string }) => + `/dev/portofolio/daftar-portofolio/${id}`, + "/dev/portofolio/create/[id]": ({ id }: { id: string }) => + `/dev/portofolio/create/${id}`, + "/dev/notifikasi": "/dev/notifikasi", + "/dev/map/splash": "/dev/map/splash", + "/dev/map/main": "/dev/map/main", + "/dev/map/edit/[id]": ({ id }: { id: string }) => `/dev/map/edit/${id}`, + "/dev/map/custom-pin/[id]": ({ id }: { id: string }) => + `/dev/map/custom-pin/${id}`, + "/dev/map/create/[id]": ({ id }: { id: string }) => `/dev/map/create/${id}`, + "/dev/katalog/[id]": ({ id }: { id: string }) => `/dev/katalog/${id}`, + "/dev/job/splash": "/dev/job/splash", + "/dev/job/non_user_view/[id]": ({ id }: { id: string }) => + `/dev/job/non_user_view/${id}`, + "/dev/job/main/status": "/dev/job/main/status", + "/dev/job/main/beranda": "/dev/job/main/beranda", + "/dev/job/main/arsip": "/dev/job/main/arsip", + "/dev/job/edit/[id]": ({ id }: { id: string }) => `/dev/job/edit/${id}`, + "/dev/job/detail/review/[id]": ({ id }: { id: string }) => + `/dev/job/detail/review/${id}`, + "/dev/job/detail/reject/[id]": ({ id }: { id: string }) => + `/dev/job/detail/reject/${id}`, + "/dev/job/detail/publish/[id]": ({ id }: { id: string }) => + `/dev/job/detail/publish/${id}`, + "/dev/job/detail/main/[id]": ({ id }: { id: string }) => + `/dev/job/detail/main/${id}`, + "/dev/job/detail/draft/[id]": ({ id }: { id: string }) => + `/dev/job/detail/draft/${id}`, + "/dev/job/detail/arsip/[id]": ({ id }: { id: string }) => + `/dev/job/detail/arsip/${id}`, + "/dev/job/create": "/dev/job/create", + "/dev/investasi/upload_prospektus/[id]": ({ id }: { id: string }) => + `/dev/investasi/upload_prospektus/${id}`, + "/dev/investasi/upload_dokumen/[id]": ({ id }: { id: string }) => + `/dev/investasi/upload_dokumen/${id}`, + "/dev/investasi/upload_bukti": "/dev/investasi/upload_bukti", + "/dev/investasi/upload": "/dev/investasi/upload", + "/dev/investasi/transfer/[id]": ({ id }: { id: string }) => + `/dev/investasi/transfer/${id}`, + "/dev/investasi/transaksi/proses-transaksi/[id]": ({ id }: { id: string }) => + `/dev/investasi/transaksi/proses-transaksi/${id}`, + "/dev/investasi/transaksi/pembelian/[id]": ({ id }: { id: string }) => + `/dev/investasi/transaksi/pembelian/${id}`, + "/dev/investasi/transaksi/metode-pembayaran/[id]": ({ id }: { id: string }) => + `/dev/investasi/transaksi/metode-pembayaran/${id}`, + "/dev/investasi/transaksi/invoice/[id]": ({ id }: { id: string }) => + `/dev/investasi/transaksi/invoice/${id}`, + "/dev/investasi/status_pesanan/[id]": ({ id }: { id: string }) => + `/dev/investasi/status_pesanan/${id}`, + "/dev/investasi/status-transaksi/gagal/[id]": ({ id }: { id: string }) => + `/dev/investasi/status-transaksi/gagal/${id}`, + "/dev/investasi/status-transaksi/berhasil/[id]": ({ id }: { id: string }) => + `/dev/investasi/status-transaksi/berhasil/${id}`, + "/dev/investasi/proses_transaksi/[id]": ({ id }: { id: string }) => + `/dev/investasi/proses_transaksi/${id}`, + "/dev/investasi/proses_investasi/[id]": ({ id }: { id: string }) => + `/dev/investasi/proses_investasi/${id}`, + "/dev/investasi/metode_transfer/[id]": ({ id }: { id: string }) => + `/dev/investasi/metode_transfer/${id}`, + "/dev/investasi/main": "/dev/investasi/main", + "/dev/investasi/main/transaksi": "/dev/investasi/main/transaksi", + "/dev/investasi/main/saham_saya": "/dev/investasi/main/saham_saya", + "/dev/investasi/main/portofolio": "/dev/investasi/main/portofolio", + "/dev/investasi/list_edit_berita/[id]": ({ id }: { id: string }) => + `/dev/investasi/list_edit_berita/${id}`, + "/dev/investasi/file-view/prospektus/[id]": ({ id }: { id: string }) => + `/dev/investasi/file-view/prospektus/${id}`, + "/dev/investasi/file-view/dokumen/[id]": ({ id }: { id: string }) => + `/dev/investasi/file-view/dokumen/${id}`, + "/dev/investasi/edit_prospektus/[id]": ({ id }: { id: string }) => + `/dev/investasi/edit_prospektus/${id}`, + "/dev/investasi/edit_intro/[id]": ({ id }: { id: string }) => + `/dev/investasi/edit_intro/${id}`, + "/dev/investasi/edit_dokumen/[id]": ({ id }: { id: string }) => + `/dev/investasi/edit_dokumen/${id}`, + "/dev/investasi/edit_berita/[id]": ({ id }: { id: string }) => + `/dev/investasi/edit_berita/${id}`, + "/dev/investasi/edit/[id]": ({ id }: { id: string }) => + `/dev/investasi/edit/${id}`, + "/dev/investasi/dialog_page/transaksi_saham": + "/dev/investasi/dialog_page/transaksi_saham", + "/dev/investasi/dialog_page/create": "/dev/investasi/dialog_page/create", + "/dev/investasi/detail_saham_terbeli/[id]": ({ id }: { id: string }) => + `/dev/investasi/detail_saham_terbeli/${id}`, + "/dev/investasi/detail_prospektus/[id]": ({ id }: { id: string }) => + `/dev/investasi/detail_prospektus/${id}`, + "/dev/investasi/detail_portofolio/review/[id]": ({ id }: { id: string }) => + `/dev/investasi/detail_portofolio/review/${id}`, + "/dev/investasi/detail_portofolio/reject/[id]": ({ id }: { id: string }) => + `/dev/investasi/detail_portofolio/reject/${id}`, + "/dev/investasi/detail_portofolio/publish/[id]": ({ id }: { id: string }) => + `/dev/investasi/detail_portofolio/publish/${id}`, + "/dev/investasi/detail_portofolio/draft/[id]": ({ id }: { id: string }) => + `/dev/investasi/detail_portofolio/draft/${id}`, + "/dev/investasi/detail_dokumen/[id]": ({ id }: { id: string }) => + `/dev/investasi/detail_dokumen/${id}`, + "/dev/investasi/detail_berita/[id]": ({ id }: { id: string }) => + `/dev/investasi/detail_berita/${id}`, + "/dev/investasi/detail/saham/[id]": ({ id }: { id: string }) => + `/dev/investasi/detail/saham/${id}`, + "/dev/investasi/detail/[id]": ({ id }: { id: string }) => + `/dev/investasi/detail/${id}`, + "/dev/investasi/create_berita/[id]": ({ id }: { id: string }) => + `/dev/investasi/create_berita/${id}`, + "/dev/investasi/create": "/dev/investasi/create", + "/dev/investasi/berita/[id]": ({ id }: { id: string }) => + `/dev/investasi/berita/${id}`, + "/dev/home": "/dev/home", + "/dev/forum/splash": "/dev/forum/splash", + "/dev/forum/report/posting-lainnya/[id]": ({ id }: { id: string }) => + `/dev/forum/report/posting-lainnya/${id}`, + "/dev/forum/report/posting/[id]": ({ id }: { id: string }) => + `/dev/forum/report/posting/${id}`, + "/dev/forum/report/komentar-lainnya/[id]": ({ id }: { id: string }) => + `/dev/forum/report/komentar-lainnya/${id}`, + "/dev/forum/report/komentar/[id]": ({ id }: { id: string }) => + `/dev/forum/report/komentar/${id}`, + "/dev/forum/main": "/dev/forum/main", + "/dev/forum/komentar/[id]": ({ id }: { id: string }) => + `/dev/forum/komentar/${id}`, + "/dev/forum/forumku/[id]": ({ id }: { id: string }) => + `/dev/forum/forumku/${id}`, + "/dev/forum/edit/posting/[id]": ({ id }: { id: string }) => + `/dev/forum/edit/posting/${id}`, + "/dev/forum/edit/komentar/[id]": ({ id }: { id: string }) => + `/dev/forum/edit/komentar/${id}`, + "/dev/forum/detail/report-posting/[id]": ({ id }: { id: string }) => + `/dev/forum/detail/report-posting/${id}`, + "/dev/forum/detail/report-komentar/[id]": ({ id }: { id: string }) => + `/dev/forum/detail/report-komentar/${id}`, + "/dev/forum/detail/main-detail/[id]": ({ id }: { id: string }) => + `/dev/forum/detail/main-detail/${id}`, + "/dev/forum/create": "/dev/forum/create", + "/dev/event/splash": "/dev/event/splash", + "/dev/event/main/status_page": "/dev/event/main/status_page", + "/dev/event/main/riwayat": "/dev/event/main/riwayat", + "/dev/event/main/kontribusi": "/dev/event/main/kontribusi", + "/dev/event/main/beranda": "/dev/event/main/beranda", + "/dev/event/edit/[id]": ({ id }: { id: string }) => `/dev/event/edit/${id}`, + "/dev/event/detail/riwayat/[id]": ({ id }: { id: string }) => + `/dev/event/detail/riwayat/${id}`, + "/dev/event/detail/review/[id]": ({ id }: { id: string }) => + `/dev/event/detail/review/${id}`, + "/dev/event/detail/reject/[id]": ({ id }: { id: string }) => + `/dev/event/detail/reject/${id}`, + "/dev/event/detail/publish/[id]": ({ id }: { id: string }) => + `/dev/event/detail/publish/${id}`, + "/dev/event/detail/main/[id]": ({ id }: { id: string }) => + `/dev/event/detail/main/${id}`, + "/dev/event/detail/kontribusi/[id]": ({ id }: { id: string }) => + `/dev/event/detail/kontribusi/${id}`, + "/dev/event/detail/draft/[id]": ({ id }: { id: string }) => + `/dev/event/detail/draft/${id}`, + "/dev/event/create": "/dev/event/create", + "/dev/donasi/proses_donasi/proses_transaksi/[id]": ({ id }: { id: string }) => + `/dev/donasi/proses_donasi/proses_transaksi/${id}`, + "/dev/donasi/proses_donasi/metode_pembayaran/[id]": ({ + id, + }: { + id: string; + }) => `/dev/donasi/proses_donasi/metode_pembayaran/${id}`, + "/dev/donasi/proses_donasi/masukan_donasi/[id]": ({ id }: { id: string }) => + `/dev/donasi/proses_donasi/masukan_donasi/${id}`, + "/dev/donasi/proses_donasi/invoice/[id]": ({ id }: { id: string }) => + `/dev/donasi/proses_donasi/invoice/${id}`, + "/dev/donasi/penggalang_dana/[id]": ({ id }: { id: string }) => + `/dev/donasi/penggalang_dana/${id}`, + "/dev/donasi/pencairan_dana/[id]": ({ id }: { id: string }) => + `/dev/donasi/pencairan_dana/${id}`, + "/dev/donasi/page_pop_up/create": "/dev/donasi/page_pop_up/create", + "/dev/donasi/notif_page/[id]": ({ id }: { id: string }) => + `/dev/donasi/notif_page/${id}`, + "/dev/donasi/main/galang_dana": "/dev/donasi/main/galang_dana", + "/dev/donasi/main/donasi_saya": "/dev/donasi/main/donasi_saya", + "/dev/donasi/main/beranda": "/dev/donasi/main/beranda", + "/dev/donasi/list_kabar/[id]": ({ id }: { id: string }) => + `/dev/donasi/list_kabar/${id}`, + "/dev/donasi/kabar/[id]": ({ id }: { id: string }) => + `/dev/donasi/kabar/${id}`, + "/dev/donasi/edit/update_kabar/[id]": ({ id }: { id: string }) => + `/dev/donasi/edit/update_kabar/${id}`, + "/dev/donasi/edit/edit_rekening/[id]": ({ id }: { id: string }) => + `/dev/donasi/edit/edit_rekening/${id}`, + "/dev/donasi/edit/edit_donasi/[id]": ({ id }: { id: string }) => + `/dev/donasi/edit/edit_donasi/${id}`, + "/dev/donasi/edit/edit_cerita/[id]": ({ id }: { id: string }) => + `/dev/donasi/edit/edit_cerita/${id}`, + "/dev/donasi/donatur/[id]": ({ id }: { id: string }) => + `/dev/donasi/donatur/${id}`, + "/dev/donasi/detail/detail_review/[id]": ({ id }: { id: string }) => + `/dev/donasi/detail/detail_review/${id}`, + "/dev/donasi/detail/detail_reject/[id]": ({ id }: { id: string }) => + `/dev/donasi/detail/detail_reject/${id}`, + "/dev/donasi/detail/detail_publish/[id]": ({ id }: { id: string }) => + `/dev/donasi/detail/detail_publish/${id}`, + "/dev/donasi/detail/detail_notif/[id]": ({ id }: { id: string }) => + `/dev/donasi/detail/detail_notif/${id}`, + "/dev/donasi/detail/detail_main/[id]": ({ id }: { id: string }) => + `/dev/donasi/detail/detail_main/${id}`, + "/dev/donasi/detail/detail_kabar/[id]": ({ id }: { id: string }) => + `/dev/donasi/detail/detail_kabar/${id}`, + "/dev/donasi/detail/detail_draft/[id]": ({ id }: { id: string }) => + `/dev/donasi/detail/detail_draft/${id}`, + "/dev/donasi/detail/detail_donasi_saya/[id]": ({ id }: { id: string }) => + `/dev/donasi/detail/detail_donasi_saya/${id}`, + "/dev/donasi/create/create_kabar/[id]": ({ id }: { id: string }) => + `/dev/donasi/create/create_kabar/${id}`, + "/dev/donasi/create/create_donasi": "/dev/donasi/create/create_donasi", + "/dev/donasi/create/cerita_penggalang/[id]": ({ id }: { id: string }) => + `/dev/donasi/create/cerita_penggalang/${id}`, + "/dev/donasi/cerita_penggalang/[id]": ({ id }: { id: string }) => + `/dev/donasi/cerita_penggalang/${id}`, + "/dev/donasi/bukti-transfer/[id]": ({ id }: { id: string }) => + `/dev/donasi/bukti-transfer/${id}`, + "/dev/crowd/splash": "/dev/crowd/splash", + "/dev/crowd/main": "/dev/crowd/main", + "/dev/colab/splash": "/dev/colab/splash", + "/dev/colab/main/status": "/dev/colab/main/status", + "/dev/colab/main/proyek": "/dev/colab/main/proyek", + "/dev/colab/main/notifikasi": "/dev/colab/main/notifikasi", + "/dev/colab/main/grup": "/dev/colab/main/grup", + "/dev/colab/main/beranda": "/dev/colab/main/beranda", + "/dev/colab/edit/[id]": ({ id }: { id: string }) => `/dev/colab/edit/${id}`, + "/dev/colab/detail/status/review/[id]": ({ id }: { id: string }) => + `/dev/colab/detail/status/review/${id}`, + "/dev/colab/detail/status/reject/[id]": ({ id }: { id: string }) => + `/dev/colab/detail/status/reject/${id}`, + "/dev/colab/detail/status/publish/[id]": ({ id }: { id: string }) => + `/dev/colab/detail/status/publish/${id}`, + "/dev/colab/detail/proyek/saya/[id]": ({ id }: { id: string }) => + `/dev/colab/detail/proyek/saya/${id}`, + "/dev/colab/detail/proyek/partisipasi/[id]": ({ id }: { id: string }) => + `/dev/colab/detail/proyek/partisipasi/${id}`, + "/dev/colab/detail/notifikasi/[id]": ({ id }: { id: string }) => + `/dev/colab/detail/notifikasi/${id}`, + "/dev/colab/detail/main_detail/[id]": ({ id }: { id: string }) => + `/dev/colab/detail/main_detail/${id}`, + "/dev/colab/detail/info-grup/[id]": ({ id }: { id: string }) => + `/dev/colab/detail/info-grup/${id}`, + "/dev/colab/detail/group/[id]": ({ id }: { id: string }) => + `/dev/colab/detail/group/${id}`, + "/dev/colab/create": "/dev/colab/create", + "/dev/check-cookies": "/dev/check-cookies", + "/dev/auth/validasi/[id]": ({ id }: { id: string }) => + `/dev/auth/validasi/${id}`, + "/dev/auth/splash": "/dev/auth/splash", + "/dev/auth/register/[id]": ({ id }: { id: string }) => + `/dev/auth/register/${id}`, + "/dev/auth/login": "/dev/auth/login", + "/dev/admin/vote/main": "/dev/admin/vote/main", + "/dev/admin/vote/child/table_review": "/dev/admin/vote/child/table_review", + "/dev/admin/vote/child/table_reject": "/dev/admin/vote/child/table_reject", + "/dev/admin/vote/child/table_publish": "/dev/admin/vote/child/table_publish", + "/dev/admin/vote/child/riwayat": "/dev/admin/vote/child/riwayat", + "/dev/admin/user-access": "/dev/admin/user-access", + "/dev/admin/map": "/dev/admin/map", + "/dev/admin/main/dashboard": "/dev/admin/main/dashboard", + "/dev/admin/job/main": "/dev/admin/job/main", + "/dev/admin/job/detail/poster/[id]": ({ id }: { id: string }) => + `/dev/admin/job/detail/poster/${id}`, + "/dev/admin/job/child/review": "/dev/admin/job/child/review", + "/dev/admin/job/child/reject": "/dev/admin/job/child/reject", + "/dev/admin/job/child/publish": "/dev/admin/job/child/publish", + "/dev/admin/job/child/arsip": "/dev/admin/job/child/arsip", + "/dev/admin/investasi/table_status/review": + "/dev/admin/investasi/table_status/review", + "/dev/admin/investasi/table_status/reject": + "/dev/admin/investasi/table_status/reject", + "/dev/admin/investasi/table_status/publish": + "/dev/admin/investasi/table_status/publish", + "/dev/admin/investasi/sub-menu/review": + "/dev/admin/investasi/sub-menu/review", + "/dev/admin/investasi/sub-menu/reject": + "/dev/admin/investasi/sub-menu/reject", + "/dev/admin/investasi/sub-menu/publish": + "/dev/admin/investasi/sub-menu/publish", + "/dev/admin/investasi/status_transfer": + "/dev/admin/investasi/status_transfer", + "/dev/admin/investasi/main": "/dev/admin/investasi/main", + "/dev/admin/investasi/konfirmasi/[id]": ({ id }: { id: string }) => + `/dev/admin/investasi/konfirmasi/${id}`, + "/dev/admin/investasi/halaman_aksi/[id]": ({ id }: { id: string }) => + `/dev/admin/investasi/halaman_aksi/${id}`, + "/dev/admin/investasi/detail/review/[id]": ({ id }: { id: string }) => + `/dev/admin/investasi/detail/review/${id}`, + "/dev/admin/investasi/detail/reject/[id]": ({ id }: { id: string }) => + `/dev/admin/investasi/detail/reject/${id}`, + "/dev/admin/investasi/detail/publish/[id]": ({ id }: { id: string }) => + `/dev/admin/investasi/detail/publish/${id}`, + "/dev/admin/investasi/bukti-transfer/[id]": ({ id }: { id: string }) => + `/dev/admin/investasi/bukti-transfer/${id}`, + "/dev/admin/forum/sub-menu/report-posting": + "/dev/admin/forum/sub-menu/report-posting", + "/dev/admin/forum/sub-menu/report-komentar": + "/dev/admin/forum/sub-menu/report-komentar", + "/dev/admin/forum/sub-menu/posting": "/dev/admin/forum/sub-menu/posting", + "/dev/admin/forum/sub-detail/report-posting/[id]": ({ id }: { id: string }) => + `/dev/admin/forum/sub-detail/report-posting/${id}`, + "/dev/admin/forum/sub-detail/report-komentar/[id]": ({ + id, + }: { + id: string; + }) => `/dev/admin/forum/sub-detail/report-komentar/${id}`, + "/dev/admin/forum/main": "/dev/admin/forum/main", + "/dev/admin/forum/detail/[id]": ({ id }: { id: string }) => + `/dev/admin/forum/detail/${id}`, + "/dev/admin/event/table/review": "/dev/admin/event/table/review", + "/dev/admin/event/table/reject": "/dev/admin/event/table/reject", + "/dev/admin/event/table/publish": "/dev/admin/event/table/publish", + "/dev/admin/event/main": "/dev/admin/event/main", + "/dev/admin/event/detail/peserta/[id]": ({ id }: { id: string }) => + `/dev/admin/event/detail/peserta/${id}`, + "/dev/admin/event/detail/main-detail": "/dev/admin/event/detail/main-detail", + "/dev/admin/event/child/tipe_acara": "/dev/admin/event/child/tipe_acara", + "/dev/admin/event/child/riwayat": "/dev/admin/event/child/riwayat", + "/dev/admin/donasi/sub-menu/review": "/dev/admin/donasi/sub-menu/review", + "/dev/admin/donasi/sub-menu/reject": "/dev/admin/donasi/sub-menu/reject", + "/dev/admin/donasi/sub-menu/publish": "/dev/admin/donasi/sub-menu/publish", + "/dev/admin/donasi/sub-menu/kategori": "/dev/admin/donasi/sub-menu/kategori", + "/dev/admin/donasi/sub-menu/informasi": + "/dev/admin/donasi/sub-menu/informasi", + "/dev/admin/donasi/sub-detail/transfer-invoice-reimbursement/[id]": ({ + id, + }: { + id: string; + }) => `/dev/admin/donasi/sub-detail/transfer-invoice-reimbursement/${id}`, + "/dev/admin/donasi/sub-detail/transfer-invoice/[id]": ({ + id, + }: { + id: string; + }) => `/dev/admin/donasi/sub-detail/transfer-invoice/${id}`, + "/dev/admin/donasi/proses_transaksi/[id]": ({ id }: { id: string }) => + `/dev/admin/donasi/proses_transaksi/${id}`, + "/dev/admin/donasi/pencairan_dana/[id]": ({ id }: { id: string }) => + `/dev/admin/donasi/pencairan_dana/${id}`, + "/dev/admin/donasi/main": "/dev/admin/donasi/main", + "/dev/admin/donasi/detail/review/[id]": ({ id }: { id: string }) => + `/dev/admin/donasi/detail/review/${id}`, + "/dev/admin/donasi/detail/reject/[id]": ({ id }: { id: string }) => + `/dev/admin/donasi/detail/reject/${id}`, + "/dev/admin/donasi/detail/publish/[id]": ({ id }: { id: string }) => + `/dev/admin/donasi/detail/publish/${id}`, + "/dev/admin/developer": "/dev/admin/developer", + "/dev/admin/colab/sub-menu/reject": "/dev/admin/colab/sub-menu/reject", + "/dev/admin/colab/sub-menu/publish": "/dev/admin/colab/sub-menu/publish", + "/dev/admin/colab/sub-menu/group": "/dev/admin/colab/sub-menu/group", + "/dev/admin/colab/dashboard": "/dev/admin/colab/dashboard", + "/dev/admin/award": "/dev/admin/award", + "/dev/admin/award/main": "/dev/admin/award/main", + "/dev/admin/app-information/main": "/dev/admin/app-information/main", + "/contoh": "/contoh", +}; + +export const apies = { + "/api/test-scroll": "/api/test-scroll", + "/api/seeder": "/api/seeder", + "/api/profile/url_foto/[url]": ({ url }: { url: string }) => + `/api/profile/url_foto/${url}`, + "/api/profile/url_background/[url]": ({ url }: { url: string }) => + `/api/profile/url_background/${url}`, + "/api/profile/foto/[id]": ({ id }: { id: string }) => + `/api/profile/foto/${id}`, + "/api/profile/background/[id]": ({ id }: { id: string }) => + `/api/profile/background/${id}`, + "/api/portofolio/logo/[id]": ({ id }: { id: string }) => + `/api/portofolio/logo/${id}`, + "/api/map/pin/[id]": ({ id }: { id: string }) => `/api/map/pin/${id}`, + "/api/map/foto/[id]": ({ id }: { id: string }) => `/api/map/foto/${id}`, + "/api/job/gambar/[id]": ({ id }: { id: string }) => `/api/job/gambar/${id}`, + "/api/investasi/prospektus/[id]": ({ id }: { id: string }) => + `/api/investasi/prospektus/${id}`, + "/api/investasi/midtrans/[id]": ({ id }: { id: string }) => + `/api/investasi/midtrans/${id}`, + "/api/investasi/gambar/[id]": ({ id }: { id: string }) => + `/api/investasi/gambar/${id}`, + "/api/investasi/dokumen/[id]": ({ id }: { id: string }) => + `/api/investasi/dokumen/${id}`, + "/api/investasi/bukti-transfer/[id]": ({ id }: { id: string }) => + `/api/investasi/bukti-transfer/${id}`, + "/api/donasi/image_cerita/[url]": ({ url }: { url: string }) => + `/api/donasi/image_cerita/${url}`, + "/api/donasi/image/[url]": ({ url }: { url: string }) => + `/api/donasi/image/${url}`, + "/api/donasi/gambar_pencairan/[id]": ({ id }: { id: string }) => + `/api/donasi/gambar_pencairan/${id}`, + "/api/donasi/gambar_kabar/[id]": ({ id }: { id: string }) => + `/api/donasi/gambar_kabar/${id}`, + "/api/donasi/gambar_cerita/[id]": ({ id }: { id: string }) => + `/api/donasi/gambar_cerita/${id}`, + "/api/donasi/gambar_bukti_transfer/[id]": ({ id }: { id: string }) => + `/api/donasi/gambar_bukti_transfer/${id}`, + "/api/donasi/gambar/[id]": ({ id }: { id: string }) => + `/api/donasi/gambar/${id}`, + "/api/check-cookies": "/api/check-cookies", + "/api/auth/validasi": "/api/auth/validasi", + "/api/auth/register": "/api/auth/register", + "/api/auth/logout": "/api/auth/logout", + "/api/auth/login": "/api/auth/login", + "/api/admin/notifikasi": "/api/admin/notifikasi", +}; diff --git a/src/middleware.bak.txt b/src/middleware.bak.txt deleted file mode 100644 index 2fcb6752..00000000 --- a/src/middleware.bak.txt +++ /dev/null @@ -1,152 +0,0 @@ -// Import type NextRequest buat nanganin request, dan NextResponse buat balikin response. -// Juga import jwtVerify dan SignJWT dari "jose" buat verifikasi dan bikin JWT. -import type { NextRequest } from "next/server"; -import { NextResponse } from "next/server"; -import { jwtVerify, SignJWT } from "jose"; - -// Kunci rahasia buat konfigurasi -const secretKey = process.env.SESSION_SECRET || ""; // Kalo SESSION_SECRET nggak ada, pake string kosong biar gak error -const encodedKey = new TextEncoder().encode(secretKey); // Kunci ini bakal diencode buat dipake di JWT - -// Konfigurasi middleware -const middlewareConfig = { - publicRoute: [ - // Daftar route yang bisa diakses tanpa login - "/", - "/dev/auth/login", - "/auth/register", - "/api/signin", - "/api/register" - ], - publicPatterns: [/^\/api\/files\/\w+/, /^\/aset\/global\/\w+/], // Regex buat nge-match route API yang bisa diakses bebas - signinPath: "/dev/auth/login", // Brute buat halaman login - userPath: "/user", // Route buat halaman user setelah login - apiRoute: "/api", - tokenKey: "ws_token", - exp: "7 year", -}; - -// Fungsi buat decode token JWT -async function decrypt(token: string): Promise | null> { - try { - // Cek token JWT pake algoritma HS256 dan kunci terenkripsi - const { payload } = await jwtVerify(token, encodedKey, { - algorithms: ["HS256"] - }); - // Balikin data 'user' dari payload atau null kalo nggak ada - return (payload.user as Record) || null; - } catch (error) { - console.error("Gagal verifikasi session", error); // Kalo error, log error-nya - return null; // Balikin null kalo verifikasi gagal - } -} - -// Fungsi buat bikin (encode) token JWT -export async function encrypt( - user: Record, // Data user yang mau dimasukkan ke token - exp = middlewareConfig.exp // Waktu expired token, default 7 tahun -): Promise { - return new SignJWT({ user }) // Bikin token baru dengan data user - .setProtectedHeader({ alg: "HS256" }) // Set header buat algoritma HS256 - .setIssuedAt() // Waktu token dibuat - .setExpirationTime(exp) // Waktu expired token - .sign(encodedKey); // Sign token pake kunci terenkripsi -} - -// Fungsi buat verifikasi token dan balikin data user -async function verifyToken( - token: string | undefined -): Promise | null> { - if (!token) return null; // Kalo nggak ada token, balikin null - return await decrypt(token); // Kalo ada, decrypt token dan ambil datanya -} - -// Fungsi buat set header CORS -function setCorsHeaders(res: NextResponse): void { - res.headers.set("Access-Control-Allow-Origin", "*"); // Semua origin diizinkan buat akses - res.headers.set( - "Access-Control-Allow-Methods", - "GET, POST, PUT, DELETE, OPTIONS" - ); // Metode HTTP yang diizinkan - res.headers.set( - "Access-Control-Allow-Headers", - "Content-Type, Authorization" - ); // Header yang diizinkan -} - -// Fungsi buat nanganin setup CORS dan preflight request (OPTIONS) -function handleCors(req: NextRequest, res: NextResponse): NextResponse { - setCorsHeaders(res); // Set header CORS - - // Kalo request-nya OPTIONS (preflight) - if (req.method === "OPTIONS") { - // Balikin response tanpa konten dengan status 204 - return new NextResponse(null, { - status: 204, - headers: { - "Access-Control-Allow-Origin": "*", // Semua origin diizinkan - "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS", // Metode HTTP yang diizinkan - "Access-Control-Allow-Headers": "Content-Type, Authorization", // Header yang diizinkan - "Access-Control-Max-Age": "86400" // Cache preflight response selama 1 hari - } - }); - } - - return res; // Kalo bukan OPTIONS, balikin response biasa -} - -// Fungsi utama middleware -export async function middleware(req: NextRequest) { - const { pathname } = req.nextUrl; // Ambil path dari URL request - - // Ngecek apakah route termasuk route publik - if ( - middlewareConfig.publicRoute.includes(pathname) || // Kalo route-nya ada di daftar route publik - middlewareConfig.publicPatterns.some((pattern) => pattern.test(pathname)) // Atau cocok sama pola publik - ) { - return handleCors(req, NextResponse.next()); // Lanjutkan ke route berikutnya tanpa cek token - } - - // Ngecek token di cookies atau header Authorization - const token = - req.cookies.get(middlewareConfig.tokenKey)?.value || // Coba dapetin token dari cookie - req.headers.get("Authorization")?.split(" ")[1]; // Kalo nggak ada, cek di header Authorization - const user = await verifyToken(token); // Verifikasi token - - if (!user) { - // Kalo user nggak valid (token nggak ada atau nggak sah) - if (pathname.startsWith(middlewareConfig.apiRoute)) { - // Kalo rutenya API - return handleCors(req, unauthorizedResponse()); // Balikin response "Unauthorized" - } - return handleCors( - req, - NextResponse.redirect(new URL(middlewareConfig.signinPath, req.url)) // Alihkan ke halaman login - ); - } - - // Kalo user udah login dan coba akses halaman login lagi, alihkan ke halaman user - if (pathname === middlewareConfig.signinPath) { - return handleCors( - req, - NextResponse.redirect(new URL(middlewareConfig.userPath, req.url)) // Alihkan ke halaman user - ); - } - - // User terautentikasi, lanjut ke route berikutnya - return handleCors(req, NextResponse.next()); -} - -// Fungsi buat balikin response unauthorized (gak ada hak akses) untuk request API -function unauthorizedResponse(): NextResponse { - return new NextResponse(JSON.stringify({ error: "Unauthorized" }), { - // Balikin JSON berisi error - status: 401, // Status Unauthorized - headers: { "Content-Type": "application/json" } // Set header type konten ke JSON - }); -} - -// Konfigurasi buat middleware Next.js -export const config = { - matcher: ["/((?!_next|static|favicon.ico).*)"] // Cocokin semua route kecuali yang dimulai dengan _next, static, atau favicon.ico -};