Apartamento En Familia

Apartamento En Familia
Apartamento de playa para vacaciones. http://www.apartamentoenfamilia.es. Número registro HUTT-005768

lunes, 1 de julio de 2013

WPMU Ldap Authentication: Como habilitar LDAP para todos los usuarios


Mediante el plugin WPMU Ldap Authentication tendremos la posibilidad de validarnos contra un servidor LDAP en un entorno MU, es decir, un entorno multisite.

El plugin se instala facilmente desde el propio repositorio del Wordpress y para configurarlo no tiene más secreto que configurar los parámetros de conexión con nuestro servidor LDAP.


Yo para instalar este entorno usé un Ubuntu 10.04.3 LTS, MySQL, Apache, OpenLDAP, Wordpress 3.5 y WPMU Ldap Authentication 4.0.2. .

¿Cual fué mi problema? Pues que yo tenia una base de datos local de usuarios de Wordpress (unos 250 usuarios) y cuando instalas el plugin automáticamente no te los pone a validar en LDAP. Es decir, que cuando creas el usuario, te da a escoger si quieres que se valide en LDAP o Local. Si el usuario ya existia una vez instalaste el plugin, tienes que editar el usuario y cambiar de Local a LDAP. Bien, pues cambiar a mano 250 usuarios tampoco era un suplicio, pero como suelo automatizar este tipo de procesos hice un pequeño script en bash y luego lo apliqué con MySQL Workbench.

Cuando miras la base de datos y como la trata WPMU para saber si el usuario se debe de validar en Local o LDAP, te das cuenta que lo hace en la tabla wp_usermeta. Alli crea un registro con el ID del usuario, el string ldap_login y un valor true. Así pues, si hacemos un insert por cada usuario con estos valores, tendremos la base de datos migrada:

for i in `cat ids.txt.csv`; do echo "INSERT INTO \`mi_schema\`.\`wp_usermeta\` (\`user_id\`,\`meta_key\`,\`meta_value\`) VALUES ("$i",\"ldap_login\",\"true\");"; done

El output será algo como esto:


INSERT INTO `mi_schema`.`wp_usermeta` (`user_id`,`meta_key`,`meta_value`) VALUES (725,"ldap_login","true");
INSERT INTO `mi_schema`.`wp_usermeta` (`user_id`,`meta_key`,`meta_value`) VALUES (726,"ldap_login","true");
INSERT INTO `mi_schema`.`wp_usermeta` (`user_id`,`meta_key`,`meta_value`) VALUES (727,"ldap_login","true");
INSERT INTO `mi_schema`.`wp_usermeta` (`user_id`,`meta_key`,`meta_value`) VALUES (728,"ldap_login","true");
(....)

Luego abrí el MySQL Workbench, conecté con la base de datos MySQL del Wordpress y pegué toda esa salida en un script y lo ejecuté. Podría haber usado mysqldump pero esta vez lo hice así. 


Con esto solucioné el pequeño problema de migración.


That u don't know what you've got 'til it's gone