Foros de discusión

Importar del Active Directory campos específicos de usuario en el portal

Rocío de la Obra, modificado hace 8 años.

Importar del Active Directory campos específicos de usuario en el portal

New Member Mensajes: 5 Fecha de incorporación: 21/05/14 Mensajes recientes
Buenas,

Estamos utilizando Liferay 6.2 GA4, con Tomcat 7 e integración con Active Directory para la importación de los usuarios y grupos,
Necesitamos importar dentro del portal tres campos que no son los establecidos como base en el portal-ext.properties:
  • Teléfono
  • Dirección
  • Subperfil

Para esta importación estábamos valorando la implementación de una clase y la utilización del atributo:
ldap.attrs.transformer.impl=com.liferay.portal.security.ldap.DefaultAttributesTransformer

Pero hemos visto que la solución no se adapta a lo que necesitamos ya que es una transformación antes de importar el usuario no durante o después, por lo que estamos estudiando la implementación de un HOOK o un EXT

Necesitamos modificar este comportamiento de importación ¿Cuál sería la mejor forma de plantear el desarrollo?

Gracias, un saludo.
thumbnail
Ignacio Roncero Bazarra, modificado hace 8 años.

RE: Importar del Active Directory campos específicos de usuario en el porta

New Member Mensajes: 21 Fecha de incorporación: 14/12/10 Mensajes recientes
Buenas Rocío,

efectivamente el sistema de importación de usuarios desde el LDAP no está preparado para importar los 3 campos que indicas (por cierto, que es el subperfil?). La DefaultAttributesTransformer te permitiría realizar un mapeo antes de la importación, pero solo en los atributos del LDAPUser y dicho objeto no tiene ninguno de los atributos que necesitas.

Yo diría que tienes tres opciones:
1. Realizar un plugin-ext que extienda la clase PortalLDAPImporterImpl y modifique el método

protected User importUser(long companyId, Attributes attributes, Properties userMappings, Properties userExpandoMappings, Properties contactMappings,
			Properties contactExpandoMappings, String password) throws Exception 

Para que cambién importe los tres valores que necesitas (recuerda que para recibirlo en los atributos los tienes que añadir en el mapeo de campos del LDAP)
2. Crear campos personalizados del usuario (teléfono, dirección y subperfil) y mapearlos como campos personalizados del LDAP.
3. Crear campos personalizados del usuario (teléfono, dirección y subperfil), mapearlos como campos personalizados del LDAP y crear un hook que añada un Listener a los expandos, para que cuando se añada o se modifique el valor de un expando actualice los campos originales del usuario.

La opción más limpia es la 2, ya que no necesitarías ningún plugin (solo configurar correctamente el portal). Pero si no puedes optar por dicha opción piensa que con al tercera tendrás más contenido basura en el portal (tendrás 3 campos personalizados para solo utilizarás como transición) y que la primera necesita de un plugin ext (lo cual no es lo más recomendable).

Para la primera opción creo que necesitas un plugin-ext porque tienes que configurar en el spring.xml la utilización de tu clase que extiende a PortalLDAPImporterImpl con una línea parecida a esta:

<bean id="com.liferay.portal.security.ldap.PortalLDAPImporterUtil" class="com.liferay.portal.security.ldap.PortalLDAPImporterUtil">
        <property name="portalLDAPImporter">
            <bean class="com.liferay.portal.security.ldap.PortalLDAPImporterImplExt">
                <property name="LDAPToPortalConverter" ref="ldapToPortalConverter" />
            </bean>
        </property>
    </bean>


Un saludo.