@Override
public void logIn(UserToken userToken) throws UnifyException {
SessionContext sessionContext = getRequestContext().getSessionContext();
if (getUserSession(sessionContext.getId()) == null) {
addUserSession(new LocalUserSession(sessionContext));
}
String userLoginId = userToken.getUserLoginId();
String sessionId = sessionContext.getId();
db().updateAll(new UserSessionTrackingQuery().id(sessionId), new Update().add("userLoginId", userLoginId)
.add("userLoginId", userToken.getUserLoginId()).add("userName", userToken.getUserName()));
if (!userToken.isAllowMultipleLogin()) {
List<String> sessionIdList = db().valueList(String.class, "sessionId",
new UserSessionTrackingQuery().userLoginId(userLoginId).idNot(sessionId));
if (!sessionIdList.isEmpty()) {
db().updateAll(new UserSessionTrackingQuery().idAmongst(sessionIdList),
new Update().add("userLoginId", null).add("userLoginId", null).add("userName", null));
forceLogOut(sessionIdList.toArray(new String[sessionIdList.size()]));
}
}
sessionContext.setUserToken(userToken);
}