aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortobiasKaminsky <tobias@kaminsky.me>2016-11-23 21:30:15 +0100
committerMorris Jobke <hey@morrisjobke.de>2017-02-15 17:45:20 -0600
commita37f29964f86be5ec51fe33d32e290d3701828b2 (patch)
tree2f11e4aa27c04a0f7f767d105bb081d90dce8276
parent3c7755fc662b0fcedad261e2e12755faedb1c567 (diff)
downloadnextcloud-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.php6
-rw-r--r--settings/Controller/UsersController.php37
-rw-r--r--settings/js/users/users.js24
-rw-r--r--settings/templates/users/main.php7
-rw-r--r--settings/users.php1
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();