audit-log.page.tsx 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import {
  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 { SupportedActionType } from '~/interfaces/activity';
  8. import { CrowiRequest } from '~/interfaces/crowi-request';
  9. import { CommonProps, generateCustomTitle } from '~/pages/utils/commons';
  10. import { useCurrentUser, useAuditLogEnabled, useAuditLogAvailableActions } from '~/stores/context';
  11. import { retrieveServerSideProps } from '../../utils/admin-page-util';
  12. const AdminLayout = dynamic(() => import('~/components/Layout/AdminLayout'), { ssr: false });
  13. const AuditLogManagement = dynamic(() => import('~/components/Admin/AuditLogManagement').then(mod => mod.AuditLogManagement), { ssr: false });
  14. const Page403 = dynamic(() => import('~/components/Admin/page403'), { ssr: false });
  15. type Props = CommonProps & {
  16. auditLogEnabled: boolean,
  17. auditLogAvailableActions: SupportedActionType[],
  18. };
  19. const AdminAuditLogPage: NextPage<Props> = (props) => {
  20. const { t } = useTranslation('admin');
  21. useAuditLogEnabled(props.auditLogEnabled);
  22. useAuditLogAvailableActions(props.auditLogAvailableActions);
  23. useCurrentUser(props.currentUser ?? null);
  24. const title = t('audit_log_management.audit_log');
  25. const headTitle = generateCustomTitle(props, title);
  26. if (props.isAccessDeniedForNonAdminUser) {
  27. return <Page403 />;
  28. }
  29. return (
  30. <AdminLayout componentTitle={title}>
  31. <Head>
  32. <title>{headTitle}</title>
  33. </Head>
  34. <AuditLogManagement />
  35. </AdminLayout>
  36. );
  37. };
  38. const injectServerConfigurations = async(context: GetServerSidePropsContext, props: Props): Promise<void> => {
  39. const req: CrowiRequest = context.req as CrowiRequest;
  40. const { crowi } = req;
  41. const { activityService } = crowi;
  42. props.auditLogEnabled = crowi.configManager.getConfig('crowi', 'app:auditLogEnabled');
  43. props.auditLogAvailableActions = activityService.getAvailableActions(false);
  44. };
  45. export const getServerSideProps: GetServerSideProps = async(context: GetServerSidePropsContext) => {
  46. const props = await retrieveServerSideProps(context, injectServerConfigurations);
  47. return props;
  48. };
  49. export default AdminAuditLogPage;