PageAccessRightsSettings.tsx 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /* eslint-disable react/no-danger */
  2. import type React from 'react';
  3. import type AdminGeneralSecurityContainer from '~/client/services/AdminGeneralSecurityContainer';
  4. type Props = {
  5. adminGeneralSecurityContainer: AdminGeneralSecurityContainer;
  6. t: (key: string, options?: Record<string, unknown>) => string;
  7. };
  8. export const PageAccessRightsSettings: React.FC<Props> = ({
  9. adminGeneralSecurityContainer,
  10. t,
  11. }) => {
  12. const { currentRestrictGuestMode } = adminGeneralSecurityContainer.state;
  13. return (
  14. <>
  15. <h4 className="mb-3">{t('security_settings.page_access_rights')}</h4>
  16. <div className="row mb-4">
  17. <div className="col-md-4 text-md-end py-2">
  18. <strong>{t('security_settings.Guest Users Access')}</strong>
  19. </div>
  20. <div className="col-md-8">
  21. <div className="dropdown">
  22. <button
  23. className={`btn btn-outline-secondary dropdown-toggle text-end col-12 col-md-auto ${
  24. adminGeneralSecurityContainer.isWikiModeForced && 'disabled'
  25. }`}
  26. type="button"
  27. id="dropdownMenuButton"
  28. data-bs-toggle="dropdown"
  29. aria-haspopup="true"
  30. aria-expanded="true"
  31. >
  32. <span className="float-start">
  33. {currentRestrictGuestMode === 'Deny' &&
  34. t('security_settings.guest_mode.deny')}
  35. {currentRestrictGuestMode === 'Readonly' &&
  36. t('security_settings.guest_mode.readonly')}
  37. </span>
  38. </button>
  39. <div className="dropdown-menu">
  40. <button
  41. className="dropdown-item"
  42. type="button"
  43. onClick={() => {
  44. adminGeneralSecurityContainer.changeRestrictGuestMode('Deny');
  45. }}
  46. >
  47. {t('security_settings.guest_mode.deny')}
  48. </button>
  49. <button
  50. className="dropdown-item"
  51. type="button"
  52. onClick={() => {
  53. adminGeneralSecurityContainer.changeRestrictGuestMode(
  54. 'Readonly',
  55. );
  56. }}
  57. >
  58. {t('security_settings.guest_mode.readonly')}
  59. </button>
  60. </div>
  61. </div>
  62. {adminGeneralSecurityContainer.isWikiModeForced && (
  63. <p className="alert alert-warning mt-2 col-6">
  64. <span className="material-symbols-outlined me-1">error</span>
  65. <b>FIXED</b>
  66. <br />
  67. <b
  68. // biome-ignore lint/security/noDangerouslySetInnerHtml: trusted translation markup
  69. dangerouslySetInnerHTML={{
  70. __html: t('security_settings.Fixed by env var', {
  71. key: 'FORCE_WIKI_MODE',
  72. value: adminGeneralSecurityContainer.state.wikiMode,
  73. }),
  74. }}
  75. />
  76. </p>
  77. )}
  78. </div>
  79. </div>
  80. </>
  81. );
  82. };