42 private string $token;
47 private ?
Session $session =
null;
49 private function __construct() {
61 if ( $session->
getUser()->isAnon() ) {
62 throw new LogicException(
'Cannot create an ElevatedSecurityAuthenticationRequest for anon' );
66 $req->userId = $session->
getUser()->getId();
68 $req->session = $session;
69 $req->validationStatus = StatusValue::newFatal(
'authmanager-elevatedsecurity-not-validated' );
71 $token = $session->
getToken( [ (
string)$req->userId, $req->securityLevel ],
'reauth' );
73 $req->token = $token->toString();
83 return [
'userId',
'securityLevel',
'token',
'validationStatus' ];
89 'elevatedSecurityToken' => [
91 'value' => $this->token,
92 'label' =>
wfMessage(
'authmanager-elevatedsecurity-token-label' ),
93 'help' =>
wfMessage(
'authmanager-elevatedsecurity-token-help' ),
102 $this->validationStatus = StatusValue::newGood();
104 $dataToken = $data[
'elevatedSecurityToken'] ??
null;
105 if ( !$this->session ) {
107 throw new LogicException( __METHOD__ .
' called on incomplete object' );
109 $sessionToken = $this->session->getToken( [ (
string)$this->userId, $this->securityLevel ],
'reauth' );
115 $this->validationStatus->fatal(
'authmanager-elevatedsecurity-missing-token' );
116 } elseif ( !$sessionToken->match( $dataToken, self::MAX_AGE ) ) {
117 $this->validationStatus->fatal(
'authmanager-elevatedsecurity-invalid-token' );
125 return $this->validationStatus;
130 foreach ( $data as $k => $v ) {
wfMessage( $key,... $params)
This is the function for getting translated interface messages.
Generic operation result class Has warning/error list, boolean status and arbitrary value.