fix ( user access )

deskripsi:
- membatasi akses user yang hanya bisa di berikan oleh admin
This commit is contained in:
2025-01-10 08:49:30 +08:00
parent d0716bd859
commit abe92e4ad2
22 changed files with 744 additions and 218 deletions

View File

@@ -256,6 +256,10 @@ function NewTableAdmin({
search: isSearch,
page: isChoosePage,
});
setDataAdmin(loadData.data);
setNPage(loadData.nPage);
const loadDataUser = await adminDeveloper_funGetListAllUser({ page: 1 });

View File

@@ -1,11 +1,14 @@
"use server";
import prisma from "@/app/lib/prisma";
import backendLogger from "@/util/backendLogger";
import { revalidatePath } from "next/cache";
import { headers } from "next/headers";
export default async function adminUserAccess_funEditAccess(
userId: string,
value: boolean
value: boolean,
nomor?: string
) {
const updt = await prisma.user.update({
where: {
@@ -16,6 +19,31 @@ export default async function adminUserAccess_funEditAccess(
},
});
const headersList = headers();
const host = headersList.get("host");
const protocol = headersList.get("x-forwarded-proto") || "http";
const path = headersList.get("x-invoke-path");
const baseUrl = `${protocol}://${host}`;
// const fullUrl = `${protocol}://${host}${path}`;
if (value === true) {
const message = `Hallo rekan HIPMI, Anda telah diberikan akses ke HIPMI Apps. Silakan mulai jelajahi fitur-fitur yang tersedia melalui link berikut: ${baseUrl}`;
const encodedMessage = encodeURIComponent(message);
const res = await fetch(
`https://wa.wibudev.com/code?nom=${nomor}&text=${encodedMessage}
`
);
if (!res.ok) {
backendLogger.error("Error send message", res);
}
const result = await res.json();
backendLogger.info("Success send message", result);
}
if (!updt) return { status: 400, message: "Update gagal" };
revalidatePath("/dev/admin/user-access");
return { status: 200, message: "Update berhasil" };

View File

@@ -20,6 +20,9 @@ import { IconSearch } from "@tabler/icons-react";
import { useState } from "react";
import adminUserAccess_funEditAccess from "../fun/edit/fun_edit_access";
import adminUserAccess_getListUser from "../fun/get/get_list_all_user";
import { WibuRealtime } from "wibu-pkg";
import { gs_access_user, IRealtimeData } from "@/app/lib/global_state";
import { useAtom } from "jotai";
export default function AdminUserAccess_View({ listUser }: { listUser: any }) {
const [data, setData] = useState<MODEL_USER[]>(listUser.data);
@@ -30,11 +33,11 @@ export default function AdminUserAccess_View({ listUser }: { listUser: any }) {
const [isLoadingDelete, setIsLoadingDelete] = useState(false);
const [userId, setUserId] = useState("");
async function onAccess(id: string) {
async function onAccess(id: string, nomor: string) {
try {
setUserId(id);
setIsLoadingAccess(true);
await adminUserAccess_funEditAccess(id, true).then(async (res) => {
await adminUserAccess_funEditAccess(id, true, nomor).then(async (res) => {
if (res.status === 200) {
const value = await adminUserAccess_getListUser({
page: 1,
@@ -42,6 +45,19 @@ export default function AdminUserAccess_View({ listUser }: { listUser: any }) {
});
setData(value.data as any);
setNPage(value.nPage);
const dataNotifikasi: IRealtimeData = {
status: true as any,
userId: id,
kategoriApp: "ACCESS",
};
WibuRealtime.setData({
type: "trigger",
pushNotificationTo: "USER",
dataMessage: dataNotifikasi,
});
ComponentGlobal_NotifikasiBerhasil(res.message);
} else {
ComponentGlobal_NotifikasiGagal(res.message);
@@ -118,7 +134,7 @@ export default function AdminUserAccess_View({ listUser }: { listUser: any }) {
radius={"xl"}
color="Green"
onClick={() => {
onAccess(e.id);
onAccess(e.id, e.nomor);
}}
>
Grand Access