| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import { Container } from 'unstated';
- import loggerFactory from '@alias/logger';
- import { pathUtils } from 'growi-commons';
- import urljoin from 'url-join';
- import { removeNullPropertyFromObject } from '~/utils/object-utils';
- const logger = loggerFactory('growi:security:AdminTwitterSecurityContainer');
- /**
- * Service container for admin security page (TwitterSecurityManagement.jsx)
- * @extends {Container} unstated Container
- */
- export default class AdminTwitterSecurityContainer extends Container {
- constructor(appContainer) {
- super();
- this.appContainer = appContainer;
- this.dummyTwitterConsumerKey = 0;
- this.dummyTwitterConsumerKeyForError = 1;
- this.state = {
- callbackUrl: urljoin(pathUtils.removeTrailingSlash(appContainer.config.crowi.url), '/passport/twitter/callback'),
- // set dummy value tile for using suspense
- twitterConsumerKey: this.dummyTwitterConsumerKey,
- twitterConsumerSecret: '',
- isSameUsernameTreatedAsIdenticalUser: false,
- };
- this.updateTwitterSetting = this.updateTwitterSetting.bind(this);
- }
- /**
- * retrieve security data
- */
- async retrieveSecurityData() {
- try {
- const response = await this.appContainer.apiv3.get('/security-setting/');
- const { twitterOAuth } = response.data.securityParams;
- this.setState({
- twitterConsumerKey: twitterOAuth.twitterConsumerKey,
- twitterConsumerSecret: twitterOAuth.twitterConsumerSecret,
- isSameUsernameTreatedAsIdenticalUser: twitterOAuth.isSameUsernameTreatedAsIdenticalUser,
- });
- }
- catch (err) {
- this.setState({ retrieveError: err });
- logger.error(err);
- throw new Error('Failed to fetch data');
- }
- }
- /**
- * Workaround for the mangling in production build to break constructor.name
- */
- static getClassName() {
- return 'AdminTwitterSecurityContainer';
- }
- /**
- * Change twitterConsumerKey
- */
- changeTwitterConsumerKey(value) {
- this.setState({ twitterConsumerKey: value });
- }
- /**
- * Change twitterConsumerSecret
- */
- changeTwitterConsumerSecret(value) {
- this.setState({ twitterConsumerSecret: value });
- }
- /**
- * Switch isSameUsernameTreatedAsIdenticalUser
- */
- switchIsSameUsernameTreatedAsIdenticalUser() {
- this.setState({ isSameUsernameTreatedAsIdenticalUser: !this.state.isSameUsernameTreatedAsIdenticalUser });
- }
- /**
- * Update twitterSetting
- */
- async updateTwitterSetting() {
- const { twitterConsumerKey, twitterConsumerSecret, isSameUsernameTreatedAsIdenticalUser } = this.state;
- let requestParams = { twitterConsumerKey, twitterConsumerSecret, isSameUsernameTreatedAsIdenticalUser };
- requestParams = await removeNullPropertyFromObject(requestParams);
- const response = await this.appContainer.apiv3.put('/security-setting/twitter-oauth', requestParams);
- const { securitySettingParams } = response.data;
- this.setState({
- twitterConsumerKey: securitySettingParams.twitterConsumerKey,
- twitterConsumerSecret: securitySettingParams.twitterConsumerSecret,
- isSameUsernameTreatedAsIdenticalUser: securitySettingParams.isSameUsernameTreatedAsIdenticalUser,
- });
- return response;
- }
- }
|