Move "submanage" Session value into own methods
authorPhilipp <admin@philipp.info>
Fri, 21 Oct 2022 17:33:28 +0000 (19:33 +0200)
committerPhilipp <admin@philipp.info>
Fri, 21 Oct 2022 17:35:34 +0000 (19:35 +0200)
mod/removeme.php
mod/settings.php
src/Content/Nav.php
src/Core/Session/Capability/IHandleUserSessions.php
src/Core/Session/Model/UserSession.php
src/Module/BaseAdmin.php
src/Module/Delegation.php
src/Module/Settings/Delegation.php

index da94648..9ef372f 100644 (file)
@@ -32,7 +32,7 @@ function removeme_post(App $a)
                return;
        }
 
-       if (!empty($_SESSION['submanage'])) {
+       if (DI::userSession()->getSubManagedUserId()) {
                return;
        }
 
index 1de3f5d..45f5f96 100644 (file)
@@ -51,7 +51,7 @@ function settings_post(App $a)
                return;
        }
 
-       if (!empty($_SESSION['submanage'])) {
+       if (DI::userSession()->getSubManagedUserId()) {
                return;
        }
 
@@ -152,7 +152,7 @@ function settings_content(App $a)
                return Login::form();
        }
 
-       if (!empty($_SESSION['submanage'])) {
+       if (DI::userSession()->getSubManagedUserId()) {
                DI::sysmsg()->addNotice(DI::l10n()->t('Permission denied.'));
                return '';
        }
index b80fb2d..23f5dcf 100644 (file)
@@ -287,7 +287,7 @@ class Nav
                        $nav['messages']['outbox'] = ['message/sent', DI::l10n()->t('Outbox'), '', DI::l10n()->t('Outbox')];
                        $nav['messages']['new'] = ['message/new', DI::l10n()->t('New Message'), '', DI::l10n()->t('New Message')];
 
-                       if (User::hasIdentities(DI::session()->get('submanage') ?: DI::userSession()->getLocalUserId())) {
+                       if (User::hasIdentities(DI::userSession()->getSubManagedUserId() ?: DI::userSession()->getLocalUserId())) {
                                $nav['delegation'] = ['delegation', DI::l10n()->t('Accounts'), '', DI::l10n()->t('Manage other pages')];
                        }
 
index 9cd8de3..e5d1b42 100644 (file)
@@ -72,6 +72,20 @@ interface IHandleUserSessions
         */
        public function isAuthenticated(): bool;
 
+       /**
+        * Returns User ID of the managed user in case it's a different identity
+        *
+        * @return int|bool uid of the manager or false
+        */
+       public function getSubManagedUserId();
+
+       /**
+        * Sets the User ID of the managed user in case it's a different identity
+        *
+        * @param int $managed_uid The user id of the managing user
+        */
+       public function setSubManagedUserId(int $managed_uid): void;
+
        /**
         * Set the session variable that contains the contact IDs for the visitor's contact URL
         *
index 1b0d141..9d7d5c0 100644 (file)
@@ -118,4 +118,16 @@ class UserSession implements IHandleUserSessions
        {
                $this->session->set('remote', Contact::getVisitorByUrl($this->session->get('my_url')));
        }
+
+       /** {@inheritDoc} */
+       public function getSubManagedUserId()
+       {
+               return $this->session->get('submanage') ?? false;
+       }
+
+       /** {@inheritDoc} */
+       public function setSubManagedUserId(int $managed_uid): void
+       {
+               $this->session->set('submanage', $managed_uid);
+       }
 }
index 7088bd7..1c9fc0f 100644 (file)
@@ -63,7 +63,7 @@ abstract class BaseAdmin extends BaseModule
                        throw new HTTPException\ForbiddenException(DI::l10n()->t('You don\'t have access to administration pages.'));
                }
 
-               if (!empty($_SESSION['submanage'])) {
+               if (DI::userSession()->getSubManagedUserId()) {
                        throw new HTTPException\ForbiddenException(DI::l10n()->t('Submanaged account can\'t access the administration pages. Please log back in as the main account.'));
                }
        }
index c8b5c9d..7726518 100644 (file)
@@ -45,8 +45,8 @@ class Delegation extends BaseModule
                $uid = DI::userSession()->getLocalUserId();
                $orig_record = User::getById(DI::app()->getLoggedInUserId());
 
-               if (DI::session()->get('submanage')) {
-                       $user = User::getById(DI::session()->get('submanage'));
+               if (DI::userSession()->getSubManagedUserId()) {
+                       $user = User::getById(DI::userSession()->getSubManagedUserId());
                        if (DBA::isResult($user)) {
                                $uid = intval($user['uid']);
                                $orig_record = $user;
@@ -101,7 +101,7 @@ class Delegation extends BaseModule
                DI::auth()->setForUser(DI::app(), $user, true, true);
 
                if ($limited_id) {
-                       DI::session()->set('submanage', $original_id);
+                       DI::userSession()->setSubManagedUserId($original_id);
                }
 
                $ret = [];
@@ -118,7 +118,7 @@ class Delegation extends BaseModule
                        throw new ForbiddenException(DI::l10n()->t('Permission denied.'));
                }
 
-               $identities = User::identities(DI::session()->get('submanage', DI::userSession()->getLocalUserId()));
+               $identities = User::identities(DI::userSession()->getSubManagedUserId() ?: DI::userSession()->getLocalUserId());
 
                //getting additinal information for each identity
                foreach ($identities as $key => $identity) {
index a7046d4..846e197 100644 (file)
@@ -76,7 +76,7 @@ class Delegation extends BaseSettings
                $user_id = $args->get(3);
 
                if ($action === 'add' && $user_id) {
-                       if (DI::session()->get('submanage')) {
+                       if (DI::userSession()->getSubManagedUserId()) {
                                DI::sysmsg()->addNotice(DI::l10n()->t('Delegated administrators can view but not change delegation permissions.'));
                                DI::baseUrl()->redirect('settings/delegation');
                        }
@@ -98,7 +98,7 @@ class Delegation extends BaseSettings
                }
 
                if ($action === 'remove' && $user_id) {
-                       if (DI::session()->get('submanage')) {
+                       if (DI::userSession()->getSubManagedUserId()) {
                                DI::sysmsg()->addNotice(DI::l10n()->t('Delegated administrators can view but not change delegation permissions.'));
                                DI::baseUrl()->redirect('settings/delegation');
                        }