diff --git a/prisma/schema.prisma b/prisma/schema.prisma index e187a42..06bb910 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -98,8 +98,8 @@ model User { idVillage String Group Group @relation(fields: [idGroup], references: [id]) idGroup String - Position Position @relation(fields: [idPosition], references: [id]) - idPosition String + Position Position? @relation(fields: [idPosition], references: [id]) + idPosition String? nik String @unique name String phone String @unique diff --git a/src/app/api/announcement/route.ts b/src/app/api/announcement/route.ts index 814390e..63270d1 100644 --- a/src/app/api/announcement/route.ts +++ b/src/app/api/announcement/route.ts @@ -34,7 +34,7 @@ export async function GET(request: Request) { } } - if (roleUser != "supadmin") { + if (roleUser != "supadmin" && roleUser != "developer") { if (roleUser == "cosupadmin" || roleUser == "admin") { kondisi = { idVillage: String(villageId), diff --git a/src/app/api/division/route.ts b/src/app/api/division/route.ts index 5bee3c3..51d2e5f 100644 --- a/src/app/api/division/route.ts +++ b/src/app/api/division/route.ts @@ -44,7 +44,7 @@ export async function GET(request: Request) { // JIKA ROLE = USER ATAU COADMIN DAN KATEGORI != SEMUA (DIVISI SAYA) - if (roleUser != "supadmin" && roleUser != "cosupadmin" && roleUser != "admin") { + if (roleUser != "supadmin" && roleUser != "developer" && roleUser != "cosupadmin" && roleUser != "admin") { if (kategori != "semua") { kondisi = { isActive: active == 'false' ? false : true, diff --git a/src/app/api/home/route.ts b/src/app/api/home/route.ts index d0ef436..45f6514 100644 --- a/src/app/api/home/route.ts +++ b/src/app/api/home/route.ts @@ -27,8 +27,8 @@ export async function GET(request: Request) { if (kategori == "kegiatan") { let kondisi - // klo perbekel == semua grup - if (roleUser == "supadmin") { + // klo perbekel/developer == semua grup + if (roleUser == "supadmin" || roleUser == "developer") { kondisi = { isActive: true, idVillage: idVillage, @@ -87,8 +87,8 @@ export async function GET(request: Request) { } else if (kategori == "division") { let kondisi - // klo perbekel == semua grup - if (roleUser == "supadmin") { + // klo perbekel/developer == semua grup + if (roleUser == "supadmin" || roleUser == "developer") { kondisi = { isActive: true, idVillage: idVillage, @@ -139,8 +139,8 @@ export async function GET(request: Request) { } else if (kategori == "progress") { let kondisi - // klo perbekel == semua grup - if (roleUser == "supadmin") { + // klo perbekel/developer == semua grup + if (roleUser == "supadmin" || roleUser == "developer") { kondisi = { isActive: true, Division: { @@ -205,8 +205,8 @@ export async function GET(request: Request) { } else if (kategori == "dokumen") { let kondisi - // klo perbekel == semua grup - if (roleUser == "supadmin") { + // klo perbekel/developer == semua grup + if (roleUser == "supadmin" || roleUser == "developer") { kondisi = { isActive: true, category: 'FILE', @@ -283,8 +283,8 @@ export async function GET(request: Request) { } else if (kategori == "event") { let kondisi - // klo perbekel == semua grup - if (roleUser == "supadmin") { + // klo perbekel/developer == semua grup + if (roleUser == "supadmin" || roleUser == "developer") { kondisi = { isActive: true, dateStart: new Date(), @@ -364,8 +364,8 @@ export async function GET(request: Request) { } else if (kategori == "discussion") { let kondisi - // klo perbekel == semua grup - if (roleUser == "supadmin") { + // klo perbekel/developer == semua grup + if (roleUser == "supadmin" || roleUser == "developer") { kondisi = { isActive: true, status: 1, diff --git a/src/app/api/home/search/route.ts b/src/app/api/home/search/route.ts index 709ead4..bf6a757 100644 --- a/src/app/api/home/search/route.ts +++ b/src/app/api/home/search/route.ts @@ -15,8 +15,8 @@ export async function GET(request: Request) { let kondisi: any, kondisiProject: any - // klo perbekel == semua grup - if (userId.idUserRole == "supadmin") { + // klo perbekel/developer == semua grup + if (userId.idUserRole == "supadmin" || userId.idUserRole == "developer") { kondisi = { isActive: true, idVillage: userId.idVillage, diff --git a/src/app/api/project/route.ts b/src/app/api/project/route.ts index 1e04e0a..ee2a96b 100644 --- a/src/app/api/project/route.ts +++ b/src/app/api/project/route.ts @@ -57,7 +57,7 @@ export async function GET(request: Request) { // JIKA ROLE = USER ATAU COADMIN DAN KATEGORI != SEMUA (KEGIATAN SAYA) - if (roleUser != "supadmin" && roleUser != "cosupadmin" && roleUser != "admin") { + if (roleUser != "supadmin" && roleUser != "developer" && roleUser != "cosupadmin" && roleUser != "admin") { if (kategori != "semua") { kondisi = { isActive: true, diff --git a/src/app/api/user/[id]/route.ts b/src/app/api/user/[id]/route.ts index c6d9fef..bea9fb9 100644 --- a/src/app/api/user/[id]/route.ts +++ b/src/app/api/user/[id]/route.ts @@ -52,7 +52,7 @@ export async function GET(request: Request, context: { params: { id: string } }) const { ...userData } = users; const group = users?.Group.name - const position = users?.Position.name + const position = users?.Position?.name const idUserRole = users?.UserRole.id const phone = users?.phone.substr(2) const role = users?.UserRole.name diff --git a/src/app/api/user/profile/route.ts b/src/app/api/user/profile/route.ts index 21a3b20..515a6c8 100644 --- a/src/app/api/user/profile/route.ts +++ b/src/app/api/user/profile/route.ts @@ -19,6 +19,7 @@ export async function GET(request: Request) { }, select: { id: true, + idUserRole: true, name: true, email: true, phone: true, @@ -46,7 +47,7 @@ export async function GET(request: Request) { }) const { ...userData } = data; const group = data?.Group.name - const position = data?.Position.name + const position = data?.Position?.name const phone = data?.phone.substr(2) const role = data?.UserRole.name diff --git a/src/app/api/user/route.ts b/src/app/api/user/route.ts index 526a4a7..fd9323f 100644 --- a/src/app/api/user/route.ts +++ b/src/app/api/user/route.ts @@ -47,6 +47,9 @@ export async function GET(request: Request) { name: { contains: (name == undefined || name == null) ? "" : name, mode: "insensitive", + }, + NOT: { + idUserRole: 'developer' } }, select: { @@ -78,7 +81,7 @@ export async function GET(request: Request) { const allData = users.map((v: any) => ({ ..._.omit(v, ["Group", "Position"]), group: v.Group.name, - position: v.Position.name + position: v?.Position?.name })) return NextResponse.json({ success: true, message: "Berhasil member", data: allData, filter }, { status: 200 }); @@ -90,6 +93,9 @@ export async function GET(request: Request) { name: { contains: (name == undefined || name == null) ? "" : name, mode: "insensitive", + }, + NOT: { + idUserRole: 'developer' } }, select: { @@ -121,7 +127,7 @@ export async function GET(request: Request) { const allData = users.map((v: any) => ({ ..._.omit(v, ["Group", "Position"]), group: v.Group.name, - position: v.Position.name + position: v?.Position?.name })) return NextResponse.json({ success: true, message: "Berhasil member", data: allData, filter }, { status: 200 }); diff --git a/src/module/auth/api/funGetUserByCookies.ts b/src/module/auth/api/funGetUserByCookies.ts index d57add0..fd1dea2 100644 --- a/src/module/auth/api/funGetUserByCookies.ts +++ b/src/module/auth/api/funGetUserByCookies.ts @@ -1,41 +1,56 @@ 'use server' -import { pwd_key_config, prisma } from "@/module/_global"; +import { prisma, pwd_key_config } from "@/module/_global"; import { unsealData } from "iron-session"; import { cookies } from "next/headers"; export default async function funGetUserByCookies() { - const sessionCookie = cookies().get("sessionCookieSDM"); - const userId : any = await unsealData(sessionCookie!.value, { - password: pwd_key_config, - }); + const sessionCookie = cookies().get("sessionCookieSDM") - const user = await prisma.user.findUnique({ - where: { - id: userId.user ? String(userId.user) : String(userId), - }, - }); + if (sessionCookie != undefined) { + const userId: any = await unsealData(sessionCookie.value, { + password: pwd_key_config, + }); - const village = await prisma.village.findUnique({ - where: { - id: user?.idVillage - } - }) + const user = await prisma.user.findUnique({ + where: { + id: userId.user ? String(userId.user) : String(userId), + }, + }); - const warna = await prisma.colorTheme.findUnique({ - where: { - id: String(village?.idTheme) - } - }) + const village = await prisma.village.findUnique({ + where: { + id: user?.idVillage + } + }) + + const warna = await prisma.colorTheme.findUnique({ + where: { + id: String(village?.idTheme) + } + }) + + return { + id: user?.id, + idUserRole: user?.idUserRole, + name: user?.name, + idVillage: user?.idVillage, + idGroup: user?.idGroup, + idPosition: user?.idPosition, + theme: warna, + showNotification: userId?.showNotification + }; + }else{ + return { + id: undefined, + idUserRole: undefined, + name: undefined, + idVillage: undefined, + idGroup: undefined, + idPosition: undefined, + theme: undefined, + showNotification: undefined + }; + } - return { - id: user?.id, - idUserRole: user?.idUserRole, - name: user?.name, - idVillage: user?.idVillage, - idGroup: user?.idGroup, - idPosition: user?.idPosition, - theme: warna, - showNotification: userId?.showNotification - }; } \ No newline at end of file diff --git a/src/module/discussion_general/ui/create_discussion.tsx b/src/module/discussion_general/ui/create_discussion.tsx index b251af2..87e3c3a 100644 --- a/src/module/discussion_general/ui/create_discussion.tsx +++ b/src/module/discussion_general/ui/create_discussion.tsx @@ -44,7 +44,7 @@ export default function FormCreateDiscussionGeneral() { }); function onToChooseAnggota() { - if (roleLogin.get() == "supadmin" && (body.idGroup == "" || String(body.idGroup) == "null")) + if ((roleLogin.get() == "supadmin" || roleLogin.get() == "developer") && (body.idGroup == "" || String(body.idGroup) == "null")) return toast.error("Error! lembaga desa tidak boleh kosong") setChooseAnggota(true) } @@ -57,7 +57,7 @@ export default function FormCreateDiscussionGeneral() { toast.error(loadGroup.message); } - if (roleLogin.get() != "supadmin") { + if (roleLogin.get() != "supadmin" && roleLogin.get() != "developer") { const loadUser = await funGetUserByCookies(); setBody({ ...body, idGroup: loadUser.idGroup }) } @@ -156,7 +156,7 @@ export default function FormCreateDiscussionGeneral() { { - (roleLogin.get() == "supadmin") && ( + (roleLogin.get() == "supadmin" || roleLogin.get() == "developer") && ( - {roleLogin.get() == "supadmin" && + {(roleLogin.get() == "supadmin" || roleLogin.get() == "developer") && setSearchQuery(e.target.value)} /> - {roleLogin.get() == 'supadmin' && Filter : {nameGroup}} + {(roleLogin.get() == 'supadmin' || roleLogin.get() == 'developer') && Filter : {nameGroup}} {loading ? Array(6).fill(null).map((_, i) => ( - + )) : - + {isDataPosition.length == 0 ? Tidak ada jabatan diff --git a/src/module/project/ui/create_project.tsx b/src/module/project/ui/create_project.tsx index 53db4e3..311fcf9 100644 --- a/src/module/project/ui/create_project.tsx +++ b/src/module/project/ui/create_project.tsx @@ -76,7 +76,7 @@ export default function CreateProject() { toast.error(loadGroup.message); } - if (roleLogin.get() != "supadmin") { + if (roleLogin.get() != "supadmin" && roleLogin.get() != "developer") { const loadUser = await funGetUserByCookies(); setBody({ ...body, idGroup: loadUser.idGroup }) } @@ -84,7 +84,7 @@ export default function CreateProject() { } function onToChooseAnggota() { - if (roleLogin.get() == "supadmin" && (body.idGroup == "" || String(body.idGroup) == "null")) + if ((roleLogin.get() == "supadmin" || roleLogin.get() == "developer") && (body.idGroup == "" || String(body.idGroup) == "null")) return toast.error("Error! lembaga desa tidak boleh kosong") setChooseAnggota(true) } @@ -194,7 +194,7 @@ export default function CreateProject() { { - (roleLogin.get() == "supadmin") && ( + (roleLogin.get() == "supadmin" || roleLogin.get() == "developer") && ( { - roleLogin.get() === 'supadmin' && + (roleLogin.get() === 'supadmin' || roleLogin.get() === 'developer') && { diff --git a/src/module/user/member/ui/tab_list_member.tsx b/src/module/user/member/ui/tab_list_member.tsx index e517c51..d6adb89 100644 --- a/src/module/user/member/ui/tab_list_member.tsx +++ b/src/module/user/member/ui/tab_list_member.tsx @@ -131,7 +131,7 @@ export default function TabListMember() { onChange={(e) => setSearchQuery(e.target.value)} my={20} /> - {roleLogin.get() == 'supadmin' && Filter : {nameGroup}} + {(roleLogin.get() == 'supadmin' || roleLogin.get() == 'developer') && Filter : {nameGroup}} {loading ? Array(6) diff --git a/src/module/user/profile/ui/profile.tsx b/src/module/user/profile/ui/profile.tsx index 2013722..0e09530 100644 --- a/src/module/user/profile/ui/profile.tsx +++ b/src/module/user/profile/ui/profile.tsx @@ -18,6 +18,7 @@ import { IProfileById } from "../lib/type_profile"; export default function Profile() { const [openModal, setOpenModal] = useState(false); + const [roleUser, setRoleUser] = useState("") const [isData, setData] = useState() const router = useRouter() const [loading, setLoading] = useState(true) @@ -30,8 +31,8 @@ export default function Profile() { setLoading(true) const res = await funGetProfileByCookies() setData(res.data) + setRoleUser(res.data.idUserRole) setIMG(`https://wibu-storage.wibudev.com/api/files/${res.data.img}`) - setLoading(false) } catch (error) { console.error(error); } finally { @@ -101,9 +102,12 @@ export default function Profile() { Informasi - - router.push(`/profile/edit/`)}>Edit - + { + roleUser != "developer" && + + router.push(`/profile/edit/`)}>Edit + + } @@ -127,17 +131,20 @@ export default function Profile() { {isData?.group} - - - - - Jabatan - - - - {isData?.position} - - + { + roleUser != "developer" && + + + + + Jabatan + + + + {isData?.position} + + + }