#494 change to PermissionHelper
This commit is contained in:
parent
22f840df13
commit
35dd5d95b1
8 changed files with 73 additions and 39 deletions
|
@ -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;
|
||||
});
|
||||
|
|
|
@ -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;
|
||||
});
|
||||
|
|
|
@ -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;
|
||||
});
|
||||
|
|
|
@ -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;
|
||||
});
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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]);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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">
|
||||
|
|
Loading…
Add table
Reference in a new issue