diff --git a/apps/settings/lib/Activity/Provider.php b/apps/settings/lib/Activity/Provider.php index d21d7a9198a72..b615c1dfe1d4f 100644 --- a/apps/settings/lib/Activity/Provider.php +++ b/apps/settings/lib/Activity/Provider.php @@ -42,6 +42,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'; @@ -107,6 +108,8 @@ public function parse($language, IEvent $event, IEvent $previousEvent = null): I } 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) { @@ -147,6 +150,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/apps/settings/lib/Hooks.php b/apps/settings/lib/Hooks.php index baa8941bd32f3..ba5b572c41ac9 100644 --- a/apps/settings/lib/Hooks.php +++ b/apps/settings/lib/Hooks.php @@ -106,6 +106,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( @@ -118,13 +119,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);