]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Settings/RemoveMe.php
Merge pull request #13724 from Raroun/Fix-for-Issue-#13637---Photo-caption-prevents...
[friendica.git] / src / Module / Settings / RemoveMe.php
index 1225cc1e2e10eb9384b1cf7551ce81bca0e810cd..800c2cd6c8765f38d53c69bdb52ab3e37da7b00e 100644 (file)
 namespace Friendica\Module\Settings;
 
 use Friendica\App;
-use Friendica\Core\Config\Capability\IManageConfigValues;
+use Friendica\Content\Widget;
 use Friendica\Core\L10n;
 use Friendica\Core\Renderer;
 use Friendica\Core\Session\Capability\IHandleUserSessions;
-use Friendica\Database\Database;
 use Friendica\DI;
 use Friendica\Model\User;
 use Friendica\Model\User\Cookie;
@@ -40,10 +39,6 @@ use Psr\Log\LoggerInterface;
 
 class RemoveMe extends BaseSettings
 {
-       /** @var IManageConfigValues */
-       private $config;
-       /** @var Database */
-       private $database;
        /** @var Emailer */
        private $emailer;
        /** @var SystemMessages */
@@ -51,12 +46,10 @@ class RemoveMe extends BaseSettings
        /** @var Cookie */
        private $cookie;
 
-       public function __construct(Cookie $cookie, SystemMessages $systemMessages, Emailer $emailer, Database $database, IManageConfigValues $config, IHandleUserSessions $session, App\Page $page, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, array $server, array $parameters = [])
+       public function __construct(Cookie $cookie, SystemMessages $systemMessages, Emailer $emailer, IHandleUserSessions $session, App\Page $page, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, array $server, array $parameters = [])
        {
                parent::__construct($session, $page, $l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
 
-               $this->config         = $config;
-               $this->database       = $database;
                $this->emailer        = $emailer;
                $this->systemMessages = $systemMessages;
                $this->cookie         = $cookie;
@@ -79,6 +72,9 @@ class RemoveMe extends BaseSettings
 
                try {
                        $userId = User::getIdFromPasswordAuthentication($this->session->getLocalUserId(), trim($request[$hash]));
+                       if ($userId != $this->session->getLocalUserId()) {
+                               throw new \RuntimeException($this->t("There was a validation error, please make sure you're logged in with the account you want to remove and try again.") . ' ' . $this->t('If this error persists, please contact your administrator.'));
+                       }
                } catch (\Throwable $e) {
                        $this->systemMessages->addNotice($e->getMessage());
                        return;
@@ -100,13 +96,19 @@ class RemoveMe extends BaseSettings
                        $this->emailer->send($email);
                }
 
-               User::remove($userId);
+               try {
+                       User::remove($userId);
 
-               $this->session->clear();
-               $this->cookie->clear();
+                       $this->session->clear();
+                       $this->cookie->clear();
 
-               $this->systemMessages->addInfo($this->t('Your user account has been successfully removed. Bye bye!'));
-               $this->baseUrl->redirect();
+                       $this->systemMessages->addInfo($this->t('Your account has been successfully removed. Bye bye!'));
+                       $this->baseUrl->redirect();
+               } catch (\RuntimeException $e) {
+                       $this->systemMessages->addNotice($e->getMessage());
+               } finally {
+                       return;
+               }
        }
 
        protected function content(array $request = []): string
@@ -128,6 +130,9 @@ class RemoveMe extends BaseSettings
                                'title' => DI::l10n()->t('Remove My Account'),
                                'desc'  => DI::l10n()->t('This will completely remove your account. Once this has been done it is not recoverable.'),
                        ],
+
+                       '$hovercard' => Widget\Hovercard::getHTML(User::getOwnerDataById($this->session->getLocalUserId())),
+
                        '$password' => [$hash, $this->t('Please enter your password for verification:'), null, null, true],
                ]);
        }