diff --git a/apps/common/features/src/entities/menu-authority/index.ts b/apps/common/features/src/entities/menu-authority/index.ts
index baf6e6085..da36accae 100644
--- a/apps/common/features/src/entities/menu-authority/index.ts
+++ b/apps/common/features/src/entities/menu-authority/index.ts
@@ -1,3 +1,4 @@
export { MenuAuthorityApi } from "./api/menu-authority-service";
export { type PageMenuAuthority } from "./model/menu-authority-interface";
+export { AuthorityButton } from "./ui/authority-button";
export { ManagementAuthorityDialog } from "./ui/management-authority-dialog";
diff --git a/apps/common/features/src/entities/menu-authority/ui/authority-button.tsx b/apps/common/features/src/entities/menu-authority/ui/authority-button.tsx
new file mode 100644
index 000000000..257ab6e5d
--- /dev/null
+++ b/apps/common/features/src/entities/menu-authority/ui/authority-button.tsx
@@ -0,0 +1,26 @@
+import { useMenuStore } from "@/shared/lib";
+import { Button, cn, type ButtonProps } from "@common/components";
+import type { PageMenuAuthority } from "../model/menu-authority-interface";
+
+type AuthorityButtonProps = {
+ authority: keyof PageMenuAuthority;
+} & ButtonProps;
+
+function AuthorityButton({
+ authority,
+ className,
+ children,
+ ...props
+}: AuthorityButtonProps) {
+ const pageMenuAuthority = useMenuStore((state) => state.pageMenuAuthority);
+
+ const isAuthority = pageMenuAuthority?.[authority] === "Y";
+
+ return (
+
+ );
+}
+
+export { AuthorityButton };
diff --git a/apps/common/features/src/widgets/post/ui/post-action.tsx b/apps/common/features/src/widgets/post/ui/post-action.tsx
index 4eaa960cb..b063f7636 100644
--- a/apps/common/features/src/widgets/post/ui/post-action.tsx
+++ b/apps/common/features/src/widgets/post/ui/post-action.tsx
@@ -2,21 +2,24 @@ import { useRouter, usePathname } from "next/navigation";
import { useConfirm } from "@frontend-opensource/use-react-hooks";
import { Button } from "@common/components";
import { useMenuStore, useUserStore } from "@/shared/lib";
+import { AuthorityButton } from "@/entities/menu-authority";
type PostActionProps = {
- bbsId: string;
- pstNo: string;
+ registerId?: string;
children: React.ReactNode;
handleDelete: () => Promise;
};
-function PostAction({ children, handleDelete }: PostActionProps) {
+function PostAction({ registerId, children, handleDelete }: PostActionProps) {
const router = useRouter();
const pathname = usePathname();
const { confirm } = useConfirm();
const bbsInfo = useMenuStore((state) => state.bbsInfo);
const userInfo = useUserStore((state) => state.userInfo);
+ const actionButtonAuthrt =
+ userInfo?.adminRoleYn === "Y" || userInfo?.userUnqId === registerId;
+
const onDelete = async () => {
if (await confirm("삭제하시겠습니까?")) handleDelete();
};
@@ -46,15 +49,19 @@ function PostAction({ children, handleDelete }: PostActionProps) {
>
목록
-
+ {actionButtonAuthrt && (
+ router.push(`${pathname}/modify`)}
+ >
+ 수정
+
+ )}
{bbsInfo?.ansUseYn === "Y" && (
-
+
+ )}
+ {actionButtonAuthrt && (
+
+ 삭제
+
)}
-
>
);
diff --git a/apps/common/features/src/widgets/post/ui/post.tsx b/apps/common/features/src/widgets/post/ui/post.tsx
index bd8db7c21..8033938cf 100644
--- a/apps/common/features/src/widgets/post/ui/post.tsx
+++ b/apps/common/features/src/widgets/post/ui/post.tsx
@@ -125,7 +125,7 @@ function Post({ bbsId, pstNo }: { bbsId: string; pstNo: string }) {
return (
<>
-
+
{postData?.pstTtl}