| 12345678910111213141516171819202122232425262728 |
- import { Button } from "@contentful/f36-components";
- import { useAuth } from "@/contexts/AuthContext";
- import type { ComponentProps } from "react";
- interface PermissionButtonProps extends Omit<ComponentProps<typeof Button>, "children"> {
- menuId: string;
- action: string; // 'add' | 'edit' | 'delete' | 'view' | 'export' | 'import' | ...
- children: React.ReactNode;
- }
- /**
- * 带权限控制的按钮组件
- * 如果用户没有权限,按钮将不会渲染
- */
- export default function PermissionButton({
- menuId,
- action,
- children,
- ...buttonProps
- }: PermissionButtonProps) {
- const { hasPermission } = useAuth();
- if (!hasPermission(menuId, action)) {
- return null;
- }
- return <Button {...buttonProps}>{children}</Button>;
- }
|