]> source.dussan.org Git - nextcloud-server.git/commitdiff
add setting for "send password link"
authortobiasKaminsky <tobias@kaminsky.me>
Wed, 23 Nov 2016 20:30:15 +0000 (21:30 +0100)
committerMorris Jobke <hey@morrisjobke.de>
Wed, 15 Feb 2017 23:45:20 +0000 (17:45 -0600)
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
lib/private/User/Manager.php
settings/Controller/UsersController.php
settings/js/users/users.js
settings/templates/users/main.php
settings/users.php

index 3d016700ee333968997cb80e97dbd6d5f379d153..cb726b55eac636d68ee1100bbf5f518cca3b3524 100644 (file)
@@ -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)) {
index f9be5468d355b5bfaf2330c523ca709a83d90b88..b81b0f3ee914bbb7a205fdbca69c52812c04497c 100644 (file)
@@ -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(
index 3cf7b5e810a183a2ed3ceb87440b1b211d0d8576..55939c289c0460c42792613610e3731d394efd8e 100644 (file)
@@ -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();
                }
        });
 
index b363a4c4da8228a1dc8f6b0fe77af909ce544fc9..59575a84e7e51c487f85f41ef8cc16e63a8ce3d2 100644 (file)
@@ -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"'); ?> />
index 1b0f4f7b8e83751ff722bb4ff9947148cf1f6205..2532acdbb18f9753abb96e6277f417ffba1738c6 100644 (file)
@@ -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();