fix: lower role user cannot invite higher role user (#1302)
This commit is contained in:
parent
81f6562168
commit
0dfa06e55b
6 changed files with 416 additions and 338 deletions
61
apps/app/contexts/workspace-member.context.tsx
Normal file
61
apps/app/contexts/workspace-member.context.tsx
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
import { createContext, useContext } from "react";
|
||||
|
||||
// next
|
||||
import { useRouter } from "next/router";
|
||||
|
||||
import useSWR from "swr";
|
||||
// services
|
||||
import workspaceService from "services/workspace.service";
|
||||
// types
|
||||
import { IWorkspaceMember } from "types";
|
||||
// fetch-keys
|
||||
import { WORKSPACE_MEMBERS_ME } from "constants/fetch-keys";
|
||||
|
||||
type ContextType = {
|
||||
loading: boolean;
|
||||
memberDetails?: IWorkspaceMember;
|
||||
error: any;
|
||||
};
|
||||
|
||||
export const WorkspaceMemberContext = createContext<ContextType>({} as ContextType);
|
||||
|
||||
type Props = {
|
||||
children: React.ReactNode;
|
||||
};
|
||||
|
||||
export const WorkspaceMemberProvider: React.FC<Props> = (props) => {
|
||||
const { children } = props;
|
||||
|
||||
const router = useRouter();
|
||||
const { workspaceSlug } = router.query;
|
||||
|
||||
const { data: memberDetails, error } = useSWR(
|
||||
workspaceSlug ? WORKSPACE_MEMBERS_ME(workspaceSlug.toString()) : null,
|
||||
workspaceSlug ? () => workspaceService.workspaceMemberMe(workspaceSlug.toString()) : null
|
||||
);
|
||||
|
||||
const loading = !memberDetails && !error;
|
||||
|
||||
return (
|
||||
<WorkspaceMemberContext.Provider value={{ loading, memberDetails, error }}>
|
||||
{children}
|
||||
</WorkspaceMemberContext.Provider>
|
||||
);
|
||||
};
|
||||
|
||||
export const useWorkspaceMyMembership = () => {
|
||||
const context = useContext(WorkspaceMemberContext);
|
||||
|
||||
if (context === undefined)
|
||||
throw new Error(`useWorkspaceMember must be used within a WorkspaceMemberProvider.`);
|
||||
|
||||
return {
|
||||
...context,
|
||||
memberRole: {
|
||||
isOwner: context.memberDetails?.role === 20,
|
||||
isMember: context.memberDetails?.role === 15,
|
||||
isViewer: context.memberDetails?.role === 10,
|
||||
isGuest: context.memberDetails?.role === 5,
|
||||
},
|
||||
};
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue