You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nextcloud/dist/settings-vue-settings-apps-...

1 line
91 KiB
Plaintext

{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=973f2bd909ce57110c65","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/App.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/settings/src/App.vue","webpack://nextcloud/./apps/settings/src/App.vue?536c","webpack:///nextcloud/apps/settings/src/App.vue?vue&type=template&id=50420604","webpack:///nextcloud/apps/settings/src/router.js","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/apps/settings/src/store/settings.js","webpack:///nextcloud/apps/settings/src/main-apps-users-management.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<router-view />\n</template>\n\n<script>\nexport default {\n\tname: 'App',\n\tbeforeMount() {\n\t\t// importing server data into the store\n\t\tconst serverDataElmt = document.getElementById('serverData')\n\t\tif (serverDataElmt !== null) {\n\t\t\tthis.$store.commit('setServerData', JSON.parse(document.getElementById('serverData').dataset.server))\n\t\t}\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=50420604\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-view')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Router from 'vue-router'\nimport { generateUrl } from '@nextcloud/router'\n\n// Dynamic loading\nconst Users = () => import(/* webpackChunkName: 'settings-users' */'./views/Users')\nconst Apps = () => import(/* webpackChunkName: 'settings-apps-view' */'./views/Apps')\n\nVue.use(Router)\n\n/*\n * This is the list of routes where the vuejs app will\n * take over php to provide data\n * You need to forward the php routing (routes.php) to\n * the settings-vue template, where the vue-router will\n * ensure the proper route.\n * ⚠️ Routes needs to match the php routes.\n */\n\nexport default new Router({\n\tmode: 'history',\n\t// if index.php is in the url AND we got this far, then it's working:\n\t// let's keep using index.php in the url\n\tbase: generateUrl(''),\n\tlinkActiveClass: 'active',\n\troutes: [\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/users',\n\t\t\tcomponent: Users,\n\t\t\tprops: true,\n\t\t\tname: 'users',\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':selectedGroup',\n\t\t\t\t\tname: 'group',\n\t\t\t\t\tcomponent: Users,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/apps',\n\t\t\tcomponent: Apps,\n\t\t\tprops: true,\n\t\t\tname: 'apps',\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':category',\n\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\tcomponent: Apps,\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpath: ':id',\n\t\t\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\t\t\tcomponent: Apps,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t],\n})\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <sujith.h@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport confirmPassword from '@nextcloud/password-confirmation'\n\nconst sanitize = function(url) {\n\treturn url.replace(/\\/$/, '') // Remove last url slash\n}\n\nexport default {\n\n\t/**\n\t * This Promise is used to chain a request that require an admin password confirmation\n\t * Since chaining Promise have a very precise behavior concerning catch and then,\n\t * you'll need to be careful when using it.\n\t * e.g\n\t * // store\n\t * action(context) {\n\t * return api.requireAdmin().then((response) => {\n\t * return api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {API failure});\n\t * }).catch((error) => {requireAdmin failure});\n\t * }\n\t * // vue\n\t * this.$store.dispatch('action').then(() => {always executed})\n\t *\n\t * Since Promise.then().catch().then() will always execute the last then\n\t * this.$store.dispatch('action').then will always be executed\n\t *\n\t * If you want requireAdmin failure to also catch the API request failure\n\t * you will need to throw a new error in the api.get.catch()\n\t *\n\t * e.g\n\t * api.requireAdmin().then((response) => {\n\t * api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {throw error;});\n\t * }).catch((error) => {requireAdmin OR API failure});\n\t *\n\t * @return {Promise}\n\t */\n\trequireAdmin() {\n\t\treturn confirmPassword()\n\t},\n\tget(url, options) {\n\t\treturn axios.get(sanitize(url), options)\n\t},\n\tpost(url, data) {\n\t\treturn axios.post(sanitize(url), data)\n\t},\n\tpatch(url, data) {\n\t\treturn axios.patch(sanitize(url), data)\n\t},\n\tput(url, data) {\n\t\treturn axios.put(sanitize(url), data)\n\t},\n\tdelete(url, data) {\n\t\treturn axios.delete(sanitize(url), { params: data })\n\t},\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport logger from '../logger'\n\nconst orderGroups = function(groups, orderBy) {\n\t/* const SORT_USERCOUNT = 1;\n\t * const SORT_GROUPNAME = 2;\n\t * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n\t */\n\tif (orderBy === 1) {\n\t\treturn groups.sort((a, b) => a.usercount - a.disabled < b.usercount - b.disabled)\n\t} else {\n\t\treturn groups.sort((a, b) => a.name.localeCompare(b.name))\n\t}\n}\n\nconst defaults = {\n\tgroup: {\n\t\tid: '',\n\t\tname: '',\n\t\tusercount: 0,\n\t\tdisabled: 0,\n\t\tcanAdd: true,\n\t\tcanRemove: true,\n\t},\n}\n\nconst state = {\n\tusers: [],\n\tgroups: [],\n\torderBy: 1,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tuserCount: 0,\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\t// convert obj to array\n\t\tconst users = state.users.concat(Object.keys(usersObj).map(userid => usersObj[userid]))\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tsetPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0\n\t},\n\tinitGroups(state, { groups, orderBy, userCount }) {\n\t\tstate.groups = groups.map(group => Object.assign({}, defaults.group, group))\n\t\tstate.orderBy = orderBy\n\t\tstate.userCount = userCount\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\n\t},\n\taddGroup(state, { gid, displayName }) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === gid) !== 'undefined') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// extend group to default values\n\t\t\tconst group = Object.assign({}, defaults.group, {\n\t\t\t\tid: gid,\n\t\t\t\tname: displayName,\n\t\t\t})\n\t\t\tstate.groups.push(group)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t} catch (e) {\n\t\t\tconsole.error('Can\\'t create group', e)\n\t\t}\n\t},\n\trenameGroup(state, { gid, displayName }) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tconst updatedGroup = state.groups[groupIndex]\n\t\t\tupdatedGroup.name = displayName\n\t\t\tstate.groups.splice(groupIndex, 1, updatedGroup)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1)\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount++\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.push(gid)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount--\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.push(gid)\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\tdeleteUser(state, userid) {\n\t\tconst userIndex = state.users.findIndex(user => user.id === userid)\n\t\tthis.commit('updateUserCounts', { user: state.users[userIndex], actionType: 'remove' })\n\t\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tconst user = response.data.ocs.data\n\t\tstate.users.push(user)\n\t\tthis.commit('updateUserCounts', { user, actionType: 'create' })\n\t},\n\tenableDisableUser(state, { userid, enabled }) {\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\tuser.enabled = enabled\n\t\tthis.commit('updateUserCounts', { user, actionType: enabled ? 'enable' : 'disable' })\n\t},\n\t// update active/disabled counts, groups counts\n\tupdateUserCounts(state, { user, actionType }) {\n\t\tconst disabledGroup = state.groups.find(group => group.id === 'disabled')\n\t\tswitch (actionType) {\n\t\tcase 'enable':\n\t\tcase 'disable':\n\t\t\tdisabledGroup.usercount += user.enabled ? -1 : 1 // update Disabled Users count\n\t\t\tstate.userCount += user.enabled ? 1 : -1 // update Active Users count\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tgroup.disabled += user.enabled ? -1 : 1 // update group disabled count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'create':\n\t\t\tstate.userCount++ // increment Active Users count\n\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tstate.groups\n\t\t\t\t\t.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t .usercount++ // increment group total count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'remove':\n\t\t\tif (user.enabled) {\n\t\t\t\tstate.userCount-- // decrement Active Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tif (!group) {\n\t\t\t\t\t\tconsole.warn('User group ' + userGroup + ' does not exist during user removal')\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tgroup.usercount-- // decrement group total count\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tdisabledGroup.usercount-- // decrement Disabled Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.disabled-- // decrement group disabled count\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tlogger.error(`Unknown action type in updateUserCounts: '${actionType}'`)\n\t\t\t// not throwing error to interupt execution as this is not fatal\n\t\t}\n\t},\n\tsetUserData(state, { userid, key, value }) {\n\t\tif (key === 'quota') {\n\t\t\tconst humanValue = OC.Util.computerFileSize(value)\n\t\t\tstate.users.find(user => user.id === userid)[key][key] = humanValue !== null ? humanValue : value\n\t\t} else {\n\t\t\tstate.users.find(user => user.id === userid)[key] = value\n\t\t}\n\t},\n\n\t/**\n\t * Reset users list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetUsers(state) {\n\t\tstate.users = []\n\t\tstate.usersOffset = 0\n\t},\n}\n\nconst getters = {\n\tgetUsers(state) {\n\t\treturn state.users\n\t},\n\tgetGroups(state) {\n\t\treturn state.groups\n\t},\n\tgetSubadminGroups(state) {\n\t\t// Can't be subadmin of admin or disabled\n\t\treturn state.groups.filter(group => group.id !== 'admin' && group.id !== 'disabled')\n\t},\n\tgetPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength\n\t},\n\tgetUsersOffset(state) {\n\t\treturn state.usersOffset\n\t},\n\tgetUsersLimit(state) {\n\t\treturn state.usersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @param {string} options.group Get users from group\n\t * @return {Promise}\n\t */\n\tgetUsers(context, { offset, limit, search, group }) {\n\t\tif (searchRequestCancelSource) {\n\t\t\tsearchRequestCancelSource.cancel('Operation canceled by another search request.')\n\t\t}\n\t\tsearchRequestCancelSource = CancelToken.source()\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tgroup = typeof group === 'string' ? group : ''\n\t\tif (group !== '') {\n\t\t\treturn api.get(generateOcsUrl('cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}', { group: encodeURIComponent(group), offset, limit, search }), {\n\t\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\t}\n\t\t\t\t\treturn usersCount\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }), {\n\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t}\n\t\t\t\treturn usersCount\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t}\n\t\t\t})\n\t},\n\n\tgetGroups(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tconst limitParam = limit === -1 ? '' : `&limit=${limit}`\n\t\treturn api.get(generateOcsUrl('cloud/groups?offset={offset}&search={search}', { offset, search }) + limitParam)\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tresponse.data.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\tcontext.commit('addGroup', { gid: group, displayName: group })\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search -\n\t * @return {Promise}\n\t */\n\tgetUsersFromList(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details from a groupid\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.groupid -\n\t * @return {Promise}\n\t */\n\tgetUsersFromGroup(context, { groupid, offset, limit }) {\n\t\treturn api.get(generateOcsUrl('cloud/users/{groupId}/details?offset={offset}&limit={limit}', { groupId: encodeURIComponent(groupid), offset, limit }))\n\t\t\t.then((response) => context.commit('getUsersFromList', response.data.ocs.data.users))\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetPasswordPolicyMinLength(context) {\n\t\tif (OC.getCapabilities().password_policy && OC.getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', OC.getCapabilities().password_policy.minLength)\n\t\t\treturn OC.getCapabilities().password_policy.minLength\n\t\t}\n\t\treturn false\n\t},\n\n\t/**\n\t * Add group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\taddGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/groups'), { groupid: gid })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('addGroup', { gid, displayName: gid })\n\t\t\t\t\treturn { gid, displayName: gid }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { gid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from adding the user to a group that doesn't exists\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Rename group\n\t *\n\t * @param {Object} context store context\n\t * @param {string} groupid Group id\n\t * @param {string} displayName Group display name\n\t * @return {Promise}\n\t */\n\trenameGroup(context, { groupid, displayName }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(groupid) }), { key: 'displayname', value: displayName })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('renameGroup', { gid: groupid, displayName })\n\t\t\t\t\treturn { groupid, displayName }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { groupid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from renaming the group\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Remove group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\tremoveGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(gid) }))\n\t\t\t\t.then((response) => context.commit('removeGroup', gid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { gid, error }))\n\t},\n\n\t/**\n\t * Add user to group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t// let's throw one more time to prevent\n\t\t\t// the view from removing the user row on failure\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Add user to group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Mark all user devices for remote wipe\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\twipeUserDevices(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Delete a user\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tdeleteUser(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('deleteUser', userid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Add a user\n\t *\n\t * @param {object} context store context\n\t * @param {Function} context.commit -\n\t * @param {Function} context.dispatch -\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.password User password\n\t * @param {string} options.displayName User display name\n\t * @param {string} options.email User email\n\t * @param {string} options.groups User groups\n\t * @param {string} options.subadmin User subadmin groups\n\t * @param {string} options.quota User email\n\t * @param {string} options.language User language\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language })\n\t\t\t\t.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcommit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Get user data and commit addition\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\taddUserData(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.get(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('addUserData', response))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Enable or disable user\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {boolean} options.enabled User enablement status\n\t * @return {Promise}\n\t */\n\tenableDisableUser(context, { userid, enabled = true }) {\n\t\tconst userStatus = enabled ? 'enable' : 'disable'\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}/{userStatus}', { userid, userStatus }))\n\t\t\t\t.then((response) => context.commit('enableDisableUser', { userid, enabled }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Edit user data\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.key User field to edit\n\t * @param {string} options.value Value of the change\n\t * @return {Promise}\n\t */\n\tsetUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname']\n\t\tif (['email', 'language', 'quota', 'displayname', 'password'].indexOf(key) !== -1) {\n\t\t\t// We allow empty email or displayname\n\t\t\tif (typeof value === 'string'\n\t\t\t\t&& (\n\t\t\t\t\t(allowedEmpty.indexOf(key) === -1 && value.length > 0)\n\t\t\t\t\t|| allowedEmpty.indexOf(key) !== -1\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn api.requireAdmin().then((response) => {\n\t\t\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\t\t\t\t.then((response) => context.commit('setUserData', { userid, key, value }))\n\t\t\t\t\t\t.catch((error) => { throw error })\n\t\t\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t\t\t}\n\t\t}\n\t\treturn Promise.reject(new Error('Invalid request data'))\n\t},\n\n\t/**\n\t * Send welcome mail\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tsendWelcomeMail(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/welcome', { userid }))\n\t\t\t\t.then(response => true)\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport Vue from 'vue'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport '@nextcloud/dialogs/styles/toast.scss'\n\nconst state = {\n\tapps: [],\n\tcategories: [],\n\tupdateCount: 0,\n\tloading: {},\n\tloadingList: false,\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occured during the request. Unable to proceed.') + '<br>' + error.error.response.data.data.message, { isHTML: true })\n\t\tconsole.error(state, error)\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\tsetUpdateCount(state, updateCount) {\n\t\tstate.updateCount = updateCount\n\t},\n\n\taddCategory(state, category) {\n\t\tstate.categories.push(category)\n\t},\n\n\tappendCategories(state, categoriesArray) {\n\t\t// convert obj to array\n\t\tstate.categories = categoriesArray\n\t},\n\n\tsetAllApps(state, apps) {\n\t\tstate.apps = apps\n\t},\n\n\tsetError(state, { appId, error }) {\n\t\tif (!Array.isArray(appId)) {\n\t\t\tappId = [appId]\n\t\t}\n\t\tappId.forEach((_id) => {\n\t\t\tconst app = state.apps.find(app => app.id === _id)\n\t\t\tapp.error = error\n\t\t})\n\t},\n\n\tclearError(state, { appId, error }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.error = null\n\t},\n\n\tenableApp(state, { appId, groups }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = true\n\t\tapp.groups = groups\n\t},\n\n\tdisableApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = false\n\t\tapp.groups = []\n\t\tif (app.removable) {\n\t\t\tapp.canUnInstall = true\n\t\t}\n\t},\n\n\tuninstallApp(state, appId) {\n\t\tstate.apps.find(app => app.id === appId).active = false\n\t\tstate.apps.find(app => app.id === appId).groups = []\n\t\tstate.apps.find(app => app.id === appId).needsDownload = true\n\t\tstate.apps.find(app => app.id === appId).installed = false\n\t\tstate.apps.find(app => app.id === appId).canUnInstall = false\n\t\tstate.apps.find(app => app.id === appId).canInstall = true\n\t},\n\n\tupdateApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tconst version = app.update\n\t\tapp.update = null\n\t\tapp.version = version\n\t\tstate.updateCount--\n\n\t},\n\n\tresetApps(state) {\n\t\tstate.apps = []\n\t},\n\treset(state) {\n\t\tstate.apps = []\n\t\tstate.categories = []\n\t\tstate.updateCount = 0\n\t},\n\tstartLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, true)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, true)\n\t\t}\n\t},\n\tstopLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, false)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, false)\n\t\t}\n\t},\n}\n\nconst getters = {\n\tloading(state) {\n\t\treturn function(id) {\n\t\t\treturn state.loading[id]\n\t\t}\n\t},\n\tgetCategories(state) {\n\t\treturn state.categories\n\t},\n\tgetAllApps(state) {\n\t\treturn state.apps\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n}\n\nconst actions = {\n\n\tenableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/enable'), { appIds: apps, groups })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t\t})\n\n\t\t\t\t\t// check for server health\n\t\t\t\t\treturn api.get(generateUrl('apps/files'))\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (response.data.update_required) {\n\t\t\t\t\t\t\t\tshowInfo(\n\t\t\t\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tonClick: () => window.location.reload(),\n\t\t\t\t\t\t\t\t\t\tclose: false,\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tlocation.reload()\n\t\t\t\t\t\t\t\t}, 5000)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\tif (!Array.isArray(appId)) {\n\t\t\t\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\t\t\t\terror: t('settings', 'Error: This app cannot be enabled because it makes the server unstable'),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tforceEnableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/force'), { appId })\n\t\t\t\t.then((response) => {\n\t\t\t\t\t// TODO: find a cleaner solution\n\t\t\t\t\tlocation.reload()\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tdisableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\treturn api.post(generateUrl('settings/apps/disable'), { appIds: apps })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tuninstallApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\treturn api.get(generateUrl(`settings/apps/uninstall/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('uninstallApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tupdateApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.get(generateUrl(`settings/apps/update/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('updateApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tgetAllApps(context) {\n\t\tcontext.commit('startLoading', 'list')\n\t\treturn api.get(generateUrl('settings/apps/list'))\n\t\t\t.then((response) => {\n\t\t\t\tcontext.commit('setAllApps', response.data.apps)\n\t\t\t\tcontext.commit('stopLoading', 'list')\n\t\t\t\treturn true\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetCategories(context) {\n\t\tcontext.commit('startLoading', 'categories')\n\t\treturn api.get(generateUrl('settings/apps/categories'))\n\t\t\t.then((response) => {\n\t\t\t\tif (response.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', response.data)\n\t\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst state = {}\nconst mutations = {}\nconst getters = {}\nconst actions = {\n\t/**\n\t * Set application config in database\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.app Application name\n\t * @param {boolean} options.key Config key\n\t * @param {boolean} options.value Value to set\n\t * @return {Promise}\n\t */\n\tsetAppConfig(context, { app, key, value }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('apps/provisioning_api/api/v1/config/apps/{app}/{key}', { app, key }), { value })\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { app, key, value, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport users from './users'\nimport apps from './apps'\nimport settings from './settings'\nimport oc from './oc'\nimport { showError } from '@nextcloud/dialogs'\n\nVue.use(Vuex)\n\nconst debug = process.env.NODE_ENV !== 'production'\n\nconst mutations = {\n\tAPI_FAILURE(state, error) {\n\t\ttry {\n\t\t\tconst message = error.error.response.data.ocs.meta.message\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '<br>' + message, { isHTML: true })\n\t\t} catch (e) {\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.'))\n\t\t}\n\t\tconsole.error(state, error)\n\t},\n}\n\nexport default new Store({\n\tmodules: {\n\t\tusers,\n\t\tapps,\n\t\tsettings,\n\t\toc,\n\t},\n\tstrict: debug,\n\n\tmutations,\n})\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst state = {\n\tserverData: {},\n}\nconst mutations = {\n\tsetServerData(state, data) {\n\t\tstate.serverData = data\n\t},\n}\nconst getters = {\n\tgetServerData(state) {\n\t\treturn state.serverData\n\t},\n}\nconst actions = {}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport VTooltip from 'v-tooltip'\nimport { sync } from 'vuex-router-sync'\n\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nVue.use(VTooltip, { defaultHtml: false })\n\nsync(store, router)\n\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\n// bind to window\nVue.prototype.t = t\nVue.prototype.n = n\nVue.prototype.OC = OC\nVue.prototype.OCA = OCA\n// eslint-disable-next-line camelcase\nVue.prototype.oc_userconfig = oc_userconfig\n\nconst app = new Vue({\n\trouter,\n\tstore,\n\trender: h => h(App),\n}).$mount('#content')\n\nexport { app, router, store }\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + {\"7418\":\"settings-apps-view\",\"8351\":\"settings-users\"}[chunkId] + \"-\" + chunkId + \".js?v=\" + {\"7418\":\"158210db788f5b3a4b99\",\"8351\":\"5cbdc3b1531325b3003f\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 8562;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8562: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(68985); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","_h","this","$createElement","_self","_c","Users","Apps","Vue","Router","mode","base","generateUrl","linkActiveClass","routes","path","component","props","name","children","sanitize","url","replace","confirmPassword","options","axios","data","params","getLoggerBuilder","setApp","detectUser","build","orderGroups","groups","orderBy","sort","a","b","usercount","disabled","localeCompare","defaults","id","canAdd","canRemove","mutations","appendUsers","state","usersObj","users","concat","Object","keys","map","userid","usersOffset","usersLimit","setPasswordPolicyMinLength","length","minPasswordLength","initGroups","_ref","userCount","group","assign","addGroup","_ref2","gid","displayName","find","push","e","console","error","renameGroup","_ref3","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","_ref4","user","enabled","removeUserGroup","_ref5","indexOf","addUserSubAdmin","_ref6","subadmin","removeUserSubAdmin","_ref7","deleteUser","userIndex","commit","actionType","addUserData","response","ocs","enableDisableUser","_ref8","updateUserCounts","_ref9","disabledGroup","forEach","userGroup","warn","logger","setUserData","_ref10","key","value","humanValue","OC","Util","computerFileSize","resetUsers","CancelToken","searchRequestCancelSource","getters","getUsers","getGroups","getSubadminGroups","filter","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getUserCount","actions","context","_ref11","offset","limit","search","cancel","source","api","generateOcsUrl","encodeURIComponent","cancelToken","token","then","usersCount","catch","_ref12","limitParam","getUsersFromList","_ref13","getUsersFromGroup","_ref14","groupid","groupId","getCapabilities","password_policy","minLength","_ref15","_ref16","_ref17","_ref18","_ref19","wipeUserDevices","addUser","_ref20","_ref21","dispatch","password","email","quota","language","_ref22","_ref22$enabled","userStatus","_ref23","allowedEmpty","Promise","reject","Error","sendWelcomeMail","APPS_API_FAILURE","showError","t","message","isHTML","initCategories","categories","updateCount","setUpdateCount","addCategory","category","appendCategories","categoriesArray","setAllApps","apps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","canInstall","updateApp","version","update","resetApps","reset","startLoading","loading","stopLoading","appIds","_appId","update_required","showInfo","onClick","window","location","reload","close","setTimeout","forceEnableApp","getAllApps","getCategories","loadingList","getUpdateCount","setAppConfig","Vuex","API_FAILURE","meta","Store","modules","settings","serverData","setServerData","getServerData","oc","strict","process","VTooltip","defaultHtml","sync","store","router","__webpack_nonce__","btoa","requestToken","n","OCA","oc_userconfig","render","h","App","$mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","amdD","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","o","defineProperty","enumerable","get","f","chunkId","all","reduce","promises","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","p","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}