AdminLocalSecurityContainer.js 1.8 KB

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