diff options
author | tobiasKaminsky <tobias@kaminsky.me> | 2016-11-23 21:30:15 +0100 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2017-02-15 17:45:20 -0600 |
commit | a37f29964f86be5ec51fe33d32e290d3701828b2 (patch) | |
tree | 2f11e4aa27c04a0f7f767d105bb081d90dce8276 | |
parent | 3c7755fc662b0fcedad261e2e12755faedb1c567 (diff) | |
download | nextcloud-server-a37f29964f86be5ec51fe33d32e290d3701828b2.tar.gz nextcloud-server-a37f29964f86be5ec51fe33d32e290d3701828b2.zip |
add setting for "send password link"
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
-rw-r--r-- | lib/private/User/Manager.php | 6 | ||||
-rw-r--r-- | settings/Controller/UsersController.php | 37 | ||||
-rw-r--r-- | settings/js/users/users.js | 24 | ||||
-rw-r--r-- | settings/templates/users/main.php | 7 | ||||
-rw-r--r-- | settings/users.php | 1 |
5 files changed, 54 insertions, 21 deletions
diff --git a/lib/private/User/Manager.php b/lib/private/User/Manager.php index 3d016700ee3..cb726b55eac 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 f9be5468d35..b81b0f3ee91 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 3cf7b5e810a..55939c289c0 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 b363a4c4da8..59575a84e7e 100644 --- a/settings/templates/users/main.php +++ b/settings/templates/users/main.php @@ -72,6 +72,13 @@ translation('settings'); <?php p($l->t('Send email to new user')) ?> </label> </p> + <p style="padding-left: 20px" id="MailPasswordOnUserCreateSetting"> + <input type="checkbox" name="MailPasswordOnUserCreate" value="MailPasswordOnUserCreate" id="CheckboxMailPasswordOnUserCreate" + class="checkbox" <?php if ($_['send_passwordlink'] === 'true') print_unescaped('checked="checked"'); ?> /> + <label for="CheckboxMailPasswordOnUserCreate"> + <?php p($l->t('Send password link')) ?> + </label> + </p> <p> <input type="checkbox" name="EmailAddress" value="EmailAddress" id="CheckboxEmailAddress" class="checkbox" <?php if ($_['show_email'] === 'true') print_unescaped('checked="checked"'); ?> /> diff --git a/settings/users.php b/settings/users.php index 1b0f4f7b8e8..2532acdbb18 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(); |