Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4082263
TokenQueryManager.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
TokenQueryManager.php
View Options
<?php
namespace
MediaWiki\CheckUser\Services
;
use
MediaWiki\Request\WebRequest
;
class
TokenQueryManager
{
public
TokenManager
$tokenManager
;
/**
* @param TokenManager $tokenManager
*/
public
function
__construct
(
TokenManager
$tokenManager
)
{
$this
->
tokenManager
=
$tokenManager
;
}
/**
* Conceal the offset in pager pagination params
* which may reveal sensitive data.
*
* @param WebRequest $request
* @param array $queries
* @return array
*/
public
function
getPagingQueries
(
WebRequest
$request
,
array
$queries
):
array
{
$tokenData
=
$this
->
getDataFromRequest
(
$request
);
foreach
(
$queries
as
&
$query
)
{
if
(
$query
===
false
)
{
continue
;
}
if
(
isset
(
$query
[
'offset'
]
)
)
{
// Move the offset into the token since it may contain sensitive information
$query
[
'token'
]
=
$this
->
updateToken
(
$request
,
[
'offset'
=>
$query
[
'offset'
]
]
);
unset
(
$query
[
'offset'
]
);
}
elseif
(
isset
(
$tokenData
[
'offset'
]
)
)
{
// Remove the offset.
$query
[
'token'
]
=
$this
->
updateToken
(
$request
,
[
'offset'
=>
null
]
);
}
}
return
$queries
;
}
/**
* Preforms an array merge on the updates with what is in the current token.
* Setting a value to null will remove it.
*
* @param WebRequest $request
* @param array $update
* @return string
*/
public
function
updateToken
(
WebRequest
$request
,
array
$update
):
string
{
$tokenData
=
$this
->
getDataFromRequest
(
$request
);
$data
=
array_filter
(
array_merge
(
$tokenData
,
$update
),
static
function
(
$value
)
{
return
$value
!==
null
;
}
);
return
$this
->
tokenManager
->
encode
(
$request
->
getSession
(),
$data
);
}
/**
* Get token data
*
* @param WebRequest $request
* @return array
*/
public
function
getDataFromRequest
(
WebRequest
$request
):
array
{
$token
=
$request
->
getVal
(
'token'
,
''
);
if
(
$token
===
''
)
{
return
[];
}
try
{
return
$this
->
tokenManager
->
decode
(
$request
->
getSession
(),
$token
);
}
catch
(
\Exception
$e
)
{
return
[];
}
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Aug 18 2026, 06:28 (7 w, 5 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
30/04/c9b5dc9ff81d480c5c29c5379411
Default Alt Text
TokenQueryManager.php (1 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment