plane/web/layouts/auth-layout/admin-wrapper.tsx
2024-03-19 20:08:35 +05:30

32 lines
981 B
TypeScript

import { FC, ReactNode } from "react";
import { observer } from "mobx-react-lite";
// hooks
import { InstanceAdminRestriction } from "@/components/instance";
import { useApplication, useUser } from "@/hooks/store";
// components
export interface IAdminAuthWrapper {
children: ReactNode;
}
export const AdminAuthWrapper: FC<IAdminAuthWrapper> = observer(({ children }) => {
// store hooks
const {
router: { workspaceSlug },
} = useApplication();
const { isUserInstanceAdmin, currentUserSettings } = useUser();
// redirect url
const redirectWorkspaceSlug =
workspaceSlug ||
currentUserSettings?.workspace?.last_workspace_slug ||
currentUserSettings?.workspace?.fallback_workspace_slug ||
"";
// if user does not have admin access to the instance
if (isUserInstanceAdmin !== undefined && isUserInstanceAdmin === false) {
return <InstanceAdminRestriction redirectWorkspaceSlug={redirectWorkspaceSlug} />;
}
return <>{children}</>;
});