diff --git a/apps/provisioning_api/lib/Controller/UsersController.php b/apps/provisioning_api/lib/Controller/UsersController.php
index 7f23926926..ee939f587b 100644
--- a/apps/provisioning_api/lib/Controller/UsersController.php
+++ b/apps/provisioning_api/lib/Controller/UsersController.php
@@ -335,7 +335,7 @@ class UsersController extends AUserData {
}
// Send new user mail only if a mail is set
- if ($email !== '') {
+ if ($email !== '' && $this->config->getAppValue('core', 'newUser.sendEmail', 'yes') === 'yes') {
$newUser->setEMailAddress($email);
try {
$emailTemplate = $this->newUserMailHelper->generateTemplate($newUser, $generatePasswordResetToken);
diff --git a/apps/settings/appinfo/routes.php b/apps/settings/appinfo/routes.php
index 45f0cc2571..89b6c86993 100644
--- a/apps/settings/appinfo/routes.php
+++ b/apps/settings/appinfo/routes.php
@@ -70,6 +70,7 @@ $application->registerRoutes($this, [
['name' => 'Users#getVerificationCode', 'url' => '/settings/users/{account}/verify', 'verb' => 'GET'],
['name' => 'Users#usersList', 'url' => '/settings/users', 'verb' => 'GET'],
['name' => 'Users#usersListByGroup', 'url' => '/settings/users/{group}', 'verb' => 'GET', 'requirements' => ['group' => '.+']],
+ ['name' => 'Users#setPreference', 'url' => '/settings/users/preferences/{key}', 'verb' => 'POST'],
['name' => 'LogSettings#setLogLevel', 'url' => '/settings/admin/log/level', 'verb' => 'POST'],
['name' => 'LogSettings#getEntries', 'url' => '/settings/admin/log/entries', 'verb' => 'GET'],
['name' => 'LogSettings#download', 'url' => '/settings/admin/log/download', 'verb' => 'GET'],
diff --git a/apps/settings/js/vue-0.js b/apps/settings/js/vue-0.js
index 6c6d69b577..8b9bebc4c5 100644
--- a/apps/settings/js/vue-0.js
+++ b/apps/settings/js/vue-0.js
@@ -1,4 +1,4 @@
-(window.webpackJsonpSettings=window.webpackJsonpSettings||[]).push([[0],[function(t,e,n){var i=n(2),a=n(137),o=n(12),r=n(140),s=n(141),c=n(179),l=a("wks"),A=i.Symbol,u=c?A:A&&A.withoutSetter||r;t.exports=function(t){return o(l,t)||(s&&o(A,t)?l[t]=A[t]:l[t]=u("Symbol."+t)),l[t]}},function(t,e,n){var i=n(2),a=n(32).f,o=n(24),r=n(20),s=n(138),c=n(180),l=n(88);t.exports=function(t,e){var n,A,u,d,f,p=t.target,h=t.global,v=t.stat;if(n=h?i:v?i[p]||s(p,{}):(i[p]||{}).prototype)for(A in e){if(d=e[A],u=t.noTargetGet?(f=a(n,A))&&f.value:n[A],!l(h?A:p+(v?".":"#")+A,t.forced)&&void 0!==u){if(typeof d==typeof u)continue;c(d,u)}(t.sham||u&&u.sham)&&o(d,"sham",!0),r(n,A,d,t)}}},function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||Function("return this")()}).call(this,n(13))},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},,,,,function(t,e,n){var i=n(3);t.exports=!i((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(t,e,n){var i=n(15);t.exports=function(t){if(!i(t))throw TypeError(String(t)+" is not an object");return t}},,,function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},,,function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},,,function(t,e,n){var i=n(8),a=n(178),o=n(9),r=n(55),s=Object.defineProperty;e.f=i?s:function(t,e,n){if(o(t),e=r(e,!0),o(n),a)try{return s(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},,function(t,e,n){var i=n(2),a=n(24),o=n(12),r=n(138),s=n(142),c=n(31),l=c.get,A=c.enforce,u=String(String).split("String");(t.exports=function(t,e,n,s){var c=!!s&&!!s.unsafe,l=!!s&&!!s.enumerable,d=!!s&&!!s.noTargetGet;"function"==typeof n&&("string"!=typeof e||o(n,"name")||a(n,"name",e),A(n).source=u.join("string"==typeof e?e:"")),t!==i?(c?!d&&t[e]&&(l=!0):delete t[e],l?t[e]=n:a(t,e,n)):l?t[e]=n:r(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&l(this).source||s(this)}))},function(t,e,n){var i=n(87),a=n(33);t.exports=function(t){return i(a(t))}},,,function(t,e,n){var i=n(8),a=n(18),o=n(49);t.exports=i?function(t,e,n){return a.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var i=n(57),a=Math.min;t.exports=function(t){return t>0?a(i(t),9007199254740991):0}},function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||Function("return this")()}).call(this,n(13))},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e,n){var i=n(33);t.exports=function(t){return Object(i(t))}},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},,function(t,e,n){var i,a,o,r=n(355),s=n(2),c=n(15),l=n(24),A=n(12),u=n(84),d=n(85),f=s.WeakMap;if(r){var p=new f,h=p.get,v=p.has,g=p.set;i=function(t,e){return g.call(p,t,e),e},a=function(t){return h.call(p,t)||{}},o=function(t){return v.call(p,t)}}else{var b=u("state");d[b]=!0,i=function(t,e){return l(t,b,e),e},a=function(t){return A(t,b)?t[b]:{}},o=function(t){return A(t,b)}}t.exports={set:i,get:a,has:o,enforce:function(t){return o(t)?a(t):i(t,{})},getterFor:function(t){return function(e){var n;if(!c(e)||(n=a(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}}},function(t,e,n){var i=n(8),a=n(86),o=n(49),r=n(21),s=n(55),c=n(12),l=n(178),A=Object.getOwnPropertyDescriptor;e.f=i?A:function(t,e){if(t=r(t),e=s(e,!0),l)try{return A(t,e)}catch(t){}if(c(t,e))return o(!a.f.call(t,e),t[e])}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){var i=n(8),a=n(3),o=n(12),r=Object.defineProperty,s={},c=function(t){throw t};t.exports=function(t,e){if(o(s,t))return s[t];e||(e={});var n=[][t],l=!!o(e,"ACCESSORS")&&e.ACCESSORS,A=o(e,0)?e[0]:c,u=o(e,1)?e[1]:void 0;return s[t]=!!n&&!a((function(){if(l&&!i)return!0;var t={length:-1};l?r(t,1,{enumerable:!0,get:c}):t[1]=1,n.call(t,A,u)}))}},,,,function(t,e){t.exports=!1},function(t,e,n){var i=n(182),a=n(2),o=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?o(i[t])||o(a[t]):i[t]&&i[t][e]||a[t]&&a[t][e]}},,,,,,,,,,function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var i=n(18).f,a=n(12),o=n(0)("toStringTag");t.exports=function(t,e,n){t&&!a(t=n?t:t.prototype,o)&&i(t,o,{configurable:!0,value:e})}},function(t,e,n){var i=n(61),a=n(87),o=n(28),r=n(25),s=n(155),c=[].push,l=function(t){var e=1==t,n=2==t,l=3==t,A=4==t,u=6==t,d=5==t||u;return function(f,p,h,v){for(var g,b,m=o(f),x=a(m),y=i(p,h,3),w=r(x.length),_=0,C=v||s,M=e?C(f,w):n?C(f,0):void 0;w>_;_++)if((d||_ in x)&&(b=y(g=x[_],_,m),t))if(e)M[_]=b;else if(b)switch(t){case 3:return!0;case 5:return g;case 6:return _;case 2:c.call(M,g)}else if(A)return!1;return u?-1:l||A?A:M}};t.exports={forEach:l(0),map:l(1),filter:l(2),some:l(3),every:l(4),find:l(5),findIndex:l(6)}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},,,function(t,e,n){var i=n(15);t.exports=function(t,e){if(!i(t))return t;var n,a;if(e&&"function"==typeof(n=t.toString)&&!i(a=n.call(t)))return a;if("function"==typeof(n=t.valueOf)&&!i(a=n.call(t)))return a;if(!e&&"function"==typeof(n=t.toString)&&!i(a=n.call(t)))return a;throw TypeError("Can't convert object to primitive value")}},function(t,e,n){var i=n(183),a=n(145).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return i(t,a)}},function(t,e){var n=Math.ceil,i=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?i:n)(t)}},function(t,e,n){var i,a=n(9),o=n(186),r=n(145),s=n(85),c=n(187),l=n(139),A=n(84),u=A("IE_PROTO"),d=function(){},f=function(t){return"\n\n\n","import { render, staticRenderFns } from \"./UserRowSimple.vue?vue&type=template&id=4e4f161e&scoped=true&\"\nimport script from \"./UserRowSimple.vue?vue&type=script&lang=js&\"\nexport * from \"./UserRowSimple.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserRowSimple.vue?vue&type=style&index=0&id=4e4f161e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4e4f161e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\",class:{'disabled': _vm.loading.delete || _vm.loading.disable},attrs:{\"data-id\":_vm.user.id}},[_c('div',{staticClass:\"avatar\",class:{'icon-loading-small': _vm.loading.delete || _vm.loading.disable || _vm.loading.wipe}},[(!_vm.loading.delete && !_vm.loading.disable && !_vm.loading.wipe)?_c('img',{attrs:{\"alt\":\"\",\"width\":\"32\",\"height\":\"32\",\"src\":_vm.generateAvatar(_vm.user.id, 32),\"srcset\":_vm.generateAvatar(_vm.user.id, 64)+' 2x, '+_vm.generateAvatar(_vm.user.id, 128)+' 4x'}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"name\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.user.id)+\"\\n\\t\\t\"),_c('div',{staticClass:\"displayName subtitle\"},[_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.user.displayname.length > 20 ? _vm.user.displayname : ''),expression:\"user.displayname.length > 20 ? user.displayname : ''\"}],staticClass:\"cellText\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.user.displayname)+\"\\n\\t\\t\\t\")])])]),_vm._v(\" \"),_c('div'),_vm._v(\" \"),_c('div',{staticClass:\"mailAddress\"},[_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.user.email !== null && _vm.user.email.length > 20 ? _vm.user.email : ''),expression:\"user.email !== null && user.email.length > 20 ? user.email : ''\"}],staticClass:\"cellText\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.email)+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('div',{staticClass:\"groups\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.userGroupsLabels)+\"\\n\\t\")]),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin)?_c('div',{staticClass:\"subAdminsGroups\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.userSubAdminsGroupsLabels)+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.usedSpace),expression:\"usedSpace\",modifiers:{\"auto\":true}}],staticClass:\"quota\"},[_c('progress',{staticClass:\"quota-user-progress\",class:{'warn': _vm.usedQuota > 80},attrs:{\"max\":\"100\"},domProps:{\"value\":_vm.usedQuota}})]),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('div',{staticClass:\"languages\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.userLanguage.name)+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('div',{staticClass:\"userBackend\"},[(_vm.showConfig.showUserBackend)?_c('div',{staticClass:\"userBackend\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.backend)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.user.storageLocation),expression:\"user.storageLocation\"}],staticClass:\"storageLocation subtitle\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.storageLocation)+\"\\n\\t\\t\")]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.userLastLoginTooltip),expression:\"userLastLoginTooltip\",modifiers:{\"auto\":true}}],staticClass:\"lastLogin\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.userLastLogin)+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"userActions\"},[(_vm.canEdit && !_vm.loading.all)?_c('div',{staticClass:\"toggleUserActions\"},[_c('Actions',[_c('ActionButton',{attrs:{\"icon\":\"icon-rename\"},on:{\"click\":_vm.toggleEdit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Edit User'))+\"\\n\\t\\t\\t\\t\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"userPopoverMenuWrapper\"},[_c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.hideMenu),expression:\"hideMenu\"}],staticClass:\"icon-more\",on:{\"click\":function($event){return _vm.$emit('toggleMenu')}}}),_vm._v(\" \"),_c('div',{staticClass:\"popovermenu\",class:{ 'open': _vm.openedMenu }},[_c('PopoverMenu',{attrs:{\"menu\":_vm.userActions}})],1)])],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"feedback\",style:({opacity: _vm.feedbackMessage !== '' ? 1 : 0})},[_c('div',{staticClass:\"icon-checkmark\"}),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.feedbackMessage)+\"\\n\\t\\t\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\t\n\t {{ t('settings', 'Default quota:') }} {{ t('settings', 'Default quota:') }}{{ t('settings', 'No users in here') }}
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t{{ t('settings', 'No users in here') }}
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t
'+(A?t:l(t,!0))+"
\n":""+(A?t:l(t,!0))+"
"},a.prototype.blockquote=function(t){return"\n"+t+"\n"},a.prototype.html=function(t){return t},a.prototype.heading=function(t,e,A,n){return this.options.headerIds?"
"+t+"
\n"},a.prototype.table=function(t,e){return e&&(e=""+e+""),""+t+"
"},a.prototype.br=function(){return this.options.xhtml?""+l(t.message+"",!0)+"";throw t}}h.exec=h,w.options=w.setOptions=function(t){return b(w.defaults,t),w},w.getDefaults=function(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:new a,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,xhtml:!1}},w.defaults=w.getDefaults(),w.Parser=s,w.parser=s.parse,w.Renderer=a,w.TextRenderer=o,w.Lexer=n,w.lexer=n.lex,w.InlineLexer=r,w.inlineLexer=r.output,w.Slugger=c,w.parse=w,t.exports=w}(this||"undefined"!=typeof window&&window)}).call(this,A(13))},599:function(t,e,A){t.exports=function(){"use strict";var t=Object.hasOwnProperty,e=Object.setPrototypeOf,A=Object.isFrozen,n=Object.keys,i=Object.freeze,r=Object.seal,a="undefined"!=typeof Reflect&&Reflect,o=a.apply,s=a.construct;o||(o=function(t,e,A){return t.apply(e,A)}),i||(i=function(t){return t}),r||(r=function(t){return t}),s||(s=function(t,e){return new(Function.prototype.bind.apply(t,[null].concat(function(t){if(Array.isArray(t)){for(var e=0,A=Array(t.length);e