AdminBasicSecurityContainer.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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.state = {
  14. retrieveError: null,
  15. isSameUsernameTreatedAsIdenticalUser: false,
  16. };
  17. }
  18. /**
  19. * retrieve security data
  20. */
  21. async retrieveSecurityData() {
  22. try {
  23. const response = await this.appContainer.apiv3.get('/security-setting/');
  24. const { basicAuth } = response.data.securityParams;
  25. this.setState({
  26. isSameUsernameTreatedAsIdenticalUser: basicAuth.isSameUsernameTreatedAsIdenticalUser,
  27. });
  28. }
  29. catch (err) {
  30. this.setState({ retrieveError: err });
  31. logger.error(err);
  32. throw new Error('Failed to fetch data');
  33. }
  34. }
  35. /**
  36. * Workaround for the mangling in production build to break constructor.name
  37. */
  38. static getClassName() {
  39. return 'AdminBasicSecurityContainer';
  40. }
  41. /**
  42. * Switch isSameUsernameTreatedAsIdenticalUser
  43. */
  44. switchIsSameUsernameTreatedAsIdenticalUser() {
  45. this.setState({ isSameUsernameTreatedAsIdenticalUser: !this.state.isSameUsernameTreatedAsIdenticalUser });
  46. }
  47. /**
  48. * Update basicSetting
  49. */
  50. async updateBasicSetting() {
  51. let requestParams = { isSameUsernameTreatedAsIdenticalUser: this.state.isSameUsernameTreatedAsIdenticalUser };
  52. requestParams = await removeNullPropertyFromObject(requestParams);
  53. const response = await this.appContainer.apiv3.put('/security-setting/basic', requestParams);
  54. const { securitySettingParams } = response.data;
  55. this.setState({
  56. isSameUsernameTreatedAsIdenticalUser: securitySettingParams.isSameUsernameTreatedAsIdenticalUser,
  57. });
  58. return response;
  59. }
  60. }