|
@@ -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);
|