user-groups.page.tsx 1.6 KB

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