fix exception on login, if an external authenticator returns a changed user object

This commit is contained in:
Sebastian Sdorra
2014-01-29 12:46:14 +01:00
parent b05cf39df8
commit 74661789f8

View File

@@ -121,9 +121,8 @@ public class ScmRealm extends AuthorizingRealm
*/ */
@Inject @Inject
public ScmRealm(ScmConfiguration configuration, public ScmRealm(ScmConfiguration configuration,
LoginAttemptHandler loginAttemptHandler, LoginAttemptHandler loginAttemptHandler, AuthorizationCollector collector,
AuthorizationCollector collector,UserManager userManager, UserManager userManager, GroupManager groupManager, UserDAO userDAO,
GroupManager groupManager, UserDAO userDAO,
AuthenticationManager authenticator, RepositoryManager manager, AuthenticationManager authenticator, RepositoryManager manager,
Provider<HttpServletRequest> requestProvider, Provider<HttpServletRequest> requestProvider,
Provider<HttpServletResponse> responseProvider) Provider<HttpServletResponse> responseProvider)
@@ -150,8 +149,6 @@ public class ScmRealm extends AuthorizingRealm
setPermissionResolver(new RepositoryPermissionResolver()); setPermissionResolver(new RepositoryPermissionResolver());
} }
private final LoginAttemptHandler loginAttemptHandler;
//~--- methods -------------------------------------------------------------- //~--- methods --------------------------------------------------------------
/** /**
@@ -198,6 +195,7 @@ public class ScmRealm extends AuthorizingRealm
else else
{ {
loginAttemptHandler.onUnsuccessfulAuthentication(authToken, result); loginAttemptHandler.onUnsuccessfulAuthentication(authToken, result);
throw new AccountException("authentication failed"); throw new AccountException("authentication failed");
} }
@@ -362,7 +360,10 @@ public class ScmRealm extends AuthorizingRealm
// modify existing user, copy properties except password and admin // modify existing user, copy properties except password and admin
if (user.copyProperties(dbUser, false)) if (user.copyProperties(dbUser, false))
{ {
userManager.modify(dbUser); user.setLastModified(System.currentTimeMillis());
UserEventHack.fireEvent(userManager, user, HandlerEvent.BEFORE_MODIFY);
userDAO.modify(user);
UserEventHack.fireEvent(userManager, user, HandlerEvent.MODIFY);
} }
} }
@@ -547,6 +548,9 @@ public class ScmRealm extends AuthorizingRealm
/** Field description */ /** Field description */
private final GroupManager groupManager; private final GroupManager groupManager;
/** Field description */
private final LoginAttemptHandler loginAttemptHandler;
/** Field description */ /** Field description */
private final Provider<HttpServletRequest> requestProvider; private final Provider<HttpServletRequest> requestProvider;