diff --git a/settings/Activity/Provider.php b/settings/Activity/Provider.php index 3b62950ecbaa1..c3c6253d9ca6f 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 @@ public function parse($language, IEvent $event, IEvent $previousEvent = null): I $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 @@ protected function getParameters(IEvent $event): array { 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 49189ca082e91..52760856b31bd 100644 --- a/settings/Hooks.php +++ b/settings/Hooks.php @@ -104,6 +104,7 @@ public function onChangePassword($uid) { $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 @@ public function onChangePassword($uid) { $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 (\OC::$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);