Bladeren bron

fix role query

y_fujita 9 jaren geleden
bovenliggende
commit
7f2e6eb3cb
1 gewijzigde bestanden met toevoegingen van 15 en 12 verwijderingen
  1. 15 12
      src/main/java/org/codelibs/fess/helper/impl/RoleQueryHelperImpl.java

+ 15 - 12
src/main/java/org/codelibs/fess/helper/impl/RoleQueryHelperImpl.java

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