AdminBasicSecurityContainer.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import { isServer } from '@growi/core';
  2. import { Container } from 'unstated';
  3. import loggerFactory from '~/utils/logger';
  4. import { removeNullPropertyFromObject } from '~/utils/object-utils';
  5. import { apiv3Get, apiv3Put } from '../util/apiv3-client';
  6. const logger = loggerFactory('growi:security:AdminTwitterSecurityContainer');
  7. /**
  8. * Service container for admin security page (BasicSecuritySetting.jsx)
  9. * @extends {Container} unstated Container
  10. */
  11. export default class AdminBasicSecurityContainer extends Container {
  12. constructor() {
  13. super();
  14. if (isServer()) {
  15. return;
  16. }
  17. this.state = {
  18. isSameUsernameTreatedAsIdenticalUser: false,
  19. };
  20. }
  21. /**
  22. * retrieve security data
  23. */
  24. async retrieveSecurityData() {
  25. try {
  26. const response = await apiv3Get('/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 apiv3Put('/security-setting/basic', requestParams);
  57. const { securitySettingParams } = response.data;
  58. this.setState({
  59. isSameUsernameTreatedAsIdenticalUser: securitySettingParams.isSameUsernameTreatedAsIdenticalUser,
  60. });
  61. return response;
  62. }
  63. }