wsj
2026-10-17 5630cce7759c27d910fbeeec370a2e9f6b4b26b1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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} />;
}