feat: 모듈 API 권한 관리 작업

This commit is contained in:
2025-04-17 14:10:47 +09:00
parent b05d407304
commit 524d08b620
12 changed files with 48 additions and 24 deletions
@@ -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(),
});
+1
View File
@@ -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>[] => [
{
+2 -2
View File
@@ -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>[] => [
{
+2 -2
View File
@@ -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,
},