Skip to content
Snippets Groups Projects
Verified Commit 1122c8d3 authored by Alex Pott's avatar Alex Pott
Browse files

Issue #3410098 by andypost, shalini_jha, Akhil Babu, Liam Morland,...

Issue #3410098 by andypost, shalini_jha, Akhil Babu, Liam Morland, kristiaanvandeneynde, smustgrave, alexpott: Deprecate passing non-strings to UserSession::hasPermission() and User::hasPermission()

(cherry picked from commit a9f3b751)
parent 3400d1e6
Branches
Tags
27 merge requests!11769Issue #3517987: Add option to contextual filters to encode slashes in query parameter.,!11185Issue #3477324 by andypost, alexpott: Fix usage of str_getcsv() and fgetcsv() for PHP 8.4,!10602Issue #3438769 by vinmayiswamy, antonnavi, michelle, amateescu: Sub workspace does not clear,!10301Issue #3469309 by mstrelan, smustgrave, moshe weitzman: Use one-time login...,!10187Issue #3487488 by dakwamine: ExtensionMimeTypeGuesser::guessMimeType must support file names with "0" (zero) like foo.0.zip,!9944Issue #3483353: Consider making the createCopy config action optionally fail...,!9929Issue #3445469 by pooja_sharma, smustgrave: Add additional test coverage for...,!9787Resolve issue 3479427 - bootstrap barrio issue under Windows,!9742Issue #3463908 by catch, quietone: Split OptionsFieldUiTest into two,!9526Issue #3458177 by mondrake, catch, quietone, godotislate, longwave, larowlan,...,!8738Issue #3424162 by camilledavis, dineshkumarbollu, smustgrave: Claro...,!8704Make greek characters available in ckeditor5,!8597Draft: Issue #3442259 by catch, quietone, dww: Reduce time of Migrate Upgrade tests...,!8533Issue #3446962 by kim.pepper: Remove incorrectly added...,!8517Issue #3443748 by NexusNovaz, smustgrave: Testcase creates false positive,!8325Update file Sort.php,!8095Expose document root on install,!7930Resolve #3427374 "Taxonomytid viewsargumentdefault plugin",!7627Issue #3439440 by nicxvan, Binoli Lalani, longwave: Remove country support from DateFormatter,!7445Issue #3440169: When using drupalGet(), provide an associative array for $headers,!7401#3271894 Fix documented StreamWrapperInterface return types for realpath() and dirname(),!7384Add constraints to system.advisories,!7078Issue #3320569 by Spokje, mondrake, smustgrave, longwave, quietone, Lendude,...,!6622Issue #2559833 by piggito, mohit_aghera, larowlan, guptahemant, vakulrai,...,!6502Draft: Resolve #2938524 "Plach testing issue",!38582585169-10.1.x,!3226Issue #2987537: Custom menu link entity type should not declare "bundle" entity key
......@@ -50,7 +50,7 @@ public function getRoles($exclude_locked_roles = FALSE);
* @return bool
* TRUE if the user has the permission, FALSE otherwise.
*/
public function hasPermission($permission);
public function hasPermission(/* string */$permission);
/**
* Returns TRUE if the account is authenticated.
......
......@@ -119,7 +119,11 @@ public function hasRole(string $rid): bool {
/**
* {@inheritdoc}
*/
public function hasPermission($permission) {
public function hasPermission(/* string */$permission) {
if (!is_string($permission)) {
@trigger_error('Calling ' . __METHOD__ . '() with a $permission parameter of type other than string is deprecated in drupal:10.3.0 and will cause an error in drupal:11.0.0. See https://www.drupal.org/node/3411485', E_USER_DEPRECATED);
return FALSE;
}
return \Drupal::service('permission_checker')->hasPermission($permission, $this);
}
......
......@@ -224,7 +224,11 @@ public function removeRole($rid) {
/**
* {@inheritdoc}
*/
public function hasPermission($permission) {
public function hasPermission(/* string */$permission) {
if (!is_string($permission)) {
@trigger_error('Calling ' . __METHOD__ . '() with a $permission parameter of type other than string is deprecated in drupal:10.3.0 and will cause an error in drupal:11.0.0. See https://www.drupal.org/node/3411485', E_USER_DEPRECATED);
return FALSE;
}
return \Drupal::service('permission_checker')->hasPermission($permission, $this);
}
......
......@@ -10,6 +10,7 @@
use Drupal\Core\Session\PermissionChecker;
use Drupal\Core\Session\UserSession;
use Drupal\Tests\UnitTestCase;
use Drupal\user\Entity\User;
use Drupal\user\RoleInterface;
/**
......@@ -180,4 +181,19 @@ public function testHasRole() {
$this->assertTrue($this->users['user_last']->hasRole(RoleInterface::ANONYMOUS_ID));
}
/**
* Tests deprecation when permission is not a string.
*
* @covers ::hasPermission
* @group legacy
*/
public function testHasPermissionLegacy() {
$this->expectDeprecation('Calling Drupal\Core\Session\UserSession::hasPermission() with a $permission parameter of type other than string is deprecated in drupal:10.3.0 and will cause an error in drupal:11.0.0. See https://www.drupal.org/node/3411485');
$this->assertFalse((new UserSession())->hasPermission(NULL));
$this->expectDeprecation('Calling Drupal\user\Entity\User::hasPermission() with a $permission parameter of type other than string is deprecated in drupal:10.3.0 and will cause an error in drupal:11.0.0. See https://www.drupal.org/node/3411485');
$reflection = new \ReflectionClass(User::class);
$user = $reflection->newInstanceWithoutConstructor();
$this->assertFalse($user->hasPermission(NULL));
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment