You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

settings-vue-settings-personal-security.js.map 79KB

1
  1. {"version":3,"file":"settings-vue-settings-personal-security.js?v=2ae9f3c579459dd5036e","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/components/AuthToken.vue","webpack:///nextcloud/apps/settings/src/components/AuthToken.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/AuthToken.vue?70ef","webpack://nextcloud/./apps/settings/src/components/AuthToken.vue?1338","webpack://nextcloud/./apps/settings/src/components/AuthToken.vue?ca52","webpack:///nextcloud/apps/settings/src/components/AuthTokenList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/AuthTokenList.vue","webpack://nextcloud/./apps/settings/src/components/AuthTokenList.vue?b8ab","webpack://nextcloud/./apps/settings/src/components/AuthTokenList.vue?0836","webpack://nextcloud/./apps/settings/src/components/AuthTokenList.vue?90cb","webpack://nextcloud/./apps/settings/src/components/AuthTokenList.vue?5c2d","webpack:///nextcloud/apps/settings/src/components/AuthTokenSetupDialogue.vue","webpack:///nextcloud/apps/settings/src/components/AuthTokenSetupDialogue.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/AuthTokenSetupDialogue.vue?309d","webpack://nextcloud/./apps/settings/src/components/AuthTokenSetupDialogue.vue?521c","webpack://nextcloud/./apps/settings/src/components/AuthTokenSetupDialogue.vue?6bad","webpack:///nextcloud/apps/settings/src/components/AuthTokenSection.vue","webpack:///nextcloud/apps/settings/src/components/AuthTokenSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/AuthTokenSection.vue?e9d0","webpack://nextcloud/./apps/settings/src/components/AuthTokenSection.vue?a091","webpack:///nextcloud/apps/settings/src/main-personal-security.js","webpack:///nextcloud/apps/settings/src/components/AuthToken.vue?vue&type=style&index=0&id=0f73a400&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/AuthTokenList.vue?vue&type=style&index=0&id=4f8ceff3&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/AuthTokenList.vue?vue&type=style&index=1&id=4f8ceff3&prod&lang=scss&","webpack:///nextcloud/apps/settings/src/components/AuthTokenSetupDialogue.vue?vue&type=style&index=0&id=32a32b16&prod&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","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/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\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<template>\n\t<tr :data-id=\"token.id\"\n\t\t:class=\"wiping\">\n\t\t<td class=\"client\">\n\t\t\t<div :class=\"iconName.icon\" />\n\t\t</td>\n\t\t<td class=\"token-name\">\n\t\t\t<input v-if=\"token.canRename && renaming\"\n\t\t\t\tref=\"input\"\n\t\t\t\tv-model=\"newName\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t@keyup.enter=\"rename\"\n\t\t\t\t@change=\"rename\"\n\t\t\t\t@keyup.esc=\"cancelRename\">\n\t\t\t<span v-else>{{ iconName.name }}</span>\n\t\t\t<span v-if=\"wiping\" class=\"wiping-warning\">({{ t('settings', 'Marked for remote wipe') }})</span>\n\t\t</td>\n\t\t<td>\n\t\t\t<span :title=\"lastActivity\" class=\"last-activity\">{{ lastActivityRelative }}</span>\n\t\t</td>\n\t\t<td class=\"more\">\n\t\t\t<NcActions v-if=\"!token.current\"\n\t\t\t\t:title=\"t('settings', 'Device settings')\"\n\t\t\t\t:aria-label=\"t('settings', 'Device settings')\"\n\t\t\t\t:open.sync=\"actionOpen\">\n\t\t\t\t<NcActionCheckbox v-if=\"token.type === 1\"\n\t\t\t\t\t:checked=\"token.scope.filesystem\"\n\t\t\t\t\t@change.stop.prevent=\"$emit('toggle-scope', token, 'filesystem', !token.scope.filesystem)\">\n\t\t\t\t\t<!-- TODO: add text/longtext with some description -->\n\t\t\t\t\t{{ t('settings', 'Allow filesystem access') }}\n\t\t\t\t</NcActionCheckbox>\n\t\t\t\t<NcActionButton v-if=\"token.canRename\"\n\t\t\t\t\ticon=\"icon-rename\"\n\t\t\t\t\t@click.stop.prevent=\"startRename\">\n\t\t\t\t\t<!-- TODO: add text/longtext with some description -->\n\t\t\t\t\t{{ t('settings', 'Rename') }}\n\t\t\t\t</NcActionButton>\n\n\t\t\t\t<!-- revoke & wipe -->\n\t\t\t\t<template v-if=\"token.canDelete\">\n\t\t\t\t\t<template v-if=\"token.type !== 2\">\n\t\t\t\t\t\t<NcActionButton icon=\"icon-delete\"\n\t\t\t\t\t\t\t@click.stop.prevent=\"revoke\">\n\t\t\t\t\t\t\t<!-- TODO: add text/longtext with some description -->\n\t\t\t\t\t\t\t{{ t('settings', 'Revoke') }}\n\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t\t<NcActionButton icon=\"icon-delete\"\n\t\t\t\t\t\t\t@click.stop.prevent=\"wipe\">\n\t\t\t\t\t\t\t{{ t('settings', 'Wipe device') }}\n\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t</template>\n\t\t\t\t\t<NcActionButton v-else-if=\"token.type === 2\"\n\t\t\t\t\t\ticon=\"icon-delete\"\n\t\t\t\t\t\t:title=\"t('settings', 'Revoke')\"\n\t\t\t\t\t\t@click.stop.prevent=\"revoke\">\n\t\t\t\t\t\t{{ t('settings', 'Revoking this token might prevent the wiping of your device if it has not started the wipe yet.') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</template>\n\t\t\t</NcActions>\n\t\t</td>\n\t</tr>\n</template>\n\n<script>\nimport {\n\tNcActions,\n\tNcActionButton,\n\tNcActionCheckbox,\n} from '@nextcloud/vue'\n\n// When using capture groups the following parts are extracted the first is used as the version number, the second as the OS\nconst userAgentMap = {\n\tie: /(?:MSIE|Trident|Trident\\/7.0; rv)[ :](\\d+)/,\n\t// Microsoft Edge User Agent from https://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx\n\tedge: /^Mozilla\\/5\\.0 \\([^)]+\\) AppleWebKit\\/[0-9.]+ \\(KHTML, like Gecko\\) Chrome\\/[0-9.]+ (?:Mobile Safari|Safari)\\/[0-9.]+ Edge\\/[0-9.]+$/,\n\t// Firefox User Agent from https://developer.mozilla.org/en-US/docs/Web/HTTP/Gecko_user_agent_string_reference\n\tfirefox: /^Mozilla\\/5\\.0 \\([^)]*(Windows|OS X|Linux)[^)]+\\) Gecko\\/[0-9.]+ Firefox\\/(\\d+)(?:\\.\\d)?$/,\n\t// Chrome User Agent from https://developer.chrome.com/multidevice/user-agent\n\tchrome: /^Mozilla\\/5\\.0 \\([^)]*(Windows|OS X|Linux)[^)]+\\) AppleWebKit\\/[0-9.]+ \\(KHTML, like Gecko\\) Chrome\\/(\\d+)[0-9.]+ (?:Mobile Safari|Safari)\\/[0-9.]+$/,\n\t// Safari User Agent from http://www.useragentstring.com/pages/Safari/\n\tsafari: /^Mozilla\\/5\\.0 \\([^)]*(Windows|OS X)[^)]+\\) AppleWebKit\\/[0-9.]+ \\(KHTML, like Gecko\\)(?: Version\\/([0-9]+)[0-9.]+)? Safari\\/[0-9.A-Z]+$/,\n\t// Android Chrome user agent: https://developers.google.com/chrome/mobile/docs/user-agent\n\tandroidChrome: /Android.*(?:; (.*) Build\\/).*Chrome\\/(\\d+)[0-9.]+/,\n\tiphone: / *CPU +iPhone +OS +([0-9]+)_(?:[0-9_])+ +like +Mac +OS +X */,\n\tipad: /\\(iPad; *CPU +OS +([0-9]+)_(?:[0-9_])+ +like +Mac +OS +X */,\n\tiosClient: /^Mozilla\\/5\\.0 \\(iOS\\) (?:ownCloud|Nextcloud)-iOS.*$/,\n\tandroidClient: /^Mozilla\\/5\\.0 \\(Android\\) (?:ownCloud|Nextcloud)-android.*$/,\n\tiosTalkClient: /^Mozilla\\/5\\.0 \\(iOS\\) Nextcloud-Talk.*$/,\n\tandroidTalkClient: /^Mozilla\\/5\\.0 \\(Android\\) Nextcloud-Talk.*$/,\n\t// DAVx5/3.3.8-beta2-gplay (2021/01/02; dav4jvm; okhttp/4.9.0) Android/10\n\tdavx5: /DAV(?:droid|x5)\\/([^ ]+)/,\n\t// Mozilla/5.0 (U; Linux; Maemo; Jolla; Sailfish; like Android 4.3) AppleWebKit/538.1 (KHTML, like Gecko) WebPirate/2.0 like Mobile Safari/538.1 (compatible)\n\twebPirate: /(Sailfish).*WebPirate\\/(\\d+)/,\n\t// Mozilla/5.0 (Maemo; Linux; U; Jolla; Sailfish; Mobile; rv:31.0) Gecko/31.0 Firefox/31.0 SailfishBrowser/1.0\n\tsailfishBrowser: /(Sailfish).*SailfishBrowser\\/(\\d+)/,\n\t// Neon 1.0.0+1\n\tneon: /Neon \\d+\\.\\d+\\.\\d+\\+\\d+/,\n}\nconst nameMap = {\n\tie: t('setting', 'Internet Explorer'),\n\tedge: t('setting', 'Edge'),\n\tfirefox: t('setting', 'Firefox'),\n\tchrome: t('setting', 'Google Chrome'),\n\tsafari: t('setting', 'Safari'),\n\tandroidChrome: t('setting', 'Google Chrome for Android'),\n\tiphone: t('setting', 'iPhone'),\n\tipad: t('setting', 'iPad'),\n\tiosClient: t('setting', '{productName} iOS app', { productName: window.oc_defaults.productName }),\n\tandroidClient: t('setting', '{productName} Android app', { productName: window.oc_defaults.productName }),\n\tiosTalkClient: t('setting', '{productName} Talk for iOS', { productName: window.oc_defaults.productName }),\n\tandroidTalkClient: t('setting', '{productName} Talk for Android', { productName: window.oc_defaults.productName }),\n\tdavx5: 'DAVx5',\n\twebPirate: 'WebPirate',\n\tsailfishBrowser: 'SailfishBrowser',\n\tneon: 'Neon',\n}\nconst iconMap = {\n\tie: 'icon-desktop',\n\tedge: 'icon-desktop',\n\tfirefox: 'icon-desktop',\n\tchrome: 'icon-desktop',\n\tsafari: 'icon-desktop',\n\tandroidChrome: 'icon-phone',\n\tiphone: 'icon-phone',\n\tipad: 'icon-tablet',\n\tiosClient: 'icon-phone',\n\tandroidClient: 'icon-phone',\n\tiosTalkClient: 'icon-phone',\n\tandroidTalkClient: 'icon-phone',\n\tdavx5: 'icon-phone',\n\twebPirate: 'icon-link',\n\tsailfishBrowser: 'icon-link',\n}\n\nexport default {\n\tname: 'AuthToken',\n\tcomponents: {\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tNcActionCheckbox,\n\t},\n\tprops: {\n\t\ttoken: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tshowMore: this.token.canScope || this.token.canDelete,\n\t\t\trenaming: false,\n\t\t\tnewName: '',\n\t\t\toldName: '',\n\t\t\tactionOpen: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tlastActivityRelative() {\n\t\t\treturn OC.Util.relativeModifiedDate(this.token.lastActivity * 1000)\n\t\t},\n\t\tlastActivity() {\n\t\t\treturn OC.Util.formatDate(this.token.lastActivity * 1000, 'LLL')\n\t\t},\n\t\ticonName() {\n\t\t\t// pretty format sync client user agent\n\t\t\tconst matches = this.token.name.match(/Mozilla\\/5\\.0 \\((\\w+)\\) (?:mirall|csyncoC)\\/(\\d+\\.\\d+\\.\\d+)/)\n\n\t\t\tlet icon = ''\n\t\t\tif (matches) {\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tthis.token.name = t('settings', 'Sync client - {os}', {\n\t\t\t\t\tos: matches[1],\n\t\t\t\t\tversion: matches[2],\n\t\t\t\t})\n\t\t\t\ticon = 'icon-desktop'\n\t\t\t}\n\n\t\t\t// preserve title for cases where we format it further\n\t\t\tconst title = this.token.name\n\t\t\tlet name = this.token.name\n\t\t\tfor (const client in userAgentMap) {\n\t\t\t\tconst matches = title.match(userAgentMap[client])\n\t\t\t\tif (matches) {\n\t\t\t\t\tif (matches[2] && matches[1]) { // version number and os\n\t\t\t\t\t\tname = nameMap[client] + ' ' + matches[2] + ' - ' + matches[1]\n\t\t\t\t\t} else if (matches[1]) { // only version number\n\t\t\t\t\t\tname = nameMap[client] + ' ' + matches[1]\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = nameMap[client]\n\t\t\t\t\t}\n\n\t\t\t\t\ticon = iconMap[client]\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.token.current) {\n\t\t\t\tname = t('settings', 'This session')\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ticon,\n\t\t\t\tname,\n\t\t\t}\n\t\t},\n\t\twiping() {\n\t\t\treturn this.token.type === 2\n\t\t},\n\t},\n\tmethods: {\n\t\tstartRename() {\n\t\t\t// Close action (popover menu)\n\t\t\tthis.actionOpen = false\n\n\t\t\tthis.oldName = this.token.name\n\t\t\tthis.newName = this.token.name\n\t\t\tthis.renaming = true\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.input.select()\n\t\t\t})\n\t\t},\n\t\tcancelRename() {\n\t\t\tthis.renaming = false\n\t\t\tthis.$emit('rename', this.token, this.oldName)\n\t\t},\n\t\trevoke() {\n\t\t\tthis.actionOpen = false\n\t\t\tthis.$emit('delete', this.token)\n\t\t},\n\t\trename() {\n\t\t\tthis.renaming = false\n\t\t\tthis.$emit('rename', this.token, this.newName)\n\t\t},\n\t\twipe() {\n\t\t\tthis.actionOpen = false\n\t\t\tthis.$emit('wipe', this.token)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.wiping {\n\t\tbackground-color: var(--color-background-darker);\n\t}\n\n\ttd {\n\t\tborder-top: 1px solid var(--color-border);\n\t\tmax-width: 200px;\n\t\twhite-space: normal;\n\t\tvertical-align: middle;\n\t\tposition: relative;\n\n\t\t&%icon {\n\t\t\toverflow: visible;\n\t\t\tposition: relative;\n\t\t\twidth: 44px;\n\t\t\theight: 44px;\n\t\t}\n\n\t\t&.token-name {\n\t\t\tpadding: 10px 6px;\n\n\t\t\t&.token-rename {\n\t\t\t\tpadding: 0;\n\t\t\t}\n\n\t\t\tinput {\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\t\t&.token-name .wiping-warning {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\n\t\t&.more {\n\t\t\t@extend %icon;\n\t\t\tpadding: 0 10px;\n\t\t}\n\n\t\t&.client {\n\t\t\t@extend %icon;\n\n\t\t\tdiv {\n\t\t\t\topacity: 0.57;\n\t\t\t\twidth: 44px;\n\t\t\t\theight: 44px;\n\t\t\t}\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthToken.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!./AuthToken.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthToken.vue?vue&type=style&index=0&id=0f73a400&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthToken.vue?vue&type=style&index=0&id=0f73a400&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AuthToken.vue?vue&type=template&id=0f73a400&scoped=true&\"\nimport script from \"./AuthToken.vue?vue&type=script&lang=js&\"\nexport * from \"./AuthToken.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AuthToken.vue?vue&type=style&index=0&id=0f73a400&prod&lang=scss&scoped=true&\"\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 \"0f73a400\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('tr',{class:_vm.wiping,attrs:{\"data-id\":_vm.token.id}},[_c('td',{staticClass:\"client\"},[_c('div',{class:_vm.iconName.icon})]),_vm._v(\" \"),_c('td',{staticClass:\"token-name\"},[(_vm.token.canRename && _vm.renaming)?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newName),expression:\"newName\"}],ref:\"input\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.newName)},on:{\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.rename.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.cancelRename.apply(null, arguments)}],\"change\":_vm.rename,\"input\":function($event){if($event.target.composing)return;_vm.newName=$event.target.value}}}):_c('span',[_vm._v(_vm._s(_vm.iconName.name))]),_vm._v(\" \"),(_vm.wiping)?_c('span',{staticClass:\"wiping-warning\"},[_vm._v(\"(\"+_vm._s(_vm.t('settings', 'Marked for remote wipe'))+\")\")]):_vm._e()]),_vm._v(\" \"),_c('td',[_c('span',{staticClass:\"last-activity\",attrs:{\"title\":_vm.lastActivity}},[_vm._v(_vm._s(_vm.lastActivityRelative))])]),_vm._v(\" \"),_c('td',{staticClass:\"more\"},[(!_vm.token.current)?_c('NcActions',{attrs:{\"title\":_vm.t('settings', 'Device settings'),\"aria-label\":_vm.t('settings', 'Device settings'),\"open\":_vm.actionOpen},on:{\"update:open\":function($event){_vm.actionOpen=$event}}},[(_vm.token.type === 1)?_c('NcActionCheckbox',{attrs:{\"checked\":_vm.token.scope.filesystem},on:{\"change\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.$emit('toggle-scope', _vm.token, 'filesystem', !_vm.token.scope.filesystem)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Allow filesystem access'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.token.canRename)?_c('NcActionButton',{attrs:{\"icon\":\"icon-rename\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.startRename.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Rename'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.token.canDelete)?[(_vm.token.type !== 2)?[_c('NcActionButton',{attrs:{\"icon\":\"icon-delete\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.revoke.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Revoke'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":\"icon-delete\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.wipe.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Wipe device'))+\"\\n\\t\\t\\t\\t\\t\")])]:(_vm.token.type === 2)?_c('NcActionButton',{attrs:{\"icon\":\"icon-delete\",\"title\":_vm.t('settings', 'Revoke')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.revoke.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Revoking this token might prevent the wiping of your device if it has not started the wipe yet.'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()]:_vm._e()],2):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenList.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!./AuthTokenList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\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<template>\n\t<table id=\"app-tokens-table\">\n\t\t<thead v-if=\"tokens.length\">\n\t\t\t<tr>\n\t\t\t\t<th />\n\t\t\t\t<th>{{ t('settings', 'Device') }}</th>\n\t\t\t\t<th>{{ t('settings', 'Last activity') }}</th>\n\t\t\t\t<th />\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody class=\"token-list\">\n\t\t\t<AuthToken v-for=\"token in sortedTokens\"\n\t\t\t\t:key=\"token.id\"\n\t\t\t\t:token=\"token\"\n\t\t\t\t@toggle-scope=\"toggleScope\"\n\t\t\t\t@rename=\"rename\"\n\t\t\t\t@delete=\"onDelete\"\n\t\t\t\t@wipe=\"onWipe\" />\n\t\t</tbody>\n\t</table>\n</template>\n\n<script>\nimport AuthToken from './AuthToken'\n\nexport default {\n\tname: 'AuthTokenList',\n\tcomponents: {\n\t\tAuthToken,\n\t},\n\tprops: {\n\t\ttokens: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\tsortedTokens() {\n\t\t\treturn this.tokens.slice().sort((t1, t2) => {\n\t\t\t\tconst ts1 = parseInt(t1.lastActivity, 10)\n\t\t\t\tconst ts2 = parseInt(t2.lastActivity, 10)\n\t\t\t\treturn ts2 - ts1\n\t\t\t})\n\t\t},\n\t},\n\tmethods: {\n\t\ttoggleScope(token, scope, value) {\n\t\t\t// Just pass it on\n\t\t\tthis.$emit('toggle-scope', token, scope, value)\n\t\t},\n\t\trename(token, newName) {\n\t\t\t// Just pass it on\n\t\t\tthis.$emit('rename', token, newName)\n\t\t},\n\t\tonDelete(token) {\n\t\t\t// Just pass it on\n\t\t\tthis.$emit('delete', token)\n\t\t},\n\t\tonWipe(token) {\n\t\t\t// Just pass it on\n\t\t\tthis.$emit('wipe', token)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\ttable {\n\t\twidth: 100%;\n\t\tmin-height: 50px;\n\t\tpadding-top: 5px;\n\t\tmax-width: 580px;\n\n\t\tth {\n\t\t\topacity: .5;\n\t\t\tpadding: 10px 0;\n\t\t}\n\t}\n\n\t.token-list {\n\t\ttd > a.icon-more {\n\t\t\ttransition: opacity var(--animation-quick);\n\t\t}\n\n\t\ta.icon-more {\n\t\t\tpadding: 14px;\n\t\t\tdisplay: block;\n\t\t\twidth: 44px;\n\t\t\theight: 44px;\n\t\t\topacity: .5;\n\t\t}\n\n\t\ttr {\n\t\t\t&:hover td > a.icon,\n\t\t\ttd > a.icon:focus,\n\t\t\t&.active td > a.icon {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t}\n</style>\n\n<!-- some styles are not scoped to make them work on subcomponents -->\n<style lang=\"scss\">\n\t#app-tokens-table {\n\t\ttr > *:nth-child(2) {\n\t\t\tpadding-left: 6px;\n\t\t}\n\n\t\ttr > *:nth-child(3) {\n\t\t\ttext-align: right;\n\t\t}\n\t}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenList.vue?vue&type=style&index=0&id=4f8ceff3&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenList.vue?vue&type=style&index=0&id=4f8ceff3&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenList.vue?vue&type=style&index=1&id=4f8ceff3&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenList.vue?vue&type=style&index=1&id=4f8ceff3&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AuthTokenList.vue?vue&type=template&id=4f8ceff3&scoped=true&\"\nimport script from \"./AuthTokenList.vue?vue&type=script&lang=js&\"\nexport * from \"./AuthTokenList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AuthTokenList.vue?vue&type=style&index=0&id=4f8ceff3&prod&lang=scss&scoped=true&\"\nimport style1 from \"./AuthTokenList.vue?vue&type=style&index=1&id=4f8ceff3&prod&lang=scss&\"\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 \"4f8ceff3\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('table',{attrs:{\"id\":\"app-tokens-table\"}},[(_vm.tokens.length)?_c('thead',[_c('tr',[_c('th'),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.t('settings', 'Device')))]),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.t('settings', 'Last activity')))]),_vm._v(\" \"),_c('th')])]):_vm._e(),_vm._v(\" \"),_c('tbody',{staticClass:\"token-list\"},_vm._l((_vm.sortedTokens),function(token){return _c('AuthToken',{key:token.id,attrs:{\"token\":token},on:{\"toggle-scope\":_vm.toggleScope,\"rename\":_vm.rename,\"delete\":_vm.onDelete,\"wipe\":_vm.onWipe}})}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\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<template>\n\t<div v-if=\"!adding\" class=\"row spacing\">\n\t\t<!-- Port to TextField component when available -->\n\t\t<input v-model=\"deviceName\"\n\t\t\ttype=\"text\"\n\t\t\t:maxlength=\"120\"\n\t\t\t:disabled=\"loading\"\n\t\t\t:placeholder=\"t('settings', 'App name')\"\n\t\t\t@keydown.enter=\"submit\">\n\t\t<NcButton :disabled=\"loading || deviceName.length === 0\"\n\t\t\ttype=\"primary\"\n\t\t\t@click=\"submit\">\n\t\t\t{{ t('settings', 'Create new app password') }}\n\t\t</NcButton>\n\t</div>\n\t<div v-else class=\"spacing\">\n\t\t{{ t('settings', 'Use the credentials below to configure your app or device.') }}\n\t\t{{ t('settings', 'For security reasons this password will only be shown once.') }}\n\t\t<div class=\"app-password-row\">\n\t\t\t<label for=\"app-username\" class=\"app-password-label\">{{ t('settings', 'Username') }}</label>\n\t\t\t<input id=\"app-username\"\n\t\t\t\t:value=\"loginName\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tclass=\"monospaced\"\n\t\t\t\treadonly=\"readonly\"\n\t\t\t\t@focus=\"selectInput\">\n\t\t</div>\n\t\t<div class=\"app-password-row\">\n\t\t\t<label for=\"app-password\" class=\"app-password-label\">{{ t('settings', 'Password') }}</label>\n\t\t\t<input id=\"app-password\"\n\t\t\t\tref=\"appPassword\"\n\t\t\t\t:value=\"appPassword\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tclass=\"monospaced\"\n\t\t\t\treadonly=\"readonly\"\n\t\t\t\t@focus=\"selectInput\">\n\t\t\t<NcButton type=\"tertiary\"\n\t\t\t\t:title=\"copyTooltipOptions\"\n\t\t\t\t:aria-label=\"copyTooltipOptions\"\n\t\t\t\t@click=\"copyPassword\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Check v-if=\"copied\" :size=\"20\" />\n\t\t\t\t\t<ContentCopy v-else :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<NcButton @click=\"reset\">\n\t\t\t\t{{ t('settings', 'Done') }}\n\t\t\t</NcButton>\n\t\t</div>\n\t\t<div class=\"app-password-row\">\n\t\t\t<span class=\"app-password-label\" />\n\t\t\t<a v-if=\"!showQR\"\n\t\t\t\t@click=\"showQR = true\">\n\t\t\t\t{{ t('settings', 'Show QR code for mobile apps') }}\n\t\t\t</a>\n\t\t\t<QR v-else\n\t\t\t\t:value=\"qrUrl\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport QR from '@chenfengyuan/vue-qrcode'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\nimport { showError } from '@nextcloud/dialogs'\nimport { getRootUrl } from '@nextcloud/router'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton'\n\nimport Check from 'vue-material-design-icons/Check.vue'\nimport ContentCopy from 'vue-material-design-icons/ContentCopy.vue'\n\nexport default {\n\tname: 'AuthTokenSetupDialogue',\n\tcomponents: {\n\t\tCheck,\n\t\tContentCopy,\n\t\tNcButton,\n\t\tQR,\n\t},\n\tprops: {\n\t\tadd: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tadding: false,\n\t\t\tloading: false,\n\t\t\tdeviceName: '',\n\t\t\tappPassword: '',\n\t\t\tloginName: '',\n\t\t\tcopied: false,\n\t\t\tshowQR: false,\n\t\t\tqrUrl: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\tcopyTooltipOptions() {\n\t\t\tif (this.copied) {\n\t\t\t\treturn t('settings', 'Copied!')\n\t\t\t}\n\t\t\treturn t('settings', 'Copy')\n\t\t},\n\t},\n\tmethods: {\n\t\tselectInput(e) {\n\t\t\te.currentTarget.select()\n\t\t},\n\t\tsubmit() {\n\t\t\tconfirmPassword()\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading = true\n\t\t\t\t\treturn this.add(this.deviceName)\n\t\t\t\t})\n\t\t\t\t.then(token => {\n\t\t\t\t\tthis.adding = true\n\t\t\t\t\tthis.loginName = token.loginName\n\t\t\t\t\tthis.appPassword = token.token\n\n\t\t\t\t\tconst server = window.location.protocol + '//' + window.location.host + getRootUrl()\n\t\t\t\t\tthis.qrUrl = `nc://login/user:${token.loginName}&password:${token.token}&server:${server}`\n\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tthis.$refs.appPassword.select()\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error('could not create a new app password', err)\n\t\t\t\t\tOC.Notification.showTemporary(t('settings', 'Error while creating device token'))\n\n\t\t\t\t\tthis.reset()\n\t\t\t\t})\n\t\t},\n\t\tasync copyPassword() {\n\t\t\ttry {\n\t\t\t\tawait navigator.clipboard.writeText(this.appPassword)\n\t\t\t\tthis.copied = true\n\t\t\t} catch (e) {\n\t\t\t\tthis.copied = false\n\t\t\t\tconsole.error(e)\n\t\t\t\tshowError(t('settings', 'Could not copy app password. Please copy it manually.'))\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\t\treset() {\n\t\t\tthis.adding = false\n\t\t\tthis.loading = false\n\t\t\tthis.showQR = false\n\t\t\tthis.qrUrl = ''\n\t\t\tthis.deviceName = ''\n\t\t\tthis.appPassword = ''\n\t\t\tthis.loginName = ''\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.app-password-row {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\t.icon {\n\t\t\tbackground-size: 16px 16px;\n\t\t\tdisplay: inline-block;\n\t\t\tposition: relative;\n\t\t\ttop: 3px;\n\t\t\tmargin-left: 5px;\n\t\t\tmargin-right: 8px;\n\t\t}\n\n\t}\n\n\t.app-password-label {\n\t\tdisplay: table-cell;\n\t\tpadding-right: 1em;\n\t\ttext-align: right;\n\t\tvertical-align: middle;\n\t\twidth: 100px;\n\t}\n\n\t.row input {\n\t\theight: 44px !important;\n\t\tpadding: 7px 12px;\n\t\tmargin-right: 12px;\n\t\twidth: 200px;\n\t}\n\n\t.monospaced {\n\t\twidth: 245px;\n\t\tfont-family: monospace;\n\t}\n\n\t.button-vue{\n\t\tdisplay:inline-block;\n\t\tmargin: 3px 3px 3px 3px;\n\t}\n\n\t.row {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\n\t.spacing {\n\t\tpadding-top: 16px;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenSetupDialogue.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!./AuthTokenSetupDialogue.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenSetupDialogue.vue?vue&type=style&index=0&id=32a32b16&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenSetupDialogue.vue?vue&type=style&index=0&id=32a32b16&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AuthTokenSetupDialogue.vue?vue&type=template&id=32a32b16&scoped=true&\"\nimport script from \"./AuthTokenSetupDialogue.vue?vue&type=script&lang=js&\"\nexport * from \"./AuthTokenSetupDialogue.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AuthTokenSetupDialogue.vue?vue&type=style&index=0&id=32a32b16&prod&lang=scss&scoped=true&\"\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 \"32a32b16\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (!_vm.adding)?_c('div',{staticClass:\"row spacing\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.deviceName),expression:\"deviceName\"}],attrs:{\"type\":\"text\",\"maxlength\":120,\"disabled\":_vm.loading,\"placeholder\":_vm.t('settings', 'App name')},domProps:{\"value\":(_vm.deviceName)},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.submit.apply(null, arguments)},\"input\":function($event){if($event.target.composing)return;_vm.deviceName=$event.target.value}}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"disabled\":_vm.loading || _vm.deviceName.length === 0,\"type\":\"primary\"},on:{\"click\":_vm.submit}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Create new app password'))+\"\\n\\t\")])],1):_c('div',{staticClass:\"spacing\"},[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('settings', 'Use the credentials below to configure your app or device.'))+\"\\n\\t\"+_vm._s(_vm.t('settings', 'For security reasons this password will only be shown once.'))+\"\\n\\t\"),_c('div',{staticClass:\"app-password-row\"},[_c('label',{staticClass:\"app-password-label\",attrs:{\"for\":\"app-username\"}},[_vm._v(_vm._s(_vm.t('settings', 'Username')))]),_vm._v(\" \"),_c('input',{staticClass:\"monospaced\",attrs:{\"id\":\"app-username\",\"type\":\"text\",\"readonly\":\"readonly\"},domProps:{\"value\":_vm.loginName},on:{\"focus\":_vm.selectInput}})]),_vm._v(\" \"),_c('div',{staticClass:\"app-password-row\"},[_c('label',{staticClass:\"app-password-label\",attrs:{\"for\":\"app-password\"}},[_vm._v(_vm._s(_vm.t('settings', 'Password')))]),_vm._v(\" \"),_c('input',{ref:\"appPassword\",staticClass:\"monospaced\",attrs:{\"id\":\"app-password\",\"type\":\"text\",\"readonly\":\"readonly\"},domProps:{\"value\":_vm.appPassword},on:{\"focus\":_vm.selectInput}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"tertiary\",\"title\":_vm.copyTooltipOptions,\"aria-label\":_vm.copyTooltipOptions},on:{\"click\":_vm.copyPassword},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.copied)?_c('Check',{attrs:{\"size\":20}}):_c('ContentCopy',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('NcButton',{on:{\"click\":_vm.reset}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Done'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"app-password-row\"},[_c('span',{staticClass:\"app-password-label\"}),_vm._v(\" \"),(!_vm.showQR)?_c('a',{on:{\"click\":function($event){_vm.showQR = true}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show QR code for mobile apps'))+\"\\n\\t\\t\")]):_c('QR',{attrs:{\"value\":_vm.qrUrl}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\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<template>\n\t<div id=\"security\" class=\"section\">\n\t\t<h2>{{ t('settings', 'Devices & sessions', {}, undefined, {sanitize: false}) }}</h2>\n\t\t<p class=\"settings-hint hidden-when-empty\">\n\t\t\t{{ t('settings', 'Web, desktop and mobile clients currently logged in to your account.') }}\n\t\t</p>\n\t\t<AuthTokenList :tokens=\"tokens\"\n\t\t\t@toggle-scope=\"toggleTokenScope\"\n\t\t\t@rename=\"rename\"\n\t\t\t@delete=\"deleteToken\"\n\t\t\t@wipe=\"wipeToken\" />\n\t\t<AuthTokenSetupDialogue v-if=\"canCreateToken\" :add=\"addNewToken\" />\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\nimport { generateUrl } from '@nextcloud/router'\n\nimport AuthTokenList from './AuthTokenList'\nimport AuthTokenSetupDialogue from './AuthTokenSetupDialogue'\n\nconst confirm = () => {\n\treturn new Promise(resolve => {\n\t\tOC.dialogs.confirm(\n\t\t\tt('settings', 'Do you really want to wipe your data from this device?'),\n\t\t\tt('settings', 'Confirm wipe'),\n\t\t\tresolve,\n\t\t\ttrue\n\t\t)\n\t})\n}\n\n/**\n * Tap into a promise without losing the value\n *\n * @param {Function} cb the callback\n * @return {any} val the value\n */\nconst tap = cb => val => {\n\tcb(val)\n\treturn val\n}\n\nexport default {\n\tname: 'AuthTokenSection',\n\tcomponents: {\n\t\tAuthTokenSetupDialogue,\n\t\tAuthTokenList,\n\t},\n\tprops: {\n\t\ttokens: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tcanCreateToken: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tbaseUrl: generateUrl('/settings/personal/authtokens'),\n\t\t}\n\t},\n\tmethods: {\n\t\taddNewToken(name) {\n\t\t\tconsole.debug('creating a new app token', name)\n\n\t\t\tconst data = {\n\t\t\t\tname,\n\t\t\t}\n\t\t\treturn axios.post(this.baseUrl, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(tap(() => console.debug('app token created')))\n\t\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\t\t.then(tap(data => this.tokens.push(data.deviceToken)))\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error.bind('could not create app password', err)\n\t\t\t\t\tOC.Notification.showTemporary(t('settings', 'Error while creating device token'))\n\t\t\t\t\tthrow err\n\t\t\t\t})\n\t\t},\n\t\ttoggleTokenScope(token, scope, value) {\n\t\t\tconsole.debug('updating app token scope', token.id, scope, value)\n\n\t\t\tconst oldVal = token.scope[scope]\n\t\t\ttoken.scope[scope] = value\n\n\t\t\treturn this.updateToken(token)\n\t\t\t\t.then(tap(() => console.debug('app token scope updated')))\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error.bind('could not update app token scope', err)\n\t\t\t\t\tOC.Notification.showTemporary(t('settings', 'Error while updating device token scope'))\n\n\t\t\t\t\t// Restore\n\t\t\t\t\ttoken.scope[scope] = oldVal\n\n\t\t\t\t\tthrow err\n\t\t\t\t})\n\t\t},\n\t\trename(token, newName) {\n\t\t\tconsole.debug('renaming app token', token.id, token.name, newName)\n\n\t\t\tconst oldName = token.name\n\t\t\ttoken.name = newName\n\n\t\t\treturn this.updateToken(token)\n\t\t\t\t.then(tap(() => console.debug('app token name updated')))\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error.bind('could not update app token name', err)\n\t\t\t\t\tOC.Notification.showTemporary(t('settings', 'Error while updating device token name'))\n\n\t\t\t\t\t// Restore\n\t\t\t\t\ttoken.name = oldName\n\t\t\t\t})\n\t\t},\n\t\tupdateToken(token) {\n\t\t\treturn axios.put(this.baseUrl + '/' + token.id, token)\n\t\t\t\t.then(resp => resp.data)\n\t\t},\n\t\tdeleteToken(token) {\n\t\t\tconsole.debug('deleting app token', token)\n\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.tokens = this.tokens.filter(t => t !== token)\n\n\t\t\treturn axios.delete(this.baseUrl + '/' + token.id)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(tap(() => console.debug('app token deleted')))\n\t\t\t\t.catch(err => {\n\t\t\t\t\tconsole.error.bind('could not delete app token', err)\n\t\t\t\t\tOC.Notification.showTemporary(t('settings', 'Error while deleting the token'))\n\n\t\t\t\t\t// Restore\n\t\t\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\t\t\tthis.tokens.push(token)\n\t\t\t\t})\n\t\t},\n\t\tasync wipeToken(token) {\n\t\t\tconsole.debug('wiping app token', token)\n\n\t\t\ttry {\n\t\t\t\tawait confirmPassword()\n\n\t\t\t\tif (!(await confirm())) {\n\t\t\t\t\tconsole.debug('wipe aborted by user')\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tawait axios.post(this.baseUrl + '/wipe/' + token.id)\n\t\t\t\tconsole.debug('app token marked for wipe')\n\n\t\t\t\ttoken.type = 2\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error('could not wipe app token', err)\n\t\t\t\tOC.Notification.showTemporary(t('settings', 'Error while wiping the device with the token'))\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthTokenSection.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!./AuthTokenSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AuthTokenSection.vue?vue&type=template&id=240596c0&scoped=true&\"\nimport script from \"./AuthTokenSection.vue?vue&type=script&lang=js&\"\nexport * from \"./AuthTokenSection.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 \"240596c0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"section\",attrs:{\"id\":\"security\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'Devices & sessions', {}, undefined, {sanitize: false})))]),_vm._v(\" \"),_c('p',{staticClass:\"settings-hint hidden-when-empty\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Web, desktop and mobile clients currently logged in to your account.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('AuthTokenList',{attrs:{\"tokens\":_vm.tokens},on:{\"toggle-scope\":_vm.toggleTokenScope,\"rename\":_vm.rename,\"delete\":_vm.deleteToken,\"wipe\":_vm.wipeToken}}),_vm._v(\" \"),(_vm.canCreateToken)?_c('AuthTokenSetupDialogue',{attrs:{\"add\":_vm.addNewToken}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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'\nimport Vue from 'vue'\nimport VTooltip from 'v-tooltip'\n\nimport AuthTokenSection from './components/AuthTokenSection'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\nVue.use(VTooltip, { defaultHtml: false })\nVue.prototype.t = t\n\nconst View = Vue.extend(AuthTokenSection)\nnew View({\n\tpropsData: {\n\t\ttokens: loadState('settings', 'app_tokens'),\n\t\tcanCreateToken: loadState('settings', 'can_create_app_token'),\n\t},\n}).$mount('#security-authtokens')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".wiping[data-v-0f73a400]{background-color:var(--color-background-darker)}td[data-v-0f73a400]{border-top:1px solid var(--color-border);max-width:200px;white-space:normal;vertical-align:middle;position:relative}td.client[data-v-0f73a400],td.more[data-v-0f73a400]{overflow:visible;position:relative;width:44px;height:44px}td.token-name[data-v-0f73a400]{padding:10px 6px}td.token-name.token-rename[data-v-0f73a400]{padding:0}td.token-name input[data-v-0f73a400]{width:100%;margin:0}td.token-name .wiping-warning[data-v-0f73a400]{color:var(--color-text-lighter)}td.more[data-v-0f73a400]{padding:0 10px}td.client div[data-v-0f73a400]{opacity:.57;width:44px;height:44px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AuthToken.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,+CAAA,CAGD,oBACC,wCAAA,CACA,eAAA,CACA,kBAAA,CACA,qBAAA,CACA,iBAAA,CAEA,oDACC,gBAAA,CACA,iBAAA,CACA,UAAA,CACA,WAAA,CAGD,+BACC,gBAAA,CAEA,4CACC,SAAA,CAGD,qCACC,UAAA,CACA,QAAA,CAGF,+CACC,+BAAA,CAGD,yBAEC,cAAA,CAMA,+BACC,WAAA,CACA,UAAA,CACA,WAAA\",\"sourcesContent\":[\"\\n.wiping {\\n\\tbackground-color: var(--color-background-darker);\\n}\\n\\ntd {\\n\\tborder-top: 1px solid var(--color-border);\\n\\tmax-width: 200px;\\n\\twhite-space: normal;\\n\\tvertical-align: middle;\\n\\tposition: relative;\\n\\n\\t&%icon {\\n\\t\\toverflow: visible;\\n\\t\\tposition: relative;\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t}\\n\\n\\t&.token-name {\\n\\t\\tpadding: 10px 6px;\\n\\n\\t\\t&.token-rename {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\n\\t\\tinput {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmargin: 0;\\n\\t\\t}\\n\\t}\\n\\t&.token-name .wiping-warning {\\n\\t\\tcolor: var(--color-text-lighter);\\n\\t}\\n\\n\\t&.more {\\n\\t\\t@extend %icon;\\n\\t\\tpadding: 0 10px;\\n\\t}\\n\\n\\t&.client {\\n\\t\\t@extend %icon;\\n\\n\\t\\tdiv {\\n\\t\\t\\topacity: 0.57;\\n\\t\\t\\twidth: 44px;\\n\\t\\t\\theight: 44px;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"table[data-v-4f8ceff3]{width:100%;min-height:50px;padding-top:5px;max-width:580px}table th[data-v-4f8ceff3]{opacity:.5;padding:10px 0}.token-list td>a.icon-more[data-v-4f8ceff3]{transition:opacity var(--animation-quick)}.token-list a.icon-more[data-v-4f8ceff3]{padding:14px;display:block;width:44px;height:44px;opacity:.5}.token-list tr:hover td>a.icon[data-v-4f8ceff3],.token-list tr td>a.icon[data-v-4f8ceff3]:focus,.token-list tr.active td>a.icon[data-v-4f8ceff3]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AuthTokenList.vue\"],\"names\":[],\"mappings\":\"AACA,uBACC,UAAA,CACA,eAAA,CACA,eAAA,CACA,eAAA,CAEA,0BACC,UAAA,CACA,cAAA,CAKD,4CACC,yCAAA,CAGD,yCACC,YAAA,CACA,aAAA,CACA,UAAA,CACA,WAAA,CACA,UAAA,CAIA,iJAGC,SAAA\",\"sourcesContent\":[\"\\ntable {\\n\\twidth: 100%;\\n\\tmin-height: 50px;\\n\\tpadding-top: 5px;\\n\\tmax-width: 580px;\\n\\n\\tth {\\n\\t\\topacity: .5;\\n\\t\\tpadding: 10px 0;\\n\\t}\\n}\\n\\n.token-list {\\n\\ttd > a.icon-more {\\n\\t\\ttransition: opacity var(--animation-quick);\\n\\t}\\n\\n\\ta.icon-more {\\n\\t\\tpadding: 14px;\\n\\t\\tdisplay: block;\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t\\topacity: .5;\\n\\t}\\n\\n\\ttr {\\n\\t\\t&:hover td > a.icon,\\n\\t\\ttd > a.icon:focus,\\n\\t\\t&.active td > a.icon {\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#app-tokens-table tr>*:nth-child(2){padding-left:6px}#app-tokens-table tr>*:nth-child(3){text-align:right}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AuthTokenList.vue\"],\"names\":[],\"mappings\":\"AAEC,oCACC,gBAAA,CAGD,oCACC,gBAAA\",\"sourcesContent\":[\"\\n#app-tokens-table {\\n\\ttr > *:nth-child(2) {\\n\\t\\tpadding-left: 6px;\\n\\t}\\n\\n\\ttr > *:nth-child(3) {\\n\\t\\ttext-align: right;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".app-password-row[data-v-32a32b16]{display:flex;align-items:center}.app-password-row .icon[data-v-32a32b16]{background-size:16px 16px;display:inline-block;position:relative;top:3px;margin-left:5px;margin-right:8px}.app-password-label[data-v-32a32b16]{display:table-cell;padding-right:1em;text-align:right;vertical-align:middle;width:100px}.row input[data-v-32a32b16]{height:44px !important;padding:7px 12px;margin-right:12px;width:200px}.monospaced[data-v-32a32b16]{width:245px;font-family:monospace}.button-vue[data-v-32a32b16]{display:inline-block;margin:3px 3px 3px 3px}.row[data-v-32a32b16]{display:flex;align-items:center}.spacing[data-v-32a32b16]{padding-top:16px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AuthTokenSetupDialogue.vue\"],\"names\":[],\"mappings\":\"AACA,mCACC,YAAA,CACA,kBAAA,CAEA,yCACC,yBAAA,CACA,oBAAA,CACA,iBAAA,CACA,OAAA,CACA,eAAA,CACA,gBAAA,CAKF,qCACC,kBAAA,CACA,iBAAA,CACA,gBAAA,CACA,qBAAA,CACA,WAAA,CAGD,4BACC,sBAAA,CACA,gBAAA,CACA,iBAAA,CACA,WAAA,CAGD,6BACC,WAAA,CACA,qBAAA,CAGD,6BACC,oBAAA,CACA,sBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAGD,0BACC,gBAAA\",\"sourcesContent\":[\"\\n.app-password-row {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\n\\t.icon {\\n\\t\\tbackground-size: 16px 16px;\\n\\t\\tdisplay: inline-block;\\n\\t\\tposition: relative;\\n\\t\\ttop: 3px;\\n\\t\\tmargin-left: 5px;\\n\\t\\tmargin-right: 8px;\\n\\t}\\n\\n}\\n\\n.app-password-label {\\n\\tdisplay: table-cell;\\n\\tpadding-right: 1em;\\n\\ttext-align: right;\\n\\tvertical-align: middle;\\n\\twidth: 100px;\\n}\\n\\n.row input {\\n\\theight: 44px !important;\\n\\tpadding: 7px 12px;\\n\\tmargin-right: 12px;\\n\\twidth: 200px;\\n}\\n\\n.monospaced {\\n\\twidth: 245px;\\n\\tfont-family: monospace;\\n}\\n\\n.button-vue{\\n\\tdisplay:inline-block;\\n\\tmargin: 3px 3px 3px 3px;\\n}\\n\\n.row {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n}\\n\\n.spacing {\\n\\tpadding-top: 16px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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 = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4783;","__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\t4783: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(56619); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","ie","edge","firefox","chrome","safari","androidChrome","iphone","ipad","iosClient","androidClient","iosTalkClient","androidTalkClient","davx5","webPirate","sailfishBrowser","neon","productName","name","components","NcActions","NcActionButton","NcActionCheckbox","props","token","type","required","data","showMore","renaming","newName","oldName","actionOpen","computed","lastActivityRelative","lastActivity","iconName","os","version","icon","wiping","methods","startRename","cancelRename","revoke","rename","wipe","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","component","_vm","this","_c","_self","class","attrs","id","staticClass","_v","canRename","directives","rawName","value","expression","ref","domProps","on","$event","indexOf","_k","keyCode","key","apply","arguments","target","composing","_s","t","_e","current","scope","filesystem","stopPropagation","preventDefault","$emit","canDelete","AuthToken","tokens","sortedTokens","toggleScope","onDelete","onWipe","length","_l","Check","ContentCopy","NcButton","QR","add","adding","loading","deviceName","appPassword","loginName","copied","showQR","qrUrl","copyTooltipOptions","selectInput","e","submit","confirmPassword","then","catch","console","OC","copyPassword","navigator","showError","setTimeout","reset","scopedSlots","_u","fn","proxy","cb","AuthTokenSetupDialogue","AuthTokenList","canCreateToken","baseUrl","addNewToken","toggleTokenScope","updateToken","deleteToken","wipeToken","resolve","axios","undefined","sanitize","__webpack_nonce__","btoa","requestToken","Vue","VTooltip","defaultHtml","AuthTokenSection","propsData","loadState","$mount","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""}