MDL-60518 core_user: A user with ID 0 is never a real user
This commit is contained in:
committed by
Amaia Anabitarte
parent
33a388eff7
commit
b91ddd160e
@@ -524,18 +524,17 @@ class core_user {
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true is user id is greater than self::NOREPLY_USER and
|
||||
* alternatively check db.
|
||||
* Return true if user id is greater than 0 and alternatively check db.
|
||||
*
|
||||
* @param int $userid user id.
|
||||
* @param bool $checkdb if true userid will be checked in db. By default it's false, and
|
||||
* userid is compared with NOREPLY_USER for performance.
|
||||
* userid is compared with 0 for performance.
|
||||
* @return bool true is real user else false.
|
||||
*/
|
||||
public static function is_real_user($userid, $checkdb = false) {
|
||||
global $DB;
|
||||
|
||||
if ($userid < 0) {
|
||||
if ($userid <= 0) {
|
||||
return false;
|
||||
}
|
||||
if ($checkdb) {
|
||||
|
||||
@@ -732,4 +732,44 @@ class core_user_testcase extends advanced_testcase {
|
||||
$this->assertNotEquals($enuser, $xxuser);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test is_real_user method.
|
||||
*/
|
||||
public function test_is_real_user() {
|
||||
global $CFG, $USER;
|
||||
|
||||
// Real users are real users.
|
||||
$auser = $this->getDataGenerator()->create_user();
|
||||
$guest = guest_user();
|
||||
$this->assertTrue(\core_user::is_real_user($auser->id));
|
||||
$this->assertTrue(\core_user::is_real_user($auser->id, true));
|
||||
$this->assertTrue(\core_user::is_real_user($guest->id));
|
||||
$this->assertTrue(\core_user::is_real_user($guest->id, true));
|
||||
|
||||
// Non-logged in users are not real users.
|
||||
$this->assertSame(0, $USER->id, 'The non-logged in user should have an ID of 0.');
|
||||
$this->assertFalse(\core_user::is_real_user($USER->id));
|
||||
$this->assertFalse(\core_user::is_real_user($USER->id, true));
|
||||
|
||||
// Other types of logged in users are real users.
|
||||
$this->setAdminUser();
|
||||
$this->assertTrue(\core_user::is_real_user($USER->id));
|
||||
$this->assertTrue(\core_user::is_real_user($USER->id, true));
|
||||
$this->setGuestUser();
|
||||
$this->assertTrue(\core_user::is_real_user($USER->id));
|
||||
$this->assertTrue(\core_user::is_real_user($USER->id, true));
|
||||
$this->setUser($auser);
|
||||
$this->assertTrue(\core_user::is_real_user($USER->id));
|
||||
$this->assertTrue(\core_user::is_real_user($USER->id, true));
|
||||
|
||||
// Fake accounts are not real users.
|
||||
$CFG->noreplyuserid = null;
|
||||
$this->assertFalse(\core_user::is_real_user(core_user::get_noreply_user()->id));
|
||||
$this->assertFalse(\core_user::is_real_user(core_user::get_noreply_user()->id, true));
|
||||
$CFG->supportuserid = null;
|
||||
$CFG->supportemail = '[email protected]';
|
||||
$this->assertFalse(\core_user::is_real_user(core_user::get_support_user()->id));
|
||||
$this->assertFalse(\core_user::is_real_user(core_user::get_support_user()->id, true));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
This files describes API changes in core libraries and APIs,
|
||||
information provided here is intended especially for developers.
|
||||
|
||||
=== 3.7 ===
|
||||
|
||||
* The method core_user::is_real_user() now returns false for userid = 0 parameter
|
||||
|
||||
=== 3.6 ===
|
||||
|
||||
* A new token-based version of pluginfile.php has been added which can be used for out-of-session file serving by
|
||||
|
||||
Reference in New Issue
Block a user