Merge pull request #12018 from nupplaphil/feat/session_util

Replace Core\Session functions with DI::session methods
This commit is contained in:
Hypolite Petovan 2022-10-18 15:45:14 -04:00 committed by GitHub
commit d369f1e1e0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 45 additions and 72 deletions

View file

@ -91,7 +91,7 @@ function redir_init(App $a) {
// with the local contact. Otherwise the local user would ask the local contact // with the local contact. Otherwise the local user would ask the local contact
// for authentification everytime he/she is visiting a profile page of the local // for authentification everytime he/she is visiting a profile page of the local
// contact. // contact.
if (($host == $remotehost) && (Session::getRemoteContactID(Session::get('visitor_visiting')) == Session::get('visitor_id'))) { if (($host == $remotehost) && (Session::getRemoteContactID(DI::session()->get('visitor_visiting')) == DI::session()->get('visitor_id'))) {
// Remote user is already authenticated. // Remote user is already authenticated.
redir_check_url($contact_url, $url); redir_check_url($contact_url, $url);
$target_url = $url ?: $contact_url; $target_url = $url ?: $contact_url;

View file

@ -26,6 +26,7 @@ use Friendica\App\Arguments;
use Friendica\App\BaseURL; use Friendica\App\BaseURL;
use Friendica\Capabilities\ICanCreateResponses; use Friendica\Capabilities\ICanCreateResponses;
use Friendica\Core\Config\Factory\Config; use Friendica\Core\Config\Factory\Config;
use Friendica\Core\Session\Capability\IHandleSessions;
use Friendica\Module\Maintenance; use Friendica\Module\Maintenance;
use Friendica\Security\Authentication; use Friendica\Security\Authentication;
use Friendica\Core\Config\ValueObject\Cache; use Friendica\Core\Config\ValueObject\Cache;
@ -127,6 +128,11 @@ class App
*/ */
private $pConfig; private $pConfig;
/**
* @var IHandleSessions
*/
private $session;
/** /**
* Set the user ID * Set the user ID
* *
@ -328,8 +334,9 @@ class App
* @param L10n $l10n The translator instance * @param L10n $l10n The translator instance
* @param App\Arguments $args The Friendica Arguments of the call * @param App\Arguments $args The Friendica Arguments of the call
* @param IManagePersonalConfigValues $pConfig Personal configuration * @param IManagePersonalConfigValues $pConfig Personal configuration
* @param IHandleSessions $session The Session handler
*/ */
public function __construct(Database $database, IManageConfigValues $config, App\Mode $mode, BaseURL $baseURL, LoggerInterface $logger, Profiler $profiler, L10n $l10n, Arguments $args, IManagePersonalConfigValues $pConfig) public function __construct(Database $database, IManageConfigValues $config, App\Mode $mode, BaseURL $baseURL, LoggerInterface $logger, Profiler $profiler, L10n $l10n, Arguments $args, IManagePersonalConfigValues $pConfig, IHandleSessions $session)
{ {
$this->database = $database; $this->database = $database;
$this->config = $config; $this->config = $config;
@ -340,6 +347,7 @@ class App
$this->l10n = $l10n; $this->l10n = $l10n;
$this->args = $args; $this->args = $args;
$this->pConfig = $pConfig; $this->pConfig = $pConfig;
$this->session = $session;
$this->load(); $this->load();
} }
@ -415,7 +423,7 @@ class App
} }
// Specific mobile theme override // Specific mobile theme override
if (($this->mode->isMobile() || $this->mode->isTablet()) && Core\Session::get('show-mobile', true)) { if (($this->mode->isMobile() || $this->mode->isTablet()) && $this->session->get('show-mobile', true)) {
$user_mobile_theme = $this->getCurrentMobileTheme(); $user_mobile_theme = $this->getCurrentMobileTheme();
// --- means same mobile theme as desktop // --- means same mobile theme as desktop
@ -496,7 +504,7 @@ class App
} }
} }
$theme_name = $page_theme ?: Core\Session::get('theme', $system_theme); $theme_name = $page_theme ?: $this->session->get('theme', $system_theme);
$theme_name = Strings::sanitizeFilePathItem($theme_name); $theme_name = Strings::sanitizeFilePathItem($theme_name);
if ($theme_name if ($theme_name
@ -528,7 +536,7 @@ class App
} }
} }
$mobile_theme_name = $page_mobile_theme ?: Core\Session::get('mobile-theme', $system_mobile_theme); $mobile_theme_name = $page_mobile_theme ?: $this->session->get('mobile-theme', $system_mobile_theme);
$mobile_theme_name = Strings::sanitizeFilePathItem($mobile_theme_name); $mobile_theme_name = Strings::sanitizeFilePathItem($mobile_theme_name);
if ($mobile_theme_name == '---' if ($mobile_theme_name == '---'
@ -625,9 +633,9 @@ class App
// Valid profile links contain a path with "/profile/" and no query parameters // Valid profile links contain a path with "/profile/" and no query parameters
if ((parse_url($_GET['zrl'], PHP_URL_QUERY) == '') && if ((parse_url($_GET['zrl'], PHP_URL_QUERY) == '') &&
strstr(parse_url($_GET['zrl'], PHP_URL_PATH), '/profile/')) { strstr(parse_url($_GET['zrl'], PHP_URL_PATH), '/profile/')) {
if (Core\Session::get('visitor_home') != $_GET['zrl']) { if ($this->session->get('visitor_home') != $_GET['zrl']) {
Core\Session::set('my_url', $_GET['zrl']); $this->session->set('my_url', $_GET['zrl']);
Core\Session::set('authenticated', 0); $this->session->set('authenticated', 0);
$remote_contact = Contact::getByURL($_GET['zrl'], false, ['subscribe']); $remote_contact = Contact::getByURL($_GET['zrl'], false, ['subscribe']);
if (!empty($remote_contact['subscribe'])) { if (!empty($remote_contact['subscribe'])) {

View file

@ -32,7 +32,6 @@ use Friendica\Core\L10n;
use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues; use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues;
use Friendica\Core\Protocol; use Friendica\Core\Protocol;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
use Friendica\Core\Session;
use Friendica\Core\Theme; use Friendica\Core\Theme;
use Friendica\Database\DBA; use Friendica\Database\DBA;
use Friendica\Model\Contact; use Friendica\Model\Contact;
@ -77,8 +76,10 @@ class Conversation
private $page; private $page;
/** @var App\Mode */ /** @var App\Mode */
private $mode; private $mode;
/** @var Session\Capability\IHandleSessions */
private $session;
public function __construct(LoggerInterface $logger, Profiler $profiler, Activity $activity, L10n $l10n, Item $item, Arguments $args, BaseURL $baseURL, IManageConfigValues $config, IManagePersonalConfigValues $pConfig, App\Page $page, App\Mode $mode, App $app) public function __construct(LoggerInterface $logger, Profiler $profiler, Activity $activity, L10n $l10n, Item $item, Arguments $args, BaseURL $baseURL, IManageConfigValues $config, IManagePersonalConfigValues $pConfig, App\Page $page, App\Mode $mode, App $app, Session\Capability\IHandleSessions $session)
{ {
$this->activity = $activity; $this->activity = $activity;
$this->item = $item; $this->item = $item;
@ -92,6 +93,7 @@ class Conversation
$this->pConfig = $pConfig; $this->pConfig = $pConfig;
$this->page = $page; $this->page = $page;
$this->app = $app; $this->app = $app;
$this->session = $session;
} }
/** /**
@ -497,7 +499,7 @@ class Conversation
if (!$update) { if (!$update) {
$live_update_div = '<div id="live-display"></div>' . "\r\n" $live_update_div = '<div id="live-display"></div>' . "\r\n"
. "<script> var profile_uid = " . Session::get('uid', 0) . ";" . "<script> var profile_uid = " . $this->session->get('uid', 0) . ";"
. "</script>"; . "</script>";
} }
} elseif ($mode === 'community') { } elseif ($mode === 'community') {

View file

@ -208,7 +208,7 @@ class Nav
// "Home" should also take you home from an authenticated remote profile connection // "Home" should also take you home from an authenticated remote profile connection
$homelink = Profile::getMyURL(); $homelink = Profile::getMyURL();
if (! $homelink) { if (! $homelink) {
$homelink = Session::get('visitor_home', ''); $homelink = DI::session()->get('visitor_home', '');
} }
if ((DI::args()->getModuleName() != 'home') && (! (local_user()))) { if ((DI::args()->getModuleName() != 'home') && (! (local_user()))) {
@ -276,7 +276,7 @@ class Nav
$nav['home'] = ['profile/' . $a->getLoggedInUserNickname(), DI::l10n()->t('Home'), '', DI::l10n()->t('Your posts and conversations')]; $nav['home'] = ['profile/' . $a->getLoggedInUserNickname(), DI::l10n()->t('Home'), '', DI::l10n()->t('Your posts and conversations')];
// Don't show notifications for public communities // Don't show notifications for public communities
if (Session::get('page_flags', '') != User::PAGE_FLAGS_COMMUNITY) { if (DI::session()->get('page_flags', '') != User::PAGE_FLAGS_COMMUNITY) {
$nav['introductions'] = ['notifications/intros', DI::l10n()->t('Introductions'), '', DI::l10n()->t('Friend Requests')]; $nav['introductions'] = ['notifications/intros', DI::l10n()->t('Introductions'), '', DI::l10n()->t('Friend Requests')];
$nav['notifications'] = ['notifications', DI::l10n()->t('Notifications'), '', DI::l10n()->t('Notifications')]; $nav['notifications'] = ['notifications', DI::l10n()->t('Notifications'), '', DI::l10n()->t('Notifications')];
$nav['notifications']['all'] = ['notifications/system', DI::l10n()->t('See all notifications'), '', '']; $nav['notifications']['all'] = ['notifications/system', DI::l10n()->t('See all notifications'), '', ''];

View file

@ -34,41 +34,6 @@ class Session
public static $exists = false; public static $exists = false;
public static $expire = 180000; public static $expire = 180000;
public static function exists($name)
{
return DI::session()->exists($name);
}
public static function get($name, $defaults = null)
{
return DI::session()->get($name, $defaults);
}
public static function pop($name, $defaults = null)
{
return DI::session()->pop($name, $defaults);
}
public static function set($name, $value)
{
DI::session()->set($name, $value);
}
public static function setMultiple(array $values)
{
DI::session()->setMultiple($values);
}
public static function remove($name)
{
DI::session()->remove($name);
}
public static function clear()
{
DI::session()->clear();
}
/** /**
* Returns the user id of locally logged in user or false. * Returns the user id of locally logged in user or false.
* *

View file

@ -683,7 +683,7 @@ class Profile
*/ */
public static function getMyURL(): string public static function getMyURL(): string
{ {
return Session::get('my_url') ?? ''; return DI::session()->get('my_url') ?? '';
} }
/** /**

View file

@ -307,7 +307,7 @@ class Network extends BaseModule
self::$forumContactId = $this->parameters['contact_id'] ?? 0; self::$forumContactId = $this->parameters['contact_id'] ?? 0;
self::$selectedTab = Session::get('network-tab', DI::pConfig()->get(local_user(), 'network.view', 'selected_tab', '')); self::$selectedTab = DI::session()->get('network-tab', DI::pConfig()->get(local_user(), 'network.view', 'selected_tab', ''));
if (!empty($get['star'])) { if (!empty($get['star'])) {
self::$selectedTab = 'star'; self::$selectedTab = 'star';
@ -345,7 +345,7 @@ class Network extends BaseModule
self::$star = false; self::$star = false;
} }
Session::set('network-tab', self::$selectedTab); DI::session()->set('network-tab', self::$selectedTab);
DI::pConfig()->set(local_user(), 'network.view', 'selected_tab', self::$selectedTab); DI::pConfig()->set(local_user(), 'network.view', 'selected_tab', self::$selectedTab);
self::$accountTypeString = $get['accounttype'] ?? $this->parameters['accounttype'] ?? ''; self::$accountTypeString = $get['accounttype'] ?? $this->parameters['accounttype'] ?? '';

View file

@ -24,7 +24,6 @@ namespace Friendica\Module;
use Friendica\BaseModule; use Friendica\BaseModule;
use Friendica\Core\Hook; use Friendica\Core\Hook;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
use Friendica\Core\Session;
use Friendica\Database\DBA; use Friendica\Database\DBA;
use Friendica\DI; use Friendica\DI;
use Friendica\Model\Notification; use Friendica\Model\Notification;
@ -46,8 +45,8 @@ class Delegation extends BaseModule
$uid = local_user(); $uid = local_user();
$orig_record = User::getById(DI::app()->getLoggedInUserId()); $orig_record = User::getById(DI::app()->getLoggedInUserId());
if (Session::get('submanage')) { if (DI::session()->get('submanage')) {
$user = User::getById(Session::get('submanage')); $user = User::getById(DI::session()->get('submanage'));
if (DBA::isResult($user)) { if (DBA::isResult($user)) {
$uid = intval($user['uid']); $uid = intval($user['uid']);
$orig_record = $user; $orig_record = $user;
@ -97,12 +96,12 @@ class Delegation extends BaseModule
return; return;
} }
Session::clear(); DI::session()->clear();
DI::auth()->setForUser(DI::app(), $user, true, true); DI::auth()->setForUser(DI::app(), $user, true, true);
if ($limited_id) { if ($limited_id) {
Session::set('submanage', $original_id); DI::session()->set('submanage', $original_id);
} }
$ret = []; $ret = [];

View file

@ -139,7 +139,7 @@ class Status extends BaseProfile
// Get permissions SQL - if $remote_contact is true, our remote user has been pre-verified and we already have fetched his/her groups // Get permissions SQL - if $remote_contact is true, our remote user has been pre-verified and we already have fetched his/her groups
$condition = Item::getPermissionsConditionArrayByUserId($profile['uid']); $condition = Item::getPermissionsConditionArrayByUserId($profile['uid']);
$last_updated_array = Session::get('last_updated', []); $last_updated_array = DI::session()->get('last_updated', []);
if (!empty($category)) { if (!empty($category)) {
$condition = DBA::mergeConditions($condition, ["`uri-id` IN (SELECT `uri-id` FROM `category-view` WHERE `name` = ? AND `type` = ? AND `uid` = ?)", $condition = DBA::mergeConditions($condition, ["`uri-id` IN (SELECT `uri-id` FROM `category-view` WHERE `name` = ? AND `type` = ? AND `uid` = ?)",
@ -189,7 +189,7 @@ class Status extends BaseProfile
// Set a time stamp for this page. We will make use of it when we // Set a time stamp for this page. We will make use of it when we
// search for new items (update routine) // search for new items (update routine)
$last_updated_array[$last_updated_key] = time(); $last_updated_array[$last_updated_key] = time();
Session::set('last_updated', $last_updated_array); DI::session()->set('last_updated', $last_updated_array);
if ($is_owner && !DI::config()->get('theme', 'hide_eventlist')) { if ($is_owner && !DI::config()->get('theme', 'hide_eventlist')) {
$o .= ProfileModel::getBirthdays(); $o .= ProfileModel::getBirthdays();

View file

@ -77,7 +77,7 @@ class Delegation extends BaseSettings
$user_id = $args->get(3); $user_id = $args->get(3);
if ($action === 'add' && $user_id) { if ($action === 'add' && $user_id) {
if (Session::get('submanage')) { if (DI::session()->get('submanage')) {
DI::sysmsg()->addNotice(DI::l10n()->t('Delegated administrators can view but not change delegation permissions.')); DI::sysmsg()->addNotice(DI::l10n()->t('Delegated administrators can view but not change delegation permissions.'));
DI::baseUrl()->redirect('settings/delegation'); DI::baseUrl()->redirect('settings/delegation');
} }
@ -99,7 +99,7 @@ class Delegation extends BaseSettings
} }
if ($action === 'remove' && $user_id) { if ($action === 'remove' && $user_id) {
if (Session::get('submanage')) { if (DI::session()->get('submanage')) {
DI::sysmsg()->addNotice(DI::l10n()->t('Delegated administrators can view but not change delegation permissions.')); DI::sysmsg()->addNotice(DI::l10n()->t('Delegated administrators can view but not change delegation permissions.'));
DI::baseUrl()->redirect('settings/delegation'); DI::baseUrl()->redirect('settings/delegation');
} }

View file

@ -157,7 +157,7 @@ class Display extends BaseSettings
} }
$theme_selected = $user['theme'] ?: $default_theme; $theme_selected = $user['theme'] ?: $default_theme;
$mobile_theme_selected = Session::get('mobile-theme', $default_mobile_theme); $mobile_theme_selected = DI::session()->get('mobile-theme', $default_mobile_theme);
$itemspage_network = intval(DI::pConfig()->get(local_user(), 'system', 'itemspage_network')); $itemspage_network = intval(DI::pConfig()->get(local_user(), 'system', 'itemspage_network'));
$itemspage_network = (($itemspage_network > 0 && $itemspage_network < 101) ? $itemspage_network : DI::config()->get('system', 'itemspage_network')); $itemspage_network = (($itemspage_network > 0 && $itemspage_network < 101) ? $itemspage_network : DI::config()->get('system', 'itemspage_network'));

View file

@ -22,7 +22,6 @@
namespace Friendica\Module\Settings\TwoFactor; namespace Friendica\Module\Settings\TwoFactor;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
use Friendica\Core\Session;
use Friendica\DI; use Friendica\DI;
use Friendica\Network\HTTPException\FoundException; use Friendica\Network\HTTPException\FoundException;
use Friendica\Security\TwoFactor\Model\AppSpecificPassword; use Friendica\Security\TwoFactor\Model\AppSpecificPassword;
@ -64,7 +63,7 @@ class Index extends BaseSettings
RecoveryCode::deleteForUser(local_user()); RecoveryCode::deleteForUser(local_user());
DI::pConfig()->delete(local_user(), '2fa', 'secret'); DI::pConfig()->delete(local_user(), '2fa', 'secret');
DI::pConfig()->delete(local_user(), '2fa', 'verified'); DI::pConfig()->delete(local_user(), '2fa', 'verified');
Session::remove('2fa'); DI::session()->remove('2fa');
DI::sysmsg()->addInfo(DI::l10n()->t('Two-factor authentication successfully disabled.')); DI::sysmsg()->addInfo(DI::l10n()->t('Two-factor authentication successfully disabled.'));
DI::baseUrl()->redirect('settings/2fa'); DI::baseUrl()->redirect('settings/2fa');

View file

@ -86,7 +86,7 @@ class Verify extends BaseSettings
if ($valid) { if ($valid) {
$this->pConfig->set(local_user(), '2fa', 'verified', true); $this->pConfig->set(local_user(), '2fa', 'verified', true);
Session::set('2fa', true); DI::session()->set('2fa', true);
DI::sysmsg()->addInfo($this->t('Two-factor authentication successfully activated.')); DI::sysmsg()->addInfo($this->t('Two-factor authentication successfully activated.'));
@ -106,7 +106,7 @@ class Verify extends BaseSettings
parent::content(); parent::content();
$company = 'Friendica'; $company = 'Friendica';
$holder = Session::get('my_address'); $holder = DI::session()->get('my_address');
$secret = $this->pConfig->get(local_user(), '2fa', 'secret'); $secret = $this->pConfig->get(local_user(), '2fa', 'secret');
$otpauthUrl = (new Google2FA())->getQRCodeUrl($company, $holder, $secret); $otpauthUrl = (new Google2FA())->getQRCodeUrl($company, $holder, $secret);

View file

@ -66,7 +66,7 @@ class Profile extends BaseModule
// Get permissions SQL - if $remote_contact is true, our remote user has been pre-verified and we already have fetched his/her groups // Get permissions SQL - if $remote_contact is true, our remote user has been pre-verified and we already have fetched his/her groups
$sql_extra = Item::getPermissionsSQLByUserId($a->getProfileOwner()); $sql_extra = Item::getPermissionsSQLByUserId($a->getProfileOwner());
$last_updated_array = Session::get('last_updated', []); $last_updated_array = DI::session()->get('last_updated', []);
$last_updated = $last_updated_array[$last_updated_key] ?? 0; $last_updated = $last_updated_array[$last_updated_key] ?? 0;
@ -102,7 +102,7 @@ class Profile extends BaseModule
// Set a time stamp for this page. We will make use of it when we // Set a time stamp for this page. We will make use of it when we
// search for new items (update routine) // search for new items (update routine)
$last_updated_array[$last_updated_key] = time(); $last_updated_array[$last_updated_key] = time();
Session::set('last_updated', $last_updated_array); DI::session()->set('last_updated', $last_updated_array);
if ($is_owner && !$a->getProfileOwner() && !DI::config()->get('theme', 'hide_eventlist')) { if ($is_owner && !$a->getProfileOwner() && !DI::config()->get('theme', 'hide_eventlist')) {
$o .= ProfileModel::getBirthdays(); $o .= ProfileModel::getBirthdays();

View file

@ -217,7 +217,7 @@ class Post
$edpost = false; $edpost = false;
if (local_user()) { if (local_user()) {
if (Strings::compareLink(Session::get('my_url'), $item['author-link'])) { if (Strings::compareLink(DI::session()->get('my_url'), $item['author-link'])) {
if ($item['event-id'] != 0) { if ($item['event-id'] != 0) {
$edpost = ['events/event/' . $item['event-id'], DI::l10n()->t('Edit')]; $edpost = ['events/event/' . $item['event-id'], DI::l10n()->t('Edit')];
} else { } else {
@ -434,9 +434,9 @@ class Post
} }
// Fetching of Diaspora posts doesn't always work. There are issues with reshares and possibly comments // Fetching of Diaspora posts doesn't always work. There are issues with reshares and possibly comments
if (!local_user() && ($item['network'] != Protocol::DIASPORA) && !empty(Session::get('remote_comment'))) { if (!local_user() && ($item['network'] != Protocol::DIASPORA) && !empty(DI::session()->get('remote_comment'))) {
$remote_comment = [DI::l10n()->t('Comment this item on your system'), DI::l10n()->t('Remote comment'), $remote_comment = [DI::l10n()->t('Comment this item on your system'), DI::l10n()->t('Remote comment'),
str_replace('{uri}', urlencode($item['uri']), Session::get('remote_comment'))]; str_replace('{uri}', urlencode($item['uri']), DI::session()->get('remote_comment'))];
// Ensure to either display the remote comment or the local activities // Ensure to either display the remote comment or the local activities
$buttons = []; $buttons = [];
@ -507,7 +507,7 @@ class Post
'location_html' => $location_html, 'location_html' => $location_html,
'indent' => $indent, 'indent' => $indent,
'shiny' => $shiny, 'shiny' => $shiny,
'owner_self' => $item['author-link'] == Session::get('my_url'), 'owner_self' => $item['author-link'] == DI::session()->get('my_url'),
'owner_url' => $this->getOwnerUrl(), 'owner_url' => $this->getOwnerUrl(),
'owner_photo' => DI::baseUrl()->remove(DI::contentItem()->getOwnerAvatar($item)), 'owner_photo' => DI::baseUrl()->remove(DI::contentItem()->getOwnerAvatar($item)),
'owner_name' => $this->getOwnerName(), 'owner_name' => $this->getOwnerName(),

View file

@ -207,7 +207,7 @@ function frio_remote_nav(App $a, array &$nav_info)
// get the homelink from $_SESSION // get the homelink from $_SESSION
$homelink = Profile::getMyURL(); $homelink = Profile::getMyURL();
if (!$homelink) { if (!$homelink) {
$homelink = Session::get('visitor_home', ''); $homelink = DI::session()->get('visitor_home', '');
} }
// since $userinfo isn't available for the hook we write it to the nav array // since $userinfo isn't available for the hook we write it to the nav array