AdminBasicSecurityContainer.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import { Container } from 'unstated';
  2. import loggerFactory from '@alias/logger';
  3. import removeNullPropertyFromObject from '../../../lib/util/removeNullPropertyFromObject';
  4. const logger = loggerFactory('growi:security:AdminTwitterSecurityContainer');
  5. /**
  6. * Service container for admin security page (BasicSecuritySetting.jsx)
  7. * @extends {Container} unstated Container
  8. */
  9. export default class AdminBasicSecurityContainer extends Container {
  10. constructor(appContainer) {
  11. super();
  12. this.appContainer = appContainer;
  13. this.dummyIsSameUsernameTreatedAsIdenticalUser = 0;
  14. this.dummyIsSameUsernameTreatedAsIdenticalUserForError = 1;
  15. this.state = {
  16. retrieveError: null,
  17. // set dummy value tile for using suspense
  18. isSameUsernameTreatedAsIdenticalUser: this.dummyIsSameUsernameTreatedAsIdenticalUser,
  19. };
  20. }
  21. /**
  22. * retrieve security data
  23. */
  24. async retrieveSecurityData() {
  25. try {
  26. const response = await this.appContainer.apiv3.get('/security-setting/');
  27. const { basicAuth } = response.data.securityParams;
  28. this.setState({
  29. isSameUsernameTreatedAsIdenticalUser: basicAuth.isSameUsernameTreatedAsIdenticalUser,
  30. });
  31. }
  32. catch (err) {
  33. this.setState({ retrieveError: err });
  34. logger.error(err);
  35. throw new Error('Failed to fetch data');
  36. }
  37. }
  38. /**
  39. * Workaround for the mangling in production build to break constructor.name
  40. */
  41. static getClassName() {
  42. return 'AdminBasicSecurityContainer';
  43. }
  44. /**
  45. * Switch isSameUsernameTreatedAsIdenticalUser
  46. */
  47. switchIsSameUsernameTreatedAsIdenticalUser() {
  48. this.setState({ isSameUsernameTreatedAsIdenticalUser: !this.state.isSameUsernameTreatedAsIdenticalUser });
  49. }
  50. /**
  51. * Update basicSetting
  52. */
  53. async updateBasicSetting() {
  54. let requestParams = { isSameUsernameTreatedAsIdenticalUser: this.state.isSameUsernameTreatedAsIdenticalUser };
  55. requestParams = await removeNullPropertyFromObject(requestParams);
  56. const response = await this.appContainer.apiv3.put('/security-setting/basic', requestParams);
  57. const { securitySettingParams } = response.data;
  58. this.setState({
  59. isSameUsernameTreatedAsIdenticalUser: securitySettingParams.isSameUsernameTreatedAsIdenticalUser,
  60. });
  61. return response;
  62. }
  63. }