feat: 모듈 API 권한 관리 작업
This commit is contained in:
+1
-1
@@ -7,7 +7,7 @@ import type {
|
||||
MenuAuthorityPayloadData,
|
||||
} from "./menu-authority-interface";
|
||||
|
||||
export const columns = (
|
||||
export const createColumns = (
|
||||
form: UseFormReturn<MenuAuthorityFormData>,
|
||||
): ColumnDef<MenuAuthority>[] => {
|
||||
const getCurrentRow = (i: number) => form.watch("menuAuthority")[i];
|
||||
|
||||
@@ -21,7 +21,7 @@ import {
|
||||
type MenuAuthorityFormData,
|
||||
type MenuAuthorityPayloadData,
|
||||
} from "../model/menu-authority-interface";
|
||||
import { columns } from "../model/menu-authority-table-columns";
|
||||
import { createColumns } from "../model/menu-authority-table-columns";
|
||||
import { MenuAuthorityApi } from "../api/menu-authority-service";
|
||||
|
||||
type ManagementAuthorityDialogProps = {
|
||||
@@ -58,7 +58,7 @@ function ManagementAuthorityDialog({
|
||||
|
||||
const table = useReactTable({
|
||||
data: menuAuthorityList?.content ?? [],
|
||||
columns: columns(form),
|
||||
columns: createColumns(form),
|
||||
getCoreRowModel: getCoreRowModel(),
|
||||
});
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ export function middleware(req: NextRequest) {
|
||||
const newUrl = `${serverApiUrl}${pathname.replace("/server", "")}${
|
||||
queryParams ? `?${queryParams}` : ""
|
||||
}`;
|
||||
console.log("Rewriting to >>>>", newUrl);
|
||||
return NextResponse.rewrite(new URL(newUrl));
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import type {
|
||||
MenuAuthorityPayloadData,
|
||||
} from "./menu-authority-interface";
|
||||
|
||||
export const columns = (
|
||||
export const createColumns = (
|
||||
form: UseFormReturn<MenuAuthorityFormData>,
|
||||
): ColumnDef<MenuAuthority>[] => {
|
||||
const getCurrentRow = (i: number) => form.watch("menuAuthority")[i];
|
||||
|
||||
@@ -21,7 +21,7 @@ import {
|
||||
type MenuAuthorityFormData,
|
||||
type MenuAuthorityPayloadData,
|
||||
} from "../model/menu-authority-interface";
|
||||
import { columns } from "../model/menu-authority-table-columns";
|
||||
import { createColumns } from "../model/menu-authority-table-columns";
|
||||
import { MenuAuthorityApi } from "../api/menu-authority-service";
|
||||
|
||||
type ManagementAuthorityDialogProps = {
|
||||
@@ -58,7 +58,7 @@ function ManagementAuthorityDialog({
|
||||
|
||||
const table = useReactTable({
|
||||
data: menuAuthorityList?.content ?? [],
|
||||
columns: columns(form),
|
||||
columns: createColumns(form),
|
||||
getCoreRowModel: getCoreRowModel(),
|
||||
});
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ import { AttachmentApi } from "@/entities/attachment";
|
||||
import { ENDPOINT } from "@/shared/config";
|
||||
import type { Banner } from "./banner-interface";
|
||||
|
||||
export const columns = (
|
||||
export const createColumns = (
|
||||
imageRefs: React.MutableRefObject<Map<number, string>>,
|
||||
): ColumnDef<Banner>[] => [
|
||||
{
|
||||
|
||||
@@ -13,7 +13,7 @@ import { Button, DataTable, Input, Label } from "@common/components";
|
||||
import { POSTING_TYPE, PostingDialog } from "@/entities/posting";
|
||||
import { ENDPOINT } from "@/shared/config";
|
||||
import { BannerApi } from "../api/banner-service";
|
||||
import { columns } from "../model/banner-table-columns";
|
||||
import { createColumns } from "../model/banner-table-columns";
|
||||
import { type Banner, type BannerParams } from "../model/banner-interface";
|
||||
import { PreviewBannerDialog } from "./preview-banner-dialog";
|
||||
|
||||
@@ -47,7 +47,7 @@ function BannerPage() {
|
||||
|
||||
const table = useReactTable({
|
||||
data: bannerList?.content ?? [],
|
||||
columns: columns(imageRefs),
|
||||
columns: createColumns(imageRefs),
|
||||
state: {
|
||||
pagination,
|
||||
rowSelection,
|
||||
|
||||
@@ -5,7 +5,7 @@ import { type ColumnDef } from "@tanstack/react-table";
|
||||
import { Button } from "@common/components";
|
||||
import type { Attachment } from "@/entities/attachment/model/attachment-interface";
|
||||
|
||||
export const columns = (
|
||||
export const createColumns = (
|
||||
handleDeleteAttachment: (atflId: string) => void,
|
||||
): ColumnDef<Attachment>[] => [
|
||||
{
|
||||
|
||||
@@ -13,7 +13,7 @@ import type { AttachmentParams } from "@/entities/attachment/model/attachment-in
|
||||
import { AttachmentApi } from "@/entities/attachment/api/attachment-service";
|
||||
import { useAlertStore } from "@/shared/lib/use-alert-store";
|
||||
import { ENDPOINT } from "@/shared/config";
|
||||
import { columns } from "../model/table-columns";
|
||||
import { createColumns } from "../model/table-columns";
|
||||
|
||||
function FilePage() {
|
||||
const { confirm } = useConfirm();
|
||||
@@ -55,7 +55,7 @@ function FilePage() {
|
||||
|
||||
const table = useReactTable({
|
||||
data: attachmentsList?.content ?? [],
|
||||
columns: columns(handleDeleteAttachment),
|
||||
columns: createColumns(handleDeleteAttachment),
|
||||
rowCount: attachmentsList?.totalElements ?? 0,
|
||||
state: {
|
||||
pagination,
|
||||
|
||||
@@ -13,11 +13,13 @@ export interface RoleAuthorizations {
|
||||
roleContent: string;
|
||||
useYn: string;
|
||||
authorizationNo: number;
|
||||
authYn: string;
|
||||
}
|
||||
|
||||
export const roleAuthorizationsSchema = z.object({
|
||||
roleId: z.string(),
|
||||
authorizationNo: z.number(),
|
||||
authYn: z.string(),
|
||||
});
|
||||
|
||||
export const roleAuthorizationsFormSchema = z.object({
|
||||
|
||||
@@ -1,25 +1,39 @@
|
||||
import { type ColumnDef } from "@tanstack/react-table";
|
||||
import type { RoleAuthorizations } from "./role-authorizations-interface";
|
||||
import { Checkbox } from "@common/components/ui";
|
||||
import type { UseFormReturn } from "react-hook-form";
|
||||
import type { RoleAuthorizationsFormData } from "./role-authorizations-interface";
|
||||
|
||||
export const columns: ColumnDef<RoleAuthorizations>[] = [
|
||||
export const createColumns = (
|
||||
form: UseFormReturn<RoleAuthorizationsFormData>,
|
||||
): ColumnDef<RoleAuthorizations>[] => [
|
||||
{
|
||||
id: "select",
|
||||
header: ({ table }) => (
|
||||
<Checkbox
|
||||
checked={table.getIsAllPageRowsSelected()}
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
onCheckedChange={(checked) =>
|
||||
table.toggleAllPageRowsSelected(!!checked)
|
||||
}
|
||||
checked={form
|
||||
.watch("roleAuthorizations")
|
||||
.every((role) => role.authYn === "Y")}
|
||||
onCheckedChange={(checked) => {
|
||||
table.getRowModel().rows.forEach((row, index) => {
|
||||
form.setValue(
|
||||
`roleAuthorizations.${index}.authYn`,
|
||||
checked ? "Y" : "N",
|
||||
);
|
||||
});
|
||||
}}
|
||||
className="h-4 w-4 rounded border-gray-300"
|
||||
/>
|
||||
),
|
||||
cell: ({ row }) => (
|
||||
<Checkbox
|
||||
checked={row.getIsSelected()}
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
onCheckedChange={(checked) => row.toggleSelected(!!checked)}
|
||||
checked={form.watch(`roleAuthorizations.${row.index}.authYn`) === "Y"}
|
||||
onCheckedChange={(checked) => {
|
||||
form.setValue(
|
||||
`roleAuthorizations.${row.index}.authYn`,
|
||||
checked ? "Y" : "N",
|
||||
);
|
||||
}}
|
||||
className="h-4 w-4 rounded border-gray-300"
|
||||
/>
|
||||
),
|
||||
|
||||
@@ -32,7 +32,7 @@ import {
|
||||
type RoleAuthorizationsFormData,
|
||||
type RoleAuthorizationsData,
|
||||
} from "../model/role-authorizations-interface";
|
||||
import { columns } from "../model/role-authorizations-table-columns";
|
||||
import { createColumns } from "../model/role-authorizations-table-columns";
|
||||
import type { Authorizations } from "../model/authorizations-interface";
|
||||
import { RoleAuthorizationsApi } from "../api/role-authorization-service";
|
||||
|
||||
@@ -70,13 +70,20 @@ function ManagementAuthorityDialog({
|
||||
const form = useForm<RoleAuthorizationsFormData>({
|
||||
resolver: zodResolver(roleAuthorizationsFormSchema),
|
||||
values: {
|
||||
roleAuthorizations: roleAuthorizationList?.content ?? [],
|
||||
roleAuthorizations:
|
||||
roleAuthorizationList?.content.map(
|
||||
({ roleId, authorizationNo, useYn }) => ({
|
||||
roleId,
|
||||
authorizationNo,
|
||||
authYn: useYn,
|
||||
}),
|
||||
) ?? [],
|
||||
},
|
||||
});
|
||||
|
||||
const table = useReactTable({
|
||||
data: roleAuthorizationList?.content ?? [],
|
||||
columns,
|
||||
columns: createColumns(form),
|
||||
state: {
|
||||
rowSelection,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user