]> source.dussan.org Git - nextcloud-server.git/commitdiff
Fix password reset saying Admin changed my password when reset from 20427/head
authorThomas Citharel <tcit@tcit.fr>
Fri, 10 Apr 2020 16:05:43 +0000 (18:05 +0200)
committerThomas Citharel <tcit@tcit.fr>
Fri, 10 Apr 2020 16:05:43 +0000 (18:05 +0200)
login page

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
apps/settings/lib/Activity/Provider.php
apps/settings/lib/Hooks.php

index 5023b4af1995f22c076f83611176907063eab284..5ece4dddfc1ce4631d2b643a233c67e7bab71cca 100644 (file)
@@ -41,6 +41,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';
@@ -105,6 +106,8 @@ class Provider implements IProvider {
                        $subject = $this->l->t('You changed your password');
                } elseif ($event->getSubject() === self::PASSWORD_RESET) {
                        $subject = $this->l->t('Your password was reset by an administrator');
+               } elseif ($event->getSubject() === self::PASSWORD_RESET_SELF) {
+                       $subject = $this->l->t('Your password was reset');
                } elseif ($event->getSubject() === self::EMAIL_CHANGED_BY) {
                        $subject = $this->l->t('{actor} changed your email address');
                } elseif ($event->getSubject() === self::EMAIL_CHANGED_SELF) {
@@ -143,6 +146,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 [];
index 851f2f143dc66cf6813b858ee491a14f95f9e4a6..e4e86e278c16d23e383ca9030dfdb53c680a7d24 100644 (file)
@@ -106,6 +106,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(
@@ -118,13 +119,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);