Skip to content

Commit 3b5ccdb

Browse files
authored
Merge pull request #82 from codingapi/dev
Dev
2 parents 6506e92 + 4574df7 commit 3b5ccdb

File tree

40 files changed

+688
-244
lines changed

40 files changed

+688
-244
lines changed

example/example-application/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>springboot-example</artifactId>
77
<groupId>com.codingapi.springboot</groupId>
8-
<version>3.3.27</version>
8+
<version>3.3.30</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

example/example-domain/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>springboot-example</artifactId>
77
<groupId>com.codingapi.springboot</groupId>
8-
<version>3.3.27</version>
8+
<version>3.3.30</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

example/example-infra-flow/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>springboot-example</artifactId>
77
<groupId>com.codingapi.springboot</groupId>
8-
<version>3.3.27</version>
8+
<version>3.3.30</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

example/example-infra-jpa/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>springboot-example</artifactId>
77
<groupId>com.codingapi.springboot</groupId>
8-
<version>3.3.27</version>
8+
<version>3.3.30</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

example/example-server/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>springboot-example</artifactId>
77
<groupId>com.codingapi.springboot</groupId>
8-
<version>3.3.27</version>
8+
<version>3.3.30</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

example/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
</parent>
1818

1919
<artifactId>springboot-example</artifactId>
20-
<version>3.3.27</version>
20+
<version>3.3.30</version>
2121

2222
<name>springboot-example</name>
2323
<description>springboot-example project for Spring Boot</description>

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
<groupId>com.codingapi.springboot</groupId>
1717
<artifactId>springboot-parent</artifactId>
18-
<version>3.3.27</version>
18+
<version>3.3.30</version>
1919

2020
<url>https://github.com/codingapi/springboot-framewrok</url>
2121
<name>springboot-parent</name>

springboot-starter-data-authorization/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.codingapi.springboot</groupId>
88
<artifactId>springboot-parent</artifactId>
9-
<version>3.3.27</version>
9+
<version>3.3.30</version>
1010
</parent>
1111

1212
<artifactId>springboot-starter-data-authorization</artifactId>

springboot-starter-data-authorization/src/main/java/com/codingapi/springboot/authorization/DataAuthorizationContext.java

+18-8
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22

33
import com.codingapi.springboot.authorization.filter.DataAuthorizationFilter;
44
import com.codingapi.springboot.authorization.handler.Condition;
5+
import com.codingapi.springboot.authorization.interceptor.SQLInterceptState;
56
import lombok.Getter;
7+
import org.springframework.util.StringUtils;
68

79
import java.util.ArrayList;
810
import java.util.List;
911

1012
/**
11-
* 数据权限上下文
13+
* 数据权限上下文
1214
*/
1315
public class DataAuthorizationContext {
1416

@@ -25,19 +27,27 @@ public void addDataAuthorizationFilter(DataAuthorizationFilter filter) {
2527
this.filters.add(filter);
2628
}
2729

28-
public <T> T columnAuthorization(String tableName, String columnName, T value) {
29-
for (DataAuthorizationFilter filter : filters) {
30-
if (filter.supportColumnAuthorization(tableName, columnName, value)) {
31-
return filter.columnAuthorization(tableName, columnName, value);
30+
public void clearDataAuthorizationFilters(){
31+
this.filters.clear();
32+
}
33+
34+
public <T> T columnAuthorization(SQLInterceptState interceptState, String tableName, String columnName, T value) {
35+
if (interceptState != null && interceptState.hasIntercept() && StringUtils.hasText(tableName)) {
36+
for (DataAuthorizationFilter filter : filters) {
37+
if (filter.supportColumnAuthorization(tableName, columnName, value)) {
38+
return filter.columnAuthorization(tableName, columnName, value);
39+
}
3240
}
3341
}
3442
return value;
3543
}
3644

3745
public Condition rowAuthorization(String tableName, String tableAlias) {
38-
for (DataAuthorizationFilter filter : filters) {
39-
if (filter.supportRowAuthorization(tableName, tableAlias)) {
40-
return filter.rowAuthorization(tableName, tableAlias);
46+
if(StringUtils.hasText(tableName) && StringUtils.hasText(tableAlias)) {
47+
for (DataAuthorizationFilter filter : filters) {
48+
if (filter.supportRowAuthorization(tableName, tableAlias)) {
49+
return filter.rowAuthorization(tableName, tableAlias);
50+
}
4151
}
4252
}
4353
return null;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.codingapi.springboot.authorization.filter;
2+
3+
import com.codingapi.springboot.authorization.handler.Condition;
4+
5+
public class DefaultDataAuthorizationFilter implements DataAuthorizationFilter{
6+
7+
@Override
8+
public <T> T columnAuthorization(String tableName, String columnName, T value) {
9+
return value;
10+
}
11+
12+
@Override
13+
public Condition rowAuthorization(String tableName, String tableAlias) {
14+
return null;
15+
}
16+
17+
@Override
18+
public boolean supportColumnAuthorization(String tableName, String columnName, Object value) {
19+
return false;
20+
}
21+
22+
@Override
23+
public boolean supportRowAuthorization(String tableName, String tableAlias) {
24+
return false;
25+
}
26+
27+
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.codingapi.springboot.authorization.handler;
22

3+
import com.codingapi.springboot.authorization.interceptor.SQLInterceptState;
4+
35
import java.io.InputStream;
46
import java.io.Reader;
57
import java.math.BigDecimal;
@@ -12,40 +14,40 @@
1214
*/
1315
public interface ColumnHandler {
1416

15-
String getString(int columnIndex, String tableName, String columnName, String value);
17+
String getString(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, String value);
1618

17-
boolean getBoolean(int columnIndex, String tableName, String columnName, boolean value);
19+
boolean getBoolean(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, boolean value);
1820

19-
byte getByte(int columnIndex, String tableName, String columnName, byte value);
21+
byte getByte(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, byte value);
2022

21-
short getShort(int columnIndex, String tableName, String columnName, short value);
23+
short getShort(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, short value);
2224

23-
int getInt(int columnIndex, String tableName, String columnName, int value);
25+
int getInt(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, int value);
2426

25-
long getLong(int columnIndex, String tableName, String columnName, long value);
27+
long getLong(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, long value);
2628

27-
float getFloat(int columnIndex, String tableName, String columnName, float value);
29+
float getFloat(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, float value);
2830

29-
double getDouble(int columnIndex, String tableName, String columnName, double value);
31+
double getDouble(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, double value);
3032

31-
BigDecimal getBigDecimal(int columnIndex, String tableName, String columnName, BigDecimal value);
33+
BigDecimal getBigDecimal(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, BigDecimal value);
3234

33-
byte[] getBytes(int columnIndex, String tableName, String columnName, byte[] value);
35+
byte[] getBytes(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, byte[] value);
3436

35-
Date getDate(int columnIndex, String tableName, String columnName, Date value);
37+
Date getDate(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, Date value);
3638

37-
Time getTime(int columnIndex, String tableName, String columnName, Time value);
39+
Time getTime(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, Time value);
3840

39-
Timestamp getTimestamp(int columnIndex, String tableName, String columnName, Timestamp value);
41+
Timestamp getTimestamp(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, Timestamp value);
4042

41-
InputStream getAsciiStream(int columnIndex, String tableName, String columnName, InputStream value);
43+
InputStream getAsciiStream(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, InputStream value);
4244

43-
InputStream getUnicodeStream(int columnIndex, String tableName, String columnName, InputStream value);
45+
InputStream getUnicodeStream(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, InputStream value);
4446

45-
InputStream getBinaryStream(int columnIndex, String tableName, String columnName, InputStream value);
47+
InputStream getBinaryStream(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, InputStream value);
4648

47-
Object getObject(int columnIndex, String tableName, String columnName, Object value);
49+
Object getObject(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, Object value);
4850

49-
Reader getCharacterStream(int columnIndex, String tableName, String columnName, Reader value);
51+
Reader getCharacterStream(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, Reader value);
5052

5153
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.codingapi.springboot.authorization.handler;
22

3+
import com.codingapi.springboot.authorization.interceptor.SQLInterceptState;
34
import lombok.Getter;
45
import lombok.Setter;
56

@@ -26,75 +27,75 @@ private ColumnHandlerContext() {
2627
private ColumnHandler columnHandler;
2728

2829

29-
public String getString(int columnIndex, String tableName, String columnName, String value) {
30-
return columnHandler.getString(columnIndex, tableName, columnName, value);
30+
public String getString(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, String value) {
31+
return columnHandler.getString(interceptState,columnIndex, tableName, columnName, value);
3132
}
3233

33-
public short getShort(int columnIndex, String tableName, String columnName, short value) {
34-
return columnHandler.getShort(columnIndex, tableName, columnName, value);
34+
public short getShort(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, short value) {
35+
return columnHandler.getShort(interceptState,columnIndex, tableName, columnName, value);
3536
}
3637

37-
public boolean getBoolean(int columnIndex, String tableName, String columnName, boolean value) {
38-
return columnHandler.getBoolean(columnIndex, tableName, columnName, value);
38+
public boolean getBoolean(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, boolean value) {
39+
return columnHandler.getBoolean(interceptState,columnIndex, tableName, columnName, value);
3940
}
4041

41-
public byte getByte(int columnIndex, String tableName, String columnName, byte value) {
42-
return columnHandler.getByte(columnIndex, tableName, columnName, value);
42+
public byte getByte(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, byte value) {
43+
return columnHandler.getByte(interceptState,columnIndex, tableName, columnName, value);
4344
}
4445

45-
public int getInt(int columnIndex, String tableName, String columnName, int value) {
46-
return columnHandler.getInt(columnIndex, tableName, columnName, value);
46+
public int getInt(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, int value) {
47+
return columnHandler.getInt(interceptState,columnIndex, tableName, columnName, value);
4748
}
4849

49-
public long getLong(int columnIndex, String tableName, String columnName, long value) {
50-
return columnHandler.getLong(columnIndex, tableName, columnName, value);
50+
public long getLong(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, long value) {
51+
return columnHandler.getLong(interceptState,columnIndex, tableName, columnName, value);
5152
}
5253

53-
public float getFloat(int columnIndex, String tableName, String columnName, float value) {
54-
return columnHandler.getFloat(columnIndex, tableName, columnName, value);
54+
public float getFloat(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, float value) {
55+
return columnHandler.getFloat(interceptState,columnIndex, tableName, columnName, value);
5556
}
5657

57-
public double getDouble(int columnIndex, String tableName, String columnName, double value) {
58-
return columnHandler.getDouble(columnIndex, tableName, columnName, value);
58+
public double getDouble(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, double value) {
59+
return columnHandler.getDouble(interceptState,columnIndex, tableName, columnName, value);
5960
}
6061

61-
public BigDecimal getBigDecimal(int columnIndex, String tableName, String columnName, BigDecimal value) {
62-
return columnHandler.getBigDecimal(columnIndex, tableName, columnName, value);
62+
public BigDecimal getBigDecimal(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, BigDecimal value) {
63+
return columnHandler.getBigDecimal(interceptState,columnIndex, tableName, columnName, value);
6364
}
6465

65-
public byte[] getBytes(int columnIndex, String tableName, String columnName, byte[] value) {
66-
return columnHandler.getBytes(columnIndex, tableName, columnName, value);
66+
public byte[] getBytes(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, byte[] value) {
67+
return columnHandler.getBytes(interceptState,columnIndex, tableName, columnName, value);
6768
}
6869

69-
public Timestamp getTimestamp(int columnIndex, String tableName, String columnName, Timestamp value) {
70-
return columnHandler.getTimestamp(columnIndex, tableName, columnName, value);
70+
public Timestamp getTimestamp(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, Timestamp value) {
71+
return columnHandler.getTimestamp(interceptState,columnIndex, tableName, columnName, value);
7172
}
7273

73-
public Time getTime(int columnIndex, String tableName, String columnName, Time value) {
74-
return columnHandler.getTime(columnIndex, tableName, columnName, value);
74+
public Time getTime(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, Time value) {
75+
return columnHandler.getTime(interceptState,columnIndex, tableName, columnName, value);
7576
}
7677

77-
public Date getDate(int columnIndex, String tableName, String columnName, Date value) {
78-
return columnHandler.getDate(columnIndex, tableName, columnName, value);
78+
public Date getDate(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, Date value) {
79+
return columnHandler.getDate(interceptState,columnIndex, tableName, columnName, value);
7980
}
8081

81-
public InputStream getAsciiStream(int columnIndex, String tableName, String columnName, InputStream value) {
82-
return columnHandler.getAsciiStream(columnIndex, tableName, columnName, value);
82+
public InputStream getAsciiStream(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, InputStream value) {
83+
return columnHandler.getAsciiStream(interceptState,columnIndex, tableName, columnName, value);
8384
}
8485

85-
public InputStream getUnicodeStream(int columnIndex, String tableName, String columnName, InputStream value) {
86-
return columnHandler.getUnicodeStream(columnIndex, tableName, columnName, value);
86+
public InputStream getUnicodeStream(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, InputStream value) {
87+
return columnHandler.getUnicodeStream(interceptState,columnIndex, tableName, columnName, value);
8788
}
8889

89-
public InputStream getBinaryStream(int columnIndex, String tableName, String columnName, InputStream value) {
90-
return columnHandler.getBinaryStream(columnIndex, tableName, columnName, value);
90+
public InputStream getBinaryStream(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, InputStream value) {
91+
return columnHandler.getBinaryStream(interceptState,columnIndex, tableName, columnName, value);
9192
}
9293

93-
public Object getObject(int columnIndex, String tableName, String columnName, Object value) {
94-
return columnHandler.getObject(columnIndex, tableName, columnName, value);
94+
public Object getObject(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, Object value) {
95+
return columnHandler.getObject(interceptState,columnIndex, tableName, columnName, value);
9596
}
9697

97-
public Reader getCharacterStream(int columnIndex, String tableName, String columnName, Reader value) {
98-
return columnHandler.getCharacterStream(columnIndex, tableName, columnName, value);
98+
public Reader getCharacterStream(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, Reader value) {
99+
return columnHandler.getCharacterStream(interceptState,columnIndex, tableName, columnName, value);
99100
}
100101
}

0 commit comments

Comments
 (0)