mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-07 17:18:24 +08:00
添加权限处理统一入口
This commit is contained in:
parent
944e04eeac
commit
978151a53a
@ -91,4 +91,32 @@ public interface IDialect {
|
|||||||
|
|
||||||
String forSelectEntityListByIds(TableInfo tableInfo, Object[] primaryValues);
|
String forSelectEntityListByIds(TableInfo tableInfo, Object[] primaryValues);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 权限处理
|
||||||
|
*
|
||||||
|
* @param queryWrapper queryWrapper
|
||||||
|
* @param operateType 操作类型
|
||||||
|
*/
|
||||||
|
default void prepareAuth(QueryWrapper queryWrapper, OperateType operateType) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 权限处理
|
||||||
|
*
|
||||||
|
* @param schema schema
|
||||||
|
* @param tableName 表名
|
||||||
|
* @param sql sql
|
||||||
|
* @param operateType 操作类型
|
||||||
|
*/
|
||||||
|
default void prepareAuth(String schema, String tableName, StringBuilder sql, OperateType operateType) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 权限处理
|
||||||
|
* @param tableInfo tableInfo
|
||||||
|
* @param sql sql
|
||||||
|
* @param operateType 操作类型
|
||||||
|
*/
|
||||||
|
default void prepareAuth(TableInfo tableInfo, StringBuilder sql, OperateType operateType) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,22 @@
|
|||||||
|
package com.mybatisflex.core.dialect;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作类型
|
||||||
|
*/
|
||||||
|
public enum OperateType {
|
||||||
|
/**
|
||||||
|
* 查询
|
||||||
|
*/
|
||||||
|
SELECT,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新
|
||||||
|
*/
|
||||||
|
UPDATE,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除
|
||||||
|
*/
|
||||||
|
DELETE,
|
||||||
|
;
|
||||||
|
}
|
||||||
@ -18,6 +18,7 @@ package com.mybatisflex.core.dialect.impl;
|
|||||||
import com.mybatisflex.core.dialect.IDialect;
|
import com.mybatisflex.core.dialect.IDialect;
|
||||||
import com.mybatisflex.core.dialect.KeywordWrap;
|
import com.mybatisflex.core.dialect.KeywordWrap;
|
||||||
import com.mybatisflex.core.dialect.LimitOffsetProcessor;
|
import com.mybatisflex.core.dialect.LimitOffsetProcessor;
|
||||||
|
import com.mybatisflex.core.dialect.OperateType;
|
||||||
import com.mybatisflex.core.exception.FlexExceptions;
|
import com.mybatisflex.core.exception.FlexExceptions;
|
||||||
import com.mybatisflex.core.exception.locale.LocalizedFormats;
|
import com.mybatisflex.core.exception.locale.LocalizedFormats;
|
||||||
import com.mybatisflex.core.logicdelete.LogicDeleteManager;
|
import com.mybatisflex.core.logicdelete.LogicDeleteManager;
|
||||||
@ -164,6 +165,7 @@ public class CommonsDialectImpl implements IDialect {
|
|||||||
}
|
}
|
||||||
sql.append(wrap(primaryKeys[i])).append(EQUALS_PLACEHOLDER);
|
sql.append(wrap(primaryKeys[i])).append(EQUALS_PLACEHOLDER);
|
||||||
}
|
}
|
||||||
|
prepareAuth(schema, table, sql, OperateType.DELETE);
|
||||||
return sql.toString();
|
return sql.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,11 +207,13 @@ public class CommonsDialectImpl implements IDialect {
|
|||||||
sql.append(wrap(primaryKeys[0])).append(EQUALS_PLACEHOLDER);
|
sql.append(wrap(primaryKeys[0])).append(EQUALS_PLACEHOLDER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
prepareAuth(schema, table, sql, OperateType.DELETE);
|
||||||
return sql.toString();
|
return sql.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String forDeleteByQuery(QueryWrapper queryWrapper) {
|
public String forDeleteByQuery(QueryWrapper queryWrapper) {
|
||||||
|
prepareAuth(queryWrapper, OperateType.DELETE);
|
||||||
return buildDeleteSql(queryWrapper);
|
return buildDeleteSql(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -252,12 +256,13 @@ public class CommonsDialectImpl implements IDialect {
|
|||||||
}
|
}
|
||||||
sql.append(wrap(primaryKeys[i])).append(EQUALS_PLACEHOLDER);
|
sql.append(wrap(primaryKeys[i])).append(EQUALS_PLACEHOLDER);
|
||||||
}
|
}
|
||||||
|
prepareAuth(schema, table, sql, OperateType.UPDATE);
|
||||||
return sql.toString();
|
return sql.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String forUpdateByQuery(QueryWrapper queryWrapper, Row row) {
|
public String forUpdateByQuery(QueryWrapper queryWrapper, Row row) {
|
||||||
|
prepareAuth(queryWrapper, OperateType.UPDATE);
|
||||||
StringBuilder sqlBuilder = new StringBuilder();
|
StringBuilder sqlBuilder = new StringBuilder();
|
||||||
|
|
||||||
Set<String> modifyAttrs = RowCPI.getModifyAttrs(row);
|
Set<String> modifyAttrs = RowCPI.getModifyAttrs(row);
|
||||||
@ -332,11 +337,13 @@ public class CommonsDialectImpl implements IDialect {
|
|||||||
}
|
}
|
||||||
sql.append(wrap(primaryKeys[i])).append(EQUALS_PLACEHOLDER);
|
sql.append(wrap(primaryKeys[i])).append(EQUALS_PLACEHOLDER);
|
||||||
}
|
}
|
||||||
|
prepareAuth(schema, table, sql, OperateType.SELECT);
|
||||||
return sql.toString();
|
return sql.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String forSelectByQuery(QueryWrapper queryWrapper) {
|
public String forSelectByQuery(QueryWrapper queryWrapper) {
|
||||||
|
prepareAuth(queryWrapper, OperateType.SELECT);
|
||||||
return buildSelectSql(queryWrapper);
|
return buildSelectSql(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -664,6 +671,7 @@ public class CommonsDialectImpl implements IDialect {
|
|||||||
|
|
||||||
//租户ID
|
//租户ID
|
||||||
tableInfo.buildTenantCondition(sql, tenantIdArgs, this);
|
tableInfo.buildTenantCondition(sql, tenantIdArgs, this);
|
||||||
|
prepareAuth(tableInfo, sql, OperateType.DELETE);
|
||||||
return sql.toString();
|
return sql.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -723,7 +731,7 @@ public class CommonsDialectImpl implements IDialect {
|
|||||||
sql.append(BRACKET_RIGHT).append(AND).append(buildLogicNormalCondition(logicDeleteColumn, tableInfo));
|
sql.append(BRACKET_RIGHT).append(AND).append(buildLogicNormalCondition(logicDeleteColumn, tableInfo));
|
||||||
|
|
||||||
tableInfo.buildTenantCondition(sql, tenantIdArgs, this);
|
tableInfo.buildTenantCondition(sql, tenantIdArgs, this);
|
||||||
|
prepareAuth(tableInfo, sql, OperateType.DELETE);
|
||||||
return sql.toString();
|
return sql.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -738,6 +746,7 @@ public class CommonsDialectImpl implements IDialect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
prepareAuth(queryWrapper, OperateType.DELETE);
|
||||||
//逻辑删除
|
//逻辑删除
|
||||||
List<QueryTable> queryTables = CPI.getQueryTables(queryWrapper);
|
List<QueryTable> queryTables = CPI.getQueryTables(queryWrapper);
|
||||||
List<QueryTable> joinTables = CPI.getJoinTables(queryWrapper);
|
List<QueryTable> joinTables = CPI.getJoinTables(queryWrapper);
|
||||||
@ -823,12 +832,13 @@ public class CommonsDialectImpl implements IDialect {
|
|||||||
sql.append(AND).append(wrap(versionColumn)).append(EQUALS).append(versionValue);
|
sql.append(AND).append(wrap(versionColumn)).append(EQUALS).append(versionValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
prepareAuth(tableInfo, sql, OperateType.UPDATE);
|
||||||
return sql.toString();
|
return sql.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String forUpdateEntityByQuery(TableInfo tableInfo, Object entity, boolean ignoreNulls, QueryWrapper queryWrapper) {
|
public String forUpdateEntityByQuery(TableInfo tableInfo, Object entity, boolean ignoreNulls, QueryWrapper queryWrapper) {
|
||||||
|
prepareAuth(queryWrapper, OperateType.UPDATE);
|
||||||
StringBuilder sqlBuilder = new StringBuilder();
|
StringBuilder sqlBuilder = new StringBuilder();
|
||||||
|
|
||||||
Set<String> updateColumns = tableInfo.obtainUpdateColumns(entity, ignoreNulls, true);
|
Set<String> updateColumns = tableInfo.obtainUpdateColumns(entity, ignoreNulls, true);
|
||||||
@ -916,7 +926,7 @@ public class CommonsDialectImpl implements IDialect {
|
|||||||
//多租户
|
//多租户
|
||||||
Object[] tenantIdArgs = tableInfo.buildTenantIdArgs();
|
Object[] tenantIdArgs = tableInfo.buildTenantIdArgs();
|
||||||
tableInfo.buildTenantCondition(sql, tenantIdArgs, this);
|
tableInfo.buildTenantCondition(sql, tenantIdArgs, this);
|
||||||
|
prepareAuth(tableInfo, sql, OperateType.SELECT);
|
||||||
return sql.toString();
|
return sql.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -972,7 +982,7 @@ public class CommonsDialectImpl implements IDialect {
|
|||||||
|
|
||||||
//多租户
|
//多租户
|
||||||
tableInfo.buildTenantCondition(sql, tenantIdArgs, this);
|
tableInfo.buildTenantCondition(sql, tenantIdArgs, this);
|
||||||
|
prepareAuth(tableInfo, sql, OperateType.SELECT);
|
||||||
return sql.toString();
|
return sql.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user