diff options
author | Roeland Jago Douma <roeland@famdouma.nl> | 2019-01-10 16:04:13 +0100 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2019-02-28 11:55:58 +0100 |
commit | c621da4fd682990af1520e0313dd763c621b041f (patch) | |
tree | d4083b957f4f5102f31780edf521e0d67512f9f7 /settings/src | |
parent | 4af583e23f922824e8e9ad2bf6347e6a1f163d8f (diff) | |
download | nextcloud-server-c621da4fd682990af1520e0313dd763c621b041f.tar.gz nextcloud-server-c621da4fd682990af1520e0313dd763c621b041f.zip |
Do not load 2fa admin settings async
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'settings/src')
-rw-r--r-- | settings/src/components/AdminTwoFactor.vue | 33 | ||||
-rw-r--r-- | settings/src/main-admin-security.js | 9 | ||||
-rw-r--r-- | settings/src/store/admin-security.js | 63 |
3 files changed, 83 insertions, 22 deletions
diff --git a/settings/src/components/AdminTwoFactor.vue b/settings/src/components/AdminTwoFactor.vue index 5feaa75af21..0a20bf1b9e3 100644 --- a/settings/src/components/AdminTwoFactor.vue +++ b/settings/src/components/AdminTwoFactor.vue @@ -77,33 +77,24 @@ }, data () { return { - state: { - enforced: false, - enforcedGroups: [], - excludedGroups: [], - }, loading: false, groups: [], loadingGroups: false, } }, + computed: { + state: function() { + return { + enforced: this.$store.state.enforced, + enforcedGroups: this.$store.state.enforcedGroups, + excludedGroups: this.$store.state.excludedGroups, + } + } + }, mounted () { - this.loading = true - Axios.get(OC.generateUrl('/settings/api/admin/twofactorauth')) - .then(resp => resp.data) - .then(state => { - this.state = state - - // Groups are loaded dynamically, but the assigned ones *should* - // be valid groups, so let's add them as initial state - this.groups = _.sortedUniq(this.state.enforcedGroups.concat(this.state.excludedGroups)) - - this.loading = false - }) - .catch(err => { - console.error('Could not load two-factor state', err) - throw err - }) + // Groups are loaded dynamically, but the assigned ones *should* + // be valid groups, so let's add them as initial state + this.groups = _.sortedUniq(this.state.enforcedGroups.concat(this.state.excludedGroups)) }, methods: { searchGroup: _.debounce(function (query) { diff --git a/settings/src/main-admin-security.js b/settings/src/main-admin-security.js index f2acc9474a5..fcf0038740d 100644 --- a/settings/src/main-admin-security.js +++ b/settings/src/main-admin-security.js @@ -1,10 +1,17 @@ import Vue from 'vue' import AdminTwoFactor from './components/AdminTwoFactor.vue' +import store from './store/admin-security' __webpack_nonce__ = btoa(OC.requestToken) Vue.prototype.t = t; +store.replaceState( + OCP.InitialState.loadState('settings', 'mandatory2FAState') +) + const View = Vue.extend(AdminTwoFactor) -new View().$mount('#two-factor-auth-settings') +new View({ + store +}).$mount('#two-factor-auth-settings') diff --git a/settings/src/store/admin-security.js b/settings/src/store/admin-security.js new file mode 100644 index 00000000000..997aab2af58 --- /dev/null +++ b/settings/src/store/admin-security.js @@ -0,0 +1,63 @@ +/* + * @copyright 2019 Roeland Jago Douma <roeland@famdouma.nl> + * + * @author 2019 Roeland Jago Douma <roeland@famdouma.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +import Vue from 'vue' +import Vuex from 'vuex' + +Vue.use(Vuex) + +export const mutations = { + setEnforced(state, enabled) { + Vue.set(state, 'enforced', enabled) + }, + setEnforcedGroups(state, total) { + Vue.set(state, 'enforcedGroups', total) + }, + setExcludedGroups(state, used) { + Vue.set(state, 'excludedGroups', used) + } +} + +export const actions = { + save ({commit}, ) { + commit('setEnabled', false); + + return generateCodes() + .then(({codes, state}) => { + commit('setEnabled', state.enabled); + commit('setTotal', state.total); + commit('setUsed', state.used); + commit('setCodes', codes); + return true; + }); + } +} + +export default new Vuex.Store({ + strict: process.env.NODE_ENV !== 'production', + state: { + enforced: false, + enforcedGroups: [], + excludedGroups: [], + }, + mutations, + actions +}) |