diff --git a/lib/private/User/Manager.php b/lib/private/User/Manager.php index 3d016700ee..cb726b55ea 100644 --- a/lib/private/User/Manager.php +++ b/lib/private/User/Manager.php @@ -282,9 +282,9 @@ class Manager extends PublicEmitter implements IUserManager { throw new \Exception($l->t('Username contains whitespace at the beginning or at the end')); } // No empty password - if (trim($password) == '') { - throw new \Exception($l->t('A valid password must be provided')); - } +// if (trim($password) == '') { +// throw new \Exception($l->t('A valid password must be provided')); +// } // Check if user already exists if ($this->userExists($uid)) { diff --git a/settings/Controller/UsersController.php b/settings/Controller/UsersController.php index f9be5468d3..b81b0f3ee9 100644 --- a/settings/Controller/UsersController.php +++ b/settings/Controller/UsersController.php @@ -51,7 +51,7 @@ use OCP\Mail\IMailer; use OCP\IAvatarManager; use OCP\Security\ICrypto; use OCP\Security\ISecureRandom; -use OC\AppFramework\Utility\TimeFactory; +use OCP\AppFramework\Utility\ITimeFactory; /** * @package OC\Settings\Controller @@ -89,7 +89,7 @@ class UsersController extends Controller { private $accountManager; /** @var ISecureRandom */ private $secureRandom; - /** @var TimeFactory */ + /** @var ITimeFactory */ private $timeFactory; /** @var ICrypto */ private $crypto; @@ -113,7 +113,7 @@ class UsersController extends Controller { * @param IAvatarManager $avatarManager * @param AccountManager $accountManager * @param ISecureRandom $secureRandom - * @param TimeFactory $timeFactory + * @param ITimeFactory $timeFactory * @param ICrypto $crypto */ public function __construct($appName, @@ -133,7 +133,7 @@ class UsersController extends Controller { IAvatarManager $avatarManager, AccountManager $accountManager, ISecureRandom $secureRandom, - TimeFactory $timeFactory, + ITimeFactory $timeFactory, ICrypto $crypto) { parent::__construct($appName, $request); $this->userManager = $userManager; @@ -411,19 +411,22 @@ class UsersController extends Controller { if($email !== '') { $user->setEMailAddress($email); - $token = $this->secureRandom->generate( - 21, - ISecureRandom::CHAR_DIGITS. - ISecureRandom::CHAR_LOWER. - ISecureRandom::CHAR_UPPER - ); - $tokenValue = $this->timeFactory->getTime() .':'. $token; - $mailAddress = !is_null($user->getEMailAddress()) ? $user->getEMailAddress() : ''; - $encryptedValue = $this->crypto->encrypt($tokenValue, $mailAddress.$this->config->getSystemValue('secret')); - $this->config->setUserValue($username, 'core', 'lostpassword', $encryptedValue); - - $link = $this->urlGenerator->linkToRouteAbsolute('core.lost.resetform', array('userId' => $username, 'token' => $token)); + if ($this->config->getAppValue('core', 'umgmt_send_passwordlink', 'false') === 'true') { + $token = $this->secureRandom->generate( + 21, + ISecureRandom::CHAR_DIGITS . + ISecureRandom::CHAR_LOWER . + ISecureRandom::CHAR_UPPER + ); + $tokenValue = $this->timeFactory->getTime() . ':' . $token; + $mailAddress = !is_null($user->getEMailAddress()) ? $user->getEMailAddress() : ''; + $encryptedValue = $this->crypto->encrypt($tokenValue, $mailAddress . $this->config->getSystemValue('secret')); + $this->config->setUserValue($username, 'core', 'lostpassword', $encryptedValue); + $link = $this->urlGenerator->linkToRouteAbsolute('core.lost.resetform', array('userId' => $username, 'token' => $token)); + } else { + $link = $this->urlGenerator->getAbsoluteURL('/'); + } // data for the mail template $mailData = array( diff --git a/settings/js/users/users.js b/settings/js/users/users.js index 3cf7b5e810..55939c289c 100644 --- a/settings/js/users/users.js +++ b/settings/js/users/users.js @@ -918,7 +918,7 @@ $(document).ready(function () { })); return false; } - if ($.trim(password) === '') { + if ($.trim(password) === '' && !$('#CheckboxMailPasswordOnUserCreate').is(':checked')) { OC.Notification.showTemporary(t('settings', 'Error creating user: {message}', { message: t('settings', 'A valid password must be provided') })); @@ -1044,15 +1044,37 @@ $(document).ready(function () { if ($('#CheckboxMailOnUserCreate').is(':checked')) { $("#newemail").show(); + $("#MailPasswordOnUserCreateSetting").show(); } + + if ($('#CheckboxMailPasswordOnUserCreate').is(':checked')) { + $("#newuserpassword").hide(); + } else { + $("#newuserpassword").show(); + } + // Option to display/hide the "E-Mail" input field $('#CheckboxMailOnUserCreate').click(function() { if ($('#CheckboxMailOnUserCreate').is(':checked')) { $("#newemail").show(); + $("#MailPasswordOnUserCreateSetting").show(); OCP.AppConfig.setValue('core', 'umgmt_send_email', 'true'); } else { $("#newemail").hide(); + $("#MailPasswordOnUserCreateSetting").hide(); OCP.AppConfig.setValue('core', 'umgmt_send_email', 'false'); + OCP.AppConfig.setValue('core', 'umgmt_send_passwordlink', 'false'); + $('#CheckboxMailPasswordOnUserCreate').removeAttr('checked'); + } + }); + + $('#CheckboxMailPasswordOnUserCreate').click(function() { + if ($('#CheckboxMailPasswordOnUserCreate').is(':checked')) { + OCP.AppConfig.setValue('core', 'umgmt_send_passwordlink', 'true'); + $("#newuserpassword").hide(); + } else { + OCP.AppConfig.setValue('core', 'umgmt_send_passwordlink', 'false'); + $("#newuserpassword").show(); } }); diff --git a/settings/templates/users/main.php b/settings/templates/users/main.php index b363a4c4da..59575a84e7 100644 --- a/settings/templates/users/main.php +++ b/settings/templates/users/main.php @@ -72,6 +72,13 @@ translation('settings'); t('Send email to new user')) ?>

+

+ /> + +

/> diff --git a/settings/users.php b/settings/users.php index 1b0f4f7b8e..2532acdbb1 100644 --- a/settings/users.php +++ b/settings/users.php @@ -124,5 +124,6 @@ $tmpl->assign('show_last_login', $config->getAppValue('core', 'umgmt_show_last_l $tmpl->assign('show_email', $config->getAppValue('core', 'umgmt_show_email', 'false')); $tmpl->assign('show_backend', $config->getAppValue('core', 'umgmt_show_backend', 'false')); $tmpl->assign('send_email', $config->getAppValue('core', 'umgmt_send_email', 'false')); +$tmpl->assign('send_passwordlink', $config->getAppValue('core', 'umgmt_send_passwordlink', 'false')); $tmpl->printPage();