Welcome to mirror list, hosted at ThFree Co, Russian Federation.

settings-vue-settings-apps-users-management.js.map « dist - github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: e7f4bb4d3745ddd0ff40da1b8a6e2420ba1137ad (plain)
1
{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=1690b32259f1b2d4aa2e","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","webpack://nextcloud/./apps/settings/src/App.vue?083f","webpack://nextcloud/./apps/settings/src/App.vue","webpack://nextcloud/./apps/settings/src/App.vue?c62e","webpack://nextcloud/./apps/settings/src/router.js","webpack://nextcloud/./apps/settings/src/store/api.js","webpack://nextcloud/./apps/settings/src/store/users.js","webpack://nextcloud/./apps/settings/src/store/apps.js","webpack://nextcloud/./apps/settings/src/store/settings.js","webpack://nextcloud/./apps/settings/src/store/oc.js","webpack://nextcloud/./apps/settings/src/store/index.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/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (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((key) => (__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 = (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 = (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((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\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};","<!--\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 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&\"","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 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\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' */'./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 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\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 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 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\nimport api from './api'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\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\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\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tstate.users.push(response.data.ocs.data)\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\t// increment or not\n\t\tif (state.userCount > 0) {\n\t\t\tstate.groups.find(group => group.id === 'disabled').usercount += enabled ? -1 : 1\n\t\t\tstate.userCount += enabled ? 1 : -1\n\t\t\tuser.groups.forEach(group => {\n\t\t\t\t// Increment disabled count\n\t\t\t\tstate.groups.find(groupSearch => groupSearch.id === group).disabled += enabled ? -1 : 1\n\t\t\t})\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 {int} options.offset List offset to request\n\t * @param {int} 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 {int} options.offset List offset to request\n\t * @param {int} options.limit List number to return from offset\n\t * @param 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 {int} options.offset List offset to request\n\t * @param {int} options.limit List number to return from offset\n\t * @param 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 * 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 {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 context.commit\n\t * @param context.dispatch\n\t * @param options.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 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\nimport api from './api'\nimport Vue from 'vue'\nimport { generateUrl } from '@nextcloud/router'\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\tOC.Notification.showHtml(t('settings', 'An error occured during the request. Unable to proceed.') + '<br>' + error.error.response.data.data.message, { timeout: 7 })\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\tOC.dialogs.info(\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\tt('settings', 'App update'),\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\twindow.location.reload()\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\ttrue\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 *\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\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 Roeland Jago Douma <roeland@famdouma.nl>\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\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 * @returns{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 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\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport users from './users'\nimport apps from './apps'\nimport settings from './settings'\nimport oc from './oc'\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\tOC.Notification.showHtml(t('settings', 'An error occured during the request. Unable to proceed.') + '<br>' + message, { timeout: 7 })\n\t\t} catch (e) {\n\t\t\tOC.Notification.showTemporary(t('settings', 'An error occured during the request. Unable to proceed.'))\n\t\t}\n\t\tconsole.error(state, error)\n\t},\n}\n\nexport default new Vuex.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 * @author rakekniven <mark.ziegler@rakekniven.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\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\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\n__webpack_nonce__ = btoa(OC.requestToken)\n\n// Correct the root of the app for chunk loading\n// OC.linkTo matches the apps folders\n// OC.generateUrl ensure the index.php (or not)\n// eslint-disable-next-line\n__webpack_public_path__ = OC.linkTo('settings', 'js/')\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 = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (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 = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((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 = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + {\"351\":\"settings-users\",\"647\":\"settings-apps\"}[chunkId] + \"-\" + chunkId + \".js?v=\" + {\"351\":\"fabf48fe26d9e5930472\",\"647\":\"2f7195eb8a9e051e7b46\"}[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 = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (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 = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 562;","__webpack_require__.p = \"/dist/\";","// no baseURI\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\t562: 0\n};\n\n__webpack_require__.f.j = (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((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 = (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 = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (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((id) => (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[chunkIds[i]] = 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));","// 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, [820], () => (__webpack_require__(31579)))\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","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","userCount","group","assign","addGroup","gid","displayName","find","push","e","console","error","removeGroup","groupIndex","findIndex","groupSearch","splice","addUserGroup","user","enabled","removeUserGroup","indexOf","addUserSubAdmin","subadmin","removeUserSubAdmin","deleteUser","userIndex","addUserData","response","ocs","enableDisableUser","forEach","setUserData","key","value","humanValue","OC","Util","computerFileSize","resetUsers","CancelToken","searchRequestCancelSource","getters","getUsers","getGroups","getSubadminGroups","filter","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getUserCount","actions","context","offset","limit","search","cancel","source","api","generateOcsUrl","encodeURIComponent","cancelToken","token","then","usersCount","commit","catch","limitParam","getUsersFromList","getUsersFromGroup","groupid","groupId","getCapabilities","password_policy","minLength","wipeUserDevices","addUser","dispatch","password","email","quota","language","userStatus","allowedEmpty","Promise","reject","Error","sendWelcomeMail","APPS_API_FAILURE","Notification","showHtml","t","message","timeout","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","dialogs","info","window","location","reload","setTimeout","forceEnableApp","getAllApps","getCategories","loadingList","getUpdateCount","serverData","setServerData","getServerData","setAppConfig","Vuex","API_FAILURE","meta","showTemporary","modules","settings","oc","strict","process","VTooltip","defaultHtml","sync","store","router","__webpack_nonce__","btoa","requestToken","__webpack_public_path__","linkTo","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","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","p","installedChunks","installedChunkData","promise","resolve","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}