PageAccessRightsSettings.tsx 3.0 KB

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