MediaWiki  master
MediaWiki\Session\SessionBackend Class Reference

This is the actual workhorse for Session. More...

Collaboration diagram for MediaWiki\Session\SessionBackend:

Public Member Functions

 __construct (SessionId $id, SessionInfo $info, CachedBagOStuff $store, LoggerInterface $logger, $lifetime)
 
 addData (array $newData)
 Add data to the session. More...
 
 canSetUser ()
 Indicate whether the session user info can be changed. More...
 
 delaySave ()
 Delay automatic saving while multiple updates are being made. More...
 
 deregisterSession ( $index)
 Deregister a Session. More...
 
 dirty ()
 Mark data as dirty. More...
 
 getAllowedUserRights ()
 Fetch the rights allowed the user when this session is active. More...
 
getData ()
 Fetch the session data array. More...
 
 getId ()
 Returns the session ID. More...
 
 getLoggedOutTimestamp ()
 Fetch the "logged out" timestamp. More...
 
 getProvider ()
 Fetch the SessionProvider for this session. More...
 
 getProviderMetadata ()
 Fetch provider metadata. More...
 
 getRequest ( $index)
 Returns the request associated with a Session. More...
 
 getSession (WebRequest $request)
 Return a new Session for this backend. More...
 
 getSessionId ()
 Fetch the SessionId object. More...
 
 getUser ()
 Returns the authenticated user for this session. More...
 
 isPersistent ()
 Indicate whether this session is persisted across requests. More...
 
 persist ()
 Make this session persisted across requests. More...
 
 renew ()
 Renew the session by resaving everything. More...
 
 resetId ()
 Changes the session ID. More...
 
 save ( $closing=false)
 Save the session. More...
 
 setForceHTTPS ( $force)
 Set whether HTTPS should be forced. More...
 
 setLoggedOutTimestamp ( $ts=null)
 Set the "logged out" timestamp. More...
 
 setProviderMetadata ( $metadata)
 Set provider metadata. More...
 
 setRememberUser ( $remember)
 Set whether the user should be remembered independently of the session ID. More...
 
 setUser ( $user)
 Set a new user for this session. More...
 
 shouldForceHTTPS ()
 Whether HTTPS should be forced. More...
 
 shouldRememberUser ()
 Indicate whether the user should be remembered independently of the session ID. More...
 
 shutdown ()
 Shut down a session. More...
 
 suggestLoginUsername ( $index)
 Get a suggested username for the login form. More...
 
 unpersist ()
 Make this session not persisted across requests. More...
 

Private Member Functions

 autosave ()
 Save the session, unless delayed. More...
 
 checkPHPSession ()
 For backwards compatibility, open the PHP session when the global session is persisted. More...
 

Private Attributes

bool $checkPHPSessionRecursionGuard = false
 
int $curIndex = 0
 
array null $data = null
 
bool $dataDirty = false
 
string $dataHash = null
 Used to detect subarray modifications. More...
 
int $delaySave = 0
 
int $expires = 0
 
bool $forceHTTPS = false
 
bool $forcePersist = false
 
SessionId $id
 
int $lifetime
 
int $loggedOut = 0
 
LoggerInterface $logger
 
bool $metaDirty = false
 
bool $persist = false
 
SessionProvider $provider
 provider More...
 
array null $providerMetadata = null
 provider-specified metadata More...
 
bool $remember = false
 
WebRequest [] $requests = []
 Session requests. More...
 
bool $shutdown = false
 
CachedBagOStuff $store
 
bool $usePhpSessionHandling = true
 
User $user
 

Detailed Description

This is the actual workhorse for Session.

Most code does not need to use this class, you want \MediaWiki\Session\Session. The exceptions are SessionProviders and SessionMetadata hook functions, which get an instance of this class rather than Session.

The reasons for this split are:

  1. A session can be attached to multiple requests, but we want the Session object to have some features that correspond to just one of those requests.
  2. We want reasonable garbage collection behavior, but we also want the SessionManager to hold a reference to every active session so it can be saved when the request ends.
Since
1.27

Definition at line 49 of file SessionBackend.php.

Constructor & Destructor Documentation

◆ __construct()

Member Function Documentation

◆ addData()

MediaWiki\Session\SessionBackend::addData ( array  $newData)

Add data to the session.

Overwrites any existing data under the same keys.

Parameters
array$newDataKey-value pairs to add to the session

Definition at line 547 of file SessionBackend.php.

References $value, as, MediaWiki\Session\SessionBackend\getData(), and wfGetAllCallers().

Referenced by MediaWiki\Session\CookieSessionProvider\persistSession().

◆ autosave()

◆ canSetUser()

MediaWiki\Session\SessionBackend::canSetUser ( )

Indicate whether the session user info can be changed.

Returns
bool

Definition at line 406 of file SessionBackend.php.

Referenced by MediaWiki\Session\SessionBackend\setUser().

◆ checkPHPSession()

MediaWiki\Session\SessionBackend::checkPHPSession ( )
private

For backwards compatibility, open the PHP session when the global session is persisted.

Definition at line 772 of file SessionBackend.php.

References MediaWiki\Session\SessionManager\getGlobalSession(), MediaWiki\Session\SessionBackend\getId(), and MediaWiki\Session\PHPSessionHandler\isEnabled().

Referenced by MediaWiki\Session\SessionBackend\save().

◆ delaySave()

MediaWiki\Session\SessionBackend::delaySave ( )

Delay automatic saving while multiple updates are being made.

Calls to save() will not be delayed.

Returns
\Wikimedia\ScopedCallback When this goes out of scope, a save will be triggered

Definition at line 612 of file SessionBackend.php.

References MediaWiki\Session\SessionBackend\save().

Referenced by MediaWiki\Session\SessionBackend\autosave(), and MediaWiki\Session\SessionManager\getSessionFromInfo().

◆ deregisterSession()

MediaWiki\Session\SessionBackend::deregisterSession (   $index)

Deregister a Session.

Access:
private For use by \MediaWiki\Session\Session::__destruct() only
Parameters
int$index

Definition at line 203 of file SessionBackend.php.

References MediaWiki\Session\SessionBackend\save(), and MediaWiki\Session\SessionBackend\shutdown().

◆ dirty()

MediaWiki\Session\SessionBackend::dirty ( )

Mark data as dirty.

Access:
private For use by \MediaWiki\Session\Session only.

Definition at line 567 of file SessionBackend.php.

References wfGetAllCallers().

Referenced by MediaWiki\Session\SessionBackendTest\testSave().

◆ getAllowedUserRights()

MediaWiki\Session\SessionBackend::getAllowedUserRights ( )

Fetch the rights allowed the user when this session is active.

Returns
null|string[] Allowed user rights, or null to allow all.

Definition at line 398 of file SessionBackend.php.

◆ getData()

& MediaWiki\Session\SessionBackend::getData ( )

Fetch the session data array.

Note the caller is responsible for calling $this->dirty() if anything in the array is changed.

Access:
private For use by \MediaWiki\Session\Session only.
Returns
array

Definition at line 536 of file SessionBackend.php.

References MediaWiki\Session\SessionBackend\$data.

Referenced by MediaWiki\Session\SessionBackend\addData().

◆ getId()

◆ getLoggedOutTimestamp()

MediaWiki\Session\SessionBackend::getLoggedOutTimestamp ( )

Fetch the "logged out" timestamp.

Returns
int

Definition at line 475 of file SessionBackend.php.

References MediaWiki\Session\SessionBackend\$loggedOut.

Referenced by MediaWiki\Session\CookieSessionProvider\persistSession().

◆ getProvider()

◆ getProviderMetadata()

MediaWiki\Session\SessionBackend::getProviderMetadata ( )

Fetch provider metadata.

Access:
protected For use by SessionProvider subclasses only
Returns
array|null

Definition at line 502 of file SessionBackend.php.

References MediaWiki\Session\SessionBackend\$providerMetadata.

Referenced by MediaWiki\Session\Session\BotPasswordSessionProvider\getAllowedUserRights().

◆ getRequest()

MediaWiki\Session\SessionBackend::getRequest (   $index)

Returns the request associated with a Session.

Parameters
int$indexSession index
Returns
WebRequest

Definition at line 379 of file SessionBackend.php.

◆ getSession()

MediaWiki\Session\SessionBackend::getSession ( WebRequest  $request)

Return a new Session for this backend.

Parameters
WebRequest$request
Returns
Session

Definition at line 191 of file SessionBackend.php.

References MediaWiki\Session\SessionBackend\$curIndex, and $request.

◆ getSessionId()

MediaWiki\Session\SessionBackend::getSessionId ( )

◆ getUser()

MediaWiki\Session\SessionBackend::getUser ( )

◆ isPersistent()

MediaWiki\Session\SessionBackend::isPersistent ( )

Indicate whether this session is persisted across requests.

For example, if cookies are set.

Returns
bool

Definition at line 292 of file SessionBackend.php.

References MediaWiki\Session\SessionBackend\$persist.

Referenced by MediaWiki\Session\SessionBackendTest\testSave().

◆ persist()

MediaWiki\Session\SessionBackend::persist ( )

Make this session persisted across requests.

If the session is already persistent, equivalent to calling $this->renew().

Definition at line 302 of file SessionBackend.php.

References MediaWiki\Session\SessionBackend\autosave(), and MediaWiki\Session\SessionBackend\renew().

Referenced by MediaWiki\Session\SessionBackend\__construct(), MediaWiki\Session\SessionBackend\renew(), MediaWiki\Session\SessionBackend\save(), and MediaWiki\Session\SessionBackend\unpersist().

◆ renew()

MediaWiki\Session\SessionBackend::renew ( )

Renew the session by resaving everything.

Resets the TTL in the backend store if the session is near expiring, and re-persists the session to any active WebRequests if persistent.

Definition at line 583 of file SessionBackend.php.

References MediaWiki\Session\SessionBackend\autosave(), MediaWiki\Session\SessionBackend\persist(), and wfGetAllCallers().

Referenced by MediaWiki\Session\SessionBackend\persist().

◆ resetId()

MediaWiki\Session\SessionBackend::resetId ( )

Changes the session ID.

Returns
string New ID (might be the same as the old)

Definition at line 241 of file SessionBackend.php.

References MediaWiki\Session\SessionBackend\$id, MediaWiki\Session\SessionBackend\autosave(), MediaWiki\Session\PHPSessionHandler\isEnabled(), and string.

◆ save()

◆ setForceHTTPS()

MediaWiki\Session\SessionBackend::setForceHTTPS (   $force)

Set whether HTTPS should be forced.

Parameters
bool$force

Definition at line 458 of file SessionBackend.php.

References MediaWiki\Session\SessionBackend\autosave().

◆ setLoggedOutTimestamp()

MediaWiki\Session\SessionBackend::setLoggedOutTimestamp (   $ts = null)

Set the "logged out" timestamp.

Parameters
int | null$ts

Definition at line 483 of file SessionBackend.php.

References MediaWiki\Session\SessionBackend\autosave().

◆ setProviderMetadata()

MediaWiki\Session\SessionBackend::setProviderMetadata (   $metadata)

Set provider metadata.

Access:
protected For use by SessionProvider subclasses only
Parameters
array | null$metadata

Definition at line 511 of file SessionBackend.php.

References MediaWiki\Session\SessionBackend\autosave(), and null.

◆ setRememberUser()

MediaWiki\Session\SessionBackend::setRememberUser (   $remember)

Set whether the user should be remembered independently of the session ID.

Parameters
bool$remember

Definition at line 361 of file SessionBackend.php.

References MediaWiki\Session\SessionBackend\autosave().

◆ setUser()

MediaWiki\Session\SessionBackend::setUser (   $user)

Set a new user for this session.

Note
This should only be called when the user has been authenticated via a login process
Parameters
User$userUser to set on the session. This may become a "UserValue" in the future, or User may be refactored into such.

Definition at line 417 of file SessionBackend.php.

References MediaWiki\Session\SessionBackend\$user, MediaWiki\Session\SessionBackend\autosave(), MediaWiki\Session\SessionBackend\canSetUser(), and user.

◆ shouldForceHTTPS()

MediaWiki\Session\SessionBackend::shouldForceHTTPS ( )

◆ shouldRememberUser()

MediaWiki\Session\SessionBackend::shouldRememberUser ( )

Indicate whether the user should be remembered independently of the session ID.

Returns
bool

Definition at line 352 of file SessionBackend.php.

References MediaWiki\Session\SessionBackend\$remember.

Referenced by MediaWiki\Session\CookieSessionProvider\persistSession().

◆ shutdown()

MediaWiki\Session\SessionBackend::shutdown ( )

Shut down a session.

Access:
private For use by \MediaWiki\Session\SessionManager::shutdown() only

Definition at line 215 of file SessionBackend.php.

References MediaWiki\Session\SessionBackend\save().

Referenced by MediaWiki\Session\SessionBackend\deregisterSession().

◆ suggestLoginUsername()

MediaWiki\Session\SessionBackend::suggestLoginUsername (   $index)

Get a suggested username for the login form.

Parameters
int$indexSession index
Returns
string|null

Definition at line 439 of file SessionBackend.php.

◆ unpersist()

MediaWiki\Session\SessionBackend::unpersist ( )

Member Data Documentation

◆ $checkPHPSessionRecursionGuard

bool MediaWiki\Session\SessionBackend::$checkPHPSessionRecursionGuard = false
private

Definition at line 113 of file SessionBackend.php.

◆ $curIndex

int MediaWiki\Session\SessionBackend::$curIndex = 0
private

Definition at line 90 of file SessionBackend.php.

Referenced by MediaWiki\Session\SessionBackend\getSession().

◆ $data

array null MediaWiki\Session\SessionBackend::$data = null
private

◆ $dataDirty

bool MediaWiki\Session\SessionBackend::$dataDirty = false
private

Definition at line 72 of file SessionBackend.php.

◆ $dataHash

string MediaWiki\Session\SessionBackend::$dataHash = null
private

Used to detect subarray modifications.

Definition at line 75 of file SessionBackend.php.

◆ $delaySave

int MediaWiki\Session\SessionBackend::$delaySave = 0
private

Definition at line 108 of file SessionBackend.php.

◆ $expires

int MediaWiki\Session\SessionBackend::$expires = 0
private

Definition at line 102 of file SessionBackend.php.

◆ $forceHTTPS

bool MediaWiki\Session\SessionBackend::$forceHTTPS = false
private

◆ $forcePersist

bool MediaWiki\Session\SessionBackend::$forcePersist = false
private

Definition at line 66 of file SessionBackend.php.

◆ $id

◆ $lifetime

int MediaWiki\Session\SessionBackend::$lifetime
private

◆ $loggedOut

int MediaWiki\Session\SessionBackend::$loggedOut = 0
private

◆ $logger

LoggerInterface MediaWiki\Session\SessionBackend::$logger
private

Definition at line 81 of file SessionBackend.php.

Referenced by MediaWiki\Session\SessionBackend\__construct().

◆ $metaDirty

bool MediaWiki\Session\SessionBackend::$metaDirty = false
private

Definition at line 69 of file SessionBackend.php.

◆ $persist

bool MediaWiki\Session\SessionBackend::$persist = false
private

◆ $provider

SessionProvider MediaWiki\Session\SessionBackend::$provider
private

provider

Definition at line 96 of file SessionBackend.php.

Referenced by MediaWiki\Session\SessionBackend\getProvider().

◆ $providerMetadata

array null MediaWiki\Session\SessionBackend::$providerMetadata = null
private

provider-specified metadata

Definition at line 99 of file SessionBackend.php.

Referenced by MediaWiki\Session\SessionBackend\getProviderMetadata().

◆ $remember

bool MediaWiki\Session\SessionBackend::$remember = false
private

◆ $requests

WebRequest [] MediaWiki\Session\SessionBackend::$requests = []
private

Session requests.

Definition at line 93 of file SessionBackend.php.

◆ $shutdown

bool MediaWiki\Session\SessionBackend::$shutdown = false
private

Definition at line 116 of file SessionBackend.php.

◆ $store

CachedBagOStuff MediaWiki\Session\SessionBackend::$store
private

Definition at line 78 of file SessionBackend.php.

Referenced by MediaWiki\Session\SessionBackend\__construct().

◆ $usePhpSessionHandling

bool MediaWiki\Session\SessionBackend::$usePhpSessionHandling = true
private

Definition at line 111 of file SessionBackend.php.

◆ $user

User MediaWiki\Session\SessionBackend::$user
private

The documentation for this class was generated from the following file: