MediaWiki master
UserInfo.php
Go to the documentation of this file.
1<?php
7namespace MediaWiki\Session;
8
9use InvalidArgumentException;
13use Stringable;
14
40final class UserInfo implements Stringable {
42 private $verified = false;
43
45 private $user = null;
46
47 private function __construct( ?User $user, bool $verified ) {
48 $userNameUtils = MediaWikiServices::getInstance()->getUserNameUtils();
49 if ( $user && $user->isAnon() && !$userNameUtils->isUsable( $user->getName() ) ) {
50 $this->verified = true;
51 $this->user = null;
52 } else {
53 $this->verified = $verified;
54 $this->user = $user;
55 }
56 }
57
65 public static function newAnonymous() {
66 return new self( null, true );
67 }
68
75 public static function newFromId( $id, $verified = false ) {
76 $user = MediaWikiServices::getInstance()->getUserFactory()->newFromId( (int)$id );
77
78 // Ensure the ID actually exists
79 $user->load();
80 if ( $user->isAnon() ) {
81 throw new InvalidArgumentException( 'Invalid ID' );
82 }
83
84 return new self( $user, $verified );
85 }
86
93 public static function newFromName( $name, $verified = false ) {
94 $user = MediaWikiServices::getInstance()->getUserFactory()->newFromName(
95 (string)$name,
96 UserRigorOptions::RIGOR_USABLE
97 );
98 if ( !$user ) {
99 throw new InvalidArgumentException( 'Invalid user name' );
100 }
101 return new self( $user, $verified );
102 }
103
110 public static function newFromUser( User $user, $verified = false ) {
111 return new self( $user, $verified );
112 }
113
118 public function isAnon() {
119 return $this->user === null;
120 }
121
128 public function isVerified() {
129 return $this->verified;
130 }
131
139 public function getId() {
140 return $this->user === null ? 0 : $this->user->getId();
141 }
142
147 public function getName() {
148 return $this->user === null ? null : $this->user->getName();
149 }
150
156 public function getToken() {
157 return $this->user === null || $this->user->getId() === 0 ? '' : $this->user->getToken( false );
158 }
159
164 public function getUser() {
165 return $this->user ?? MediaWikiServices::getInstance()->getUserFactory()->newAnonymous();
166 }
167
172 public function verified() {
173 return $this->verified ? $this : new self( $this->user, true );
174 }
175
176 public function __toString() {
177 if ( $this->user === null ) {
178 return '<anon>';
179 }
180 return '<' .
181 ( $this->verified ? '+' : '-' ) . ':' .
182 $this->getId() . ':' . $this->getName() .
183 '>';
184 }
185
186}
Service locator for MediaWiki core services.
static getInstance()
Returns the global default instance of the top level service locator.
Immutable object holding data about a session's user, used within SessionInfo.
Definition UserInfo.php:40
getId()
Return the user ID.
Definition UserInfo.php:139
static newFromName( $name, $verified=false)
Create an instance for a logged-in user by name.
Definition UserInfo.php:93
isVerified()
Return whether this represents a verified user.
Definition UserInfo.php:128
static newAnonymous()
Create an instance for an anonymous (i.e.
Definition UserInfo.php:65
isAnon()
Return whether this is an anonymous user.
Definition UserInfo.php:118
getUser()
Return a User object.
Definition UserInfo.php:164
getName()
Return the user name.
Definition UserInfo.php:147
static newFromUser(User $user, $verified=false)
Create an instance from an existing User object.
Definition UserInfo.php:110
static newFromId( $id, $verified=false)
Create an instance for a logged-in user by ID.
Definition UserInfo.php:75
verified()
Return a verified version of this object.
Definition UserInfo.php:172
getToken()
Return the user token.
Definition UserInfo.php:156
User class for the MediaWiki software.
Definition User.php:130
load( $flags=IDBAccessObject::READ_NORMAL)
Load the user table data for this object from the source given by mFrom.
Definition User.php:379
static newFromId( $id)
Static factory method for creation from a given user ID.
Definition User.php:648
isAnon()
Get whether the user is anonymous.
Definition User.php:2098
getName()
Get the user name, or the IP of an anonymous user.
Definition User.php:1524
static newFromName( $name, $validate='valid')
Definition User.php:622
Shared interface for rigor levels when dealing with User methods.