2017-08-30 2 views
0

Je devais remplacer la méthode addUser() pour effectuer certaines actions après l'importation d'un utilisateur à partir de LDAP et son ajout à Liferay. J'ai suivi ces étapes (environnement Eclipse):Les modifications de Liferay apportées au code source via le plugin ext n'ont pas lieu

  1. Créé nom de projet de plugin ext customLdap;
  2. Dans docroot/WEB-INF/ext-impl/src J'ai créé un nom de package de com.liferay.portal.security.ldap
  3. Là, je crée mon CustomPortalLDAPImporterImpl.java classe extension portalLDAPImporterImpl. java et remplacer la méthode addUser

code extrait:

@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. nom du dossier créé META-INF dans docroot/WEB-INF/ext-impl/src

  2. Dans META-INF créé un fichier nommé ext-spring.xml avec le code suivant:

enter image description here

  1. construction et publié mon plugin
  2. copié le fichier customLdap-ext.war du dossier dist et collé dans mon Tomcat deploy
  3. commencé mon serveur l'ancienne configuration sont chargés aucun journal est imprimé alors qu'un nouvel utilisateur est importé de ldap

Où est-ce que je me trompe en faisant cela?

Note: J'utilise Liferay 6.2.0.1 CE-GA6

+0

6.2.0.1 CE-GA6? Où avez-vous eu cela - des sources originales, il n'existe pas. 6.2.5 serait la version correspondant à "GA6", 6.2.0 est GA1. Je n'ai jamais entendu parler de 6.2.0.1 –

Répondre

1

J'ai aussi overriden PortalLDAPImporterImpl.java. Vous n'avez pas besoin de définir ext-spring.xml. Il suffit de prendre la classe originale, copiez-la au docroot/WEB-INF/ext-impl/src dans le paquet com.liferay.portal.security.ldap et changez-la. Ne pas créer CustomPortalLDAPImporterImpl.java

+0

fait exactement ce que vous avez dit mais toujours pas de changements reflétés –

+0

Et après le déploiement ext avez-vous redémarré le serveur? Deployez et retirez aussi les restes de votre ancien poste. –

+0

je l'ai également fait –

0

Quelque chose dans votre description ne sonne pas juste - en particulier la combinaison d'un poste-plugin et

    build
  1. et pusblished mon plugin
  2. copié le fichier customLdap-ext.war du dossier dist et collé dans mon tomcat delpoy dossier

Bien que ce soit documented as the steps to deploy in production, vous aurez au moins besoin de redémarrer Liferay (ext n'est pas déployable à chaud).

De même, validez que le fichier WAR ne se termine pas par en tant qu'application Web distincte dans tomcat. Au lieu de cela, il sera tissé dans Liferay, alias l'application web ROOT. C'est une autre chose que vous pouvez/devriez valider. Et observez les étapes documentées pour le redéploiement (différent du premier déploiement), où vous devez essentiellement réinstaller Liferay à partir de zéro et vos extensions externes.

Je n'ai pas validé si vous pouvez y aller sans ext ici, les étapes documentées sont une raison primordiale pour essayer de se passer sans extension autant que possible. Si vous suivez les conseils de Klimiuk dans l'autre réponse à cette question, notez que vous dépendez de l'ordre du classloader dans ce cas: Certaines machines JVM/appservers choisiront d'abord votre implémentation, tandis que d'autres la récupéreront en premier. C'est typiquement reproductible - par ex. Si ça marche une fois, ça marchera toujours. Au moins jusqu'à ce qu'une mise à jour de votre environnement change le comportement, vous vous demandez soudainement pourquoi votre modification ne fonctionne plus (si vous avez de la chance de le savoir rapidement).