AdminBasicSecurityContainer.js 2.0 KB

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