fix role query

This commit is contained in:
y_fujita 2015-11-17 21:59:58 +09:00
parent ba4ece2f5d
commit 7f2e6eb3cb

View file

@ -15,6 +15,7 @@
*/
package org.codelibs.fess.helper.impl;
import java.io.IOException;
import java.io.Serializable;
import java.util.Collections;
import java.util.HashMap;
@ -22,17 +23,20 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Base64;
import java.util.Optional;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.codelibs.core.crypto.CachedCipher;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.entity.LoginInfo;
import org.codelibs.fess.app.web.base.login.FessLoginAssist;
import org.codelibs.fess.helper.RoleQueryHelper;
import org.codelibs.fess.helper.SystemHelper;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.lastaflute.web.util.LaRequestUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -103,16 +107,15 @@ public class RoleQueryHelperImpl implements RoleQueryHelper, Serializable {
roleList.addAll(buildByCookieNameMapping(request));
}
// JAAS roles
if (request != null) {
final HttpSession session = request.getSession(false);
if (session != null) {
final LoginInfo loginInfo = (LoginInfo) session.getAttribute(Constants.USER_INFO);
if (loginInfo != null) {
roleList.addAll(loginInfo.getRoleSet());
}
}
}
final FessLoginAssist fessLoginAssist = ComponentUtil.getComponent(FessLoginAssist.class);
fessLoginAssist.getSessionUserBean().ifPresent(
fessUserBean -> StreamUtil.of(fessUserBean.getRoles()).map(role -> Base64.getDecoder().decode(role)).map(role -> {
try {
return Optional.of(new String(role, Constants.UTF_8));
} catch (IOException e) {
return null;
}
}).forEach(role -> role.ifPresent(roleList::add)));
if (defaultRoleList != null) {
roleList.addAll(defaultRoleList);