Within MediaWiki 1.31.8, I need to restrict access to pages in a namespace so only members of a group would be able to use/view it.
The wiki has over 500 pages that begin with "MARKETING:"
I have created a namespace by adding this to LocalSettings.php:
"$wgExtraNamespaces =
array (104 => "MARKETING",
105 => "MARKETING_Talk");
I then installed Lockdown and added this line to LocalSettings.php:
$wgNamespacePermissionLockdown[MARKETING]['*'] = ['marketing'];
(I've seen some users have "marketing" as their group in the wiki "ListUsers" webpage)
I then went to test it in incognito (to avoid cookies error) with a dummy user that has no groups with the expectation that he won't have any privileges but it just didn't work. I've noticed that I can enter gibberish into the code above and it doesn't change anything or even throw logs. Would really appreciate the help, thanks ahead.
EDIT: SOLVED. Turns out since the marketing namespace is set with an array, I have had to use the syntax for an array:
$wgNamespacePermissionLockdown = array_fill( 104, 105, [ '*' => [ 'marketinhRW' ] ] );
You are confusing namespace names, IDs and constants.
104is the namespace ID,MARKETINGis the namespace name. Almost everything takes a namespace ID (not name) as key,$wgNamespacePermissionLockdownincluded.Conventionally, you'd define a human-readable constant for the namespace ID, by putting
define( 'NS_MARKETING', 104 )somewhere in your configuration, and then write$wgNamespacePermissionLockdown[NS_MARKETING]['*'] = ['marketing'];which will index by ID. If you instead write$wgNamespacePermissionLockdown[MARKETING], since there is noMARKETINGconstant, PHP will assume you meant to write'MARKETING', and treat it as a string, so there will be no permissions defined for the namespace ID.