forked from github/plane
32 lines
981 B
TypeScript
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}</>;
|
|
});
|