| | |
| | | @Before("dataScopePointCut()") |
| | | public void doBefore(JoinPoint point) throws Throwable |
| | | { |
| | | clearDataScope(point); |
| | | handleDataScope(point); |
| | | } |
| | | |
| | |
| | | |
| | | if (StrUtil.isNotBlank(sqlString.toString())) |
| | | { |
| | | Object params = joinPoint.getArgs()[0]; |
| | | if (Validator.isNotNull(params)) |
| | | { |
| | | try { |
| | | Method getParams = params.getClass().getDeclaredMethod("getParams", null); |
| | | Map<String, Object> invoke = (Map<String, Object>) getParams.invoke(params, null); |
| | | invoke.put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")"); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | putDataScope(joinPoint, " AND (" + sqlString.substring(4) + ")"); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 拼接权限sql前先清空params.dataScope参数防止注入 |
| | | */ |
| | | private void clearDataScope(final JoinPoint joinPoint) |
| | | { |
| | | Object params = joinPoint.getArgs()[0]; |
| | | if (Validator.isNotNull(params)) |
| | | { |
| | | putDataScope(joinPoint, ""); |
| | | } |
| | | } |
| | | |
| | | private static void putDataScope(JoinPoint joinPoint, String sql) { |
| | | Object params = joinPoint.getArgs()[0]; |
| | | if (Validator.isNotNull(params)) |
| | | { |
| | | try { |
| | | Method getParams = params.getClass().getDeclaredMethod("getParams", null); |
| | | Map<String, Object> invoke = (Map<String, Object>) getParams.invoke(params, null); |
| | | invoke.put(DATA_SCOPE, sql); |
| | | } catch (Exception e) { |
| | | // 方法未找到 不处理 |
| | | } |
| | | } |
| | | } |
| | | } |