import { Button } from 'antd';
|
import type { ButtonProps } from 'antd';
|
import { useAuthStore } from '@/store/auth';
|
|
interface AuthButtonProps extends ButtonProps {
|
/** 不传表示不做权限限制 */
|
permission?: string;
|
/** 无权限时的表现:隐藏(默认)或禁用 */
|
fallback?: 'hide' | 'disabled';
|
}
|
|
/**
|
* 带按钮级权限校验的 Button。
|
*
|
* <AuthButton permission="system:user:add">新增用户</AuthButton>
|
*/
|
export default function AuthButton({
|
permission,
|
fallback = 'hide',
|
...buttonProps
|
}: AuthButtonProps) {
|
const hasPermission = useAuthStore((state) => state.hasPermission);
|
|
if (permission && !hasPermission(permission)) {
|
return fallback === 'disabled' ? <Button {...buttonProps} disabled /> : null;
|
}
|
|
return <Button {...buttonProps} />;
|
}
|