Kaynağa Gözat

ldap action nullpointer errors

jrivard 10 yıl önce
ebeveyn
işleme
e45328b89a

+ 4 - 2
pwm/servlet/src/password/pwm/http/servlet/ActivateUserServlet.java

@@ -339,6 +339,7 @@ public class ActivateUserServlet extends PwmServlet {
                     final ActionExecutor.ActionExecutorSettings settings = new ActionExecutor.ActionExecutorSettings();
                     settings.setExpandPwmMacros(true);
                     settings.setMacroMachine(macroMachine);
+                    settings.setUserIdentity(userIdentity);
                     final ActionExecutor actionExecutor = new ActionExecutor(pwmApplication);
                     actionExecutor.executeActions(configValues, settings, pwmSession);
                 }
@@ -375,13 +376,14 @@ public class ActivateUserServlet extends PwmServlet {
                         throws PwmUnrecoverableException {
                     try {
                         {  // execute configured actions
+                            LOGGER.debug(pwmSession.getLabel(), "executing post-activate configured actions to user " + userIdentity.toDisplayString());
+
                             final MacroMachine macroMachine = pwmSession.getSessionManager().getMacroMachine(pwmApplication);
-                            final ChaiUser proxiedUser = pwmApplication.getProxiedChaiUser(userIdentity);
-                            LOGGER.debug(pwmSession.getLabel(), "executing post-activate configured actions to user " + proxiedUser.getEntryDN());
                             final List<ActionConfiguration> configValues = pwmApplication.getConfig().readSettingAsAction(PwmSetting.ACTIVATE_USER_POST_WRITE_ATTRIBUTES);
                             final ActionExecutor.ActionExecutorSettings settings = new ActionExecutor.ActionExecutorSettings();
                             settings.setExpandPwmMacros(true);
                             settings.setMacroMachine(macroMachine);
+                            settings.setUserIdentity(userIdentity);
                             final ActionExecutor actionExecutor = new ActionExecutor(pwmApplication);
                             actionExecutor.executeActions(configValues, settings, pwmSession);
                         }

+ 1 - 0
pwm/servlet/src/password/pwm/http/servlet/ForgottenPasswordServlet.java

@@ -973,6 +973,7 @@ public class ForgottenPasswordServlet extends PwmServlet {
                         settings.setExpandPwmMacros(true);
                         settings.setMacroMachine(
                                 pwmSession.getSessionManager().getMacroMachine(pwmRequest.getPwmApplication()));
+                        settings.setUserIdentity(userIdentity);
                         final ActionExecutor actionExecutor = new ActionExecutor(pwmRequest.getPwmApplication());
                         actionExecutor.executeActions(configValues, settings, pwmSession);
                     }

+ 15 - 4
pwm/servlet/src/password/pwm/util/operations/ActionExecutor.java

@@ -73,6 +73,8 @@ public class ActionExecutor {
     )
             throws ChaiUnavailableException, PwmOperationalException, PwmUnrecoverableException
     {
+        LOGGER.trace(pwmSession, "preparing to execute " + actionConfiguration.getType() + " action " + actionConfiguration.getName());
+
         switch (actionConfiguration.getType()) {
             case ldap:
                 executeLdapAction(pwmSession, actionConfiguration, actionExecutorSettings);
@@ -83,7 +85,7 @@ public class ActionExecutor {
                 break;
         }
 
-        LOGGER.info(pwmSession,"action " + actionConfiguration.getName() + " completed successfully");
+        LOGGER.info(pwmSession, "action " + actionConfiguration.getName() + " completed successfully");
     }
 
     private void executeLdapAction(
@@ -95,9 +97,18 @@ public class ActionExecutor {
     {
         final String attributeName = actionConfiguration.getAttributeName();
         final String attributeValue = actionConfiguration.getAttributeValue();
-        final ChaiUser theUser = settings.getChaiUser() != null ?
-                settings.getChaiUser() :
-                pwmApplication.getProxiedChaiUser(settings.getUserIdentity());
+
+        final ChaiUser theUser;
+        if (settings.getChaiUser() != null) {
+            theUser = settings.getChaiUser();
+        } else {
+            if (settings.getUserIdentity() == null) {
+                final String errorMsg = "attempt to execute lap action but neither chaiUser or userIdentity is specified";
+                final ErrorInformation errorInformation = new ErrorInformation(PwmError.ERROR_UNKNOWN,errorMsg);
+                throw new PwmUnrecoverableException(errorInformation);
+            }
+            theUser = pwmApplication.getProxiedChaiUser(settings.getUserIdentity());
+        }
 
         writeLdapAttribute(
                 pwmSession,