summaryrefslogtreecommitdiffstats
path: root/dist/settings-vue-settings-apps-users-management.js.map
blob: aaaf5341f6c3377a06da5907a19ad0206be18976 (plain)
1
{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=e8975b6ec4a2883623a6","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/constants/GroupManagement.ts","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/users-settings.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/apps/settings/src/logger.ts","webpack:///nextcloud/node_modules/vuex-router-sync/index.js","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/SettingsApp.vue?3a67","webpack:///nextcloud/apps/settings/src/router/routes.ts","webpack:///nextcloud/apps/settings/src/router/index.ts","webpack:///nextcloud/apps/settings/src/main-apps-users-management.ts","webpack:///nextcloud/webpack/bootstrap","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 = (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\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\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) 2024 Ferdinand Thiessen <opensource@fthiessen.de>\n *\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\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/**\n * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n */\nexport var GroupSorting;\n(function (GroupSorting) {\n    GroupSorting[GroupSorting[\"UserCount\"] = 1] = \"UserCount\";\n    GroupSorting[GroupSorting[\"GroupName\"] = 2] = \"GroupName\";\n})(GroupSorting || (GroupSorting = {}));\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'\nimport '@nextcloud/password-confirmation/dist/style.css'\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 * @author Stephan Orbaugh <stephan.orbaugh@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 { getBuilder } from '@nextcloud/browser-storage'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport { parseFileSize } from '@nextcloud/files'\nimport { showError } from '@nextcloud/dialogs'\nimport { generateOcsUrl, generateUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\n\nimport { GroupSorting } from '../constants/GroupManagement.ts'\nimport api from './api.js'\nimport logger from '../logger.ts'\n\nconst localStorage = getBuilder('settings').persist(true).build()\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: GroupSorting.UserCount,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tdisabledUsersOffset: 0,\n\tdisabledUsersLimit: 25,\n\tuserCount: 0,\n\tshowConfig: {\n\t\tshowStoragePath: localStorage.getItem('account_settings__showStoragePath') === 'true',\n\t\tshowUserBackend: localStorage.getItem('account_settings__showUserBackend') === 'true',\n\t\tshowLastLogin: localStorage.getItem('account_settings__showLastLogin') === 'true',\n\t\tshowNewUserForm: localStorage.getItem('account_settings__showNewUserForm') === 'true',\n\t\tshowLanguages: localStorage.getItem('account_settings__showLanguages') === 'true',\n\t},\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\tconst existingUsers = state.users.map(({ id }) => id)\n\t\tconst newUsers = Object.values(usersObj)\n\t\t\t.filter(({ id }) => !existingUsers.includes(id))\n\n\t\tconst users = state.users.concat(newUsers)\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tupdateDisabledUsers(state, _usersObj) {\n\t\tstate.disabledUsersOffset += state.disabledUsersLimit\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},\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.unshift(group)\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}\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},\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},\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.unshift(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\t// 0 is a special value\n\t\tif (state.userCount === 0) {\n\t\t\treturn\n\t\t}\n\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 interrupt 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 = parseFileSize(value, true)\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\tstate.disabledUsersOffset = 0\n\t},\n\n\tsetShowConfig(state, { key, value }) {\n\t\tlocalStorage.setItem(`account_settings__${key}`, JSON.stringify(value))\n\t\tstate.showConfig[key] = value\n\t},\n\n\tsetGroupSorting(state, sorting) {\n\t\tconst oldValue = state.orderBy\n\t\tstate.orderBy = sorting\n\n\t\t// Persist the value on the server\n\t\taxios.post(\n\t\t\tgenerateUrl('/settings/users/preferences/group.sortBy'),\n\t\t\t{\n\t\t\t\tvalue: String(sorting),\n\t\t\t},\n\t\t).catch((error) => {\n\t\t\tstate.orderBy = oldValue\n\t\t\tshowError(t('settings', 'Could not set group sorting'))\n\t\t\tlogger.error(error)\n\t\t})\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\tgetSortedGroups(state) {\n\t\tconst groups = [...state.groups]\n\t\tif (state.orderBy === GroupSorting.UserCount) {\n\t\t\treturn groups.sort((a, b) => {\n\t\t\t\tconst numA = a.usercount - a.disabled\n\t\t\t\tconst numB = b.usercount - b.disabled\n\t\t\t\treturn (numA < numB) ? 1 : (numB < numA ? -1 : a.name.localeCompare(b.name))\n\t\t\t})\n\t\t} else {\n\t\t\treturn groups.sort((a, b) => a.name.localeCompare(b.name))\n\t\t}\n\t},\n\tgetGroupSorting(state) {\n\t\treturn state.orderBy\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\tgetDisabledUsersOffset(state) {\n\t\treturn state.disabledUsersOffset\n\t},\n\tgetDisabledUsersLimit(state) {\n\t\treturn state.disabledUsersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n\tgetShowConfig(state) {\n\t\treturn state.showConfig\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * search users\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 * @return {Promise}\n\t */\n\tsearchUsers(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search })).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get user details\n\t *\n\t * @param {object} context store context\n\t * @param {string} userId user id\n\t * @return {Promise}\n\t */\n\tgetUser(context, userId) {\n\t\treturn api.get(generateOcsUrl(`cloud/users/${userId}`)).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\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 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\n\t\t/**\n\t\t * Adding filters in the search bar such as in:files, in:users, etc.\n\t\t * collides with this particular search, so we need to remove them\n\t\t * here and leave only the original search query\n\t\t */\n\t\tsearch = search.replace(/in:[^\\s]+/g, '').trim()\n\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\t/**\n\t * Get disabled 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 * @return {Promise<number>}\n\t */\n\tasync getDisabledUsers(context, { offset, limit, search }) {\n\t\tconst url = generateOcsUrl('cloud/users/disabled?offset={offset}&limit={limit}&search={search}', { offset, limit, search })\n\t\ttry {\n\t\t\tconst response = await api.get(url)\n\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\tif (usersCount > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\tcontext.commit('updateDisabledUsers', response.data.ocs.data.users)\n\t\t\t}\n\t\t\treturn usersCount\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', error)\n\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 (getCapabilities().password_policy && getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', getCapabilities().password_policy.minLength)\n\t\t\treturn 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 * @param {string} options.manager User manager\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language, manager }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language, manager })\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', 'manager']\n\t\tif (['email', 'language', 'quota', 'displayname', 'password', 'manager'].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.js'\nimport Vue from 'vue'\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tapps: [],\n\tbundles: loadState('settings', 'appstoreBundles', []),\n\tcategories: [],\n\tupdateCount: loadState('settings', 'appstoreUpdateCount', 0),\n\tloading: {},\n\tgettingCategoriesPromise: null,\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occurred 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\tupdateCategories(state, categoriesPromise) {\n\t\tstate.gettingCategoriesPromise = categoriesPromise\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\tsetInstallState(state, { appId, canInstall }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tif (app) {\n\t\t\tapp.canInstall = canInstall === true\n\t\t}\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\tgetAppBundles(state) {\n\t\treturn state.bundles\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n\tgetCategoryById: (state) => (selectedCategoryId) => {\n\t\treturn state.categories.find((category) => category.id === selectedCategoryId)\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 axios.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\tshowError(t('settings', 'Error: This app cannot be enabled because it makes the server unstable'))\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\tcontext.dispatch('disableApp', { appId })\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\tcontext.commit('setInstallState', { appId, canInstall: 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('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\t\t.finally(() => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\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\tasync getCategories(context, { shouldRefetchCategories = false } = {}) {\n\t\tif (shouldRefetchCategories || !context.state.gettingCategoriesPromise) {\n\t\t\tcontext.commit('startLoading', 'categories')\n\t\t\ttry {\n\t\t\t\tconst categoriesPromise = api.get(generateUrl('settings/apps/categories'))\n\t\t\t\tcontext.commit('updateCategories', categoriesPromise)\n\t\t\t\tconst categoriesPromiseResponse = await categoriesPromise\n\t\t\t\tif (categoriesPromiseResponse.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', categoriesPromiseResponse.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\tcontext.commit('stopLoading', 'categories')\n\t\t\t\treturn false\n\t\t\t} catch (error) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t}\n\t\treturn context.state.gettingCategoriesPromise\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 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 { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tserverData: loadState('settings', 'usersSettings', {}),\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 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.js'\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.js'\nimport apps from './apps.js'\nimport settings from './users-settings.js'\nimport oc from './oc.js'\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\nlet store = null\n\nexport const useStore = () => {\n\tif (store === null) {\n\t\tstore = new Store({\n\t\t\tmodules: {\n\t\t\t\tusers,\n\t\t\t\tapps,\n\t\t\t\tsettings,\n\t\t\t\toc,\n\t\t\t},\n\t\t\tstrict: debug,\n\t\t\tmutations,\n\t\t})\n\t}\n\treturn store\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n    .setApp('settings')\n    .detectUser()\n    .build();\n","exports.sync = function (store, router, options) {\n  var moduleName = (options || {}).moduleName || 'route'\n\n  store.registerModule(moduleName, {\n    namespaced: true,\n    state: cloneRoute(router.currentRoute),\n    mutations: {\n      'ROUTE_CHANGED': function ROUTE_CHANGED (state, transition) {\n        store.state[moduleName] = cloneRoute(transition.to, transition.from)\n      }\n    }\n  })\n\n  var isTimeTraveling = false\n  var currentPath\n\n  // sync router on store change\n  var storeUnwatch = store.watch(\n    function (state) { return state[moduleName]; },\n    function (route) {\n      var fullPath = route.fullPath;\n      if (fullPath === currentPath) {\n        return\n      }\n      if (currentPath != null) {\n        isTimeTraveling = true\n        router.push(route)\n      }\n      currentPath = fullPath\n    },\n    { sync: true }\n  )\n\n  // sync store on router navigation\n  var afterEachUnHook = router.afterEach(function (to, from) {\n    if (isTimeTraveling) {\n      isTimeTraveling = false\n      return\n    }\n    currentPath = to.fullPath\n    store.commit(moduleName + '/ROUTE_CHANGED', { to: to, from: from })\n  })\n\n  return function unsync () {\n    // On unsync, remove router hook\n    if (afterEachUnHook != null) {\n      afterEachUnHook()\n    }\n\n    // On unsync, remove store watch\n    if (storeUnwatch != null) {\n      storeUnwatch()\n    }\n\n    // On unsync, unregister Module with store\n    store.unregisterModule(moduleName)\n  }\n}\n\nfunction cloneRoute (to, from) {\n  var clone = {\n    name: to.name,\n    path: to.path,\n    hash: to.hash,\n    query: to.query,\n    params: to.params,\n    fullPath: to.fullPath,\n    meta: to.meta\n  }\n  if (from) {\n    clone.from = cloneRoute(from)\n  }\n  return Object.freeze(clone)\n}\n\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcContent,{attrs:{\"app-name\":\"settings\"}},[_c('router-view',{attrs:{\"name\":\"navigation\"}}),_vm._v(\" \"),_c('router-view'),_vm._v(\" \"),_c('router-view',{attrs:{\"name\":\"sidebar\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./SettingsApp.vue?vue&type=template&id=b0b62a76\"\nimport script from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\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","import { loadState } from '@nextcloud/initial-state';\nconst appstoreEnabled = loadState('settings', 'appstoreEnabled', true);\n// Dynamic loading\nconst AppStore = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStore.vue');\nconst AppStoreNavigation = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreNavigation.vue');\nconst AppStoreSidebar = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreSidebar.vue');\nconst UserManagement = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagement.vue');\nconst UserManagementNavigation = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagementNavigation.vue');\nconst routes = [\n    {\n        name: 'users',\n        path: '/:index(index.php/)?settings/users',\n        components: {\n            default: UserManagement,\n            navigation: UserManagementNavigation,\n        },\n        props: true,\n        children: [\n            {\n                path: ':selectedGroup',\n                name: 'group',\n            },\n        ],\n    },\n    {\n        path: '/:index(index.php/)?settings/apps',\n        name: 'apps',\n        redirect: {\n            name: 'apps-category',\n            params: {\n                category: appstoreEnabled ? 'discover' : 'installed',\n            },\n        },\n        components: {\n            default: AppStore,\n            navigation: AppStoreNavigation,\n            sidebar: AppStoreSidebar,\n        },\n        children: [\n            {\n                path: ':category',\n                name: 'apps-category',\n                children: [\n                    {\n                        path: ':id',\n                        name: 'apps-details',\n                    },\n                ],\n            },\n        ],\n    },\n];\nexport default routes;\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 * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\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 */\nimport Vue from 'vue';\nimport Router from 'vue-router';\nimport { generateUrl } from '@nextcloud/router';\nimport routes from './routes.ts';\nVue.use(Router);\nconst router = new Router({\n    mode: 'history',\n    // if index.php is in the url AND we got this far, then it's working:\n    // let's keep using index.php in the url\n    base: generateUrl(''),\n    linkActiveClass: 'active',\n    routes,\n});\nexport default router;\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 */\nimport Vue from 'vue';\nimport VTooltip from 'v-tooltip';\nimport { sync } from 'vuex-router-sync';\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n';\nimport SettingsApp from './views/SettingsApp.vue';\nimport router from './router/index.ts';\nimport { useStore } from './store/index.js';\nimport { getRequestToken } from '@nextcloud/auth';\nimport { PiniaVuePlugin, createPinia } from 'pinia';\nVue.use(VTooltip, { defaultHtml: false });\nconst store = useStore();\nsync(store, router);\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken() ?? '');\n// bind to window\nVue.prototype.t = t;\nVue.prototype.n = n;\nVue.use(PiniaVuePlugin);\nconst pinia = createPinia();\nexport default new Vue({\n    router,\n    store,\n    pinia,\n    render: h => h(SettingsApp),\n    el: '#content',\n});\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","// 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 \"\" + ({\"3239\":\"settings-users\",\"4529\":\"settings-apps-view\"}[chunkId] || chunkId) + \"-\" + chunkId + \".js?v=\" + {\"1544\":\"34736cf5f97675c121ab\",\"2441\":\"bd6d3dc836e836cd4795\",\"3239\":\"d9df4095b1b8fd44afe1\",\"3865\":\"e5bf95b42e72ee8115f3\",\"4529\":\"a67cba58b65aa5810be6\",\"5775\":\"bdb5a44b157eaff757ea\",\"5862\":\"18c97d281a8207f0ce8d\",\"7265\":\"4debcb39bc5bc1550c8c\",\"8630\":\"1c63d6550408bf0f2211\"}[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 = 2689;","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 && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\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 || !/^http(s?):/.test(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(/^blob:/, \"\").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\t2689: 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}\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[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, [4208], () => (__webpack_require__(74329)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","GroupSorting","sanitize","url","replace","requireAdmin","confirmPassword","get","options","axios","post","data","put","delete","params","localStorage","getBuilder","persist","build","defaults","id","name","usercount","disabled","canAdd","canRemove","state","users","groups","orderBy","UserCount","minPasswordLength","usersOffset","usersLimit","disabledUsersOffset","disabledUsersLimit","userCount","showConfig","showStoragePath","getItem","showUserBackend","showLastLogin","showNewUserForm","showLanguages","mutations","appendUsers","usersObj","existingUsers","map","_ref","newUsers","Object","values","filter","_ref2","includes","concat","updateDisabledUsers","_usersObj","setPasswordPolicyMinLength","length","initGroups","_ref3","group","assign","addGroup","_ref4","gid","displayName","find","unshift","e","console","error","renameGroup","_ref5","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","_ref6","userid","user","enabled","push","removeUserGroup","_ref7","indexOf","addUserSubAdmin","_ref8","subadmin","removeUserSubAdmin","_ref9","deleteUser","userIndex","this","commit","actionType","addUserData","response","ocs","enableDisableUser","_ref10","updateUserCounts","_ref11","disabledGroup","forEach","userGroup","warn","logger","setUserData","_ref12","key","value","humanValue","parseFileSize","resetUsers","setShowConfig","_ref13","setItem","JSON","stringify","setGroupSorting","sorting","oldValue","generateUrl","String","catch","showError","t","getters","getUsers","getGroups","getSubadminGroups","getSortedGroups","sort","a","b","numA","numB","localeCompare","getGroupSorting","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getDisabledUsersOffset","getDisabledUsersLimit","getUserCount","getShowConfig","CancelToken","searchRequestCancelSource","actions","searchUsers","context","_ref14","offset","limit","search","api","generateOcsUrl","getUser","userId","_ref15","cancel","source","trim","encodeURIComponent","cancelToken","token","then","usersCount","keys","getDisabledUsers","_ref16","_ref17","limitParam","getUsersFromList","_ref18","getUsersFromGroup","_ref19","groupid","groupId","getCapabilities","password_policy","minLength","_ref20","_ref21","_ref22","_ref23","_ref24","wipeUserDevices","addUser","_ref25","_ref26","dispatch","password","email","quota","language","manager","_ref27","userStatus","_ref28","allowedEmpty","Promise","reject","Error","sendWelcomeMail","apps","bundles","loadState","categories","updateCount","loading","gettingCategoriesPromise","APPS_API_FAILURE","message","isHTML","initCategories","updateCategories","categoriesPromise","setUpdateCount","addCategory","category","appendCategories","categoriesArray","setAllApps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","setInstallState","canInstall","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","updateApp","version","update","resetApps","reset","startLoading","Vue","stopLoading","appIds","_appId","update_required","showInfo","onClick","window","location","reload","close","setTimeout","forceEnableApp","finally","getAllApps","getCategories","shouldRefetchCategories","arguments","undefined","categoriesPromiseResponse","getAppBundles","getUpdateCount","getCategoryById","selectedCategoryId","serverData","setServerData","getServerData","setAppConfig","use","Vuex","API_FAILURE","meta","store","useStore","Store","modules","settings","oc","strict","process","getLoggerBuilder","setApp","detectUser","cloneRoute","to","from","clone","path","hash","query","fullPath","freeze","exports","router","moduleName","registerModule","namespaced","currentRoute","transition","currentPath","isTimeTraveling","storeUnwatch","watch","route","sync","afterEachUnHook","afterEach","unregisterModule","_defineComponent","__name","setup","__props","__sfc","NcContent","_vm","_c","_self","_setupProxy","attrs","_v","components","default","UserManagement","navigation","UserManagementNavigation","props","children","redirect","AppStore","AppStoreNavigation","sidebar","AppStoreSidebar","Router","mode","base","linkActiveClass","routes","VTooltip","defaultHtml","__webpack_nonce__","btoa","getRequestToken","prototype","n","PiniaVuePlugin","pinia","createPinia","render","h","SettingsApp","el","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","module","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","o","defineProperty","enumerable","f","chunkId","all","reduce","promises","u","g","globalThis","Function","obj","prop","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","tagName","toUpperCase","test","p","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}