Search code examples
javaldapliferayliferay-6

Liferay changes made to source code through ext plugin are not taking place


I needed to override portalLDAPImporterImpl.java addUser() method to perform some action after a user is imported from LDAP and added to Liferay. I followed these steps (Eclipse Environment):

  1. Created Ext plugin project name customLdap;
  2. In docroot/WEB-INF/ext-impl/src I created a package name com.liferay.portal.security.ldap
  3. There I create my CustomPortalLDAPImporterImpl.java class extending portalLDAPImporterImpl.java and override the method addUser

Code extract:

    @Override

    protected User addUser(long companyId, LDAPUser ldapUser, String password)
        throws Exception {

    if (_log.isDebugEnabled()) {
        _log.debug("Adding user " + ldapUser.getEmailAddress());
    }

    boolean autoPassword = ldapUser.isAutoPassword();

    if (!PropsValues.LDAP_IMPORT_USER_PASSWORD_ENABLED) {
        autoPassword = PropsValues.LDAP_IMPORT_USER_PASSWORD_AUTOGENERATED
                && !PropsValues.AUTH_PIPELINE_ENABLE_LIFERAY_CHECK;

        if (!autoPassword) {
            String defaultPassword = PropsValues.LDAP_IMPORT_USER_PASSWORD_DEFAULT;

            if (StringUtil.equalsIgnoreCase(defaultPassword,
                    _USER_PASSWORD_SCREEN_NAME)) {

                defaultPassword = ldapUser.getScreenName();
            }

            password = defaultPassword;
        }
    }

    Calendar birthdayCal = CalendarFactoryUtil.getCalendar();

    birthdayCal.setTime(ldapUser.getBirthday());

    int birthdayMonth = birthdayCal.get(Calendar.MONTH);
    int birthdayDay = birthdayCal.get(Calendar.DAY_OF_MONTH);
    int birthdayYear = birthdayCal.get(Calendar.YEAR);

    User user = UserLocalServiceUtil.addUser(ldapUser.getCreatorUserId(),
            companyId, autoPassword, password, password,
            ldapUser.isAutoScreenName(), ldapUser.getScreenName(),
            ldapUser.getEmailAddress(), 0, StringPool.BLANK,
            ldapUser.getLocale(), ldapUser.getFirstName(),
            ldapUser.getMiddleName(), ldapUser.getLastName(), 0, 0,
            ldapUser.isMale(), birthdayMonth, birthdayDay, birthdayYear,
            StringPool.BLANK, ldapUser.getGroupIds(),
            ldapUser.getOrganizationIds(), ldapUser.getRoleIds(),
            ldapUser.getUserGroupIds(), ldapUser.isSendEmail(),
            ldapUser.getServiceContext());
    _log.info("-----------------------------------------User||||Added----------------------------------------");

    if (ldapUser.isUpdatePortrait()) {
        byte[] portraitBytes = ldapUser.getPortraitBytes();

        if (ArrayUtil.isNotEmpty(portraitBytes)) {
            user = UserLocalServiceUtil.updatePortrait(user.getUserId(),
                    portraitBytes);
        }
    }

    return user;
}
  1. Created folder name META-INF in docroot/WEB-INF/ext-impl/src

  2. In META-INF created a file named ext-spring.xml with the following code:

enter image description here

  1. build and published my plugin
  2. copied the customLdap-ext.war file from dist folder and pasted it in my Tomcat deploy folder
  3. started my server the old configuration are loaded no log is printed while a new user is imported from ldap

Where am I going wrong in doing this?

Note: I am using liferay 6.2.0.1 CE-GA6


Solution

  • I have also overriden PortalLDAPImporterImpl.java. You don't have to define ext-spring.xml. Just take the original class, copy it to docroot/WEB-INF/ext-impl/src in package com.liferay.portal.security.ldap and change it. Do not create CustomPortalLDAPImporterImpl.java