]> git.mxchange.org Git - friendica.git/commitdiff
Refactor Security\Authentication class, remove dependency for App instance
authorArt4 <art4@wlabs.de>
Wed, 6 Nov 2024 12:21:57 +0000 (13:21 +0100)
committerArt4 <art4@wlabs.de>
Wed, 6 Nov 2024 12:21:57 +0000 (13:21 +0100)
src/App.php
src/Module/Security/Login.php
src/Module/Security/OpenID.php
src/Module/Security/TwoFactor/Recovery.php
src/Module/Security/TwoFactor/Trust.php
src/Module/User/Delegation.php
src/Security/Authentication.php
src/Security/BasicAuth.php

index 7d495298de7ed2e4da63772a9f49712ff8afe8d7..66a7fb0309f79f830e603d0a032bcf85b78afc97 100644 (file)
@@ -601,7 +601,7 @@ class App
                        }
 
                        if (!$this->mode->isBackend()) {
-                               $auth->withSession($this);
+                               $auth->withSession();
                        }
 
                        if ($this->session->isUnauthenticated()) {
index 6ee72dde4d6c7f0a0832785ddf6458a85f24776d..39fa9035acc8d96883a18df5c39c1a5b2eb9c43f 100644 (file)
@@ -76,7 +76,6 @@ class Login extends BaseModule
 
                if (!empty($request['auth-params']) && $request['auth-params'] === 'login') {
                        $this->auth->withPassword(
-                               DI::app(),
                                trim($request['username']),
                                trim($request['password']),
                                !empty($request['remember']),
index d84f86030ee495dfe4e94fada56e07b7b4e7fd63..c8b8f9a95c8ee94fc0afec8862b40a1dffbb9689 100644 (file)
@@ -57,7 +57,7 @@ class OpenID extends BaseModule
                                        // successful OpenID login
                                        $session->remove('openid');
 
-                                       DI::auth()->setForUser(DI::app(), $user, true, true);
+                                       DI::auth()->setForUser($user, true, true);
 
                                        $this->baseUrl->redirect(DI::session()->pop('return_path', ''));
                                }
index 504c51f39593814022d91c0a60ff904a4f762dfd..e557068001eb09d39dc8a5071f97e87bfe8e3cd3 100644 (file)
@@ -59,7 +59,7 @@ class Recovery extends BaseModule
                                $this->session->set('2fa', true);
                                DI::sysmsg()->addInfo($this->t('Remaining recovery codes: %d', RecoveryCode::countValidForUser($this->session->getLocalUserId())));
 
-                               $this->auth->setForUser($this->app, User::getById($this->session->getLocalUserId()), true, true);
+                               $this->auth->setForUser(User::getById($this->session->getLocalUserId()), true, true);
 
                                $this->baseUrl->redirect($this->session->pop('return_path', ''));
                        } else {
index ce6b370befa8fc9ad72a4253883f6aafe9550465..153a615a5ef1fd833e5de98dcd89c03173e33f72 100644 (file)
@@ -88,7 +88,7 @@ class Trust extends BaseModule
                        }
 
                        try {
-                               $this->auth->setForUser($this->app, User::getById($this->session->getLocalUserId()), true, true);
+                               $this->auth->setForUser(User::getById($this->session->getLocalUserId()), true, true);
                                $this->baseUrl->redirect($this->session->pop('return_path', ''));
                        } catch (FoundException | TemporaryRedirectException | MovedPermanentlyException $e) {
                                // exception wanted!
@@ -109,7 +109,7 @@ class Trust extends BaseModule
                        try {
                                $trustedBrowser = $this->trustedBrowserRepository->selectOneByHash($this->cookie->get('2fa_cookie_hash'));
                                if (!$trustedBrowser->trusted) {
-                                       $this->auth->setForUser($this->app, User::getById($this->session->getLocalUserId()), true, true);
+                                       $this->auth->setForUser(User::getById($this->session->getLocalUserId()), true, true);
                                        $this->baseUrl->redirect($this->session->pop('return_path', ''));
                                }
                        } catch (TrustedBrowserNotFoundException $exception) {
index d43bfd1fd730ac1727e07783e77c3f857b7ab342..71c5c6064420acddbd19d8abe3b72d1aed5066b4 100644 (file)
@@ -120,7 +120,7 @@ class Delegation extends BaseModule
 
                $this->session->clear();
 
-               $this->auth->setForUser($this->app, $user, true, true);
+               $this->auth->setForUser($user, true, true);
 
                if ($limited_id) {
                        $this->session->setSubManagedUserId($original_id);
index 9e1b7956a6085edbc98c25db7614f9b061742d3a..719873390f8656518435e6037d3d5dc4820baa33 100644 (file)
@@ -8,10 +8,10 @@
 namespace Friendica\Security;
 
 use Exception;
-use Friendica\App;
 use Friendica\App\BaseURL;
 use Friendica\App\Mode;
 use Friendica\App\Request;
+use Friendica\AppHelper;
 use Friendica\Core\Config\Capability\IManageConfigValues;
 use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues;
 use Friendica\Core\Hook;
@@ -55,6 +55,8 @@ class Authentication
        private $session;
        /** @var IManagePersonalConfigValues */
        private $pConfig;
+       /** @var AppHelper */
+       private $appHelper;
        /** @var string */
        private $remoteAddress;
 
@@ -94,6 +96,7 @@ class Authentication
                Cookie $cookie,
                IHandleUserSessions $session,
                IManagePersonalConfigValues $pConfig,
+               AppHelper $appHelper,
                Request $request
        ) {
                $this->config        = $config;
@@ -105,18 +108,17 @@ class Authentication
                $this->cookie        = $cookie;
                $this->session       = $session;
                $this->pConfig       = $pConfig;
+               $this->appHelper     = $appHelper;
                $this->remoteAddress = $request->getRemoteAddress();
        }
 
        /**
         * Tries to auth the user from the cookie or session
         *
-        * @param App $app The Friendica Application context
-        *
         * @throws HttpException\InternalServerErrorException In case of Friendica internal exceptions
         * @throws Exception In case of general exceptions (like SQL Grammar)
         */
-       public function withSession(App $app)
+       public function withSession()
        {
                // When the "Friendica" cookie is set, take the value to authenticate and renew the cookie.
                if ($this->cookie->get('uid')) {
@@ -147,7 +149,7 @@ class Authentication
 
                                // Do the authentication if not done by now
                                if (!$this->session->isAuthenticated()) {
-                                       $this->setForUser($app, $user);
+                                       $this->setForUser($user);
 
                                        if ($this->config->get('system', 'paranoia')) {
                                                $this->session->set('addr', $this->cookie->get('ip'));
@@ -159,7 +161,7 @@ class Authentication
                if ($this->session->isVisitor()) {
                        $contact = $this->dba->selectFirst('contact', ['id'], ['id' => $this->session->get('visitor_id')]);
                        if ($this->dba->isResult($contact)) {
-                               $app->setContactId($contact['id']);
+                               $this->appHelper->setContactId($contact['id']);
                        }
                }
 
@@ -193,7 +195,7 @@ class Authentication
                                $this->baseUrl->redirect();
                        }
 
-                       $this->setForUser($app, $user);
+                       $this->setForUser($user);
                }
        }
 
@@ -232,7 +234,6 @@ class Authentication
        /**
         * Attempts to authenticate using login/password
         *
-        * @param App    $app         The Friendica Application context
         * @param string $username
         * @param string $password    Clear password
         * @param bool   $remember    Whether to set the session remember flag
@@ -244,7 +245,7 @@ class Authentication
         * @throws HTTPException\MovedPermanentlyException
         * @throws HTTPException\TemporaryRedirectException
         */
-       public function withPassword(App $app, string $username, string $password, bool $remember, string $return_path = '')
+       public function withPassword(string $username, string $password, bool $remember, string $return_path = '')
        {
                $record = null;
 
@@ -285,7 +286,7 @@ class Authentication
                        $return_path = '/security/password_too_long?' . http_build_query(['return_path' => $return_path]);
                }
 
-               $this->setForUser($app, $record, true, true);
+               $this->setForUser($record, true, true);
 
                $this->baseUrl->redirect($return_path);
        }
@@ -293,7 +294,6 @@ class Authentication
        /**
         * Sets the provided user's authenticated session
         *
-        * @param App   $app         The Friendica application context
         * @param array $user_record The current "user" record
         * @param bool  $login_initial
         * @param bool  $interactive
@@ -307,7 +307,7 @@ class Authentication
         * @throws HTTPException\InternalServerErrorException In case of Friendica specific exceptions
         *
         */
-       public function setForUser(App $app, array $user_record, bool $login_initial = false, bool $interactive = false, bool $refresh_login = true)
+       public function setForUser(array $user_record, bool $login_initial = false, bool $interactive = false, bool $refresh_login = true)
        {
                $my_url = $this->baseUrl . '/profile/' . $user_record['nickname'];
 
@@ -329,12 +329,12 @@ class Authentication
                $this->session->set('new_member', time() < ($member_since + (60 * 60 * 24 * 14)));
 
                if (strlen($user_record['timezone'])) {
-                       $app->setTimeZone($user_record['timezone']);
+                       $this->appHelper->setTimeZone($user_record['timezone']);
                }
 
                $contact = $this->dba->selectFirst('contact', ['id'], ['uid' => $user_record['uid'], 'self' => true]);
                if ($this->dba->isResult($contact)) {
-                       $app->setContactId($contact['id']);
+                       $this->appHelper->setContactId($contact['id']);
                        $this->session->set('cid', $contact['id']);
                }
 
index dc37a4c555b7fa20fd4835a0bcc38aa91111c9fd..5de8e8780ef424b657f9cd9f184b2a74eb5b188b 100644 (file)
@@ -169,7 +169,7 @@ class BasicAuth
                        throw new UnauthorizedException("This API requires login");
                }
 
-               DI::auth()->setForUser($a, $record, false, false, false);
+               DI::auth()->setForUser($record, false, false, false);
 
                Hook::callAll('logged_in', $record);