mirror of
https://github.com/getrebuild/rebuild.git
synced 2024-09-20 23:45:55 +08:00
refactor: isPlainEntity
This commit is contained in:
parent
7111e054c1
commit
e75b11ee08
2
pom.xml
2
pom.xml
|
@ -127,7 +127,7 @@
|
|||
<dependency>
|
||||
<groupId>com.github.devezhao</groupId>
|
||||
<artifactId>persist4j</artifactId>
|
||||
<version>1.3.5</version>
|
||||
<version>1.4.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
|
|
|
@ -152,8 +152,6 @@ public final class Application {
|
|||
ApiGateway.registerApi((Class<? extends BaseApi>) c);
|
||||
}
|
||||
|
||||
if (devMode()) MetadataHelper.setPlainEntity(MetadataHelper.getEntity("Attachment"));
|
||||
|
||||
LOG.info("Rebuild Boot successful in " + (System.currentTimeMillis() - startAt) + " ms");
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
|
|
@ -13,7 +13,6 @@ import cn.devezhao.persist4j.dialect.FieldType;
|
|||
import cn.devezhao.persist4j.engine.ID;
|
||||
import cn.devezhao.persist4j.metadata.MetadataException;
|
||||
import com.rebuild.server.Application;
|
||||
import com.rebuild.server.RebuildException;
|
||||
import com.rebuild.server.metadata.entity.EasyMeta;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.logging.Log;
|
||||
|
@ -21,9 +20,7 @@ import org.apache.commons.logging.LogFactory;
|
|||
import org.springframework.util.Assert;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 实体元数据
|
||||
|
@ -387,31 +384,4 @@ public class MetadataHelper {
|
|||
}
|
||||
return checkAndWarnField(getEntity(entityName), fieldName);
|
||||
}
|
||||
|
||||
private static final Set<Integer> PLAIN_ENTITIES = new HashSet<>();
|
||||
/**
|
||||
* 指定实体具有和业务实体一样的特性(除权限以外(指定实体无权限字段))。
|
||||
*
|
||||
* @param entityCode
|
||||
* @return
|
||||
*/
|
||||
public static boolean isPlainEntity(int entityCode) {
|
||||
return PLAIN_ENTITIES.contains(entityCode);
|
||||
}
|
||||
|
||||
/**
|
||||
* WARN: 除非你清楚的知道此方法的意义,否则不要使用
|
||||
*
|
||||
* @param entity
|
||||
* @see #isPlainEntity(int)
|
||||
*/
|
||||
public static void setPlainEntity(Entity entity) {
|
||||
if (entity.containsField(EntityHelper.CreatedOn) && entity.containsField(EntityHelper.CreatedBy)
|
||||
&& entity.containsField(EntityHelper.ModifiedOn) && entity.containsField(EntityHelper.ModifiedBy)) {
|
||||
LOG.info("Set to plain entity : " + entity.getEntityCode());
|
||||
PLAIN_ENTITIES.add(entity.getEntityCode());
|
||||
} else {
|
||||
throw new RebuildException("Cannot be set as a PlainEntity : " + entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -69,9 +69,8 @@ public class MetadataSorter {
|
|||
Entity[] entities = MetadataHelper.getEntities();
|
||||
sortBaseMeta(entities);
|
||||
for (Entity e : entities) {
|
||||
if (EasyMeta.valueOf(e).isBuiltin()
|
||||
&& !MetadataHelper.hasPrivilegesField(e)
|
||||
&& !MetadataHelper.isPlainEntity(e.getEntityCode())) {
|
||||
EasyMeta easyEntity = EasyMeta.valueOf(e);
|
||||
if (easyEntity.isBuiltin() && !MetadataHelper.hasPrivilegesField(e) && !easyEntity.isPlainEntity()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ import org.springframework.util.Assert;
|
|||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 元数据元素封装
|
||||
* 元数据(Entity/Field)封装
|
||||
*
|
||||
* @author zhaofang123@gmail.com
|
||||
* @since 08/13/2018
|
||||
|
@ -45,12 +45,15 @@ import java.util.Set;
|
|||
public class EasyMeta implements BaseMeta {
|
||||
private static final long serialVersionUID = -6463919098111506968L;
|
||||
|
||||
private BaseMeta baseMeta;
|
||||
final private BaseMeta baseMeta;
|
||||
|
||||
public EasyMeta(BaseMeta baseMeta) {
|
||||
this.baseMeta = baseMeta;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return Returns Entity or Field
|
||||
*/
|
||||
public BaseMeta getBaseMeta() {
|
||||
return baseMeta;
|
||||
}
|
||||
|
@ -68,7 +71,7 @@ public class EasyMeta implements BaseMeta {
|
|||
/**
|
||||
* Use {@link #getLabel()}
|
||||
*/
|
||||
@SuppressWarnings("DeprecatedIsStillUsed")
|
||||
@SuppressWarnings("DeprecatedIsStillUsed")
|
||||
@Deprecated
|
||||
@Override
|
||||
public String getDescription() {
|
||||
|
@ -76,7 +79,7 @@ public class EasyMeta implements BaseMeta {
|
|||
}
|
||||
|
||||
@Override
|
||||
public String getExtraAttrs() {
|
||||
public JSONObject getExtraAttrs() {
|
||||
return baseMeta.getExtraAttrs();
|
||||
}
|
||||
|
||||
|
@ -115,7 +118,7 @@ public class EasyMeta implements BaseMeta {
|
|||
}
|
||||
|
||||
DisplayType dt;
|
||||
String dtInExtra = getExtraAttrsJson().getString("displayType");
|
||||
String dtInExtra = getExtraAttrs().getString("displayType");
|
||||
if (dtInExtra != null) {
|
||||
dt = DisplayType.valueOf(dtInExtra);
|
||||
} else {
|
||||
|
@ -125,7 +128,7 @@ public class EasyMeta implements BaseMeta {
|
|||
if (dt != null) {
|
||||
return dt;
|
||||
}
|
||||
throw new RebuildException("Unsupported field type : " + this.baseMeta);
|
||||
throw new RebuildException("Unsupported field type : " + baseMeta);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -140,7 +143,7 @@ public class EasyMeta implements BaseMeta {
|
|||
}
|
||||
|
||||
if (isField()) {
|
||||
Field field = (Field) this.baseMeta;
|
||||
Field field = (Field) baseMeta;
|
||||
if (MetadataHelper.isCommonsField(field)) {
|
||||
return true;
|
||||
} else if (getDisplayType() == DisplayType.REFERENCE) {
|
||||
|
@ -173,7 +176,7 @@ public class EasyMeta implements BaseMeta {
|
|||
if (ext != null) {
|
||||
return (String) ext[1];
|
||||
}
|
||||
return StringUtils.defaultIfBlank(getExtraAttrsJson().getString("comments"), "系统内建");
|
||||
return StringUtils.defaultIfBlank(getExtraAttrs().getString("comments"), "系统内建");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -191,7 +194,7 @@ public class EasyMeta implements BaseMeta {
|
|||
if (StringUtils.isNotBlank(customIcon)) {
|
||||
return customIcon;
|
||||
}
|
||||
return StringUtils.defaultIfBlank(getExtraAttrsJson().getString("icon"), "texture");
|
||||
return StringUtils.defaultIfBlank(getExtraAttrs().getString("icon"), "texture");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -204,7 +207,7 @@ public class EasyMeta implements BaseMeta {
|
|||
Assert.isTrue(isField(), "Field supports only");
|
||||
Object[] ext = getMetaExt();
|
||||
if (ext == null || StringUtils.isBlank((String) ext[3])) {
|
||||
JSONObject extConfig = getExtraAttrsJson().getJSONObject("extConfig");
|
||||
JSONObject extConfig = getExtraAttrs().getJSONObject("extConfig");
|
||||
return extConfig == null ? JSONUtils.EMPTY_OBJECT : extConfig;
|
||||
}
|
||||
return JSON.parseObject((String) ext[3]);
|
||||
|
@ -241,6 +244,14 @@ public class EasyMeta implements BaseMeta {
|
|||
return !set.contains(field.getName());
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定实体具有和业务实体一样的特性(除权限以外(指定实体无权限字段))。
|
||||
* @return
|
||||
*/
|
||||
public boolean isPlainEntity() {
|
||||
return !isField() && getExtraAttrs().getBooleanValue("plainEntity");
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
|
@ -261,14 +272,6 @@ public class EasyMeta implements BaseMeta {
|
|||
return ext;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
private JSONObject getExtraAttrsJson() {
|
||||
return StringUtils.isBlank(getExtraAttrs())
|
||||
? JSONUtils.EMPTY_OBJECT : JSON.parseObject(getExtraAttrs());
|
||||
}
|
||||
|
||||
/**
|
||||
* 将字段类型转成 DisplayType
|
||||
*
|
||||
|
@ -309,7 +312,7 @@ public class EasyMeta implements BaseMeta {
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "EASY#" + this.baseMeta.toString();
|
||||
return "EASY#" + baseMeta.toString();
|
||||
}
|
||||
|
||||
// --
|
||||
|
|
|
@ -19,6 +19,7 @@ import cn.devezhao.persist4j.Field;
|
|||
import cn.devezhao.persist4j.Filter;
|
||||
import com.rebuild.server.metadata.EntityHelper;
|
||||
import com.rebuild.server.metadata.MetadataHelper;
|
||||
import com.rebuild.server.metadata.entity.EasyMeta;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
import java.util.HashSet;
|
||||
|
@ -88,8 +89,7 @@ public class EntityQueryFilter implements Filter, QueryFilter {
|
|||
Entity useMaster = null;
|
||||
if (!EntityHelper.hasPrivilegesField(entity)) {
|
||||
// NOTE BIZZ 实体全部用户可见
|
||||
if (MetadataHelper.isBizzEntity(entity.getEntityCode())
|
||||
|| MetadataHelper.isPlainEntity(entity.getEntityCode())) {
|
||||
if (MetadataHelper.isBizzEntity(entity.getEntityCode()) || EasyMeta.valueOf(entity).isPlainEntity()) {
|
||||
return ALLOWED.evaluate(null);
|
||||
} else if (entity.getMasterEntity() != null) {
|
||||
useMaster = entity.getMasterEntity();
|
||||
|
|
|
@ -22,6 +22,7 @@ import com.rebuild.server.Application;
|
|||
import com.rebuild.server.helper.cache.NoRecordFoundException;
|
||||
import com.rebuild.server.helper.cache.RecordOwningCache;
|
||||
import com.rebuild.server.metadata.MetadataHelper;
|
||||
import com.rebuild.server.metadata.entity.EasyMeta;
|
||||
import com.rebuild.server.service.EntityService;
|
||||
import com.rebuild.server.service.bizz.RoleService;
|
||||
import com.rebuild.server.service.bizz.UserService;
|
||||
|
@ -207,7 +208,7 @@ public class SecurityManager {
|
|||
*/
|
||||
public boolean allow(ID user, int entity, Permission action) {
|
||||
// CRUD and PlainEntity
|
||||
if (action.getMask() <= BizzPermission.READ.getMask() && MetadataHelper.isPlainEntity(entity)) {
|
||||
if (action.getMask() <= BizzPermission.READ.getMask() && EasyMeta.valueOf(entity).isPlainEntity()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -255,7 +256,7 @@ public class SecurityManager {
|
|||
*/
|
||||
public boolean allow(ID user, ID target, Permission action) {
|
||||
// CRUD and PlainEntity
|
||||
if (action.getMask() <= BizzPermission.READ.getMask() && MetadataHelper.isPlainEntity(target.getEntityCode())) {
|
||||
if (action.getMask() <= BizzPermission.READ.getMask() && EasyMeta.valueOf(target.getEntityCode()).isPlainEntity()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ public abstract class BaseEntityControll extends BasePageControll {
|
|||
actionMap.put(act.getName(), priv.allowed(act));
|
||||
}
|
||||
mv.getModel().put("entityPrivileges", JSON.toJSONString(actionMap));
|
||||
} else if (MetadataHelper.isPlainEntity(entityMeta.getEntityCode())) {
|
||||
} else if (EasyMeta.valueOf(entityMeta).isPlainEntity()) {
|
||||
mv.getModel().put("entityPrivileges", PLAIN_ENTITY_PRIVILEGES);
|
||||
} else {
|
||||
mv.getModel().put("entityPrivileges", JSONUtils.EMPTY_OBJECT_STR);
|
||||
|
@ -96,7 +96,7 @@ public abstract class BaseEntityControll extends BasePageControll {
|
|||
actionMap.put(act.getName(), Application.getSecurityManager().allow(user, record, act));
|
||||
}
|
||||
mv.getModel().put("entityPrivileges", JSON.toJSONString(actionMap));
|
||||
} else if (MetadataHelper.isPlainEntity(entity.getEntityCode())) {
|
||||
} else if (EasyMeta.valueOf(entity).isPlainEntity()) {
|
||||
mv.getModel().put("entityPrivileges", PLAIN_ENTITY_PRIVILEGES);
|
||||
} else {
|
||||
mv.getModel().put("entityPrivileges", JSONUtils.EMPTY_OBJECT_STR);
|
||||
|
|
|
@ -29,6 +29,7 @@ import com.rebuild.server.helper.datalist.DataListControl;
|
|||
import com.rebuild.server.helper.datalist.DefaultDataListControl;
|
||||
import com.rebuild.server.metadata.EntityHelper;
|
||||
import com.rebuild.server.metadata.MetadataHelper;
|
||||
import com.rebuild.server.metadata.entity.EasyMeta;
|
||||
import com.rebuild.server.service.bizz.privileges.ZeroEntry;
|
||||
import com.rebuild.web.BaseEntityControll;
|
||||
import org.springframework.http.HttpStatus;
|
||||
|
@ -118,7 +119,7 @@ public class GeneralDataListControll extends BaseEntityControll {
|
|||
url = "../feeds/home#s=" + id;
|
||||
} else if (entity.getEntityCode() == EntityHelper.User) {
|
||||
url = MessageFormat.format("../admin/bizuser/users#!/View/{0}/{1}", entity.getName(), id);
|
||||
} else if (MetadataHelper.hasPrivilegesField(entity) || MetadataHelper.isPlainEntity(id.getEntityCode())) {
|
||||
} else if (MetadataHelper.hasPrivilegesField(entity) || EasyMeta.valueOf(id.getEntityCode()).isPlainEntity()) {
|
||||
url = MessageFormat.format("{0}/list#!/View/{0}/{1}", entity.getName(), id);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue