Fix array fill logicl; allow matching on any permissions
This commit is contained in:
parent
9b4f2deb78
commit
5d5a5c2afc
3 changed files with 14 additions and 6 deletions
|
@ -3,16 +3,26 @@ import { usePermissions } from '@/plugins/usePermissions';
|
|||
|
||||
interface Props {
|
||||
action: string | string[];
|
||||
matchAny?: boolean;
|
||||
renderOnError?: React.ReactNode | null;
|
||||
children: React.ReactNode;
|
||||
}
|
||||
|
||||
const Can = ({ action, renderOnError, children }: Props) => {
|
||||
const Can = ({ action, matchAny = false, renderOnError, children }: Props) => {
|
||||
const can = usePermissions(action);
|
||||
|
||||
if (matchAny) {
|
||||
console.log('Can.tsx', can);
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
{can.every(p => p) ? children : renderOnError}
|
||||
{
|
||||
((matchAny && can.filter(p => p).length > 0) || (!matchAny && can.every(p => p))) ?
|
||||
children
|
||||
:
|
||||
renderOnError
|
||||
}
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
|
Reference in a new issue