mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-15 12:38:36 +00:00
feat(rbac): implemented granular blocking of actions based on permissions on org level ui
This commit is contained in:
@@ -3,13 +3,13 @@ import { createContext, ReactNode, useContext } from "react";
|
||||
import { useGetUserOrgPermissions } from "@app/hooks/api";
|
||||
|
||||
import { useOrganization } from "../OrganizationContext";
|
||||
import { TPermission } from "./types";
|
||||
import { TOrgPermission } from "./types";
|
||||
|
||||
type Props = {
|
||||
children: ReactNode;
|
||||
};
|
||||
|
||||
const PermissionContext = createContext<null | TPermission>(null);
|
||||
const OrgPermissionContext = createContext<null | TOrgPermission>(null);
|
||||
|
||||
export const OrgPermissionProvider = ({ children }: Props): JSX.Element => {
|
||||
const { currentOrg } = useOrganization();
|
||||
@@ -37,11 +37,13 @@ export const OrgPermissionProvider = ({ children }: Props): JSX.Element => {
|
||||
);
|
||||
}
|
||||
|
||||
return <PermissionContext.Provider value={permission}>{children}</PermissionContext.Provider>;
|
||||
return (
|
||||
<OrgPermissionContext.Provider value={permission}>{children}</OrgPermissionContext.Provider>
|
||||
);
|
||||
};
|
||||
|
||||
export const useOrgPermission = () => {
|
||||
const ctx = useContext(PermissionContext);
|
||||
const ctx = useContext(OrgPermissionContext);
|
||||
if (!ctx) {
|
||||
throw new Error("useOrgPermission to be used within <OrgPermissionProvider>");
|
||||
}
|
||||
|
||||
@@ -1 +1,7 @@
|
||||
export { OrgPermissionProvider, useOrgPermission } from "./OrgPermissionContext";
|
||||
export type { TOrgPermission } from "./types";
|
||||
export {
|
||||
OrgGeneralPermissionActions,
|
||||
OrgPermissionSubjects,
|
||||
OrgWorkspacePermissionActions
|
||||
} from "./types";
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import { MongoAbility } from "@casl/ability";
|
||||
|
||||
export enum GeneralPermissionActions {
|
||||
export enum OrgGeneralPermissionActions {
|
||||
Read = "read",
|
||||
Create = "create",
|
||||
Edit = "edit",
|
||||
Delete = "delete"
|
||||
}
|
||||
|
||||
export enum WorkspacePermissionActions {
|
||||
export enum OrgWorkspacePermissionActions {
|
||||
Read = "read",
|
||||
Create = "create"
|
||||
}
|
||||
@@ -24,13 +24,13 @@ export enum OrgPermissionSubjects {
|
||||
}
|
||||
|
||||
export type OrgPermissionSet =
|
||||
| [WorkspacePermissionActions, OrgPermissionSubjects.Workspace]
|
||||
| [GeneralPermissionActions, OrgPermissionSubjects.Role]
|
||||
| [GeneralPermissionActions, OrgPermissionSubjects.Member]
|
||||
| [GeneralPermissionActions, OrgPermissionSubjects.Settings]
|
||||
| [GeneralPermissionActions, OrgPermissionSubjects.IncidentAccount]
|
||||
| [GeneralPermissionActions, OrgPermissionSubjects.Sso]
|
||||
| [GeneralPermissionActions, OrgPermissionSubjects.SecretScanning]
|
||||
| [GeneralPermissionActions, OrgPermissionSubjects.Billing];
|
||||
| [OrgWorkspacePermissionActions, OrgPermissionSubjects.Workspace]
|
||||
| [OrgGeneralPermissionActions, OrgPermissionSubjects.Role]
|
||||
| [OrgGeneralPermissionActions, OrgPermissionSubjects.Member]
|
||||
| [OrgGeneralPermissionActions, OrgPermissionSubjects.Settings]
|
||||
| [OrgGeneralPermissionActions, OrgPermissionSubjects.IncidentAccount]
|
||||
| [OrgGeneralPermissionActions, OrgPermissionSubjects.Sso]
|
||||
| [OrgGeneralPermissionActions, OrgPermissionSubjects.SecretScanning]
|
||||
| [OrgGeneralPermissionActions, OrgPermissionSubjects.Billing];
|
||||
|
||||
export type TPermission = MongoAbility<OrgPermissionSet>;
|
||||
export type TOrgPermission = MongoAbility<OrgPermissionSet>;
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
export { AuthProvider } from "./AuthContext";
|
||||
export { OrgProvider, useOrganization } from "./OrganizationContext";
|
||||
export { OrgPermissionProvider,useOrgPermission } from "./OrgPermissionContext";
|
||||
export type { TOrgPermission } from "./OrgPermissionContext";
|
||||
export {
|
||||
OrgGeneralPermissionActions,
|
||||
OrgPermissionSubjects,
|
||||
OrgWorkspacePermissionActions
|
||||
} from "./OrgPermissionContext";
|
||||
export { OrgPermissionProvider, useOrgPermission } from "./OrgPermissionContext";
|
||||
export { SubscriptionProvider, useSubscription } from "./SubscriptionContext";
|
||||
export { UserProvider, useUser } from "./UserContext";
|
||||
export { useWorkspace, WorkspaceProvider } from "./WorkspaceContext";
|
||||
|
||||
Reference in New Issue
Block a user