AdminLocalSecurityContainer.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import { Container } from 'unstated';
  2. import loggerFactory from '@alias/logger';
  3. // eslint-disable-next-line no-unused-vars
  4. const logger = loggerFactory('growi:security:AdminLocalSecurityContainer');
  5. /**
  6. * Service container for admin security page (LocalSecuritySetting.jsx)
  7. * @extends {Container} unstated Container
  8. */
  9. export default class AdminLocalSecurityContainer extends Container {
  10. constructor(appContainer) {
  11. super();
  12. this.appContainer = appContainer;
  13. this.state = {
  14. registrationMode: 'Open',
  15. registrationWhiteList: [],
  16. };
  17. }
  18. async retrieveSecurityData() {
  19. const response = await this.appContainer.apiv3.get('/security-setting/');
  20. const { localSetting } = response.data.securityParams;
  21. this.setState({
  22. registrationMode: localSetting.registrationMode,
  23. registrationWhiteList: localSetting.registrationWhiteList,
  24. });
  25. }
  26. /**
  27. * Workaround for the mangling in production build to break constructor.name
  28. */
  29. static getClassName() {
  30. return 'AdminLocalSecurityContainer';
  31. }
  32. /**
  33. * Change registration mode
  34. */
  35. changeRegistrationMode(value) {
  36. this.setState({ registrationMode: value });
  37. }
  38. /**
  39. * Change registration white list
  40. */
  41. changeRegistrationWhiteList(value) {
  42. this.setState({ registrationWhiteList: value.split('\n') });
  43. }
  44. /**
  45. * update local security setting
  46. */
  47. async updateLocalSecuritySetting() {
  48. let { registrationWhiteList } = this.state;
  49. registrationWhiteList = Array.isArray(registrationWhiteList) ? registrationWhiteList : registrationWhiteList.split('\n');
  50. const response = await this.appContainer.apiv3.put('/security-setting/local-setting', {
  51. registrationMode: this.state.registrationMode,
  52. registrationWhiteList,
  53. });
  54. const { localSettingParams } = response.data;
  55. this.setState({
  56. registrationMode: localSettingParams.registrationMode,
  57. registrationWhiteList: localSettingParams.registrationWhiteList,
  58. });
  59. return localSettingParams;
  60. }
  61. }