user-groups.page.tsx 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import type {
  2. NextPage, GetServerSideProps, GetServerSidePropsContext,
  3. } from 'next';
  4. import { useTranslation } from 'next-i18next';
  5. import dynamic from 'next/dynamic';
  6. import Head from 'next/head';
  7. import type { CrowiRequest } from '~/interfaces/crowi-request';
  8. import type { CommonProps } from '~/pages/utils/commons';
  9. import { generateCustomTitle } from '~/pages/utils/commons';
  10. import { useIsAclEnabled, useCurrentUser } from '~/stores-universal/context';
  11. import { retrieveServerSideProps } from '../../utils/admin-page-util';
  12. const AdminLayout = dynamic(() => import('~/components-universal/Layout/AdminLayout'), { ssr: false });
  13. const UserGroupPage = dynamic(() => import('~/components/Admin/UserGroup/UserGroupPage').then(mod => mod.UserGroupPage), { ssr: false });
  14. const ForbiddenPage = dynamic(() => import('~/components/Admin/ForbiddenPage').then(mod => mod.ForbiddenPage), { ssr: false });
  15. type Props = CommonProps & {
  16. isAclEnabled: boolean
  17. };
  18. const AdminUserGroupPage: NextPage<Props> = (props) => {
  19. const { t } = useTranslation('admin');
  20. useCurrentUser(props.currentUser ?? null);
  21. useIsAclEnabled(props.isAclEnabled);
  22. const title = t('user_group_management.user_group_management');
  23. const headTitle = generateCustomTitle(props, title);
  24. if (props.isAccessDeniedForNonAdminUser) {
  25. return <ForbiddenPage />;
  26. }
  27. return (
  28. <AdminLayout componentTitle={title}>
  29. <Head>
  30. <title>{headTitle}</title>
  31. </Head>
  32. <UserGroupPage />
  33. </AdminLayout>
  34. );
  35. };
  36. const injectServerConfigurations = async(context: GetServerSidePropsContext, props: Props): Promise<void> => {
  37. const req: CrowiRequest = context.req as CrowiRequest;
  38. const { crowi } = req;
  39. const { aclService } = crowi;
  40. props.isAclEnabled = aclService.isAclEnabled();
  41. };
  42. export const getServerSideProps: GetServerSideProps = async(context: GetServerSidePropsContext) => {
  43. const props = await retrieveServerSideProps(context, injectServerConfigurations);
  44. return props;
  45. };
  46. export default AdminUserGroupPage;