import { Container } from 'unstated'; /** * Service container for admin security page (LocalSecuritySetting.jsx) * @extends {Container} unstated Container */ export default class AdminLocalSecurityContainer extends Container { constructor(appContainer) { super(); this.appContainer = appContainer; this.state = { registrationMode: 'Open', registrationWhiteList: [], }; } async retrieveSecurityData() { const response = await this.appContainer.apiv3.get('/security-setting/'); const { localSetting } = response.data.securityParams; this.setState({ registrationMode: localSetting.registrationMode, registrationWhiteList: localSetting.registrationWhiteList, }); } /** * Workaround for the mangling in production build to break constructor.name */ static getClassName() { return 'AdminLocalSecurityContainer'; } /** * Change registration mode */ changeRegistrationMode(value) { this.setState({ registrationMode: value }); } /** * Change registration white list */ changeRegistrationWhiteList(value) { this.setState({ registrationWhiteList: value.split('\n') }); } /** * update local security setting */ async updateLocalSecuritySetting() { let { registrationWhiteList } = this.state; registrationWhiteList = Array.isArray(registrationWhiteList) ? registrationWhiteList : registrationWhiteList.split('\n'); const response = await this.appContainer.apiv3.put('/security-setting/local-setting', { registrationMode: this.state.registrationMode, registrationWhiteList, }); const { localSettingParams } = response.data; this.setState({ registrationMode: localSettingParams.registrationMode, registrationWhiteList: localSettingParams.registrationWhiteList, }); return localSettingParams; } }