From bb066cecfd1ff7f214b4b7ba7871cffd39c923e8 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Fri, 10 Apr 2020 18:05:43 +0200 Subject: [PATCH] Fix password reset saying Admin changed my password when reset from login page Signed-off-by: Thomas Citharel --- settings/Activity/Provider.php | 5 ++++- settings/Hooks.php | 13 +++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/settings/Activity/Provider.php b/settings/Activity/Provider.php index 3b62950ecba..c3c6253d9ca 100644 --- a/settings/Activity/Provider.php +++ b/settings/Activity/Provider.php @@ -38,6 +38,7 @@ class Provider implements IProvider { public const PASSWORD_CHANGED_BY = 'password_changed_by'; public const PASSWORD_CHANGED_SELF = 'password_changed_self'; public const PASSWORD_RESET = 'password_changed'; + public const PASSWORD_RESET_SELF = 'password_reset_self'; public const EMAIL_CHANGED_BY = 'email_changed_by'; public const EMAIL_CHANGED_SELF = 'email_changed_self'; public const EMAIL_CHANGED = 'email_changed'; @@ -102,7 +103,8 @@ class Provider implements IProvider { $subject = $this->l->t('You changed your password'); } else if ($event->getSubject() === self::PASSWORD_RESET) { $subject = $this->l->t('Your password was reset by an administrator'); - + } else if ($event->getSubject() === self::PASSWORD_RESET_SELF) { + $subject = $this->l->t('Your password was reset'); } else if ($event->getSubject() === self::EMAIL_CHANGED_BY) { $subject = $this->l->t('{actor} changed your email address'); } else if ($event->getSubject() === self::EMAIL_CHANGED_SELF) { @@ -143,6 +145,7 @@ class Provider implements IProvider { switch ($subject) { case self::PASSWORD_CHANGED_SELF: case self::PASSWORD_RESET: + case self::PASSWORD_RESET_SELF: case self::EMAIL_CHANGED_SELF: case self::EMAIL_CHANGED: return []; diff --git a/settings/Hooks.php b/settings/Hooks.php index 49189ca082e..4a057479b30 100644 --- a/settings/Hooks.php +++ b/settings/Hooks.php @@ -104,6 +104,7 @@ class Hooks { $actor = $this->userSession->getUser(); if ($actor instanceof IUser) { if ($actor->getUID() !== $user->getUID()) { + // Admin changed the password through the user panel $this->l = $this->languageFactory->get( 'settings', $this->config->getUserValue( @@ -116,13 +117,21 @@ class Hooks { $event->setAuthor($actor->getUID()) ->setSubject(Provider::PASSWORD_CHANGED_BY, [$actor->getUID()]); } else { + // User changed their password themselves through settings $text = $this->l->t('Your password on %s was changed.', [$instanceUrl]); $event->setAuthor($actor->getUID()) ->setSubject(Provider::PASSWORD_CHANGED_SELF); } } else { - $text = $this->l->t('Your password on %s was reset by an administrator.', [$instanceUrl]); - $event->setSubject(Provider::PASSWORD_RESET); + if (PHP_SAPI === 'cli') { + // Admin used occ to reset the password + $text = $this->l->t('Your password on %s was reset by an administrator.', [$instanceUrl]); + $event->setSubject(Provider::PASSWORD_RESET); + } else { + // User reset their password from Lost page + $text = $this->l->t('Your password on %s was reset.', [$instanceUrl]); + $event->setSubject(Provider::PASSWORD_RESET_SELF); + } } $this->activityManager->publish($event);