MediaWiki master
UserInfo.php
Go to the documentation of this file.
1<?php
7namespace MediaWiki\Session;
8
9use InvalidArgumentException;
13use Stringable;
14
38final class UserInfo implements Stringable {
40 private $verified = false;
41
43 private $user = null;
44
45 private function __construct( ?User $user, bool $verified ) {
46 $userNameUtils = MediaWikiServices::getInstance()->getUserNameUtils();
47 if ( $user && $user->isAnon() && !$userNameUtils->isUsable( $user->getName() ) ) {
48 $this->verified = true;
49 $this->user = null;
50 } else {
51 $this->verified = $verified;
52 $this->user = $user;
53 }
54 }
55
63 public static function newAnonymous() {
64 return new self( null, true );
65 }
66
73 public static function newFromId( $id, $verified = false ) {
74 $user = MediaWikiServices::getInstance()->getUserFactory()->newFromId( (int)$id );
75
76 // Ensure the ID actually exists
77 $user->load();
78 if ( $user->isAnon() ) {
79 throw new InvalidArgumentException( 'Invalid ID' );
80 }
81
82 return new self( $user, $verified );
83 }
84
91 public static function newFromName( $name, $verified = false ) {
92 $user = MediaWikiServices::getInstance()->getUserFactory()->newFromName(
93 (string)$name,
94 UserRigorOptions::RIGOR_USABLE
95 );
96 if ( !$user ) {
97 throw new InvalidArgumentException( 'Invalid user name' );
98 }
99 return new self( $user, $verified );
100 }
101
108 public static function newFromUser( User $user, $verified = false ) {
109 return new self( $user, $verified );
110 }
111
116 public function isAnon() {
117 return $this->user === null;
118 }
119
124 public function isVerified() {
125 return $this->verified;
126 }
127
133 public function getId() {
134 return $this->user === null ? 0 : $this->user->getId();
135 }
136
141 public function getName() {
142 return $this->user === null ? null : $this->user->getName();
143 }
144
149 public function getToken() {
150 return $this->user === null || $this->user->getId() === 0 ? '' : $this->user->getToken( false );
151 }
152
157 public function getUser() {
158 return $this->user ?? MediaWikiServices::getInstance()->getUserFactory()->newAnonymous();
159 }
160
165 public function verified() {
166 return $this->verified ? $this : new self( $this->user, true );
167 }
168
169 public function __toString() {
170 if ( $this->user === null ) {
171 return '<anon>';
172 }
173 return '<' .
174 ( $this->verified ? '+' : '-' ) . ':' .
175 $this->getId() . ':' . $this->getName() .
176 '>';
177 }
178
179}
Service locator for MediaWiki core services.
static getInstance()
Returns the global default instance of the top level service locator.
Object holding data about a session's user.
Definition UserInfo.php:38
getId()
Return the user ID.
Definition UserInfo.php:133
static newFromName( $name, $verified=false)
Create an instance for a logged-in user by name.
Definition UserInfo.php:91
isVerified()
Return whether this represents a verified user.
Definition UserInfo.php:124
static newAnonymous()
Create an instance for an anonymous (i.e.
Definition UserInfo.php:63
isAnon()
Return whether this is an anonymous user.
Definition UserInfo.php:116
getUser()
Return a User object.
Definition UserInfo.php:157
getName()
Return the user name.
Definition UserInfo.php:141
static newFromUser(User $user, $verified=false)
Create an instance from an existing User object.
Definition UserInfo.php:108
static newFromId( $id, $verified=false)
Create an instance for a logged-in user by ID.
Definition UserInfo.php:73
verified()
Return a verified version of this object.
Definition UserInfo.php:165
getToken()
Return the user token.
Definition UserInfo.php:149
User class for the MediaWiki software.
Definition User.php:108
load( $flags=IDBAccessObject::READ_NORMAL)
Load the user table data for this object from the source given by mFrom.
Definition User.php:357
static newFromId( $id)
Static factory method for creation from a given user ID.
Definition User.php:626
isAnon()
Get whether the user is anonymous.
Definition User.php:2077
getName()
Get the user name, or the IP of an anonymous user.
Definition User.php:1502
static newFromName( $name, $validate='valid')
Definition User.php:600
Shared interface for rigor levels when dealing with User methods.