Pārlūkot izejas kodu

fix issue with delete otp via helpdesk and helpdesk proxy mode

jrivard@gmail.com 6 gadi atpakaļ
vecāks
revīzija
cb9f21ef54

+ 1 - 1
server/src/main/java/password/pwm/http/servlet/SetupOtpServlet.java

@@ -330,7 +330,7 @@ public class SetupOtpServlet extends ControlledPwmServlet
         final UserIdentity theUser = pwmSession.getUserInfo().getUserIdentity();
         try
         {
-            service.clearOTPUserConfiguration( pwmSession, theUser );
+            service.clearOTPUserConfiguration( pwmSession, theUser, pwmSession.getSessionManager().getActor( pwmApplication ) );
         }
         catch ( PwmOperationalException e )
         {

+ 2 - 1
server/src/main/java/password/pwm/http/servlet/helpdesk/HelpdeskServlet.java

@@ -922,7 +922,8 @@ public class HelpdeskServlet extends ControlledPwmServlet
         {
 
             final OtpService service = pwmRequest.getPwmApplication().getOtpService();
-            service.clearOTPUserConfiguration( pwmRequest.getPwmSession(), userIdentity );
+            final ChaiUser chaiUser = getChaiUser( pwmRequest, helpdeskProfile, userIdentity );
+            service.clearOTPUserConfiguration( pwmRequest.getPwmSession(), userIdentity, chaiUser );
             {
                 // mark the event log
                 final HelpdeskAuditRecord auditRecord = new AuditRecordFactory( pwmRequest ).createHelpdeskAuditRecord(

+ 4 - 2
server/src/main/java/password/pwm/util/operations/OtpService.java

@@ -22,6 +22,7 @@
 
 package password.pwm.util.operations;
 
+import com.novell.ldapchai.ChaiUser;
 import com.novell.ldapchai.exception.ChaiUnavailableException;
 import lombok.Getter;
 import org.apache.commons.codec.binary.Base32;
@@ -425,7 +426,8 @@ public class OtpService implements PwmService
 
     public void clearOTPUserConfiguration(
             final PwmSession pwmSession,
-            final UserIdentity userIdentity
+            final UserIdentity userIdentity,
+            final ChaiUser chaiUser
     )
             throws PwmOperationalException, ChaiUnavailableException, PwmUnrecoverableException
     {
@@ -450,7 +452,7 @@ public class OtpService implements PwmService
                 {
                     try
                     {
-                        operator.clearOtpUserConfiguration( pwmSession, userIdentity, userGUID );
+                        operator.clearOtpUserConfiguration( pwmSession, userIdentity, chaiUser, userGUID );
                         successes++;
                     }
                     catch ( PwmUnrecoverableException e )

+ 2 - 0
server/src/main/java/password/pwm/util/operations/otp/DbOtpOperator.java

@@ -28,6 +28,7 @@
 
 package password.pwm.util.operations.otp;
 
+import com.novell.ldapchai.ChaiUser;
 import password.pwm.PwmApplication;
 import password.pwm.bean.UserIdentity;
 import password.pwm.config.PwmSetting;
@@ -135,6 +136,7 @@ public class DbOtpOperator extends AbstractOtpOperator
     public void clearOtpUserConfiguration(
             final PwmSession pwmSession,
             final UserIdentity theUser,
+            final ChaiUser chaiUser,
             final String userGUID
     )
             throws PwmUnrecoverableException

+ 4 - 5
server/src/main/java/password/pwm/util/operations/otp/LdapOtpOperator.java

@@ -159,8 +159,10 @@ public class LdapOtpOperator extends AbstractOtpOperator
     public void clearOtpUserConfiguration(
             final PwmSession pwmSession,
             final UserIdentity userIdentity,
+            final ChaiUser chaiUser,
             final String userGuid
-    ) throws PwmUnrecoverableException
+    )
+            throws PwmUnrecoverableException
     {
         final Configuration config = pwmApplication.getConfig();
 
@@ -174,10 +176,7 @@ public class LdapOtpOperator extends AbstractOtpOperator
         }
         try
         {
-            final ChaiUser theUser = pwmSession == null
-                    ? pwmApplication.getProxiedChaiUser( userIdentity )
-                    : pwmSession.getSessionManager().getActor( pwmApplication, userIdentity );
-            theUser.deleteAttribute( ldapStorageAttribute, null );
+            chaiUser.deleteAttribute( ldapStorageAttribute, null );
             LOGGER.info( "cleared OTP secret for user to chai-ldap format" );
         }
         catch ( ChaiOperationException e )

+ 2 - 0
server/src/main/java/password/pwm/util/operations/otp/LocalDbOtpOperator.java

@@ -28,6 +28,7 @@
 
 package password.pwm.util.operations.otp;
 
+import com.novell.ldapchai.ChaiUser;
 import password.pwm.PwmApplication;
 import password.pwm.bean.UserIdentity;
 import password.pwm.config.Configuration;
@@ -163,6 +164,7 @@ public class LocalDbOtpOperator extends AbstractOtpOperator
     public void clearOtpUserConfiguration(
             final PwmSession pwmSession,
             final UserIdentity theUser,
+            final ChaiUser chaiUser,
             final String userGUID
     )
             throws PwmUnrecoverableException

+ 2 - 0
server/src/main/java/password/pwm/util/operations/otp/OtpOperator.java

@@ -27,6 +27,7 @@
 
 package password.pwm.util.operations.otp;
 
+import com.novell.ldapchai.ChaiUser;
 import password.pwm.bean.UserIdentity;
 import password.pwm.error.PwmUnrecoverableException;
 import password.pwm.http.PwmSession;
@@ -54,6 +55,7 @@ public interface OtpOperator
     void clearOtpUserConfiguration(
             PwmSession pwmSession,
             UserIdentity theUser,
+            ChaiUser chaiUser,
             String userGuid
     )
             throws PwmUnrecoverableException;