1
0

2.js 116 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399
  1. (window["webpackJsonp"] = window["webpackJsonp"] || []).push([[2],{
  2. /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/popoverMenu.vue?vue&type=script&lang=js&":
  3. /*!***************************************************************************************************************************************************!*\
  4. !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/popoverMenu.vue?vue&type=script&lang=js& ***!
  5. \***************************************************************************************************************************************************/
  6. /*! exports provided: default */
  7. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  8. "use strict";
  9. __webpack_require__.r(__webpack_exports__);
  10. /* harmony import */ var _popoverMenu_popoverItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./popoverMenu/popoverItem */ "./src/components/popoverMenu/popoverItem.vue");
  11. //
  12. //
  13. //
  14. //
  15. //
  16. //
  17. //
  18. //
  19. //
  20. //
  21. //
  22. //
  23. //
  24. //
  25. //
  26. //
  27. //
  28. //
  29. //
  30. //
  31. //
  32. //
  33. //
  34. //
  35. //
  36. //
  37. //
  38. //
  39. //
  40. /* harmony default export */ __webpack_exports__["default"] = ({
  41. name: 'popoverMenu',
  42. props: ['menu'],
  43. components: {
  44. popoverItem: _popoverMenu_popoverItem__WEBPACK_IMPORTED_MODULE_0__["default"]
  45. }
  46. });
  47. /***/ }),
  48. /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/popoverMenu/popoverItem.vue?vue&type=script&lang=js&":
  49. /*!***************************************************************************************************************************************************************!*\
  50. !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/popoverMenu/popoverItem.vue?vue&type=script&lang=js& ***!
  51. \***************************************************************************************************************************************************************/
  52. /*! exports provided: default */
  53. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  54. "use strict";
  55. __webpack_require__.r(__webpack_exports__);
  56. //
  57. //
  58. //
  59. //
  60. //
  61. //
  62. //
  63. //
  64. //
  65. //
  66. //
  67. //
  68. //
  69. //
  70. //
  71. //
  72. //
  73. //
  74. //
  75. //
  76. //
  77. //
  78. //
  79. //
  80. //
  81. //
  82. //
  83. //
  84. //
  85. //
  86. //
  87. //
  88. //
  89. //
  90. //
  91. //
  92. //
  93. //
  94. //
  95. //
  96. //
  97. //
  98. //
  99. //
  100. //
  101. /* harmony default export */ __webpack_exports__["default"] = ({
  102. props: ['item']
  103. });
  104. /***/ }),
  105. /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/userList.vue?vue&type=script&lang=js&":
  106. /*!************************************************************************************************************************************************!*\
  107. !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/userList.vue?vue&type=script&lang=js& ***!
  108. \************************************************************************************************************************************************/
  109. /*! exports provided: default */
  110. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  111. "use strict";
  112. __webpack_require__.r(__webpack_exports__);
  113. /* harmony import */ var _userList_userRow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./userList/userRow */ "./src/components/userList/userRow.vue");
  114. /* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-multiselect */ "./node_modules/vue-multiselect/dist/vue-multiselect.min.js");
  115. /* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue_multiselect__WEBPACK_IMPORTED_MODULE_1__);
  116. /* harmony import */ var vue_infinite_loading__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-infinite-loading */ "./node_modules/vue-infinite-loading/dist/vue-infinite-loading.js");
  117. /* harmony import */ var vue_infinite_loading__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(vue_infinite_loading__WEBPACK_IMPORTED_MODULE_2__);
  118. /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js");
  119. //
  120. //
  121. //
  122. //
  123. //
  124. //
  125. //
  126. //
  127. //
  128. //
  129. //
  130. //
  131. //
  132. //
  133. //
  134. //
  135. //
  136. //
  137. //
  138. //
  139. //
  140. //
  141. //
  142. //
  143. //
  144. //
  145. //
  146. //
  147. //
  148. //
  149. //
  150. //
  151. //
  152. //
  153. //
  154. //
  155. //
  156. //
  157. //
  158. //
  159. //
  160. //
  161. //
  162. //
  163. //
  164. //
  165. //
  166. //
  167. //
  168. //
  169. //
  170. //
  171. //
  172. //
  173. //
  174. //
  175. //
  176. //
  177. //
  178. //
  179. //
  180. //
  181. //
  182. //
  183. //
  184. //
  185. //
  186. //
  187. //
  188. //
  189. //
  190. //
  191. //
  192. //
  193. //
  194. //
  195. //
  196. //
  197. //
  198. //
  199. //
  200. //
  201. //
  202. //
  203. //
  204. //
  205. //
  206. //
  207. //
  208. //
  209. //
  210. //
  211. //
  212. //
  213. //
  214. //
  215. //
  216. //
  217. //
  218. //
  219. //
  220. //
  221. //
  222. //
  223. //
  224. //
  225. //
  226. //
  227. //
  228. //
  229. //
  230. //
  231. //
  232. //
  233. //
  234. //
  235. //
  236. //
  237. //
  238. //
  239. //
  240. //
  241. //
  242. //
  243. //
  244. //
  245. //
  246. //
  247. //
  248. //
  249. //
  250. //
  251. //
  252. //
  253. //
  254. //
  255. //
  256. /* harmony default export */ __webpack_exports__["default"] = ({
  257. name: 'userList',
  258. props: ['users', 'showConfig', 'selectedGroup', 'externalActions'],
  259. components: {
  260. userRow: _userList_userRow__WEBPACK_IMPORTED_MODULE_0__["default"],
  261. Multiselect: vue_multiselect__WEBPACK_IMPORTED_MODULE_1___default.a,
  262. InfiniteLoading: vue_infinite_loading__WEBPACK_IMPORTED_MODULE_2___default.a
  263. },
  264. data: function data() {
  265. var unlimitedQuota = {
  266. id: 'none',
  267. label: t('settings', 'Unlimited')
  268. },
  269. defaultQuota = {
  270. id: 'default',
  271. label: t('settings', 'Default quota')
  272. };
  273. return {
  274. unlimitedQuota: unlimitedQuota,
  275. defaultQuota: defaultQuota,
  276. loading: {
  277. all: false,
  278. groups: false
  279. },
  280. scrolled: false,
  281. searchQuery: '',
  282. newUser: {
  283. id: '',
  284. displayName: '',
  285. password: '',
  286. mailAddress: '',
  287. groups: [],
  288. subAdminsGroups: [],
  289. quota: defaultQuota,
  290. language: {
  291. code: 'en',
  292. name: t('settings', 'Default language')
  293. }
  294. }
  295. };
  296. },
  297. mounted: function mounted() {
  298. if (!this.settings.canChangePassword) {
  299. OC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled'));
  300. }
  301. /**
  302. * Init default language from server data. The use of this.settings
  303. * requires a computed variable, which break the v-model binding of the form,
  304. * this is a much easier solution than getter and setter on a computed var
  305. */
  306. vue__WEBPACK_IMPORTED_MODULE_3__["default"].set(this.newUser.language, 'code', this.settings.defaultLanguage);
  307. /**
  308. * In case the user directly loaded the user list within a group
  309. * the watch won't be triggered. We need to initialize it.
  310. */
  311. this.setNewUserDefaultGroup(this.$route.params.selectedGroup);
  312. /**
  313. * Register search
  314. */
  315. this.userSearch = new OCA.Search(this.search, this.resetSearch);
  316. },
  317. computed: {
  318. settings: function settings() {
  319. return this.$store.getters.getServerData;
  320. },
  321. filteredUsers: function filteredUsers() {
  322. if (this.selectedGroup === 'disabled') {
  323. var disabledUsers = this.users.filter(function (user) {
  324. return user.enabled === false;
  325. });
  326. if (disabledUsers.length === 0 && this.$refs.infiniteLoading && this.$refs.infiniteLoading.isComplete) {
  327. // disabled group is empty, redirection to all users
  328. this.$router.push({
  329. name: 'users'
  330. });
  331. this.$refs.infiniteLoading.$emit('$InfiniteLoading:reset');
  332. }
  333. return disabledUsers;
  334. }
  335. if (!this.settings.isAdmin) {
  336. // we don't want subadmins to edit themselves
  337. return this.users.filter(function (user) {
  338. return user.enabled !== false && user.id !== oc_current_user;
  339. });
  340. }
  341. return this.users.filter(function (user) {
  342. return user.enabled !== false;
  343. });
  344. },
  345. groups: function groups() {
  346. // data provided php side + remove the disabled group
  347. return this.$store.getters.getGroups.filter(function (group) {
  348. return group.id !== 'disabled';
  349. }).sort(function (a, b) {
  350. return a.name.localeCompare(b.name);
  351. });
  352. },
  353. canAddGroups: function canAddGroups() {
  354. // disabled if no permission to add new users to group
  355. return this.groups.map(function (group) {
  356. // clone object because we don't want
  357. // to edit the original groups
  358. group = Object.assign({}, group);
  359. group.$isDisabled = group.canAdd === false;
  360. return group;
  361. });
  362. },
  363. subAdminsGroups: function subAdminsGroups() {
  364. // data provided php side
  365. return this.$store.getters.getSubadminGroups;
  366. },
  367. quotaOptions: function quotaOptions() {
  368. // convert the preset array into objects
  369. var quotaPreset = this.settings.quotaPreset.reduce(function (acc, cur) {
  370. return acc.concat({
  371. id: cur,
  372. label: cur
  373. });
  374. }, []); // add default presets
  375. quotaPreset.unshift(this.unlimitedQuota);
  376. quotaPreset.unshift(this.defaultQuota);
  377. return quotaPreset;
  378. },
  379. minPasswordLength: function minPasswordLength() {
  380. return this.$store.getters.getPasswordPolicyMinLength;
  381. },
  382. usersOffset: function usersOffset() {
  383. return this.$store.getters.getUsersOffset;
  384. },
  385. usersLimit: function usersLimit() {
  386. return this.$store.getters.getUsersLimit;
  387. },
  388. /* LANGUAGES */
  389. languages: function languages() {
  390. return Array({
  391. label: t('settings', 'Common languages'),
  392. languages: this.settings.languages.commonlanguages
  393. }, {
  394. label: t('settings', 'All languages'),
  395. languages: this.settings.languages.languages
  396. });
  397. }
  398. },
  399. watch: {
  400. // watch url change and group select
  401. selectedGroup: function selectedGroup(val, old) {
  402. this.$store.commit('resetUsers');
  403. this.$refs.infiniteLoading.$emit('$InfiniteLoading:reset');
  404. this.setNewUserDefaultGroup(val);
  405. }
  406. },
  407. methods: {
  408. onScroll: function onScroll(event) {
  409. this.scrolled = event.target.scrollTo > 0;
  410. },
  411. /**
  412. * Validate quota string to make sure it's a valid human file size
  413. *
  414. * @param {string} quota Quota in readable format '5 GB'
  415. * @returns {Object}
  416. */
  417. validateQuota: function validateQuota(quota) {
  418. // only used for new presets sent through @Tag
  419. var validQuota = OC.Util.computerFileSize(quota);
  420. if (validQuota !== null && validQuota >= 0) {
  421. // unify format output
  422. quota = OC.Util.humanFileSize(OC.Util.computerFileSize(quota));
  423. return this.newUser.quota = {
  424. id: quota,
  425. label: quota
  426. };
  427. } // Default is unlimited
  428. return this.newUser.quota = this.quotaOptions[0];
  429. },
  430. infiniteHandler: function infiniteHandler($state) {
  431. this.$store.dispatch('getUsers', {
  432. offset: this.usersOffset,
  433. limit: this.usersLimit,
  434. group: this.selectedGroup !== 'disabled' ? this.selectedGroup : '',
  435. search: this.searchQuery
  436. }).then(function (response) {
  437. response ? $state.loaded() : $state.complete();
  438. });
  439. },
  440. /* SEARCH */
  441. search: function search(query) {
  442. this.searchQuery = query;
  443. this.$store.commit('resetUsers');
  444. this.$refs.infiniteLoading.$emit('$InfiniteLoading:reset');
  445. },
  446. resetSearch: function resetSearch() {
  447. this.search('');
  448. },
  449. resetForm: function resetForm() {
  450. // revert form to original state
  451. Object.assign(this.newUser, this.$options.data.call(this).newUser);
  452. this.loading.all = false;
  453. },
  454. createUser: function createUser() {
  455. var _this = this;
  456. this.loading.all = true;
  457. this.$store.dispatch('addUser', {
  458. userid: this.newUser.id,
  459. password: this.newUser.password,
  460. displayName: this.newUser.displayName,
  461. email: this.newUser.mailAddress,
  462. groups: this.newUser.groups.map(function (group) {
  463. return group.id;
  464. }),
  465. subadmin: this.newUser.subAdminsGroups.map(function (group) {
  466. return group.id;
  467. }),
  468. quota: this.newUser.quota.id,
  469. language: this.newUser.language.code
  470. }).then(function () {
  471. return _this.resetForm();
  472. }).catch(function (error) {
  473. _this.loading.all = false;
  474. if (error.response && error.response.data && error.response.data.ocs && error.response.data.ocs.meta) {
  475. var statuscode = error.response.data.ocs.meta.statuscode;
  476. if (statuscode === 102) {
  477. // wrong username
  478. _this.$refs.newusername.focus();
  479. } else if (statuscode === 107) {
  480. // wrong password
  481. _this.$refs.newuserpassword.focus();
  482. }
  483. }
  484. });
  485. },
  486. setNewUserDefaultGroup: function setNewUserDefaultGroup(value) {
  487. if (value && value.length > 0) {
  488. // setting new user default group to the current selected one
  489. var currentGroup = this.groups.find(function (group) {
  490. return group.id === value;
  491. });
  492. if (currentGroup) {
  493. this.newUser.groups = [currentGroup];
  494. return;
  495. }
  496. } // fallback, empty selected group
  497. this.newUser.groups = [];
  498. },
  499. /**
  500. * Create a new group
  501. *
  502. * @param {string} groups Group id
  503. * @returns {Promise}
  504. */
  505. createGroup: function createGroup(gid) {
  506. var _this2 = this;
  507. this.loading.groups = true;
  508. this.$store.dispatch('addGroup', gid).then(function (group) {
  509. _this2.newUser.groups.push(_this2.groups.find(function (group) {
  510. return group.id === gid;
  511. }));
  512. _this2.loading.groups = false;
  513. }).catch(function () {
  514. _this2.loading.groups = false;
  515. });
  516. return this.$store.getters.getGroups[this.groups.length];
  517. }
  518. }
  519. });
  520. /***/ }),
  521. /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/userList/userRow.vue?vue&type=script&lang=js&":
  522. /*!********************************************************************************************************************************************************!*\
  523. !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/userList/userRow.vue?vue&type=script&lang=js& ***!
  524. \********************************************************************************************************************************************************/
  525. /*! exports provided: default */
  526. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  527. "use strict";
  528. __webpack_require__.r(__webpack_exports__);
  529. /* harmony import */ var _popoverMenu__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../popoverMenu */ "./src/components/popoverMenu.vue");
  530. /* harmony import */ var vue_click_outside__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-click-outside */ "./node_modules/vue-click-outside/index.js");
  531. /* harmony import */ var vue_click_outside__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue_click_outside__WEBPACK_IMPORTED_MODULE_1__);
  532. /* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-multiselect */ "./node_modules/vue-multiselect/dist/vue-multiselect.min.js");
  533. /* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(vue_multiselect__WEBPACK_IMPORTED_MODULE_2__);
  534. /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js");
  535. /* harmony import */ var v_tooltip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! v-tooltip */ "./node_modules/v-tooltip/dist/v-tooltip.esm.js");
  536. function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
  537. //
  538. //
  539. //
  540. //
  541. //
  542. //
  543. //
  544. //
  545. //
  546. //
  547. //
  548. //
  549. //
  550. //
  551. //
  552. //
  553. //
  554. //
  555. //
  556. //
  557. //
  558. //
  559. //
  560. //
  561. //
  562. //
  563. //
  564. //
  565. //
  566. //
  567. //
  568. //
  569. //
  570. //
  571. //
  572. //
  573. //
  574. //
  575. //
  576. //
  577. //
  578. //
  579. //
  580. //
  581. //
  582. //
  583. //
  584. //
  585. //
  586. //
  587. //
  588. //
  589. //
  590. //
  591. //
  592. //
  593. //
  594. //
  595. //
  596. //
  597. //
  598. //
  599. //
  600. //
  601. //
  602. //
  603. //
  604. //
  605. //
  606. //
  607. //
  608. //
  609. //
  610. //
  611. //
  612. //
  613. //
  614. //
  615. //
  616. //
  617. //
  618. //
  619. //
  620. //
  621. //
  622. //
  623. //
  624. //
  625. //
  626. //
  627. //
  628. //
  629. //
  630. //
  631. //
  632. //
  633. //
  634. //
  635. //
  636. //
  637. //
  638. //
  639. //
  640. //
  641. //
  642. //
  643. //
  644. //
  645. //
  646. //
  647. //
  648. //
  649. //
  650. //
  651. //
  652. //
  653. //
  654. //
  655. //
  656. //
  657. //
  658. //
  659. //
  660. //
  661. //
  662. //
  663. //
  664. //
  665. vue__WEBPACK_IMPORTED_MODULE_3__["default"].use(v_tooltip__WEBPACK_IMPORTED_MODULE_4__["default"]);
  666. /* harmony default export */ __webpack_exports__["default"] = ({
  667. name: 'userRow',
  668. props: ['user', 'settings', 'groups', 'subAdminsGroups', 'quotaOptions', 'showConfig', 'languages', 'externalActions'],
  669. components: {
  670. popoverMenu: _popoverMenu__WEBPACK_IMPORTED_MODULE_0__["default"],
  671. Multiselect: vue_multiselect__WEBPACK_IMPORTED_MODULE_2___default.a
  672. },
  673. directives: {
  674. ClickOutside: vue_click_outside__WEBPACK_IMPORTED_MODULE_1___default.a
  675. },
  676. mounted: function mounted() {// required if popup needs to stay opened after menu click
  677. // since we only have disable/delete actions, let's close it directly
  678. // this.popupItem = this.$el;
  679. },
  680. data: function data() {
  681. return {
  682. rand: parseInt(Math.random() * 1000),
  683. openedMenu: false,
  684. feedbackMessage: '',
  685. loading: {
  686. all: false,
  687. displayName: false,
  688. password: false,
  689. mailAddress: false,
  690. groups: false,
  691. subadmins: false,
  692. quota: false,
  693. delete: false,
  694. disable: false,
  695. languages: false
  696. }
  697. };
  698. },
  699. computed: {
  700. /* USER POPOVERMENU ACTIONS */
  701. userActions: function userActions() {
  702. var actions = [{
  703. icon: 'icon-delete',
  704. text: t('settings', 'Delete user'),
  705. action: this.deleteUser
  706. }, {
  707. icon: this.user.enabled ? 'icon-close' : 'icon-add',
  708. text: this.user.enabled ? t('settings', 'Disable user') : t('settings', 'Enable user'),
  709. action: this.enableDisableUser
  710. }];
  711. if (this.user.email !== null && this.user.email !== '') {
  712. actions.push({
  713. icon: 'icon-mail',
  714. text: t('settings', 'Resend welcome email'),
  715. action: this.sendWelcomeMail
  716. });
  717. }
  718. return actions.concat(this.externalActions);
  719. },
  720. /* GROUPS MANAGEMENT */
  721. userGroups: function userGroups() {
  722. var _this = this;
  723. var userGroups = this.groups.filter(function (group) {
  724. return _this.user.groups.includes(group.id);
  725. });
  726. return userGroups;
  727. },
  728. userSubAdminsGroups: function userSubAdminsGroups() {
  729. var _this2 = this;
  730. var userSubAdminsGroups = this.subAdminsGroups.filter(function (group) {
  731. return _this2.user.subadmin.includes(group.id);
  732. });
  733. return userSubAdminsGroups;
  734. },
  735. availableGroups: function availableGroups() {
  736. var _this3 = this;
  737. return this.groups.map(function (group) {
  738. // clone object because we don't want
  739. // to edit the original groups
  740. var groupClone = Object.assign({}, group); // two settings here:
  741. // 1. user NOT in group but no permission to add
  742. // 2. user is in group but no permission to remove
  743. groupClone.$isDisabled = group.canAdd === false && !_this3.user.groups.includes(group.id) || group.canRemove === false && _this3.user.groups.includes(group.id);
  744. return groupClone;
  745. });
  746. },
  747. /* QUOTA MANAGEMENT */
  748. usedSpace: function usedSpace() {
  749. if (this.user.quota.used) {
  750. return t('settings', '{size} used', {
  751. size: OC.Util.humanFileSize(this.user.quota.used)
  752. });
  753. }
  754. return t('settings', '{size} used', {
  755. size: OC.Util.humanFileSize(0)
  756. });
  757. },
  758. usedQuota: function usedQuota() {
  759. var quota = this.user.quota.quota;
  760. if (quota > 0) {
  761. quota = Math.min(100, Math.round(this.user.quota.used / quota * 100));
  762. } else {
  763. var usedInGB = this.user.quota.used / (10 * Math.pow(2, 30)); //asymptotic curve approaching 50% at 10GB to visualize used stace with infinite quota
  764. quota = 95 * (1 - 1 / (usedInGB + 1));
  765. }
  766. return isNaN(quota) ? 0 : quota;
  767. },
  768. // Mapping saved values to objects
  769. userQuota: function userQuota() {
  770. if (this.user.quota.quota >= 0) {
  771. // if value is valid, let's map the quotaOptions or return custom quota
  772. var humanQuota = OC.Util.humanFileSize(this.user.quota.quota);
  773. var userQuota = this.quotaOptions.find(function (quota) {
  774. return quota.id === humanQuota;
  775. });
  776. return userQuota ? userQuota : {
  777. id: humanQuota,
  778. label: humanQuota
  779. };
  780. } else if (this.user.quota.quota === 'default') {
  781. // default quota is replaced by the proper value on load
  782. return this.quotaOptions[0];
  783. }
  784. return this.quotaOptions[1]; // unlimited
  785. },
  786. /* PASSWORD POLICY? */
  787. minPasswordLength: function minPasswordLength() {
  788. return this.$store.getters.getPasswordPolicyMinLength;
  789. },
  790. /* LANGUAGE */
  791. userLanguage: function userLanguage() {
  792. var _this4 = this;
  793. var availableLanguages = this.languages[0].languages.concat(this.languages[1].languages);
  794. var userLang = availableLanguages.find(function (lang) {
  795. return lang.code === _this4.user.language;
  796. });
  797. if (_typeof(userLang) !== 'object' && this.user.language !== '') {
  798. return {
  799. code: this.user.language,
  800. name: this.user.language
  801. };
  802. } else if (this.user.language === '') {
  803. return false;
  804. }
  805. return userLang;
  806. }
  807. },
  808. methods: {
  809. /* MENU HANDLING */
  810. toggleMenu: function toggleMenu() {
  811. this.openedMenu = !this.openedMenu;
  812. },
  813. hideMenu: function hideMenu() {
  814. this.openedMenu = false;
  815. },
  816. /**
  817. * Generate avatar url
  818. *
  819. * @param {string} user The user name
  820. * @param {int} size Size integer, default 32
  821. * @returns {string}
  822. */
  823. generateAvatar: function generateAvatar(user) {
  824. var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 32;
  825. return OC.generateUrl('/avatar/{user}/{size}?v={version}', {
  826. user: user,
  827. size: size,
  828. version: oc_userconfig.avatar.version
  829. });
  830. },
  831. /**
  832. * Format array of groups objects to a string for the popup
  833. *
  834. * @param {array} groups The groups
  835. * @returns {string}
  836. */
  837. formatGroupsTitle: function formatGroupsTitle(groups) {
  838. var names = groups.map(function (group) {
  839. return group.name;
  840. });
  841. return names.slice(2).join(', ');
  842. },
  843. deleteUser: function deleteUser() {
  844. var _this5 = this;
  845. this.loading.delete = true;
  846. this.loading.all = true;
  847. var userid = this.user.id;
  848. return this.$store.dispatch('deleteUser', userid).then(function () {
  849. _this5.loading.delete = false;
  850. _this5.loading.all = false;
  851. });
  852. },
  853. enableDisableUser: function enableDisableUser() {
  854. var _this6 = this;
  855. this.loading.delete = true;
  856. this.loading.all = true;
  857. var userid = this.user.id;
  858. var enabled = !this.user.enabled;
  859. return this.$store.dispatch('enableDisableUser', {
  860. userid: userid,
  861. enabled: enabled
  862. }).then(function () {
  863. _this6.loading.delete = false;
  864. _this6.loading.all = false;
  865. });
  866. },
  867. /**
  868. * Set user displayName
  869. *
  870. * @param {string} displayName The display name
  871. * @returns {Promise}
  872. */
  873. updateDisplayName: function updateDisplayName() {
  874. var _this7 = this;
  875. var displayName = this.$refs.displayName.value;
  876. this.loading.displayName = true;
  877. this.$store.dispatch('setUserData', {
  878. userid: this.user.id,
  879. key: 'displayname',
  880. value: displayName
  881. }).then(function () {
  882. _this7.loading.displayName = false;
  883. _this7.$refs.displayName.value = displayName;
  884. });
  885. },
  886. /**
  887. * Set user password
  888. *
  889. * @param {string} password The email adress
  890. * @returns {Promise}
  891. */
  892. updatePassword: function updatePassword() {
  893. var _this8 = this;
  894. var password = this.$refs.password.value;
  895. this.loading.password = true;
  896. this.$store.dispatch('setUserData', {
  897. userid: this.user.id,
  898. key: 'password',
  899. value: password
  900. }).then(function () {
  901. _this8.loading.password = false;
  902. _this8.$refs.password.value = ''; // empty & show placeholder
  903. });
  904. },
  905. /**
  906. * Set user mailAddress
  907. *
  908. * @param {string} mailAddress The email adress
  909. * @returns {Promise}
  910. */
  911. updateEmail: function updateEmail() {
  912. var _this9 = this;
  913. var mailAddress = this.$refs.mailAddress.value;
  914. this.loading.mailAddress = true;
  915. this.$store.dispatch('setUserData', {
  916. userid: this.user.id,
  917. key: 'email',
  918. value: mailAddress
  919. }).then(function () {
  920. _this9.loading.mailAddress = false;
  921. _this9.$refs.mailAddress.value = mailAddress;
  922. });
  923. },
  924. /**
  925. * Create a new group and add user to it
  926. *
  927. * @param {string} groups Group id
  928. * @returns {Promise}
  929. */
  930. createGroup: function createGroup(gid) {
  931. var _this10 = this;
  932. this.loading = {
  933. groups: true,
  934. subadmins: true
  935. };
  936. this.$store.dispatch('addGroup', gid).then(function () {
  937. _this10.loading = {
  938. groups: false,
  939. subadmins: false
  940. };
  941. var userid = _this10.user.id;
  942. _this10.$store.dispatch('addUserGroup', {
  943. userid: userid,
  944. gid: gid
  945. });
  946. }).catch(function () {
  947. _this10.loading = {
  948. groups: false,
  949. subadmins: false
  950. };
  951. });
  952. return this.$store.getters.getGroups[this.groups.length];
  953. },
  954. /**
  955. * Add user to group
  956. *
  957. * @param {object} group Group object
  958. * @returns {Promise}
  959. */
  960. addUserGroup: function addUserGroup(group) {
  961. var _this11 = this;
  962. if (group.canAdd === false) {
  963. return false;
  964. }
  965. this.loading.groups = true;
  966. var userid = this.user.id;
  967. var gid = group.id;
  968. return this.$store.dispatch('addUserGroup', {
  969. userid: userid,
  970. gid: gid
  971. }).then(function () {
  972. return _this11.loading.groups = false;
  973. });
  974. },
  975. /**
  976. * Remove user from group
  977. *
  978. * @param {object} group Group object
  979. * @returns {Promise}
  980. */
  981. removeUserGroup: function removeUserGroup(group) {
  982. var _this12 = this;
  983. if (group.canRemove === false) {
  984. return false;
  985. }
  986. this.loading.groups = true;
  987. var userid = this.user.id;
  988. var gid = group.id;
  989. return this.$store.dispatch('removeUserGroup', {
  990. userid: userid,
  991. gid: gid
  992. }).then(function () {
  993. _this12.loading.groups = false; // remove user from current list if current list is the removed group
  994. if (_this12.$route.params.selectedGroup === gid) {
  995. _this12.$store.commit('deleteUser', userid);
  996. }
  997. }).catch(function () {
  998. _this12.loading.groups = false;
  999. });
  1000. },
  1001. /**
  1002. * Add user to group
  1003. *
  1004. * @param {object} group Group object
  1005. * @returns {Promise}
  1006. */
  1007. addUserSubAdmin: function addUserSubAdmin(group) {
  1008. var _this13 = this;
  1009. this.loading.subadmins = true;
  1010. var userid = this.user.id;
  1011. var gid = group.id;
  1012. return this.$store.dispatch('addUserSubAdmin', {
  1013. userid: userid,
  1014. gid: gid
  1015. }).then(function () {
  1016. return _this13.loading.subadmins = false;
  1017. });
  1018. },
  1019. /**
  1020. * Remove user from group
  1021. *
  1022. * @param {object} group Group object
  1023. * @returns {Promise}
  1024. */
  1025. removeUserSubAdmin: function removeUserSubAdmin(group) {
  1026. var _this14 = this;
  1027. this.loading.subadmins = true;
  1028. var userid = this.user.id;
  1029. var gid = group.id;
  1030. return this.$store.dispatch('removeUserSubAdmin', {
  1031. userid: userid,
  1032. gid: gid
  1033. }).then(function () {
  1034. return _this14.loading.subadmins = false;
  1035. });
  1036. },
  1037. /**
  1038. * Dispatch quota set request
  1039. *
  1040. * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}
  1041. * @returns {string}
  1042. */
  1043. setUserQuota: function setUserQuota() {
  1044. var _this15 = this;
  1045. var quota = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'none';
  1046. this.loading.quota = true; // ensure we only send the preset id
  1047. quota = quota.id ? quota.id : quota;
  1048. this.$store.dispatch('setUserData', {
  1049. userid: this.user.id,
  1050. key: 'quota',
  1051. value: quota
  1052. }).then(function () {
  1053. return _this15.loading.quota = false;
  1054. });
  1055. return quota;
  1056. },
  1057. /**
  1058. * Validate quota string to make sure it's a valid human file size
  1059. *
  1060. * @param {string} quota Quota in readable format '5 GB'
  1061. * @returns {Promise|boolean}
  1062. */
  1063. validateQuota: function validateQuota(quota) {
  1064. // only used for new presets sent through @Tag
  1065. var validQuota = OC.Util.computerFileSize(quota);
  1066. if (validQuota !== null && validQuota >= 0) {
  1067. // unify format output
  1068. return this.setUserQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota)));
  1069. } // if no valid do not change
  1070. return false;
  1071. },
  1072. /**
  1073. * Dispatch language set request
  1074. *
  1075. * @param {Object} lang language object {code:'en', name:'English'}
  1076. * @returns {Object}
  1077. */
  1078. setUserLanguage: function setUserLanguage(lang) {
  1079. var _this16 = this;
  1080. this.loading.languages = true; // ensure we only send the preset id
  1081. this.$store.dispatch('setUserData', {
  1082. userid: this.user.id,
  1083. key: 'language',
  1084. value: lang.code
  1085. }).then(function () {
  1086. return _this16.loading.languages = false;
  1087. });
  1088. return lang;
  1089. },
  1090. /**
  1091. * Dispatch new welcome mail request
  1092. */
  1093. sendWelcomeMail: function sendWelcomeMail() {
  1094. var _this17 = this;
  1095. this.loading.all = true;
  1096. this.$store.dispatch('sendWelcomeMail', this.user.id).then(function (success) {
  1097. if (success) {
  1098. // Show feedback to indicate the success
  1099. _this17.feedbackMessage = t('setting', 'Welcome mail sent!');
  1100. setTimeout(function () {
  1101. _this17.feedbackMessage = '';
  1102. }, 2000);
  1103. }
  1104. _this17.loading.all = false;
  1105. });
  1106. }
  1107. }
  1108. });
  1109. /***/ }),
  1110. /***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/views/Users.vue?vue&type=script&lang=js&":
  1111. /*!****************************************************************************************************************************************!*\
  1112. !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/views/Users.vue?vue&type=script&lang=js& ***!
  1113. \****************************************************************************************************************************************/
  1114. /*! exports provided: default */
  1115. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1116. "use strict";
  1117. __webpack_require__.r(__webpack_exports__);
  1118. /* harmony import */ var nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! nextcloud-vue */ "./node_modules/nextcloud-vue/dist/ncvuecomponents.js");
  1119. /* harmony import */ var nextcloud_vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__);
  1120. /* harmony import */ var _components_userList__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/userList */ "./src/components/userList.vue");
  1121. /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js");
  1122. /* harmony import */ var vue_localstorage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-localstorage */ "./node_modules/vue-localstorage/dist/vue-local-storage.js");
  1123. /* harmony import */ var vue_localstorage__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(vue_localstorage__WEBPACK_IMPORTED_MODULE_3__);
  1124. /* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-multiselect */ "./node_modules/vue-multiselect/dist/vue-multiselect.min.js");
  1125. /* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(vue_multiselect__WEBPACK_IMPORTED_MODULE_4__);
  1126. /* harmony import */ var _store_api__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../store/api */ "./src/store/api.js");
  1127. function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
  1128. //
  1129. //
  1130. //
  1131. //
  1132. //
  1133. //
  1134. //
  1135. //
  1136. //
  1137. //
  1138. //
  1139. //
  1140. //
  1141. //
  1142. //
  1143. //
  1144. //
  1145. //
  1146. //
  1147. //
  1148. //
  1149. //
  1150. //
  1151. //
  1152. //
  1153. //
  1154. //
  1155. //
  1156. //
  1157. //
  1158. //
  1159. //
  1160. //
  1161. //
  1162. //
  1163. //
  1164. //
  1165. //
  1166. //
  1167. //
  1168. //
  1169. //
  1170. //
  1171. //
  1172. //
  1173. //
  1174. //
  1175. //
  1176. //
  1177. //
  1178. //
  1179. //
  1180. //
  1181. //
  1182. //
  1183. //
  1184. //
  1185. //
  1186. vue__WEBPACK_IMPORTED_MODULE_2__["default"].use(vue_localstorage__WEBPACK_IMPORTED_MODULE_3___default.a);
  1187. /* harmony default export */ __webpack_exports__["default"] = ({
  1188. name: 'Users',
  1189. props: ['selectedGroup'],
  1190. components: {
  1191. AppNavigation: nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__["AppNavigation"],
  1192. userList: _components_userList__WEBPACK_IMPORTED_MODULE_1__["default"],
  1193. Multiselect: vue_multiselect__WEBPACK_IMPORTED_MODULE_4___default.a
  1194. },
  1195. beforeMount: function beforeMount() {
  1196. this.$store.commit('initGroups', {
  1197. groups: this.$store.getters.getServerData.groups,
  1198. orderBy: this.$store.getters.getServerData.sortGroups,
  1199. userCount: this.$store.getters.getServerData.userCount
  1200. });
  1201. this.$store.dispatch('getPasswordPolicyMinLength');
  1202. },
  1203. created: function created() {
  1204. // init the OCA.Settings.UserList object
  1205. // and add the registerAction method
  1206. Object.assign(OCA, {
  1207. Settings: {
  1208. UserList: {
  1209. registerAction: this.registerAction
  1210. }
  1211. }
  1212. });
  1213. },
  1214. data: function data() {
  1215. return {
  1216. // default quota is set to unlimited
  1217. unlimitedQuota: {
  1218. id: 'none',
  1219. label: t('settings', 'Unlimited')
  1220. },
  1221. // temporary value used for multiselect change
  1222. selectedQuota: false,
  1223. externalActions: [],
  1224. showAddGroupEntry: false,
  1225. loadingAddGroup: false,
  1226. showConfig: {
  1227. showStoragePath: false,
  1228. showUserBackend: false,
  1229. showLastLogin: false,
  1230. showNewUserForm: false,
  1231. showLanguages: false
  1232. }
  1233. };
  1234. },
  1235. methods: {
  1236. toggleNewUserMenu: function toggleNewUserMenu() {
  1237. this.showConfig.showNewUserForm = !this.showConfig.showNewUserForm;
  1238. if (this.showConfig.showNewUserForm) {
  1239. vue__WEBPACK_IMPORTED_MODULE_2__["default"].nextTick(function () {
  1240. window.newusername.focus();
  1241. });
  1242. }
  1243. },
  1244. getLocalstorage: function getLocalstorage(key) {
  1245. // force initialization
  1246. var localConfig = this.$localStorage.get(key); // if localstorage is null, fallback to original values
  1247. this.showConfig[key] = localConfig !== null ? localConfig === 'true' : this.showConfig[key];
  1248. return this.showConfig[key];
  1249. },
  1250. setLocalStorage: function setLocalStorage(key, status) {
  1251. this.showConfig[key] = status;
  1252. this.$localStorage.set(key, status);
  1253. return status;
  1254. },
  1255. removeGroup: function removeGroup(groupid) {
  1256. var self = this; // TODO migrate to a vue js confirm dialog component
  1257. OC.dialogs.confirm(t('settings', 'You are about to remove the group {group}. The users will NOT be deleted.', {
  1258. group: groupid
  1259. }), t('settings', 'Please confirm the group removal '), function (success) {
  1260. if (success) {
  1261. self.$store.dispatch('removeGroup', groupid);
  1262. }
  1263. });
  1264. },
  1265. /**
  1266. * Dispatch default quota set request
  1267. *
  1268. * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}
  1269. * @returns {string}
  1270. */
  1271. setDefaultQuota: function setDefaultQuota() {
  1272. var _this = this;
  1273. var quota = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'none';
  1274. this.$store.dispatch('setAppConfig', {
  1275. app: 'files',
  1276. key: 'default_quota',
  1277. // ensure we only send the preset id
  1278. value: quota.id ? quota.id : quota
  1279. }).then(function () {
  1280. if (_typeof(quota) !== 'object') {
  1281. quota = {
  1282. id: quota,
  1283. label: quota
  1284. };
  1285. }
  1286. _this.defaultQuota = quota;
  1287. });
  1288. },
  1289. /**
  1290. * Validate quota string to make sure it's a valid human file size
  1291. *
  1292. * @param {string} quota Quota in readable format '5 GB'
  1293. * @returns {Promise|boolean}
  1294. */
  1295. validateQuota: function validateQuota(quota) {
  1296. // only used for new presets sent through @Tag
  1297. var validQuota = OC.Util.computerFileSize(quota);
  1298. if (validQuota === 0) {
  1299. return this.setDefaultQuota('none');
  1300. } else if (validQuota !== null) {
  1301. // unify format output
  1302. return this.setDefaultQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota)));
  1303. } // if no valid do not change
  1304. return false;
  1305. },
  1306. /**
  1307. * Register a new action for the user menu
  1308. *
  1309. * @param {string} icon the icon class
  1310. * @param {string} text the text to display
  1311. * @param {function} action the function to run
  1312. */
  1313. registerAction: function registerAction(icon, text, action) {
  1314. this.externalActions.push({
  1315. icon: icon,
  1316. text: text,
  1317. action: action
  1318. });
  1319. return this.externalActions;
  1320. },
  1321. /**
  1322. * Create a new group
  1323. *
  1324. * @param {Object} event The form submit event
  1325. */
  1326. createGroup: function createGroup(event) {
  1327. var _this2 = this;
  1328. var gid = event.target[0].value;
  1329. this.loadingAddGroup = true;
  1330. this.$store.dispatch('addGroup', gid).then(function () {
  1331. _this2.showAddGroupEntry = false;
  1332. _this2.loadingAddGroup = false;
  1333. }).catch(function () {
  1334. _this2.loadingAddGroup = false;
  1335. });
  1336. }
  1337. },
  1338. computed: {
  1339. users: function users() {
  1340. return this.$store.getters.getUsers;
  1341. },
  1342. loading: function loading() {
  1343. return Object.keys(this.users).length === 0;
  1344. },
  1345. usersOffset: function usersOffset() {
  1346. return this.$store.getters.getUsersOffset;
  1347. },
  1348. usersLimit: function usersLimit() {
  1349. return this.$store.getters.getUsersLimit;
  1350. },
  1351. // Local settings
  1352. showLanguages: {
  1353. get: function get() {
  1354. return this.getLocalstorage('showLanguages');
  1355. },
  1356. set: function set(status) {
  1357. this.setLocalStorage('showLanguages', status);
  1358. }
  1359. },
  1360. showLastLogin: {
  1361. get: function get() {
  1362. return this.getLocalstorage('showLastLogin');
  1363. },
  1364. set: function set(status) {
  1365. this.setLocalStorage('showLastLogin', status);
  1366. }
  1367. },
  1368. showUserBackend: {
  1369. get: function get() {
  1370. return this.getLocalstorage('showUserBackend');
  1371. },
  1372. set: function set(status) {
  1373. this.setLocalStorage('showUserBackend', status);
  1374. }
  1375. },
  1376. showStoragePath: {
  1377. get: function get() {
  1378. return this.getLocalstorage('showStoragePath');
  1379. },
  1380. set: function set(status) {
  1381. this.setLocalStorage('showStoragePath', status);
  1382. }
  1383. },
  1384. userCount: function userCount() {
  1385. return this.$store.getters.getUserCount;
  1386. },
  1387. settings: function settings() {
  1388. return this.$store.getters.getServerData;
  1389. },
  1390. // default quota
  1391. quotaOptions: function quotaOptions() {
  1392. // convert the preset array into objects
  1393. var quotaPreset = this.settings.quotaPreset.reduce(function (acc, cur) {
  1394. return acc.concat({
  1395. id: cur,
  1396. label: cur
  1397. });
  1398. }, []); // add default presets
  1399. quotaPreset.unshift(this.unlimitedQuota);
  1400. return quotaPreset;
  1401. },
  1402. // mapping saved values to objects
  1403. defaultQuota: {
  1404. get: function get() {
  1405. if (this.selectedQuota !== false) {
  1406. return this.selectedQuota;
  1407. }
  1408. if (OC.Util.computerFileSize(this.settings.defaultQuota) > 0) {
  1409. // if value is valid, let's map the quotaOptions or return custom quota
  1410. return {
  1411. id: this.settings.defaultQuota,
  1412. label: this.settings.defaultQuota
  1413. };
  1414. }
  1415. return this.unlimitedQuota; // unlimited
  1416. },
  1417. set: function set(quota) {
  1418. this.selectedQuota = quota;
  1419. }
  1420. },
  1421. // BUILD APP NAVIGATION MENU OBJECT
  1422. menu: function menu() {
  1423. var _this3 = this;
  1424. // Data provided php side
  1425. var self = this;
  1426. var groups = this.$store.getters.getGroups;
  1427. groups = Array.isArray(groups) ? groups : []; // Map groups
  1428. groups = groups.map(function (group) {
  1429. var item = {};
  1430. item.id = group.id.replace(' ', '_');
  1431. item.key = item.id;
  1432. item.utils = {}; // router link to
  1433. item.router = {
  1434. name: 'group',
  1435. params: {
  1436. selectedGroup: group.id
  1437. }
  1438. }; // group name
  1439. item.text = group.name; // users count for all groups
  1440. if (group.usercount - group.disabled > 0 || group.usercount === -1) {
  1441. item.utils.counter = group.usercount - group.disabled;
  1442. }
  1443. if (item.id !== 'admin' && item.id !== 'disabled' && _this3.settings.isAdmin) {
  1444. // add delete button on real groups
  1445. item.utils.actions = [{
  1446. icon: 'icon-delete',
  1447. text: t('settings', 'Remove group'),
  1448. action: function action() {
  1449. self.removeGroup(group.id);
  1450. }
  1451. }];
  1452. }
  1453. ;
  1454. return item;
  1455. }); // Every item is added on top of the array, so we're going backward
  1456. // Groups, separator, disabled, admin, everyone
  1457. // Add separator
  1458. var realGroups = groups.find(function (group) {
  1459. return group.id !== 'disabled' && group.id !== 'admin';
  1460. });
  1461. realGroups = typeof realGroups === 'undefined' ? [] : realGroups;
  1462. realGroups = Array.isArray(realGroups) ? realGroups : [realGroups];
  1463. if (realGroups.length > 0) {
  1464. var separator = {
  1465. caption: true,
  1466. text: t('settings', 'Groups')
  1467. };
  1468. groups.unshift(separator);
  1469. } // Adjust admin and disabled groups
  1470. var adminGroup = groups.find(function (group) {
  1471. return group.id == 'admin';
  1472. });
  1473. var disabledGroup = groups.find(function (group) {
  1474. return group.id == 'disabled';
  1475. }); // filter out admin and disabled
  1476. groups = groups.filter(function (group) {
  1477. return ['admin', 'disabled'].indexOf(group.id) === -1;
  1478. });
  1479. if (adminGroup && adminGroup.text) {
  1480. adminGroup.text = t('settings', 'Admins'); // rename admin group
  1481. adminGroup.icon = 'icon-user-admin'; // set icon
  1482. groups.unshift(adminGroup); // add admin group if present
  1483. }
  1484. if (disabledGroup && disabledGroup.text) {
  1485. disabledGroup.text = t('settings', 'Disabled users'); // rename disabled group
  1486. disabledGroup.icon = 'icon-disabled-users'; // set icon
  1487. if (disabledGroup.utils && (disabledGroup.utils.counter > 0 // add disabled if not empty
  1488. || disabledGroup.utils.counter === -1) // add disabled if ldap enabled
  1489. ) {
  1490. groups.unshift(disabledGroup);
  1491. }
  1492. } // Add everyone group
  1493. var everyoneGroup = {
  1494. id: 'everyone',
  1495. key: 'everyone',
  1496. icon: 'icon-contacts-dark',
  1497. router: {
  1498. name: 'users'
  1499. },
  1500. text: t('settings', 'Everyone')
  1501. }; // users count
  1502. if (this.userCount > 0) {
  1503. vue__WEBPACK_IMPORTED_MODULE_2__["default"].set(everyoneGroup, 'utils', {
  1504. counter: this.userCount
  1505. });
  1506. }
  1507. groups.unshift(everyoneGroup);
  1508. var addGroup = {
  1509. id: 'addgroup',
  1510. key: 'addgroup',
  1511. icon: 'icon-add',
  1512. text: t('settings', 'Add group'),
  1513. classes: this.loadingAddGroup ? 'icon-loading-small' : ''
  1514. };
  1515. if (this.showAddGroupEntry) {
  1516. vue__WEBPACK_IMPORTED_MODULE_2__["default"].set(addGroup, 'edit', {
  1517. text: t('settings', 'Add group'),
  1518. action: this.createGroup,
  1519. reset: function reset() {
  1520. self.showAddGroupEntry = false;
  1521. }
  1522. });
  1523. addGroup.classes = 'editing';
  1524. } else {
  1525. vue__WEBPACK_IMPORTED_MODULE_2__["default"].set(addGroup, 'action', function () {
  1526. self.showAddGroupEntry = true;
  1527. });
  1528. }
  1529. groups.unshift(addGroup); // Return
  1530. return {
  1531. id: 'usergrouplist',
  1532. new: {
  1533. id: 'new-user-button',
  1534. text: t('settings', 'New user'),
  1535. icon: 'icon-add',
  1536. action: this.toggleNewUserMenu
  1537. },
  1538. items: groups
  1539. };
  1540. }
  1541. }
  1542. });
  1543. /***/ }),
  1544. /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/popoverMenu.vue?vue&type=template&id=04ea21c4&":
  1545. /*!*****************************************************************************************************************************************************************************************************!*\
  1546. !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/popoverMenu.vue?vue&type=template&id=04ea21c4& ***!
  1547. \*****************************************************************************************************************************************************************************************************/
  1548. /*! exports provided: render, staticRenderFns */
  1549. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1550. "use strict";
  1551. __webpack_require__.r(__webpack_exports__);
  1552. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  1553. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  1554. var render = function() {
  1555. var _vm = this
  1556. var _h = _vm.$createElement
  1557. var _c = _vm._self._c || _h
  1558. return _c(
  1559. "ul",
  1560. _vm._l(_vm.menu, function(item, key) {
  1561. return _c("popover-item", { key: key, attrs: { item: item } })
  1562. })
  1563. )
  1564. }
  1565. var staticRenderFns = []
  1566. render._withStripped = true
  1567. /***/ }),
  1568. /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/popoverMenu/popoverItem.vue?vue&type=template&id=4c6af9e6&":
  1569. /*!*****************************************************************************************************************************************************************************************************************!*\
  1570. !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/popoverMenu/popoverItem.vue?vue&type=template&id=4c6af9e6& ***!
  1571. \*****************************************************************************************************************************************************************************************************************/
  1572. /*! exports provided: render, staticRenderFns */
  1573. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1574. "use strict";
  1575. __webpack_require__.r(__webpack_exports__);
  1576. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  1577. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  1578. var render = function() {
  1579. var _vm = this
  1580. var _h = _vm.$createElement
  1581. var _c = _vm._self._c || _h
  1582. return _c("li", [
  1583. _vm.item.href
  1584. ? _c(
  1585. "a",
  1586. {
  1587. attrs: {
  1588. href: _vm.item.href ? _vm.item.href : "#",
  1589. target: _vm.item.target ? _vm.item.target : "",
  1590. rel: "noreferrer noopener"
  1591. },
  1592. on: { click: _vm.item.action }
  1593. },
  1594. [
  1595. _c("span", { class: _vm.item.icon }),
  1596. _vm._v(" "),
  1597. _vm.item.text
  1598. ? _c("span", [_vm._v(_vm._s(_vm.item.text))])
  1599. : _vm.item.longtext
  1600. ? _c("p", [_vm._v(_vm._s(_vm.item.longtext))])
  1601. : _vm._e()
  1602. ]
  1603. )
  1604. : _vm.item.action
  1605. ? _c("button", { on: { click: _vm.item.action } }, [
  1606. _c("span", { class: _vm.item.icon }),
  1607. _vm._v(" "),
  1608. _vm.item.text
  1609. ? _c("span", [_vm._v(_vm._s(_vm.item.text))])
  1610. : _vm.item.longtext
  1611. ? _c("p", [_vm._v(_vm._s(_vm.item.longtext))])
  1612. : _vm._e()
  1613. ])
  1614. : _c("span", { staticClass: "menuitem" }, [
  1615. _c("span", { class: _vm.item.icon }),
  1616. _vm._v(" "),
  1617. _vm.item.text
  1618. ? _c("span", [_vm._v(_vm._s(_vm.item.text))])
  1619. : _vm.item.longtext
  1620. ? _c("p", [_vm._v(_vm._s(_vm.item.longtext))])
  1621. : _vm._e()
  1622. ])
  1623. ])
  1624. }
  1625. var staticRenderFns = []
  1626. render._withStripped = true
  1627. /***/ }),
  1628. /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/userList.vue?vue&type=template&id=40745299&":
  1629. /*!**************************************************************************************************************************************************************************************************!*\
  1630. !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/userList.vue?vue&type=template&id=40745299& ***!
  1631. \**************************************************************************************************************************************************************************************************/
  1632. /*! exports provided: render, staticRenderFns */
  1633. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1634. "use strict";
  1635. __webpack_require__.r(__webpack_exports__);
  1636. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  1637. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  1638. var render = function() {
  1639. var _vm = this
  1640. var _h = _vm.$createElement
  1641. var _c = _vm._self._c || _h
  1642. return _c(
  1643. "div",
  1644. {
  1645. staticClass: "user-list-grid",
  1646. attrs: { id: "app-content" },
  1647. on: {
  1648. "&scroll": function($event) {
  1649. return _vm.onScroll($event)
  1650. }
  1651. }
  1652. },
  1653. [
  1654. _c(
  1655. "div",
  1656. {
  1657. staticClass: "row",
  1658. class: { sticky: _vm.scrolled && !_vm.showConfig.showNewUserForm },
  1659. attrs: { id: "grid-header" }
  1660. },
  1661. [
  1662. _c("div", { staticClass: "avatar", attrs: { id: "headerAvatar" } }),
  1663. _vm._v(" "),
  1664. _c("div", { staticClass: "name", attrs: { id: "headerName" } }, [
  1665. _vm._v(_vm._s(_vm.t("settings", "Username")))
  1666. ]),
  1667. _vm._v(" "),
  1668. _c(
  1669. "div",
  1670. { staticClass: "displayName", attrs: { id: "headerDisplayName" } },
  1671. [_vm._v(_vm._s(_vm.t("settings", "Display name")))]
  1672. ),
  1673. _vm._v(" "),
  1674. _c(
  1675. "div",
  1676. { staticClass: "password", attrs: { id: "headerPassword" } },
  1677. [_vm._v(_vm._s(_vm.t("settings", "Password")))]
  1678. ),
  1679. _vm._v(" "),
  1680. _c(
  1681. "div",
  1682. { staticClass: "mailAddress", attrs: { id: "headerAddress" } },
  1683. [_vm._v(_vm._s(_vm.t("settings", "Email")))]
  1684. ),
  1685. _vm._v(" "),
  1686. _c("div", { staticClass: "groups", attrs: { id: "headerGroups" } }, [
  1687. _vm._v(_vm._s(_vm.t("settings", "Groups")))
  1688. ]),
  1689. _vm._v(" "),
  1690. _vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin
  1691. ? _c(
  1692. "div",
  1693. { staticClass: "subadmins", attrs: { id: "headerSubAdmins" } },
  1694. [_vm._v(_vm._s(_vm.t("settings", "Group admin for")))]
  1695. )
  1696. : _vm._e(),
  1697. _vm._v(" "),
  1698. _c("div", { staticClass: "quota", attrs: { id: "headerQuota" } }, [
  1699. _vm._v(_vm._s(_vm.t("settings", "Quota")))
  1700. ]),
  1701. _vm._v(" "),
  1702. _vm.showConfig.showLanguages
  1703. ? _c(
  1704. "div",
  1705. { staticClass: "languages", attrs: { id: "headerLanguages" } },
  1706. [_vm._v(_vm._s(_vm.t("settings", "Language")))]
  1707. )
  1708. : _vm._e(),
  1709. _vm._v(" "),
  1710. _vm.showConfig.showStoragePath
  1711. ? _c(
  1712. "div",
  1713. { staticClass: "headerStorageLocation storageLocation" },
  1714. [_vm._v(_vm._s(_vm.t("settings", "Storage location")))]
  1715. )
  1716. : _vm._e(),
  1717. _vm._v(" "),
  1718. _vm.showConfig.showUserBackend
  1719. ? _c("div", { staticClass: "headerUserBackend userBackend" }, [
  1720. _vm._v(_vm._s(_vm.t("settings", "User backend")))
  1721. ])
  1722. : _vm._e(),
  1723. _vm._v(" "),
  1724. _vm.showConfig.showLastLogin
  1725. ? _c("div", { staticClass: "headerLastLogin lastLogin" }, [
  1726. _vm._v(_vm._s(_vm.t("settings", "Last login")))
  1727. ])
  1728. : _vm._e(),
  1729. _vm._v(" "),
  1730. _c("div", { staticClass: "userActions" })
  1731. ]
  1732. ),
  1733. _vm._v(" "),
  1734. _c(
  1735. "form",
  1736. {
  1737. directives: [
  1738. {
  1739. name: "show",
  1740. rawName: "v-show",
  1741. value: _vm.showConfig.showNewUserForm,
  1742. expression: "showConfig.showNewUserForm"
  1743. }
  1744. ],
  1745. staticClass: "row",
  1746. class: { sticky: _vm.scrolled && _vm.showConfig.showNewUserForm },
  1747. attrs: { id: "new-user", disabled: _vm.loading.all },
  1748. on: {
  1749. submit: function($event) {
  1750. $event.preventDefault()
  1751. return _vm.createUser($event)
  1752. }
  1753. }
  1754. },
  1755. [
  1756. _c("div", {
  1757. class: _vm.loading.all ? "icon-loading-small" : "icon-add"
  1758. }),
  1759. _vm._v(" "),
  1760. _c("div", { staticClass: "name" }, [
  1761. _c("input", {
  1762. directives: [
  1763. {
  1764. name: "model",
  1765. rawName: "v-model",
  1766. value: _vm.newUser.id,
  1767. expression: "newUser.id"
  1768. }
  1769. ],
  1770. ref: "newusername",
  1771. attrs: {
  1772. id: "newusername",
  1773. type: "text",
  1774. required: "",
  1775. placeholder: _vm.t("settings", "Username"),
  1776. name: "username",
  1777. autocomplete: "off",
  1778. autocapitalize: "none",
  1779. autocorrect: "off",
  1780. pattern: "[a-zA-Z0-9 _\\.@\\-']+"
  1781. },
  1782. domProps: { value: _vm.newUser.id },
  1783. on: {
  1784. input: function($event) {
  1785. if ($event.target.composing) {
  1786. return
  1787. }
  1788. _vm.$set(_vm.newUser, "id", $event.target.value)
  1789. }
  1790. }
  1791. })
  1792. ]),
  1793. _vm._v(" "),
  1794. _c("div", { staticClass: "displayName" }, [
  1795. _c("input", {
  1796. directives: [
  1797. {
  1798. name: "model",
  1799. rawName: "v-model",
  1800. value: _vm.newUser.displayName,
  1801. expression: "newUser.displayName"
  1802. }
  1803. ],
  1804. attrs: {
  1805. id: "newdisplayname",
  1806. type: "text",
  1807. placeholder: _vm.t("settings", "Display name"),
  1808. name: "displayname",
  1809. autocomplete: "off",
  1810. autocapitalize: "none",
  1811. autocorrect: "off"
  1812. },
  1813. domProps: { value: _vm.newUser.displayName },
  1814. on: {
  1815. input: function($event) {
  1816. if ($event.target.composing) {
  1817. return
  1818. }
  1819. _vm.$set(_vm.newUser, "displayName", $event.target.value)
  1820. }
  1821. }
  1822. })
  1823. ]),
  1824. _vm._v(" "),
  1825. _c("div", { staticClass: "password" }, [
  1826. _c("input", {
  1827. directives: [
  1828. {
  1829. name: "model",
  1830. rawName: "v-model",
  1831. value: _vm.newUser.password,
  1832. expression: "newUser.password"
  1833. }
  1834. ],
  1835. ref: "newuserpassword",
  1836. attrs: {
  1837. id: "newuserpassword",
  1838. type: "password",
  1839. required: _vm.newUser.mailAddress === "",
  1840. placeholder: _vm.t("settings", "Password"),
  1841. name: "password",
  1842. autocomplete: "new-password",
  1843. autocapitalize: "none",
  1844. autocorrect: "off",
  1845. minlength: _vm.minPasswordLength
  1846. },
  1847. domProps: { value: _vm.newUser.password },
  1848. on: {
  1849. input: function($event) {
  1850. if ($event.target.composing) {
  1851. return
  1852. }
  1853. _vm.$set(_vm.newUser, "password", $event.target.value)
  1854. }
  1855. }
  1856. })
  1857. ]),
  1858. _vm._v(" "),
  1859. _c("div", { staticClass: "mailAddress" }, [
  1860. _c("input", {
  1861. directives: [
  1862. {
  1863. name: "model",
  1864. rawName: "v-model",
  1865. value: _vm.newUser.mailAddress,
  1866. expression: "newUser.mailAddress"
  1867. }
  1868. ],
  1869. attrs: {
  1870. id: "newemail",
  1871. type: "email",
  1872. required: _vm.newUser.password === "",
  1873. placeholder: _vm.t("settings", "Email"),
  1874. name: "email",
  1875. autocomplete: "off",
  1876. autocapitalize: "none",
  1877. autocorrect: "off"
  1878. },
  1879. domProps: { value: _vm.newUser.mailAddress },
  1880. on: {
  1881. input: function($event) {
  1882. if ($event.target.composing) {
  1883. return
  1884. }
  1885. _vm.$set(_vm.newUser, "mailAddress", $event.target.value)
  1886. }
  1887. }
  1888. })
  1889. ]),
  1890. _vm._v(" "),
  1891. _c(
  1892. "div",
  1893. { staticClass: "groups" },
  1894. [
  1895. !_vm.settings.isAdmin
  1896. ? _c("input", {
  1897. class: { "icon-loading-small": _vm.loading.groups },
  1898. attrs: {
  1899. type: "text",
  1900. tabindex: "-1",
  1901. id: "newgroups",
  1902. required: !_vm.settings.isAdmin
  1903. },
  1904. domProps: { value: _vm.newUser.groups }
  1905. })
  1906. : _vm._e(),
  1907. _vm._v(" "),
  1908. _c(
  1909. "multiselect",
  1910. {
  1911. staticClass: "multiselect-vue",
  1912. attrs: {
  1913. options: _vm.canAddGroups,
  1914. disabled: _vm.loading.groups || _vm.loading.all,
  1915. "tag-placeholder": "create",
  1916. placeholder: _vm.t("settings", "Add user in group"),
  1917. label: "name",
  1918. "track-by": "id",
  1919. multiple: true,
  1920. taggable: true,
  1921. "close-on-select": false
  1922. },
  1923. on: { tag: _vm.createGroup },
  1924. model: {
  1925. value: _vm.newUser.groups,
  1926. callback: function($$v) {
  1927. _vm.$set(_vm.newUser, "groups", $$v)
  1928. },
  1929. expression: "newUser.groups"
  1930. }
  1931. },
  1932. [
  1933. _c(
  1934. "span",
  1935. { attrs: { slot: "noResult" }, slot: "noResult" },
  1936. [_vm._v(_vm._s(_vm.t("settings", "No results")))]
  1937. )
  1938. ]
  1939. )
  1940. ],
  1941. 1
  1942. ),
  1943. _vm._v(" "),
  1944. _vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin
  1945. ? _c(
  1946. "div",
  1947. { staticClass: "subadmins" },
  1948. [
  1949. _c(
  1950. "multiselect",
  1951. {
  1952. staticClass: "multiselect-vue",
  1953. attrs: {
  1954. options: _vm.subAdminsGroups,
  1955. placeholder: _vm.t("settings", "Set user as admin for"),
  1956. label: "name",
  1957. "track-by": "id",
  1958. multiple: true,
  1959. "close-on-select": false
  1960. },
  1961. model: {
  1962. value: _vm.newUser.subAdminsGroups,
  1963. callback: function($$v) {
  1964. _vm.$set(_vm.newUser, "subAdminsGroups", $$v)
  1965. },
  1966. expression: "newUser.subAdminsGroups"
  1967. }
  1968. },
  1969. [
  1970. _c(
  1971. "span",
  1972. { attrs: { slot: "noResult" }, slot: "noResult" },
  1973. [_vm._v(_vm._s(_vm.t("settings", "No results")))]
  1974. )
  1975. ]
  1976. )
  1977. ],
  1978. 1
  1979. )
  1980. : _vm._e(),
  1981. _vm._v(" "),
  1982. _c(
  1983. "div",
  1984. { staticClass: "quota" },
  1985. [
  1986. _c("multiselect", {
  1987. staticClass: "multiselect-vue",
  1988. attrs: {
  1989. options: _vm.quotaOptions,
  1990. placeholder: _vm.t("settings", "Select user quota"),
  1991. label: "label",
  1992. "track-by": "id",
  1993. allowEmpty: false,
  1994. taggable: true
  1995. },
  1996. on: { tag: _vm.validateQuota },
  1997. model: {
  1998. value: _vm.newUser.quota,
  1999. callback: function($$v) {
  2000. _vm.$set(_vm.newUser, "quota", $$v)
  2001. },
  2002. expression: "newUser.quota"
  2003. }
  2004. })
  2005. ],
  2006. 1
  2007. ),
  2008. _vm._v(" "),
  2009. _vm.showConfig.showLanguages
  2010. ? _c(
  2011. "div",
  2012. { staticClass: "languages" },
  2013. [
  2014. _c("multiselect", {
  2015. staticClass: "multiselect-vue",
  2016. attrs: {
  2017. options: _vm.languages,
  2018. placeholder: _vm.t("settings", "Default language"),
  2019. label: "name",
  2020. "track-by": "code",
  2021. allowEmpty: false,
  2022. "group-values": "languages",
  2023. "group-label": "label"
  2024. },
  2025. model: {
  2026. value: _vm.newUser.language,
  2027. callback: function($$v) {
  2028. _vm.$set(_vm.newUser, "language", $$v)
  2029. },
  2030. expression: "newUser.language"
  2031. }
  2032. })
  2033. ],
  2034. 1
  2035. )
  2036. : _vm._e(),
  2037. _vm._v(" "),
  2038. _vm.showConfig.showStoragePath
  2039. ? _c("div", { staticClass: "storageLocation" })
  2040. : _vm._e(),
  2041. _vm._v(" "),
  2042. _vm.showConfig.showUserBackend
  2043. ? _c("div", { staticClass: "userBackend" })
  2044. : _vm._e(),
  2045. _vm._v(" "),
  2046. _vm.showConfig.showLastLogin
  2047. ? _c("div", { staticClass: "lastLogin" })
  2048. : _vm._e(),
  2049. _vm._v(" "),
  2050. _c("div", { staticClass: "userActions" }, [
  2051. _c("input", {
  2052. staticClass: "button primary icon-checkmark-white has-tooltip",
  2053. attrs: {
  2054. type: "submit",
  2055. id: "newsubmit",
  2056. value: "",
  2057. title: _vm.t("settings", "Add a new user")
  2058. }
  2059. })
  2060. ])
  2061. ]
  2062. ),
  2063. _vm._v(" "),
  2064. _vm._l(_vm.filteredUsers, function(user, key) {
  2065. return _c("user-row", {
  2066. key: key,
  2067. attrs: {
  2068. user: user,
  2069. settings: _vm.settings,
  2070. showConfig: _vm.showConfig,
  2071. groups: _vm.groups,
  2072. subAdminsGroups: _vm.subAdminsGroups,
  2073. quotaOptions: _vm.quotaOptions,
  2074. languages: _vm.languages,
  2075. externalActions: _vm.externalActions
  2076. }
  2077. })
  2078. }),
  2079. _vm._v(" "),
  2080. _c(
  2081. "infinite-loading",
  2082. { ref: "infiniteLoading", on: { infinite: _vm.infiniteHandler } },
  2083. [
  2084. _c("div", { attrs: { slot: "spinner" }, slot: "spinner" }, [
  2085. _c("div", { staticClass: "users-icon-loading icon-loading" })
  2086. ]),
  2087. _vm._v(" "),
  2088. _c("div", { attrs: { slot: "no-more" }, slot: "no-more" }, [
  2089. _c("div", { staticClass: "users-list-end" })
  2090. ]),
  2091. _vm._v(" "),
  2092. _c("div", { attrs: { slot: "no-results" }, slot: "no-results" }, [
  2093. _c("div", { attrs: { id: "emptycontent" } }, [
  2094. _c("div", { staticClass: "icon-contacts-dark" }),
  2095. _vm._v(" "),
  2096. _c("h2", [_vm._v(_vm._s(_vm.t("settings", "No users in here")))])
  2097. ])
  2098. ])
  2099. ]
  2100. )
  2101. ],
  2102. 2
  2103. )
  2104. }
  2105. var staticRenderFns = []
  2106. render._withStripped = true
  2107. /***/ }),
  2108. /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/userList/userRow.vue?vue&type=template&id=d19586ce&":
  2109. /*!**********************************************************************************************************************************************************************************************************!*\
  2110. !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/userList/userRow.vue?vue&type=template&id=d19586ce& ***!
  2111. \**********************************************************************************************************************************************************************************************************/
  2112. /*! exports provided: render, staticRenderFns */
  2113. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2114. "use strict";
  2115. __webpack_require__.r(__webpack_exports__);
  2116. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  2117. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  2118. var render = function() {
  2119. var _vm = this
  2120. var _h = _vm.$createElement
  2121. var _c = _vm._self._c || _h
  2122. return Object.keys(_vm.user).length === 1
  2123. ? _c("div", { staticClass: "row", attrs: { "data-id": _vm.user.id } }, [
  2124. _c(
  2125. "div",
  2126. {
  2127. staticClass: "avatar",
  2128. class: {
  2129. "icon-loading-small": _vm.loading.delete || _vm.loading.disable
  2130. }
  2131. },
  2132. [
  2133. !_vm.loading.delete && !_vm.loading.disable
  2134. ? _c("img", {
  2135. attrs: {
  2136. alt: "",
  2137. width: "32",
  2138. height: "32",
  2139. src: _vm.generateAvatar(_vm.user.id, 32),
  2140. srcset:
  2141. _vm.generateAvatar(_vm.user.id, 64) +
  2142. " 2x, " +
  2143. _vm.generateAvatar(_vm.user.id, 128) +
  2144. " 4x"
  2145. }
  2146. })
  2147. : _vm._e()
  2148. ]
  2149. ),
  2150. _vm._v(" "),
  2151. _c("div", { staticClass: "name" }, [_vm._v(_vm._s(_vm.user.id))]),
  2152. _vm._v(" "),
  2153. _c("div", { staticClass: "obfuscated" }, [
  2154. _vm._v(
  2155. _vm._s(
  2156. _vm.t(
  2157. "settings",
  2158. "You do not have permissions to see the details of this user"
  2159. )
  2160. )
  2161. )
  2162. ])
  2163. ])
  2164. : _c(
  2165. "div",
  2166. {
  2167. staticClass: "row",
  2168. class: { disabled: _vm.loading.delete || _vm.loading.disable },
  2169. attrs: { "data-id": _vm.user.id }
  2170. },
  2171. [
  2172. _c(
  2173. "div",
  2174. {
  2175. staticClass: "avatar",
  2176. class: {
  2177. "icon-loading-small": _vm.loading.delete || _vm.loading.disable
  2178. }
  2179. },
  2180. [
  2181. !_vm.loading.delete && !_vm.loading.disable
  2182. ? _c("img", {
  2183. attrs: {
  2184. alt: "",
  2185. width: "32",
  2186. height: "32",
  2187. src: _vm.generateAvatar(_vm.user.id, 32),
  2188. srcset:
  2189. _vm.generateAvatar(_vm.user.id, 64) +
  2190. " 2x, " +
  2191. _vm.generateAvatar(_vm.user.id, 128) +
  2192. " 4x"
  2193. }
  2194. })
  2195. : _vm._e()
  2196. ]
  2197. ),
  2198. _vm._v(" "),
  2199. _c("div", { staticClass: "name" }, [_vm._v(_vm._s(_vm.user.id))]),
  2200. _vm._v(" "),
  2201. _c(
  2202. "form",
  2203. {
  2204. staticClass: "displayName",
  2205. class: { "icon-loading-small": _vm.loading.displayName },
  2206. on: {
  2207. submit: function($event) {
  2208. $event.preventDefault()
  2209. return _vm.updateDisplayName($event)
  2210. }
  2211. }
  2212. },
  2213. [
  2214. _vm.user.backendCapabilities.setDisplayName
  2215. ? [
  2216. _vm.user.backendCapabilities.setDisplayName
  2217. ? _c("input", {
  2218. ref: "displayName",
  2219. attrs: {
  2220. id: "displayName" + _vm.user.id + _vm.rand,
  2221. type: "text",
  2222. disabled:
  2223. _vm.loading.displayName || _vm.loading.all,
  2224. autocomplete: "new-password",
  2225. autocorrect: "off",
  2226. autocapitalize: "off",
  2227. spellcheck: "false"
  2228. },
  2229. domProps: { value: _vm.user.displayname }
  2230. })
  2231. : _vm._e(),
  2232. _vm._v(" "),
  2233. _vm.user.backendCapabilities.setDisplayName
  2234. ? _c("input", {
  2235. staticClass: "icon-confirm",
  2236. attrs: { type: "submit", value: "" }
  2237. })
  2238. : _vm._e()
  2239. ]
  2240. : _c(
  2241. "div",
  2242. {
  2243. directives: [
  2244. {
  2245. name: "tooltip",
  2246. rawName: "v-tooltip.auto",
  2247. value: _vm.t(
  2248. "settings",
  2249. "The backend does not support changing the display name"
  2250. ),
  2251. expression:
  2252. "t('settings', 'The backend does not support changing the display name')",
  2253. modifiers: { auto: true }
  2254. }
  2255. ],
  2256. staticClass: "name"
  2257. },
  2258. [_vm._v(_vm._s(_vm.user.displayname))]
  2259. )
  2260. ],
  2261. 2
  2262. ),
  2263. _vm._v(" "),
  2264. _vm.settings.canChangePassword &&
  2265. _vm.user.backendCapabilities.setPassword
  2266. ? _c(
  2267. "form",
  2268. {
  2269. staticClass: "password",
  2270. class: { "icon-loading-small": _vm.loading.password },
  2271. on: {
  2272. submit: function($event) {
  2273. $event.preventDefault()
  2274. return _vm.updatePassword($event)
  2275. }
  2276. }
  2277. },
  2278. [
  2279. _c("input", {
  2280. ref: "password",
  2281. attrs: {
  2282. id: "password" + _vm.user.id + _vm.rand,
  2283. type: "password",
  2284. required: "",
  2285. disabled: _vm.loading.password || _vm.loading.all,
  2286. minlength: _vm.minPasswordLength,
  2287. value: "",
  2288. placeholder: _vm.t("settings", "New password"),
  2289. autocomplete: "new-password",
  2290. autocorrect: "off",
  2291. autocapitalize: "off",
  2292. spellcheck: "false"
  2293. }
  2294. }),
  2295. _vm._v(" "),
  2296. _c("input", {
  2297. staticClass: "icon-confirm",
  2298. attrs: { type: "submit", value: "" }
  2299. })
  2300. ]
  2301. )
  2302. : _c("div"),
  2303. _vm._v(" "),
  2304. _c(
  2305. "form",
  2306. {
  2307. staticClass: "mailAddress",
  2308. class: { "icon-loading-small": _vm.loading.mailAddress },
  2309. on: {
  2310. submit: function($event) {
  2311. $event.preventDefault()
  2312. return _vm.updateEmail($event)
  2313. }
  2314. }
  2315. },
  2316. [
  2317. _c("input", {
  2318. ref: "mailAddress",
  2319. attrs: {
  2320. id: "mailAddress" + _vm.user.id + _vm.rand,
  2321. type: "email",
  2322. disabled: _vm.loading.mailAddress || _vm.loading.all,
  2323. autocomplete: "new-password",
  2324. autocorrect: "off",
  2325. autocapitalize: "off",
  2326. spellcheck: "false"
  2327. },
  2328. domProps: { value: _vm.user.email }
  2329. }),
  2330. _vm._v(" "),
  2331. _c("input", {
  2332. staticClass: "icon-confirm",
  2333. attrs: { type: "submit", value: "" }
  2334. })
  2335. ]
  2336. ),
  2337. _vm._v(" "),
  2338. _c(
  2339. "div",
  2340. {
  2341. staticClass: "groups",
  2342. class: { "icon-loading-small": _vm.loading.groups }
  2343. },
  2344. [
  2345. _c(
  2346. "multiselect",
  2347. {
  2348. staticClass: "multiselect-vue",
  2349. attrs: {
  2350. value: _vm.userGroups,
  2351. options: _vm.availableGroups,
  2352. disabled: _vm.loading.groups || _vm.loading.all,
  2353. "tag-placeholder": "create",
  2354. placeholder: _vm.t("settings", "Add user in group"),
  2355. label: "name",
  2356. "track-by": "id",
  2357. limit: 2,
  2358. multiple: true,
  2359. taggable: _vm.settings.isAdmin,
  2360. closeOnSelect: false
  2361. },
  2362. on: {
  2363. tag: _vm.createGroup,
  2364. select: _vm.addUserGroup,
  2365. remove: _vm.removeUserGroup
  2366. }
  2367. },
  2368. [
  2369. _c(
  2370. "span",
  2371. {
  2372. directives: [
  2373. {
  2374. name: "tooltip",
  2375. rawName: "v-tooltip.auto",
  2376. value: _vm.formatGroupsTitle(_vm.userGroups),
  2377. expression: "formatGroupsTitle(userGroups)",
  2378. modifiers: { auto: true }
  2379. }
  2380. ],
  2381. staticClass: "multiselect__limit",
  2382. attrs: { slot: "limit" },
  2383. slot: "limit"
  2384. },
  2385. [_vm._v("+" + _vm._s(_vm.userGroups.length - 2))]
  2386. ),
  2387. _vm._v(" "),
  2388. _c(
  2389. "span",
  2390. { attrs: { slot: "noResult" }, slot: "noResult" },
  2391. [_vm._v(_vm._s(_vm.t("settings", "No results")))]
  2392. )
  2393. ]
  2394. )
  2395. ],
  2396. 1
  2397. ),
  2398. _vm._v(" "),
  2399. _vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin
  2400. ? _c(
  2401. "div",
  2402. {
  2403. staticClass: "subadmins",
  2404. class: { "icon-loading-small": _vm.loading.subadmins }
  2405. },
  2406. [
  2407. _c(
  2408. "multiselect",
  2409. {
  2410. staticClass: "multiselect-vue",
  2411. attrs: {
  2412. value: _vm.userSubAdminsGroups,
  2413. options: _vm.subAdminsGroups,
  2414. disabled: _vm.loading.subadmins || _vm.loading.all,
  2415. placeholder: _vm.t("settings", "Set user as admin for"),
  2416. label: "name",
  2417. "track-by": "id",
  2418. limit: 2,
  2419. multiple: true,
  2420. closeOnSelect: false
  2421. },
  2422. on: {
  2423. select: _vm.addUserSubAdmin,
  2424. remove: _vm.removeUserSubAdmin
  2425. }
  2426. },
  2427. [
  2428. _c(
  2429. "span",
  2430. {
  2431. directives: [
  2432. {
  2433. name: "tooltip",
  2434. rawName: "v-tooltip.auto",
  2435. value: _vm.formatGroupsTitle(
  2436. _vm.userSubAdminsGroups
  2437. ),
  2438. expression:
  2439. "formatGroupsTitle(userSubAdminsGroups)",
  2440. modifiers: { auto: true }
  2441. }
  2442. ],
  2443. staticClass: "multiselect__limit",
  2444. attrs: { slot: "limit" },
  2445. slot: "limit"
  2446. },
  2447. [
  2448. _vm._v(
  2449. "+" + _vm._s(_vm.userSubAdminsGroups.length - 2)
  2450. )
  2451. ]
  2452. ),
  2453. _vm._v(" "),
  2454. _c(
  2455. "span",
  2456. { attrs: { slot: "noResult" }, slot: "noResult" },
  2457. [_vm._v(_vm._s(_vm.t("settings", "No results")))]
  2458. )
  2459. ]
  2460. )
  2461. ],
  2462. 1
  2463. )
  2464. : _vm._e(),
  2465. _vm._v(" "),
  2466. _c(
  2467. "div",
  2468. {
  2469. directives: [
  2470. {
  2471. name: "tooltip",
  2472. rawName: "v-tooltip.auto",
  2473. value: _vm.usedSpace,
  2474. expression: "usedSpace",
  2475. modifiers: { auto: true }
  2476. }
  2477. ],
  2478. staticClass: "quota",
  2479. class: { "icon-loading-small": _vm.loading.quota }
  2480. },
  2481. [
  2482. _c("multiselect", {
  2483. staticClass: "multiselect-vue",
  2484. attrs: {
  2485. value: _vm.userQuota,
  2486. options: _vm.quotaOptions,
  2487. disabled: _vm.loading.quota || _vm.loading.all,
  2488. "tag-placeholder": "create",
  2489. placeholder: _vm.t("settings", "Select user quota"),
  2490. label: "label",
  2491. "track-by": "id",
  2492. allowEmpty: false,
  2493. taggable: true
  2494. },
  2495. on: { tag: _vm.validateQuota, input: _vm.setUserQuota }
  2496. }),
  2497. _vm._v(" "),
  2498. _c("progress", {
  2499. staticClass: "quota-user-progress",
  2500. class: { warn: _vm.usedQuota > 80 },
  2501. attrs: { max: "100" },
  2502. domProps: { value: _vm.usedQuota }
  2503. })
  2504. ],
  2505. 1
  2506. ),
  2507. _vm._v(" "),
  2508. _vm.showConfig.showLanguages
  2509. ? _c(
  2510. "div",
  2511. {
  2512. staticClass: "languages",
  2513. class: { "icon-loading-small": _vm.loading.languages }
  2514. },
  2515. [
  2516. _c("multiselect", {
  2517. staticClass: "multiselect-vue",
  2518. attrs: {
  2519. value: _vm.userLanguage,
  2520. options: _vm.languages,
  2521. disabled: _vm.loading.languages || _vm.loading.all,
  2522. placeholder: _vm.t("settings", "No language set"),
  2523. label: "name",
  2524. "track-by": "code",
  2525. allowEmpty: false,
  2526. "group-values": "languages",
  2527. "group-label": "label"
  2528. },
  2529. on: { input: _vm.setUserLanguage }
  2530. })
  2531. ],
  2532. 1
  2533. )
  2534. : _vm._e(),
  2535. _vm._v(" "),
  2536. _vm.showConfig.showStoragePath
  2537. ? _c("div", { staticClass: "storageLocation" }, [
  2538. _vm._v(_vm._s(_vm.user.storageLocation))
  2539. ])
  2540. : _vm._e(),
  2541. _vm._v(" "),
  2542. _vm.showConfig.showUserBackend
  2543. ? _c("div", { staticClass: "userBackend" }, [
  2544. _vm._v(_vm._s(_vm.user.backend))
  2545. ])
  2546. : _vm._e(),
  2547. _vm._v(" "),
  2548. _vm.showConfig.showLastLogin
  2549. ? _c(
  2550. "div",
  2551. {
  2552. directives: [
  2553. {
  2554. name: "tooltip",
  2555. rawName: "v-tooltip.auto",
  2556. value:
  2557. _vm.user.lastLogin > 0
  2558. ? _vm.OC.Util.formatDate(_vm.user.lastLogin)
  2559. : "",
  2560. expression:
  2561. "user.lastLogin>0 ? OC.Util.formatDate(user.lastLogin) : ''",
  2562. modifiers: { auto: true }
  2563. }
  2564. ],
  2565. staticClass: "lastLogin"
  2566. },
  2567. [
  2568. _vm._v(
  2569. "\n\t\t" +
  2570. _vm._s(
  2571. _vm.user.lastLogin > 0
  2572. ? _vm.OC.Util.relativeModifiedDate(_vm.user.lastLogin)
  2573. : _vm.t("settings", "Never")
  2574. ) +
  2575. "\n\t"
  2576. )
  2577. ]
  2578. )
  2579. : _vm._e(),
  2580. _vm._v(" "),
  2581. _c("div", { staticClass: "userActions" }, [
  2582. _vm.OC.currentUser !== _vm.user.id &&
  2583. _vm.user.id !== "admin" &&
  2584. !_vm.loading.all
  2585. ? _c("div", { staticClass: "toggleUserActions" }, [
  2586. _c("div", {
  2587. directives: [
  2588. {
  2589. name: "click-outside",
  2590. rawName: "v-click-outside",
  2591. value: _vm.hideMenu,
  2592. expression: "hideMenu"
  2593. }
  2594. ],
  2595. staticClass: "icon-more",
  2596. on: { click: _vm.toggleMenu }
  2597. }),
  2598. _vm._v(" "),
  2599. _c(
  2600. "div",
  2601. {
  2602. staticClass: "popovermenu",
  2603. class: { open: _vm.openedMenu }
  2604. },
  2605. [_c("popover-menu", { attrs: { menu: _vm.userActions } })],
  2606. 1
  2607. )
  2608. ])
  2609. : _vm._e(),
  2610. _vm._v(" "),
  2611. _c(
  2612. "div",
  2613. {
  2614. staticClass: "feedback",
  2615. style: { opacity: _vm.feedbackMessage !== "" ? 1 : 0 }
  2616. },
  2617. [
  2618. _c("div", { staticClass: "icon-checkmark" }),
  2619. _vm._v("\n\t\t\t" + _vm._s(_vm.feedbackMessage) + "\n\t\t")
  2620. ]
  2621. )
  2622. ])
  2623. ]
  2624. )
  2625. }
  2626. var staticRenderFns = []
  2627. render._withStripped = true
  2628. /***/ }),
  2629. /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/views/Users.vue?vue&type=template&id=68be103e&":
  2630. /*!******************************************************************************************************************************************************************************************!*\
  2631. !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/views/Users.vue?vue&type=template&id=68be103e& ***!
  2632. \******************************************************************************************************************************************************************************************/
  2633. /*! exports provided: render, staticRenderFns */
  2634. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2635. "use strict";
  2636. __webpack_require__.r(__webpack_exports__);
  2637. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  2638. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  2639. var render = function() {
  2640. var _vm = this
  2641. var _h = _vm.$createElement
  2642. var _c = _vm._self._c || _h
  2643. return _c(
  2644. "div",
  2645. { staticClass: "app-settings", attrs: { id: "content" } },
  2646. [
  2647. _c(
  2648. "app-navigation",
  2649. { attrs: { menu: _vm.menu } },
  2650. [
  2651. _c("template", { slot: "settings-content" }, [
  2652. _c(
  2653. "div",
  2654. [
  2655. _c("p", [_vm._v(_vm._s(_vm.t("settings", "Default quota:")))]),
  2656. _vm._v(" "),
  2657. _c("multiselect", {
  2658. staticClass: "multiselect-vue",
  2659. attrs: {
  2660. value: _vm.defaultQuota,
  2661. options: _vm.quotaOptions,
  2662. "tag-placeholder": "create",
  2663. placeholder: _vm.t("settings", "Select default quota"),
  2664. label: "label",
  2665. "track-by": "id",
  2666. allowEmpty: false,
  2667. taggable: true
  2668. },
  2669. on: { tag: _vm.validateQuota, input: _vm.setDefaultQuota }
  2670. })
  2671. ],
  2672. 1
  2673. ),
  2674. _vm._v(" "),
  2675. _c("div", [
  2676. _c("input", {
  2677. directives: [
  2678. {
  2679. name: "model",
  2680. rawName: "v-model",
  2681. value: _vm.showLanguages,
  2682. expression: "showLanguages"
  2683. }
  2684. ],
  2685. staticClass: "checkbox",
  2686. attrs: { type: "checkbox", id: "showLanguages" },
  2687. domProps: {
  2688. checked: Array.isArray(_vm.showLanguages)
  2689. ? _vm._i(_vm.showLanguages, null) > -1
  2690. : _vm.showLanguages
  2691. },
  2692. on: {
  2693. change: function($event) {
  2694. var $$a = _vm.showLanguages,
  2695. $$el = $event.target,
  2696. $$c = $$el.checked ? true : false
  2697. if (Array.isArray($$a)) {
  2698. var $$v = null,
  2699. $$i = _vm._i($$a, $$v)
  2700. if ($$el.checked) {
  2701. $$i < 0 && (_vm.showLanguages = $$a.concat([$$v]))
  2702. } else {
  2703. $$i > -1 &&
  2704. (_vm.showLanguages = $$a
  2705. .slice(0, $$i)
  2706. .concat($$a.slice($$i + 1)))
  2707. }
  2708. } else {
  2709. _vm.showLanguages = $$c
  2710. }
  2711. }
  2712. }
  2713. }),
  2714. _vm._v(" "),
  2715. _c("label", { attrs: { for: "showLanguages" } }, [
  2716. _vm._v(_vm._s(_vm.t("settings", "Show Languages")))
  2717. ])
  2718. ]),
  2719. _vm._v(" "),
  2720. _c("div", [
  2721. _c("input", {
  2722. directives: [
  2723. {
  2724. name: "model",
  2725. rawName: "v-model",
  2726. value: _vm.showLastLogin,
  2727. expression: "showLastLogin"
  2728. }
  2729. ],
  2730. staticClass: "checkbox",
  2731. attrs: { type: "checkbox", id: "showLastLogin" },
  2732. domProps: {
  2733. checked: Array.isArray(_vm.showLastLogin)
  2734. ? _vm._i(_vm.showLastLogin, null) > -1
  2735. : _vm.showLastLogin
  2736. },
  2737. on: {
  2738. change: function($event) {
  2739. var $$a = _vm.showLastLogin,
  2740. $$el = $event.target,
  2741. $$c = $$el.checked ? true : false
  2742. if (Array.isArray($$a)) {
  2743. var $$v = null,
  2744. $$i = _vm._i($$a, $$v)
  2745. if ($$el.checked) {
  2746. $$i < 0 && (_vm.showLastLogin = $$a.concat([$$v]))
  2747. } else {
  2748. $$i > -1 &&
  2749. (_vm.showLastLogin = $$a
  2750. .slice(0, $$i)
  2751. .concat($$a.slice($$i + 1)))
  2752. }
  2753. } else {
  2754. _vm.showLastLogin = $$c
  2755. }
  2756. }
  2757. }
  2758. }),
  2759. _vm._v(" "),
  2760. _c("label", { attrs: { for: "showLastLogin" } }, [
  2761. _vm._v(_vm._s(_vm.t("settings", "Show last login")))
  2762. ])
  2763. ]),
  2764. _vm._v(" "),
  2765. _c("div", [
  2766. _c("input", {
  2767. directives: [
  2768. {
  2769. name: "model",
  2770. rawName: "v-model",
  2771. value: _vm.showUserBackend,
  2772. expression: "showUserBackend"
  2773. }
  2774. ],
  2775. staticClass: "checkbox",
  2776. attrs: { type: "checkbox", id: "showUserBackend" },
  2777. domProps: {
  2778. checked: Array.isArray(_vm.showUserBackend)
  2779. ? _vm._i(_vm.showUserBackend, null) > -1
  2780. : _vm.showUserBackend
  2781. },
  2782. on: {
  2783. change: function($event) {
  2784. var $$a = _vm.showUserBackend,
  2785. $$el = $event.target,
  2786. $$c = $$el.checked ? true : false
  2787. if (Array.isArray($$a)) {
  2788. var $$v = null,
  2789. $$i = _vm._i($$a, $$v)
  2790. if ($$el.checked) {
  2791. $$i < 0 && (_vm.showUserBackend = $$a.concat([$$v]))
  2792. } else {
  2793. $$i > -1 &&
  2794. (_vm.showUserBackend = $$a
  2795. .slice(0, $$i)
  2796. .concat($$a.slice($$i + 1)))
  2797. }
  2798. } else {
  2799. _vm.showUserBackend = $$c
  2800. }
  2801. }
  2802. }
  2803. }),
  2804. _vm._v(" "),
  2805. _c("label", { attrs: { for: "showUserBackend" } }, [
  2806. _vm._v(_vm._s(_vm.t("settings", "Show user backend")))
  2807. ])
  2808. ]),
  2809. _vm._v(" "),
  2810. _c("div", [
  2811. _c("input", {
  2812. directives: [
  2813. {
  2814. name: "model",
  2815. rawName: "v-model",
  2816. value: _vm.showStoragePath,
  2817. expression: "showStoragePath"
  2818. }
  2819. ],
  2820. staticClass: "checkbox",
  2821. attrs: { type: "checkbox", id: "showStoragePath" },
  2822. domProps: {
  2823. checked: Array.isArray(_vm.showStoragePath)
  2824. ? _vm._i(_vm.showStoragePath, null) > -1
  2825. : _vm.showStoragePath
  2826. },
  2827. on: {
  2828. change: function($event) {
  2829. var $$a = _vm.showStoragePath,
  2830. $$el = $event.target,
  2831. $$c = $$el.checked ? true : false
  2832. if (Array.isArray($$a)) {
  2833. var $$v = null,
  2834. $$i = _vm._i($$a, $$v)
  2835. if ($$el.checked) {
  2836. $$i < 0 && (_vm.showStoragePath = $$a.concat([$$v]))
  2837. } else {
  2838. $$i > -1 &&
  2839. (_vm.showStoragePath = $$a
  2840. .slice(0, $$i)
  2841. .concat($$a.slice($$i + 1)))
  2842. }
  2843. } else {
  2844. _vm.showStoragePath = $$c
  2845. }
  2846. }
  2847. }
  2848. }),
  2849. _vm._v(" "),
  2850. _c("label", { attrs: { for: "showStoragePath" } }, [
  2851. _vm._v(_vm._s(_vm.t("settings", "Show storage path")))
  2852. ])
  2853. ])
  2854. ])
  2855. ],
  2856. 2
  2857. ),
  2858. _vm._v(" "),
  2859. _c("user-list", {
  2860. attrs: {
  2861. users: _vm.users,
  2862. showConfig: _vm.showConfig,
  2863. selectedGroup: _vm.selectedGroup,
  2864. externalActions: _vm.externalActions
  2865. }
  2866. })
  2867. ],
  2868. 1
  2869. )
  2870. }
  2871. var staticRenderFns = []
  2872. render._withStripped = true
  2873. /***/ }),
  2874. /***/ "./src/components/popoverMenu.vue":
  2875. /*!****************************************!*\
  2876. !*** ./src/components/popoverMenu.vue ***!
  2877. \****************************************/
  2878. /*! exports provided: default */
  2879. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2880. "use strict";
  2881. __webpack_require__.r(__webpack_exports__);
  2882. /* harmony import */ var _popoverMenu_vue_vue_type_template_id_04ea21c4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./popoverMenu.vue?vue&type=template&id=04ea21c4& */ "./src/components/popoverMenu.vue?vue&type=template&id=04ea21c4&");
  2883. /* harmony import */ var _popoverMenu_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./popoverMenu.vue?vue&type=script&lang=js& */ "./src/components/popoverMenu.vue?vue&type=script&lang=js&");
  2884. /* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
  2885. /* normalize component */
  2886. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
  2887. _popoverMenu_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  2888. _popoverMenu_vue_vue_type_template_id_04ea21c4___WEBPACK_IMPORTED_MODULE_0__["render"],
  2889. _popoverMenu_vue_vue_type_template_id_04ea21c4___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
  2890. false,
  2891. null,
  2892. null,
  2893. null
  2894. )
  2895. /* hot reload */
  2896. if (false) { var api; }
  2897. component.options.__file = "src/components/popoverMenu.vue"
  2898. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  2899. /***/ }),
  2900. /***/ "./src/components/popoverMenu.vue?vue&type=script&lang=js&":
  2901. /*!*****************************************************************!*\
  2902. !*** ./src/components/popoverMenu.vue?vue&type=script&lang=js& ***!
  2903. \*****************************************************************/
  2904. /*! exports provided: default */
  2905. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2906. "use strict";
  2907. __webpack_require__.r(__webpack_exports__);
  2908. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_popoverMenu_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/babel-loader/lib!../../node_modules/vue-loader/lib??vue-loader-options!./popoverMenu.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/popoverMenu.vue?vue&type=script&lang=js&");
  2909. /* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_popoverMenu_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
  2910. /***/ }),
  2911. /***/ "./src/components/popoverMenu.vue?vue&type=template&id=04ea21c4&":
  2912. /*!***********************************************************************!*\
  2913. !*** ./src/components/popoverMenu.vue?vue&type=template&id=04ea21c4& ***!
  2914. \***********************************************************************/
  2915. /*! exports provided: render, staticRenderFns */
  2916. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2917. "use strict";
  2918. __webpack_require__.r(__webpack_exports__);
  2919. /* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_popoverMenu_vue_vue_type_template_id_04ea21c4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib??vue-loader-options!./popoverMenu.vue?vue&type=template&id=04ea21c4& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/popoverMenu.vue?vue&type=template&id=04ea21c4&");
  2920. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_popoverMenu_vue_vue_type_template_id_04ea21c4___WEBPACK_IMPORTED_MODULE_0__["render"]; });
  2921. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_popoverMenu_vue_vue_type_template_id_04ea21c4___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  2922. /***/ }),
  2923. /***/ "./src/components/popoverMenu/popoverItem.vue":
  2924. /*!****************************************************!*\
  2925. !*** ./src/components/popoverMenu/popoverItem.vue ***!
  2926. \****************************************************/
  2927. /*! exports provided: default */
  2928. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2929. "use strict";
  2930. __webpack_require__.r(__webpack_exports__);
  2931. /* harmony import */ var _popoverItem_vue_vue_type_template_id_4c6af9e6___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./popoverItem.vue?vue&type=template&id=4c6af9e6& */ "./src/components/popoverMenu/popoverItem.vue?vue&type=template&id=4c6af9e6&");
  2932. /* harmony import */ var _popoverItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./popoverItem.vue?vue&type=script&lang=js& */ "./src/components/popoverMenu/popoverItem.vue?vue&type=script&lang=js&");
  2933. /* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
  2934. /* normalize component */
  2935. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
  2936. _popoverItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  2937. _popoverItem_vue_vue_type_template_id_4c6af9e6___WEBPACK_IMPORTED_MODULE_0__["render"],
  2938. _popoverItem_vue_vue_type_template_id_4c6af9e6___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
  2939. false,
  2940. null,
  2941. null,
  2942. null
  2943. )
  2944. /* hot reload */
  2945. if (false) { var api; }
  2946. component.options.__file = "src/components/popoverMenu/popoverItem.vue"
  2947. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  2948. /***/ }),
  2949. /***/ "./src/components/popoverMenu/popoverItem.vue?vue&type=script&lang=js&":
  2950. /*!*****************************************************************************!*\
  2951. !*** ./src/components/popoverMenu/popoverItem.vue?vue&type=script&lang=js& ***!
  2952. \*****************************************************************************/
  2953. /*! exports provided: default */
  2954. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2955. "use strict";
  2956. __webpack_require__.r(__webpack_exports__);
  2957. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_popoverItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./popoverItem.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/popoverMenu/popoverItem.vue?vue&type=script&lang=js&");
  2958. /* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_popoverItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
  2959. /***/ }),
  2960. /***/ "./src/components/popoverMenu/popoverItem.vue?vue&type=template&id=4c6af9e6&":
  2961. /*!***********************************************************************************!*\
  2962. !*** ./src/components/popoverMenu/popoverItem.vue?vue&type=template&id=4c6af9e6& ***!
  2963. \***********************************************************************************/
  2964. /*! exports provided: render, staticRenderFns */
  2965. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2966. "use strict";
  2967. __webpack_require__.r(__webpack_exports__);
  2968. /* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_popoverItem_vue_vue_type_template_id_4c6af9e6___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./popoverItem.vue?vue&type=template&id=4c6af9e6& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/popoverMenu/popoverItem.vue?vue&type=template&id=4c6af9e6&");
  2969. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_popoverItem_vue_vue_type_template_id_4c6af9e6___WEBPACK_IMPORTED_MODULE_0__["render"]; });
  2970. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_popoverItem_vue_vue_type_template_id_4c6af9e6___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  2971. /***/ }),
  2972. /***/ "./src/components/userList.vue":
  2973. /*!*************************************!*\
  2974. !*** ./src/components/userList.vue ***!
  2975. \*************************************/
  2976. /*! exports provided: default */
  2977. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2978. "use strict";
  2979. __webpack_require__.r(__webpack_exports__);
  2980. /* harmony import */ var _userList_vue_vue_type_template_id_40745299___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./userList.vue?vue&type=template&id=40745299& */ "./src/components/userList.vue?vue&type=template&id=40745299&");
  2981. /* harmony import */ var _userList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./userList.vue?vue&type=script&lang=js& */ "./src/components/userList.vue?vue&type=script&lang=js&");
  2982. /* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
  2983. /* normalize component */
  2984. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
  2985. _userList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  2986. _userList_vue_vue_type_template_id_40745299___WEBPACK_IMPORTED_MODULE_0__["render"],
  2987. _userList_vue_vue_type_template_id_40745299___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
  2988. false,
  2989. null,
  2990. null,
  2991. null
  2992. )
  2993. /* hot reload */
  2994. if (false) { var api; }
  2995. component.options.__file = "src/components/userList.vue"
  2996. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  2997. /***/ }),
  2998. /***/ "./src/components/userList.vue?vue&type=script&lang=js&":
  2999. /*!**************************************************************!*\
  3000. !*** ./src/components/userList.vue?vue&type=script&lang=js& ***!
  3001. \**************************************************************/
  3002. /*! exports provided: default */
  3003. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3004. "use strict";
  3005. __webpack_require__.r(__webpack_exports__);
  3006. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_userList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/babel-loader/lib!../../node_modules/vue-loader/lib??vue-loader-options!./userList.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/userList.vue?vue&type=script&lang=js&");
  3007. /* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_userList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
  3008. /***/ }),
  3009. /***/ "./src/components/userList.vue?vue&type=template&id=40745299&":
  3010. /*!********************************************************************!*\
  3011. !*** ./src/components/userList.vue?vue&type=template&id=40745299& ***!
  3012. \********************************************************************/
  3013. /*! exports provided: render, staticRenderFns */
  3014. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3015. "use strict";
  3016. __webpack_require__.r(__webpack_exports__);
  3017. /* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_userList_vue_vue_type_template_id_40745299___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib??vue-loader-options!./userList.vue?vue&type=template&id=40745299& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/userList.vue?vue&type=template&id=40745299&");
  3018. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_userList_vue_vue_type_template_id_40745299___WEBPACK_IMPORTED_MODULE_0__["render"]; });
  3019. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_userList_vue_vue_type_template_id_40745299___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  3020. /***/ }),
  3021. /***/ "./src/components/userList/userRow.vue":
  3022. /*!*********************************************!*\
  3023. !*** ./src/components/userList/userRow.vue ***!
  3024. \*********************************************/
  3025. /*! exports provided: default */
  3026. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3027. "use strict";
  3028. __webpack_require__.r(__webpack_exports__);
  3029. /* harmony import */ var _userRow_vue_vue_type_template_id_d19586ce___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./userRow.vue?vue&type=template&id=d19586ce& */ "./src/components/userList/userRow.vue?vue&type=template&id=d19586ce&");
  3030. /* harmony import */ var _userRow_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./userRow.vue?vue&type=script&lang=js& */ "./src/components/userList/userRow.vue?vue&type=script&lang=js&");
  3031. /* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
  3032. /* normalize component */
  3033. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
  3034. _userRow_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  3035. _userRow_vue_vue_type_template_id_d19586ce___WEBPACK_IMPORTED_MODULE_0__["render"],
  3036. _userRow_vue_vue_type_template_id_d19586ce___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
  3037. false,
  3038. null,
  3039. null,
  3040. null
  3041. )
  3042. /* hot reload */
  3043. if (false) { var api; }
  3044. component.options.__file = "src/components/userList/userRow.vue"
  3045. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  3046. /***/ }),
  3047. /***/ "./src/components/userList/userRow.vue?vue&type=script&lang=js&":
  3048. /*!**********************************************************************!*\
  3049. !*** ./src/components/userList/userRow.vue?vue&type=script&lang=js& ***!
  3050. \**********************************************************************/
  3051. /*! exports provided: default */
  3052. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3053. "use strict";
  3054. __webpack_require__.r(__webpack_exports__);
  3055. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_userRow_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./userRow.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/components/userList/userRow.vue?vue&type=script&lang=js&");
  3056. /* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_userRow_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
  3057. /***/ }),
  3058. /***/ "./src/components/userList/userRow.vue?vue&type=template&id=d19586ce&":
  3059. /*!****************************************************************************!*\
  3060. !*** ./src/components/userList/userRow.vue?vue&type=template&id=d19586ce& ***!
  3061. \****************************************************************************/
  3062. /*! exports provided: render, staticRenderFns */
  3063. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3064. "use strict";
  3065. __webpack_require__.r(__webpack_exports__);
  3066. /* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_userRow_vue_vue_type_template_id_d19586ce___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./userRow.vue?vue&type=template&id=d19586ce& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/components/userList/userRow.vue?vue&type=template&id=d19586ce&");
  3067. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_userRow_vue_vue_type_template_id_d19586ce___WEBPACK_IMPORTED_MODULE_0__["render"]; });
  3068. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_userRow_vue_vue_type_template_id_d19586ce___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  3069. /***/ }),
  3070. /***/ "./src/views/Users.vue":
  3071. /*!*****************************!*\
  3072. !*** ./src/views/Users.vue ***!
  3073. \*****************************/
  3074. /*! exports provided: default */
  3075. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3076. "use strict";
  3077. __webpack_require__.r(__webpack_exports__);
  3078. /* harmony import */ var _Users_vue_vue_type_template_id_68be103e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Users.vue?vue&type=template&id=68be103e& */ "./src/views/Users.vue?vue&type=template&id=68be103e&");
  3079. /* harmony import */ var _Users_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Users.vue?vue&type=script&lang=js& */ "./src/views/Users.vue?vue&type=script&lang=js&");
  3080. /* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
  3081. /* normalize component */
  3082. var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
  3083. _Users_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
  3084. _Users_vue_vue_type_template_id_68be103e___WEBPACK_IMPORTED_MODULE_0__["render"],
  3085. _Users_vue_vue_type_template_id_68be103e___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
  3086. false,
  3087. null,
  3088. null,
  3089. null
  3090. )
  3091. /* hot reload */
  3092. if (false) { var api; }
  3093. component.options.__file = "src/views/Users.vue"
  3094. /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  3095. /***/ }),
  3096. /***/ "./src/views/Users.vue?vue&type=script&lang=js&":
  3097. /*!******************************************************!*\
  3098. !*** ./src/views/Users.vue?vue&type=script&lang=js& ***!
  3099. \******************************************************/
  3100. /*! exports provided: default */
  3101. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3102. "use strict";
  3103. __webpack_require__.r(__webpack_exports__);
  3104. /* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Users_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/babel-loader/lib!../../node_modules/vue-loader/lib??vue-loader-options!./Users.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./src/views/Users.vue?vue&type=script&lang=js&");
  3105. /* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Users_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]);
  3106. /***/ }),
  3107. /***/ "./src/views/Users.vue?vue&type=template&id=68be103e&":
  3108. /*!************************************************************!*\
  3109. !*** ./src/views/Users.vue?vue&type=template&id=68be103e& ***!
  3110. \************************************************************/
  3111. /*! exports provided: render, staticRenderFns */
  3112. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3113. "use strict";
  3114. __webpack_require__.r(__webpack_exports__);
  3115. /* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Users_vue_vue_type_template_id_68be103e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib??vue-loader-options!./Users.vue?vue&type=template&id=68be103e& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./src/views/Users.vue?vue&type=template&id=68be103e&");
  3116. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Users_vue_vue_type_template_id_68be103e___WEBPACK_IMPORTED_MODULE_0__["render"]; });
  3117. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Users_vue_vue_type_template_id_68be103e___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  3118. /***/ })
  3119. }]);
  3120. //# sourceMappingURL=2.js.map