[ 'connection' => [ 'server' => '{{ mediawiki_ldap_servers | join(' ') }}', 'user' => 'uid={{ mediawiki_sysaccount_username }},{{ freeipa_sysaccount_basedn }}', 'pass' => '{{ mediawiki_sysaccount_password }}', 'enctype' => 'tls', 'options' => [ 'LDAP_OPT_DEREF' => 1 ], 'basedn' => '{{ freeipa_basedn }}', 'groupbasedn' => '{{ freeipa_group_basedn }}', 'grouprequest' => 'MediaWiki\\Extension\\LDAPProvider\\UserGroupsRequest\\UserMemberOf::factory', 'presearchusernamemodifiers' => [ 'lowercase' ], 'userbasedn' => '{{ freeipa_user_basedn }}', 'searchattribute' => 'uid', 'searchstring' => 'uid=USER-NAME,{{ freeipa_user_basedn }}', 'usernameattribute' => 'uid', 'realnameattribute' => 'cn', 'emailattribute' => 'mail' ], 'groupsync' => [ 'mechanism' => 'mappedgroups', 'mapping' => [ {% for group in mediawiki_custom_namespaces | selectattr('restrict', 'defined') | map(attribute='restrict') | map('dict2items') | flatten | map(attribute='value') | unique | difference(mediawiki_builtin_groups) %} '{{ group }}' => 'cn={{ group }},{{ freeipa_group_basedn }}', {% endfor %} 'sysop' => 'cn={{ mediawiki_admin_group }},{{ freeipa_group_basedn }}', 'interface-admin' => 'cn={{ mediawiki_admin_group }},{{ freeipa_group_basedn }}', 'bureaucrat' => 'cn={{ mediawiki_admin_group }},{{ freeipa_group_basedn }}' ] ], 'userinfo' => [ 'attributes-map' => [ 'email' => 'mail', 'realname' => 'cn' ] ], 'authorization' => [ 'rules' => [ 'groups' => [ 'required' => [ 'cn={{ mediawiki_access_group }},{{ freeipa_group_basedn }}', 'cn={{ mediawiki_admin_group }},{{ freeipa_group_basedn }}' ] ] ] ] ] ]; return new \MediaWiki\Extension\LDAPProvider\DomainConfigProvider\InlinePHPArray( $config ); }; ### Extension: PluggableAuth $wgPluggableAuth_ButtonLabel = 'Log In'; ### Extension: CodeMirror $wgDefaultUserOptions['usecodemirror'] = 1; $wgCodeMirrorEnableBracketMatching = true; $wgCodeMirrorLineNumberingNamespaces = null; ### Extension: UploadWizard $wgUploadNavigationUrl = '/Special:UploadWizard'; ### Extension: Auth_remoteuser $wgAuthRemoteuserUserNameReplaceFilter = [ '@{{ freeipa_realm }}$' => '' ]; ### Extension: Lockdown {% for ns in mediawiki_custom_namespaces | selectattr('restrict', 'defined') %} {% for r in ns.restrict | dict2items(key_name='perm', value_name='group') %} $wgNamespacePermissionLockdown[{{ ns.id }}]['{{ r.perm }}'] = {{ ([r.group] if r.group is string else r.group) | to_json }}; $wgNamespacePermissionLockdown[{{ ns.talk_id }}]['{{ r.perm }}'] = {{ ([r.group] if r.group is string else r.group) | to_json }}; {% endfor %} $wgNonincludableNamespaces[] = {{ ns.id }}; $wgNonincludableNamespaces[] = {{ ns.talk_id }}; {% endfor %} ### Extension: VisualEditor $wgVisualEditorAvailableNamespaces = [ {% for ns in mediawiki_custom_namespaces %} '{{ ns.namespace }}' => true, '{{ ns.namespace }}Talk' => true{% if not loop.last %},{% endif %} {% endfor %} ];