mirror of
https://github.com/docmost/docmost.git
synced 2025-11-22 09:31:09 +10:00
frontend permissions
* rework backend workspace permissions
This commit is contained in:
@ -0,0 +1,17 @@
|
||||
export enum SpaceCaslAction {
|
||||
Manage = "manage",
|
||||
Create = "create",
|
||||
Read = "read",
|
||||
Edit = "edit",
|
||||
Delete = "delete",
|
||||
}
|
||||
export enum SpaceCaslSubject {
|
||||
Settings = "settings",
|
||||
Member = "member",
|
||||
Page = "page",
|
||||
}
|
||||
|
||||
export type SpaceAbility =
|
||||
| [SpaceCaslAction, SpaceCaslSubject.Settings]
|
||||
| [SpaceCaslAction, SpaceCaslSubject.Member]
|
||||
| [SpaceCaslAction, SpaceCaslSubject.Page];
|
||||
@ -0,0 +1,15 @@
|
||||
import { createMongoAbility } from "@casl/ability";
|
||||
import { SpaceAbility } from "@/features/space/permissions/permissions.type.ts";
|
||||
|
||||
export const useSpaceAbility = (rules: any) => {
|
||||
if (!rules) {
|
||||
rules = [];
|
||||
}
|
||||
|
||||
const ability = createMongoAbility<SpaceAbility>(rules);
|
||||
|
||||
return {
|
||||
can: ability.can.bind(ability),
|
||||
cannot: ability.cannot.bind(ability),
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user