Explorar el Código

#494 change to PermissionHelper

Shinsuke Sugaya hace 9 años
padre
commit
35dd5d95b1

+ 8 - 4
src/main/java/org/codelibs/fess/app/web/admin/dataconfig/AdminDataconfigAction.java

@@ -34,7 +34,8 @@ import org.codelibs.fess.app.web.CrudMode;
 import org.codelibs.fess.app.web.base.FessAdminAction;
 import org.codelibs.fess.ds.DataStoreFactory;
 import org.codelibs.fess.es.config.exentity.DataConfig;
-import org.codelibs.fess.util.PermissionUtil;
+import org.codelibs.fess.helper.PermissionHelper;
+import org.codelibs.fess.util.ComponentUtil;
 import org.codelibs.fess.util.RenderDataUtil;
 import org.codelibs.fess.util.StreamUtil;
 import org.dbflute.optional.OptionalEntity;
@@ -145,8 +146,9 @@ public class AdminDataconfigAction extends FessAdminAction {
                                 copyOp.excludeNull();
                                 copyOp.exclude("permissions");
                             });
+                            final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
                             form.permissions =
-                                    StreamUtil.of(entity.getPermissions()).map(s -> PermissionUtil.decode(s))
+                                    StreamUtil.of(entity.getPermissions()).map(s -> permissionHelper.decode(s))
                                             .filter(s -> StringUtil.isNotBlank(s)).distinct().collect(Collectors.joining("\n"));
                         }).orElse(() -> {
                     throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml());
@@ -181,8 +183,9 @@ public class AdminDataconfigAction extends FessAdminAction {
                                                 copyOp.excludeNull();
                                                 copyOp.exclude("permissions");
                                             });
+                                            final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
                                             form.permissions =
-                                                    StreamUtil.of(entity.getPermissions()).map(s -> PermissionUtil.decode(s))
+                                                    StreamUtil.of(entity.getPermissions()).map(s -> permissionHelper.decode(s))
                                                             .filter(s -> StringUtil.isNotBlank(s)).distinct()
                                                             .collect(Collectors.joining("\n"));
                                             form.crudMode = crudMode;
@@ -296,7 +299,8 @@ public class AdminDataconfigAction extends FessAdminAction {
                             entity,
                             op -> op.exclude(Stream.concat(Stream.of(Constants.COMMON_CONVERSION_RULE), Stream.of("permissions")).toArray(
                                     n -> new String[n])));
-                    entity.setPermissions(StreamUtil.of(form.permissions.split("\n")).map(s -> PermissionUtil.encode(s))
+                    final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
+                    entity.setPermissions(StreamUtil.of(form.permissions.split("\n")).map(s -> permissionHelper.encode(s))
                             .filter(s -> StringUtil.isNotBlank(s)).distinct().toArray(n -> new String[n]));
                     return entity;
                 });

+ 8 - 4
src/main/java/org/codelibs/fess/app/web/admin/fileconfig/AdminFileconfigAction.java

@@ -29,7 +29,8 @@ import org.codelibs.fess.app.service.RoleTypeService;
 import org.codelibs.fess.app.web.CrudMode;
 import org.codelibs.fess.app.web.base.FessAdminAction;
 import org.codelibs.fess.es.config.exentity.FileConfig;
-import org.codelibs.fess.util.PermissionUtil;
+import org.codelibs.fess.helper.PermissionHelper;
+import org.codelibs.fess.util.ComponentUtil;
 import org.codelibs.fess.util.RenderDataUtil;
 import org.codelibs.fess.util.StreamUtil;
 import org.dbflute.optional.OptionalEntity;
@@ -140,8 +141,9 @@ public class AdminFileconfigAction extends FessAdminAction {
                                 copyOp.excludeNull();
                                 copyOp.exclude("permissions");
                             });
+                            final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
                             form.permissions =
-                                    StreamUtil.of(entity.getPermissions()).map(s -> PermissionUtil.decode(s))
+                                    StreamUtil.of(entity.getPermissions()).map(s -> permissionHelper.decode(s))
                                             .filter(s -> StringUtil.isNotBlank(s)).distinct().collect(Collectors.joining("\n"));
                         }).orElse(() -> {
                     throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml());
@@ -176,8 +178,9 @@ public class AdminFileconfigAction extends FessAdminAction {
                                                 copyOp.excludeNull();
                                                 copyOp.exclude("permissions");
                                             });
+                                            final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
                                             form.permissions =
-                                                    StreamUtil.of(entity.getPermissions()).map(s -> PermissionUtil.decode(s))
+                                                    StreamUtil.of(entity.getPermissions()).map(s -> permissionHelper.decode(s))
                                                             .filter(s -> StringUtil.isNotBlank(s)).distinct()
                                                             .collect(Collectors.joining("\n"));
                                             form.crudMode = crudMode;
@@ -293,7 +296,8 @@ public class AdminFileconfigAction extends FessAdminAction {
                             entity,
                             op -> op.exclude(Stream.concat(Stream.of(Constants.COMMON_CONVERSION_RULE), Stream.of("permissions")).toArray(
                                     n -> new String[n])));
-                    entity.setPermissions(StreamUtil.of(form.permissions.split("\n")).map(s -> PermissionUtil.encode(s))
+                    final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
+                    entity.setPermissions(StreamUtil.of(form.permissions.split("\n")).map(s -> permissionHelper.encode(s))
                             .filter(s -> StringUtil.isNotBlank(s)).distinct().toArray(n -> new String[n]));
                     return entity;
                 });

+ 8 - 4
src/main/java/org/codelibs/fess/app/web/admin/labeltype/AdminLabeltypeAction.java

@@ -28,7 +28,8 @@ import org.codelibs.fess.app.service.RoleTypeService;
 import org.codelibs.fess.app.web.CrudMode;
 import org.codelibs.fess.app.web.base.FessAdminAction;
 import org.codelibs.fess.es.config.exentity.LabelType;
-import org.codelibs.fess.util.PermissionUtil;
+import org.codelibs.fess.helper.PermissionHelper;
+import org.codelibs.fess.util.ComponentUtil;
 import org.codelibs.fess.util.RenderDataUtil;
 import org.codelibs.fess.util.StreamUtil;
 import org.dbflute.optional.OptionalEntity;
@@ -138,8 +139,9 @@ public class AdminLabeltypeAction extends FessAdminAction {
                                 copyOp.excludeNull();
                                 copyOp.exclude("permissions");
                             });
+                            final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
                             form.permissions =
-                                    StreamUtil.of(entity.getPermissions()).map(s -> PermissionUtil.decode(s))
+                                    StreamUtil.of(entity.getPermissions()).map(s -> permissionHelper.decode(s))
                                             .filter(s -> StringUtil.isNotBlank(s)).distinct().collect(Collectors.joining("\n"));
                         }).orElse(() -> {
                     throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml());
@@ -174,8 +176,9 @@ public class AdminLabeltypeAction extends FessAdminAction {
                                                 copyOp.excludeNull();
                                                 copyOp.exclude("permissions");
                                             });
+                                            final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
                                             form.permissions =
-                                                    StreamUtil.of(entity.getPermissions()).map(s -> PermissionUtil.decode(s))
+                                                    StreamUtil.of(entity.getPermissions()).map(s -> permissionHelper.decode(s))
                                                             .filter(s -> StringUtil.isNotBlank(s)).distinct()
                                                             .collect(Collectors.joining("\n"));
                                             form.crudMode = crudMode;
@@ -292,7 +295,8 @@ public class AdminLabeltypeAction extends FessAdminAction {
                             entity,
                             op -> op.exclude(Stream.concat(Stream.of(Constants.COMMON_CONVERSION_RULE), Stream.of("permissions")).toArray(
                                     n -> new String[n])));
-                    entity.setPermissions(StreamUtil.of(form.permissions.split("\n")).map(s -> PermissionUtil.encode(s))
+                    final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
+                    entity.setPermissions(StreamUtil.of(form.permissions.split("\n")).map(s -> permissionHelper.encode(s))
                             .filter(s -> StringUtil.isNotBlank(s)).distinct().toArray(n -> new String[n]));
                     return entity;
                 });

+ 8 - 4
src/main/java/org/codelibs/fess/app/web/admin/webconfig/AdminWebconfigAction.java

@@ -30,7 +30,8 @@ import org.codelibs.fess.app.service.WebConfigService;
 import org.codelibs.fess.app.web.CrudMode;
 import org.codelibs.fess.app.web.base.FessAdminAction;
 import org.codelibs.fess.es.config.exentity.WebConfig;
-import org.codelibs.fess.util.PermissionUtil;
+import org.codelibs.fess.helper.PermissionHelper;
+import org.codelibs.fess.util.ComponentUtil;
 import org.codelibs.fess.util.RenderDataUtil;
 import org.codelibs.fess.util.StreamUtil;
 import org.dbflute.optional.OptionalEntity;
@@ -142,8 +143,9 @@ public class AdminWebconfigAction extends FessAdminAction {
                                 copyOp.excludeNull();
                                 copyOp.exclude("permissions");
                             });
+                            final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
                             form.permissions =
-                                    StreamUtil.of(entity.getPermissions()).map(s -> PermissionUtil.decode(s))
+                                    StreamUtil.of(entity.getPermissions()).map(s -> permissionHelper.decode(s))
                                             .filter(s -> StringUtil.isNotBlank(s)).distinct().collect(Collectors.joining("\n"));
                         }).orElse(() -> {
                     throwValidationError(messages -> messages.addErrorsCrudCouldNotFindCrudTable(GLOBAL, id), () -> asListHtml());
@@ -178,8 +180,9 @@ public class AdminWebconfigAction extends FessAdminAction {
                                                 copyOp.excludeNull();
                                                 copyOp.exclude("permissions");
                                             });
+                                            final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
                                             form.permissions =
-                                                    StreamUtil.of(entity.getPermissions()).map(s -> PermissionUtil.decode(s))
+                                                    StreamUtil.of(entity.getPermissions()).map(s -> permissionHelper.decode(s))
                                                             .filter(s -> StringUtil.isNotBlank(s)).distinct()
                                                             .collect(Collectors.joining("\n"));
                                             form.crudMode = crudMode;
@@ -293,7 +296,8 @@ public class AdminWebconfigAction extends FessAdminAction {
                             entity,
                             op -> op.exclude(Stream.concat(Stream.of(Constants.COMMON_CONVERSION_RULE), Stream.of("permissions")).toArray(
                                     n -> new String[n])));
-                    entity.setPermissions(StreamUtil.of(form.permissions.split("\n")).map(s -> PermissionUtil.encode(s))
+                    final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
+                    entity.setPermissions(StreamUtil.of(form.permissions.split("\n")).map(s -> permissionHelper.encode(s))
                             .filter(s -> StringUtil.isNotBlank(s)).distinct().toArray(n -> new String[n]));
                     return entity;
                 });

+ 29 - 21
src/main/java/org/codelibs/fess/util/PermissionUtil.java → src/main/java/org/codelibs/fess/helper/PermissionHelper.java

@@ -13,26 +13,22 @@
  * either express or implied. See the License for the specific language
  * governing permissions and limitations under the License.
  */
-package org.codelibs.fess.util;
+package org.codelibs.fess.helper;
 
 import java.util.Locale;
 
 import org.codelibs.core.lang.StringUtil;
-import org.codelibs.fess.helper.SystemHelper;
 import org.codelibs.fess.mylasta.direction.FessConfig;
+import org.codelibs.fess.util.ComponentUtil;
 
-public class PermissionUtil {
-    private static final String ROLE_PREFIX = "{role}";
+public class PermissionHelper {
+    protected String rolePrefix = "{role}";
 
-    private static final String GROUP_PREFIX = "{group}";
+    protected String groupPrefix = "{group}";
 
-    private static final String USER_PREFIX = "{user}";
+    protected String userPrefix = "{user}";
 
-    private PermissionUtil() {
-        // nothing
-    }
-
-    public static String encode(final String value) {
+    public String encode(final String value) {
         if (StringUtil.isBlank(value)) {
             return null;
         }
@@ -40,29 +36,41 @@ public class PermissionUtil {
         final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
         final String permission = value.trim();
         final String lower = permission.toLowerCase(Locale.ROOT);
-        if (lower.startsWith(USER_PREFIX) && permission.length() > USER_PREFIX.length()) {
-            return systemHelper.getSearchRoleByUser(permission.substring(USER_PREFIX.length()));
-        } else if (lower.startsWith(GROUP_PREFIX) && permission.length() > GROUP_PREFIX.length()) {
-            return systemHelper.getSearchRoleByGroup(permission.substring(GROUP_PREFIX.length()));
-        } else if (lower.startsWith(ROLE_PREFIX) && permission.length() > ROLE_PREFIX.length()) {
-            return systemHelper.getSearchRoleByRole(permission.substring(ROLE_PREFIX.length()));
+        if (lower.startsWith(userPrefix) && permission.length() > userPrefix.length()) {
+            return systemHelper.getSearchRoleByUser(permission.substring(userPrefix.length()));
+        } else if (lower.startsWith(groupPrefix) && permission.length() > groupPrefix.length()) {
+            return systemHelper.getSearchRoleByGroup(permission.substring(groupPrefix.length()));
+        } else if (lower.startsWith(rolePrefix) && permission.length() > rolePrefix.length()) {
+            return systemHelper.getSearchRoleByRole(permission.substring(rolePrefix.length()));
         }
         return permission;
     }
 
-    public static String decode(String value) {
+    public String decode(String value) {
         if (StringUtil.isBlank(value)) {
             return null;
         }
 
         final FessConfig fessConfig = ComponentUtil.getFessConfig();
         if (value.startsWith(fessConfig.getRoleSearchUserPrefix()) && value.length() > 1) {
-            return USER_PREFIX + value.substring(1);
+            return userPrefix + value.substring(1);
         } else if (value.startsWith(fessConfig.getRoleSearchGroupPrefix()) && value.length() > 1) {
-            return GROUP_PREFIX + value.substring(1);
+            return groupPrefix + value.substring(1);
         } else if (value.startsWith(fessConfig.getRoleSearchRolePrefix()) && value.length() > 1) {
-            return ROLE_PREFIX + value.substring(1);
+            return rolePrefix + value.substring(1);
         }
         return value;
     }
+
+    public void setRolePrefix(String rolePrefix) {
+        this.rolePrefix = rolePrefix;
+    }
+
+    public void setGroupPrefix(String groupPrefix) {
+        this.groupPrefix = groupPrefix;
+    }
+
+    public void setUserPrefix(String userPrefix) {
+        this.userPrefix = userPrefix;
+    }
 }

+ 3 - 2
src/main/java/org/codelibs/fess/mylasta/direction/FessProp.java

@@ -34,9 +34,9 @@ import org.codelibs.core.lang.StringUtil;
 import org.codelibs.core.misc.Pair;
 import org.codelibs.core.misc.Tuple3;
 import org.codelibs.fess.Constants;
+import org.codelibs.fess.helper.PermissionHelper;
 import org.codelibs.fess.mylasta.action.FessUserBean;
 import org.codelibs.fess.util.ComponentUtil;
-import org.codelibs.fess.util.PermissionUtil;
 import org.codelibs.fess.util.StreamUtil;
 import org.dbflute.optional.OptionalThing;
 import org.elasticsearch.action.search.SearchRequestBuilder;
@@ -880,7 +880,8 @@ public interface FessProp {
     String getRoleSearchDefaultPermissions();
 
     public default String[] getSearchDefaultPermissionsAsArray() {
-        return StreamUtil.of(getRoleSearchDefaultPermissions().split(",")).map(p -> PermissionUtil.encode(p))
+        final PermissionHelper permissionHelper = ComponentUtil.getPermissionHelper();
+        return StreamUtil.of(getRoleSearchDefaultPermissions().split(",")).map(p -> permissionHelper.encode(p))
                 .filter(s -> StringUtil.isNotBlank(s)).distinct().toArray(n -> new String[n]);
     }
 

+ 7 - 0
src/main/java/org/codelibs/fess/util/ComponentUtil.java

@@ -39,6 +39,7 @@ import org.codelibs.fess.helper.JobHelper;
 import org.codelibs.fess.helper.KeyMatchHelper;
 import org.codelibs.fess.helper.LabelTypeHelper;
 import org.codelibs.fess.helper.PathMappingHelper;
+import org.codelibs.fess.helper.PermissionHelper;
 import org.codelibs.fess.helper.PopularWordHelper;
 import org.codelibs.fess.helper.ProcessHelper;
 import org.codelibs.fess.helper.QueryHelper;
@@ -63,6 +64,8 @@ import org.lastaflute.web.servlet.request.RequestManager;
 
 public final class ComponentUtil {
 
+    private static final String PERMISSION_HELPER = "permissionHelper";
+
     private static final String QUERY_PARSER = "queryParser";
 
     private static final String DOCUMENT_HELPER = "documentHelper";
@@ -331,6 +334,10 @@ public final class ComponentUtil {
         return getComponent(QUERY_PARSER);
     }
 
+    public static PermissionHelper getPermissionHelper() {
+        return getComponent(PERMISSION_HELPER);
+    }
+
     public static CrawlerClientFactory getCrawlerClientFactory() {
         return getComponent(CrawlerClientFactory.class);
     }

+ 2 - 0
src/main/resources/fess.xml

@@ -22,6 +22,8 @@
 	</component>
 	<component name="processHelper" class="org.codelibs.fess.helper.ProcessHelper">
 	</component>
+	<component name="permissionHelper" class="org.codelibs.fess.helper.PermissionHelper">
+	</component>
 	<component name="sambaHelper" class="org.codelibs.fess.helper.SambaHelper">
 	</component>
 	<component name="systemHelper" class="org.codelibs.fess.helper.SystemHelper">