#1002 modify usercode handling

This commit is contained in:
Shinsuke Sugaya 2017-04-24 23:15:46 +09:00
parent 782e1d1593
commit 5cb04f6630
6 changed files with 22 additions and 17 deletions

View file

@ -407,4 +407,6 @@ public class Constants extends CoreLibConstants {
public static final String CIPHER_PREFIX = "{cipher}";
public static final String SYSTEM_USER = "system";
public static final String EMPTY_USER_ID = "<empty>";
}

View file

@ -53,6 +53,7 @@ public class LoginAction extends FessLoginAction {
try {
return fessLoginAssist.loginRedirect(new UserPasswordCredential(username, password), op -> {}, () -> {
activityHelper.login(getUserBean());
userInfoHelper.deleteUserCodeFromCookie(request);
return getHtmlResponse();
});
} catch (final LoginFailureException lfe) {

View file

@ -43,6 +43,7 @@ public class LogoutAction extends FessSearchAction {
getUserBean().map(u -> u.getUserId()).orElse("-");
activityHelper.logout(getUserBean());
fessLoginAssist.logout();
userInfoHelper.deleteUserCodeFromCookie(request);
return redirect(LoginAction.class);
}

View file

@ -55,6 +55,7 @@ public class SsoAction extends FessLoginAction {
try {
return fessLoginAssist.loginRedirect(loginCredential, op -> {}, () -> {
activityHelper.login(getUserBean());
userInfoHelper.deleteUserCodeFromCookie(request);
return getHtmlResponse();
});
} catch (final LoginFailureException lfe) {

View file

@ -28,15 +28,17 @@ import javax.servlet.http.HttpSession;
import org.codelibs.core.collection.LruHashMap;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.mylasta.action.FessUserBean;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.lastaflute.core.security.PrimaryCipher;
import org.lastaflute.web.login.LoginManager;
import org.lastaflute.web.login.TypicalUserBean;
import org.lastaflute.web.servlet.session.SessionManager;
import org.lastaflute.web.util.LaRequestUtil;
import org.lastaflute.web.util.LaResponseUtil;
public class UserInfoHelper {
private static final String USER_BEAN = "lastaflute.action.USER_BEAN.FessUserBean";
@Resource
protected SearchLogHelper searchLogHelper;
@ -60,11 +62,6 @@ public class UserInfoHelper {
return userCode;
}
userCode = getUserCodeFromUserBean(request);
if (StringUtil.isNotBlank(userCode)) {
return userCode;
}
userCode = getUserCodeFromRequest(request);
if (StringUtil.isNotBlank(userCode)) {
return userCode;
@ -76,7 +73,10 @@ public class UserInfoHelper {
userCode = getUserCodeFromCookie(request);
if (StringUtil.isBlank(userCode)) {
userCode = getId();
userCode = getUserCodeFromUserBean(request);
if (StringUtil.isBlank(userCode)) {
userCode = getId();
}
}
if (StringUtil.isNotBlank(userCode)) {
@ -86,13 +86,9 @@ public class UserInfoHelper {
}
protected String getUserCodeFromUserBean(final HttpServletRequest request) {
final LoginManager loginManager = ComponentUtil.getComponent(LoginManager.class);
if (loginManager == null) {
return null;
}
final SessionManager sessionManager = ComponentUtil.getComponent(SessionManager.class);
String userCode =
loginManager.getSavedUserBean().filter(u -> !FessUserBean.EMPTY_USER_ID.equals(u.getUserId()))
sessionManager.getAttribute(USER_BEAN, TypicalUserBean.class).filter(u -> !Constants.EMPTY_USER_ID.equals(u.getUserId()))
.map(u -> u.getUserId().toString()).orElse(StringUtil.EMPTY);
if (StringUtil.isBlank(userCode)) {
return null;
@ -105,11 +101,15 @@ public class UserInfoHelper {
userCode = cipher.encrypt(userCode);
request.setAttribute(Constants.USER_CODE, userCode);
deleteUserCodeFromCookie(request);
return userCode;
}
public void deleteUserCodeFromCookie(final HttpServletRequest request) {
final String cookieValue = getUserCodeFromCookie(request);
if (cookieValue != null) {
updateCookie(cookieValue, 0);
}
return userCode;
}
protected String getUserCodeFromRequest(final HttpServletRequest request) {

View file

@ -18,6 +18,7 @@ package org.codelibs.fess.mylasta.action;
import static org.codelibs.core.stream.StreamUtil.stream;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.entity.FessUser;
import org.lastaflute.web.login.TypicalUserBean;
@ -31,7 +32,6 @@ public class FessUserBean extends TypicalUserBean<String> { // #change_it also L
// ==========
/** The serial version UID for object serialization. (Default) */
private static final long serialVersionUID = 1L;
public static final String EMPTY_USER_ID = "<empty>";
private final FessUser user;
// ===================================================================================
@ -100,7 +100,7 @@ public class FessUserBean extends TypicalUserBean<String> { // #change_it also L
@Override
public String getUserId() {
return EMPTY_USER_ID;
return Constants.EMPTY_USER_ID;
}
@Override