|
|
@ -39,6 +39,7 @@ use \OCP\IURLGenerator; |
|
|
use \OCP\IRequest; |
|
|
use \OCP\IRequest; |
|
|
use \OCP\IL10N; |
|
|
use \OCP\IL10N; |
|
|
use \OCP\IConfig; |
|
|
use \OCP\IConfig; |
|
|
|
|
|
use OCP\IUser; |
|
|
use OCP\IUserManager; |
|
|
use OCP\IUserManager; |
|
|
use OCP\Mail\IMailer; |
|
|
use OCP\Mail\IMailer; |
|
|
use OCP\Security\ICrypto; |
|
|
use OCP\Security\ICrypto; |
|
|
@ -253,16 +254,12 @@ class LostController extends Controller { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* @param string $user |
|
|
|
|
|
|
|
|
* @param string $input |
|
|
* @throws \Exception |
|
|
* @throws \Exception |
|
|
*/ |
|
|
*/ |
|
|
protected function sendEmail($user) { |
|
|
|
|
|
if (!$this->userManager->userExists($user)) { |
|
|
|
|
|
throw new \Exception($this->l10n->t('Couldn\'t send reset email. Please make sure your username is correct.')); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$userObject = $this->userManager->get($user); |
|
|
|
|
|
$email = $userObject->getEMailAddress(); |
|
|
|
|
|
|
|
|
protected function sendEmail($input) { |
|
|
|
|
|
$user = $this->findUserByIdOrMail($input); |
|
|
|
|
|
$email = $user->getEMailAddress(); |
|
|
|
|
|
|
|
|
if (empty($email)) { |
|
|
if (empty($email)) { |
|
|
throw new \Exception( |
|
|
throw new \Exception( |
|
|
@ -281,11 +278,10 @@ class LostController extends Controller { |
|
|
ISecureRandom::CHAR_UPPER |
|
|
ISecureRandom::CHAR_UPPER |
|
|
); |
|
|
); |
|
|
$tokenValue = $this->timeFactory->getTime() .':'. $token; |
|
|
$tokenValue = $this->timeFactory->getTime() .':'. $token; |
|
|
$mailAddress = !is_null($userObject->getEMailAddress()) ? $userObject->getEMailAddress() : ''; |
|
|
|
|
|
$encryptedValue = $this->crypto->encrypt($tokenValue, $mailAddress.$this->config->getSystemValue('secret')); |
|
|
|
|
|
$this->config->setUserValue($user, 'core', 'lostpassword', $encryptedValue); |
|
|
|
|
|
|
|
|
$encryptedValue = $this->crypto->encrypt($tokenValue, $email . $this->config->getSystemValue('secret')); |
|
|
|
|
|
$this->config->setUserValue($user->getUID(), 'core', 'lostpassword', $encryptedValue); |
|
|
|
|
|
|
|
|
$link = $this->urlGenerator->linkToRouteAbsolute('core.lost.resetform', array('userId' => $user, 'token' => $token)); |
|
|
|
|
|
|
|
|
$link = $this->urlGenerator->linkToRouteAbsolute('core.lost.resetform', array('userId' => $user->getUID(), 'token' => $token)); |
|
|
|
|
|
|
|
|
$tmpl = new \OC_Template('core', 'lostpassword/email'); |
|
|
$tmpl = new \OC_Template('core', 'lostpassword/email'); |
|
|
$tmpl->assign('link', $link); |
|
|
$tmpl->assign('link', $link); |
|
|
@ -293,7 +289,7 @@ class LostController extends Controller { |
|
|
|
|
|
|
|
|
try { |
|
|
try { |
|
|
$message = $this->mailer->createMessage(); |
|
|
$message = $this->mailer->createMessage(); |
|
|
$message->setTo([$email => $user]); |
|
|
|
|
|
|
|
|
$message->setTo([$email => $user->getUID()]); |
|
|
$message->setSubject($this->l10n->t('%s password reset', [$this->defaults->getName()])); |
|
|
$message->setSubject($this->l10n->t('%s password reset', [$this->defaults->getName()])); |
|
|
$message->setPlainBody($msg); |
|
|
$message->setPlainBody($msg); |
|
|
$message->setFrom([$this->from => $this->defaults->getName()]); |
|
|
$message->setFrom([$this->from => $this->defaults->getName()]); |
|
|
@ -305,4 +301,21 @@ class LostController extends Controller { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @param string $input |
|
|
|
|
|
* @return IUser |
|
|
|
|
|
* @throws \Exception |
|
|
|
|
|
*/ |
|
|
|
|
|
protected function findUserByIdOrMail($input) { |
|
|
|
|
|
$user = $this->userManager->get($input); |
|
|
|
|
|
if ($user instanceof IUser) { |
|
|
|
|
|
return $user; |
|
|
|
|
|
} |
|
|
|
|
|
$users = $this->userManager->getByEmail($input); |
|
|
|
|
|
if (count($users) === 1) { |
|
|
|
|
|
return $users[0]; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
throw new \InvalidArgumentException($this->l10n->t('Couldn\'t send reset email. Please make sure your username is correct.')); |
|
|
|
|
|
} |
|
|
} |
|
|
} |