RequirePermission
Gate de permissão com suporte a single/all/any e fallback AccessDenied.
Carregando...
Instalação
npx @kobana/ui add require-permissionImportação
import { RequirePermission, AccessDenied } from "@/components/kobana/require-permission"Props
| Prop | Tipo | Default | Descrição |
|---|---|---|---|
permission | string | — | Permissão única |
allPermissions | string[] | — | Todas devem passar (AND) |
anyPermissions | string[] | — | Qualquer uma (OR) |
can | (permission: string) => boolean | — | Função de verificação (obrigatório) |
isLoading | boolean | — | Renderiza null enquanto carrega |
children | ReactNode | — | Conteúdo protegido |
fallback | ReactNode | null | Conteúdo quando negado |
className | string | — | Classes adicionais |
Uso
<RequirePermission permission="charges:create" can={can}>
<Button>Nova Cobrança</Button>
</RequirePermission>
<RequirePermission
allPermissions={["charges:read", "charges:delete"]}
can={can}
fallback={<AccessDenied onBack={() => router.back()} />}
>
<DangerZone />
</RequirePermission>HOC
const ProtectedPage = withRequirePermission(MyPage, {
permission: "admin",
})