Joomla: Add LDAP autocreate plugin support

- Introduced autocreate_users feature flag in config/main.yml
- Added ldapautocreate.php and ldapautocreate.xml plugin files
- Implemented tasks/01_ldap_files.yml for plugin deployment
- Added tasks/05_ldap.yml to configure LDAP plugin and register ldapautocreate
- Renamed tasks for better structure (01→02, 02→03, etc.)
- Updated cli-ldap.php.j2 for clean parameter handling
- Mounted ldapautocreate plugin via docker-compose.yml.j2
- Extended vars/main.yml with LDAP autocreate configuration

Ref: https://chatgpt.com/share/68b0802f-bfd4-800f-b10a-57cf0c091f7e
This commit is contained in:
2025-08-28 18:13:53 +02:00
parent 18f3b1042f
commit ef801aa498
15 changed files with 326 additions and 119 deletions

View File

@@ -0,0 +1,56 @@
- name: "Configure LDAP plugin params via helper"
command: >
docker exec {{ JOOMLA_CONTAINER }}
sh -c 'test -f /var/www/html/cli/cli-ldap.php && php /var/www/html/cli/cli-ldap.php'
register: ldap_conf
changed_when: "'configured' in ldap_conf.stdout | lower"
async: "{{ ASYNC_TIME if ASYNC_ENABLED | bool else omit }}"
poll: "{{ ASYNC_POLL if ASYNC_ENABLED | bool else omit }}"
when: JOOMLA_LDAP_ENABLED | bool
- name: "Register & enable ldapautocreate Joomla system plugin"
command: >
docker exec {{ JOOMLA_CONTAINER }}
sh -lc '
test -f /var/www/html/plugins/system/ldapautocreate/ldapautocreate.php ||
{ echo "ERROR: plugin file missing"; exit 1; };
php -r "
define(\"_JEXEC\",1);
\$root=\"/var/www/html\";
require \$root.\"/includes/defines.php\";
require \$root.\"/includes/framework.php\";
\$dbo = Joomla\\CMS\\Factory::getDbo();
\$ext = \$dbo->setQuery(
\"SELECT * FROM #__extensions WHERE type=\\\"plugin\\\" AND folder=\\\"system\\\" AND element=\\\"ldapautocreate\\\"\"
)->loadObject();
if (!\$ext) {
\$row = (object)[
\"name\" => \"plg_system_ldapautocreate\",
\"type\" => \"plugin\",
\"element\" => \"ldapautocreate\",
\"folder\" => \"system\",
\"enabled\" => 1,
\"access\" => 1,
\"protected\" => 0,
\"manifest_cache\" => \"{}\",
\"params\" => \"{}\",
\"custom_data\" => \"{}\",
\"state\" => 0,
\"ordering\" => 0,
\"client_id\" => 0
];
\$dbo->insertObject(\"#__extensions\", \$row);
echo \"Plugin registered + enabled\\n\";
} else {
\$ext->enabled = 1;
\$dbo->updateObject(\"#__extensions\", \$ext, \"extension_id\");
echo \"Plugin already exists, just enabled\\n\";
}
"
'
register: ldapautocreate_reg
changed_when: >
('registered + enabled' in (ldapautocreate_reg.stdout | lower)) or
('just enabled' in (ldapautocreate_reg.stdout | lower))
failed_when: ldapautocreate_reg.rc != 0
when: JOOMLA_LDAP_AUTO_CREATE_ENABLED | bool