1 |
- {"version":3,"file":"settings-vue-settings-apps-users-management.js?v=f207236fe17964685f9e","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/constants/AppsConstants.js","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/App.vue","webpack:///nextcloud/apps/settings/src/App.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/App.vue?536c","webpack://nextcloud/./apps/settings/src/App.vue?4d15","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/core/src/OCP/accessibility.js","webpack:///nextcloud/apps/settings/src/router.js","webpack:///nextcloud/apps/settings/src/main-apps-users-management.js","webpack:///nextcloud/node_modules/vuex-router-sync/index.js","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 2022, Julia Kirschenheuter <julia.kirschenheuter@nextcloud.com>\n *\n * @author Julia Kirschenheuter <julia.kirschenheuter@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 { translate as t } from '@nextcloud/l10n'\n\n/** Enum of verification constants, according to Apps */\nexport const APPS_SECTION_ENUM = Object.freeze({\n\tinstalled: t('settings', 'Your apps'),\n\tenabled: t('settings', 'Active apps'),\n\tdisabled: t('settings', 'Disabled apps'),\n\tupdates: t('settings', 'Updates'),\n\t'app-bundles': t('settings', 'App bundles'),\n\tfeatured: t('settings', 'Featured apps'),\n\tsupported: t('settings', 'Supported apps'), // From subscription\n})\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author 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 render(){var _vm=this,_c=_vm._self._c;return _c('router-view')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\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 api from './api.js'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport logger from '../logger.js'\nimport { parseFileSize } from \"@nextcloud/files\"\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\tdisabledUsersOffset: 0,\n\tdisabledUsersLimit: 25,\n\tuserCount: 0,\n\tshowConfig: {\n\t\tshowStoragePath: false,\n\t\tshowUserBackend: false,\n\t\tshowLastLogin: false,\n\t\tshowNewUserForm: false,\n\t\tshowLanguages: false,\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\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.unshift(group)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t} catch (e) {\n\t\t\tconsole.error('Can\\'t create group', e)\n\t\t}\n\t},\n\trenameGroup(state, { gid, displayName }) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tconst updatedGroup = state.groups[groupIndex]\n\t\t\tupdatedGroup.name = displayName\n\t\t\tstate.groups.splice(groupIndex, 1, updatedGroup)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1)\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount++\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.push(gid)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount--\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.push(gid)\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\tdeleteUser(state, userid) {\n\t\tconst userIndex = state.users.findIndex(user => user.id === userid)\n\t\tthis.commit('updateUserCounts', { user: state.users[userIndex], actionType: 'remove' })\n\t\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tconst user = response.data.ocs.data\n\t\tstate.users.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\tstate.showConfig[key] = value\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\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'\n\nconst state = {\n\tapps: [],\n\tcategories: [],\n\tupdateCount: 0,\n\tloading: {},\n\tloadingList: false,\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\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\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\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\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\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 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 './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\nexport default new Store({\n\tmodules: {\n\t\tusers,\n\t\tapps,\n\t\tsettings,\n\t\toc,\n\t},\n\tstrict: debug,\n\n\tmutations,\n})\n","/**\n * @copyright Copyright (c) 2022 Joas Schilling <coding@schilljs.com>\n *\n * @author Joas Schilling <coding@schilljs.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\n/**\n * Set the page heading\n *\n * @param {string} heading page title from the history api\n * @since 27.0.0\n */\nexport function setPageHeading(heading) {\n\tconst headingEl = document.getElementById('page-heading-level-1')\n\tif (headingEl) {\n\t\theadingEl.textContent = heading\n\t}\n}\nexport default {\n\t/**\n\t * @return {boolean} Whether the user opted-out of shortcuts so that they should not be registered\n\t */\n\tdisableKeyboardShortcuts() {\n\t\treturn loadState('theming', 'shortcutsDisabled', false)\n\t},\n\tsetPageHeading,\n}\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 *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Router from 'vue-router'\nimport { generateUrl } from '@nextcloud/router'\nimport { APPS_SECTION_ENUM } from './constants/AppsConstants.js'\nimport store from './store/index.js'\nimport { setPageHeading } from '../../../core/src/OCP/accessibility.js'\n\n// Dynamic loading\nconst Users = () => import(/* webpackChunkName: 'settings-users' */'./views/Users.vue')\nconst Apps = () => import(/* webpackChunkName: 'settings-apps-view' */'./views/Apps.vue')\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 */\nconst baseTitle = document.title\nconst router = 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\tmeta: {\n\t\t\t\ttitle: () => {\n\t\t\t\t\treturn t('settings', 'Active users')\n\t\t\t\t},\n\t\t\t},\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\tmeta: {\n\t\t\t\t\t\ttitle: (to) => {\n\t\t\t\t\t\t\tif (to.params.selectedGroup === 'admin') {\n\t\t\t\t\t\t\t\treturn t('settings', 'Admins')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (to.params.selectedGroup === 'disabled') {\n\t\t\t\t\t\t\t\treturn t('settings', 'Disabled users')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn decodeURIComponent(to.params.selectedGroup)\n\t\t\t\t\t\t},\n\t\t\t\t\t},\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\tmeta: {\n\t\t\t\ttitle: () => {\n\t\t\t\t\treturn t('settings', 'Your apps')\n\t\t\t\t},\n\t\t\t},\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\tmeta: {\n\t\t\t\t\t\ttitle: async (to) => {\n\t\t\t\t\t\t\tif (to.name === 'apps') {\n\t\t\t\t\t\t\t\treturn t('settings', 'Your apps')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (APPS_SECTION_ENUM[to.params.category]) {\n\t\t\t\t\t\t\t\treturn APPS_SECTION_ENUM[to.params.category]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tawait store.dispatch('getCategories')\n\t\t\t\t\t\t\tconst category = store.getters.getCategoryById(to.params.category)\n\t\t\t\t\t\t\tif (category.displayName) {\n\t\t\t\t\t\t\t\treturn category.displayName\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\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\nrouter.afterEach(async (to) => {\n\tconst metaTitle = await to.meta.title?.(to)\n\tif (metaTitle) {\n\t\tdocument.title = `${metaTitle} - ${baseTitle}`\n\t\tsetPageHeading(metaTitle)\n\t} else {\n\t\tdocument.title = baseTitle\n\t}\n})\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 */\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.js'\nimport store from './store/index.js'\n\nVue.use(VTooltip, { defaultHtml: false })\n\nsync(store, router)\n\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\n// bind to window\nVue.prototype.t = t\nVue.prototype.n = n\nVue.prototype.OC = OC\nVue.prototype.OCA = OCA\n// eslint-disable-next-line camelcase\nVue.prototype.oc_userconfig = oc_userconfig\n\nconst app = new Vue({\n\trouter,\n\tstore,\n\trender: h => h(App),\n}).$mount('#content')\n\nexport { app, router, store }\n","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","// 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=\" + {\"1957\":\"96a4d042dd15d21b005b\",\"3239\":\"4d6b04f7d3e9c5b95675\",\"4473\":\"6009e669b1a0737a2378\",\"4529\":\"a16db7cca874de047399\"}[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(/#.*$/, \"\").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__(47027)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","APPS_SECTION_ENUM","Object","freeze","installed","t","enabled","disabled","updates","featured","supported","getLoggerBuilder","setApp","detectUser","build","name","beforeMount","document","getElementById","$store","commit","JSON","parse","dataset","server","_c","this","_self","sanitize","url","replace","requireAdmin","confirmPassword","get","options","axios","post","data","put","delete","params","orderGroups","groups","orderBy","sort","a","b","usercount","localeCompare","defaults","id","canAdd","canRemove","mutations","appendUsers","state","usersObj","existingUsers","users","map","_ref","newUsers","values","filter","_ref2","includes","concat","usersOffset","usersLimit","updateDisabledUsers","_usersObj","disabledUsersOffset","disabledUsersLimit","setPasswordPolicyMinLength","length","minPasswordLength","initGroups","_ref3","userCount","group","assign","addGroup","_ref4","gid","displayName","find","unshift","e","console","error","renameGroup","_ref5","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","_ref6","userid","user","push","removeUserGroup","_ref7","indexOf","addUserSubAdmin","_ref8","subadmin","removeUserSubAdmin","_ref9","deleteUser","userIndex","actionType","addUserData","response","ocs","enableDisableUser","_ref10","updateUserCounts","_ref11","disabledGroup","forEach","userGroup","warn","logger","setUserData","_ref12","key","value","humanValue","parseFileSize","resetUsers","setShowConfig","_ref13","showConfig","CancelToken","searchRequestCancelSource","showStoragePath","showUserBackend","showLastLogin","showNewUserForm","showLanguages","getters","getUsers","getGroups","getSubadminGroups","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getDisabledUsersOffset","getDisabledUsersLimit","getUserCount","getShowConfig","actions","searchUsers","context","_ref14","offset","limit","search","api","generateOcsUrl","catch","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_API_FAILURE","showError","message","isHTML","initCategories","categories","updateCount","updateCategories","categoriesPromise","gettingCategoriesPromise","setUpdateCount","addCategory","category","appendCategories","categoriesArray","setAllApps","apps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","disableApp","removable","canUnInstall","uninstallApp","needsDownload","canInstall","updateApp","version","update","resetApps","reset","startLoading","Vue","loading","stopLoading","generateUrl","appIds","_appId","update_required","showInfo","onClick","window","location","reload","close","setTimeout","forceEnableApp","getAllApps","getCategories","shouldRefetchCategories","arguments","undefined","categoriesPromiseResponse","loadingList","getUpdateCount","getCategoryById","selectedCategoryId","serverData","setServerData","getServerData","setAppConfig","use","Vuex","API_FAILURE","meta","Store","modules","settings","oc","strict","process","Users","Apps","Router","baseTitle","title","router","mode","base","linkActiveClass","routes","path","component","props","children","to","selectedGroup","decodeURIComponent","async","store","afterEach","_to$meta$title","_to$meta","metaTitle","call","heading","headingEl","textContent","setPageHeading","VTooltip","defaultHtml","sync","__webpack_nonce__","btoa","OC","requestToken","prototype","n","OCA","oc_userconfig","render","h","App","$mount","cloneRoute","from","clone","hash","query","fullPath","exports","moduleName","registerModule","namespaced","currentRoute","transition","currentPath","isTimeTraveling","storeUnwatch","watch","route","afterEachUnHook","unregisterModule","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","module","loaded","__webpack_modules__","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","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":""}
|