Skip to content

Dev #82

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Dec 6, 2024
Merged

Dev #82

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion example/example-application/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<artifactId>springboot-example</artifactId>
<groupId>com.codingapi.springboot</groupId>
<version>3.3.27</version>
<version>3.3.30</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
2 changes: 1 addition & 1 deletion example/example-domain/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<artifactId>springboot-example</artifactId>
<groupId>com.codingapi.springboot</groupId>
<version>3.3.27</version>
<version>3.3.30</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
2 changes: 1 addition & 1 deletion example/example-infra-flow/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<artifactId>springboot-example</artifactId>
<groupId>com.codingapi.springboot</groupId>
<version>3.3.27</version>
<version>3.3.30</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
2 changes: 1 addition & 1 deletion example/example-infra-jpa/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<artifactId>springboot-example</artifactId>
<groupId>com.codingapi.springboot</groupId>
<version>3.3.27</version>
<version>3.3.30</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
2 changes: 1 addition & 1 deletion example/example-server/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<artifactId>springboot-example</artifactId>
<groupId>com.codingapi.springboot</groupId>
<version>3.3.27</version>
<version>3.3.30</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
2 changes: 1 addition & 1 deletion example/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
</parent>

<artifactId>springboot-example</artifactId>
<version>3.3.27</version>
<version>3.3.30</version>

<name>springboot-example</name>
<description>springboot-example project for Spring Boot</description>
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

<groupId>com.codingapi.springboot</groupId>
<artifactId>springboot-parent</artifactId>
<version>3.3.27</version>
<version>3.3.30</version>

<url>https://github.com/codingapi/springboot-framewrok</url>
<name>springboot-parent</name>
Expand Down
2 changes: 1 addition & 1 deletion springboot-starter-data-authorization/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>com.codingapi.springboot</groupId>
<artifactId>springboot-parent</artifactId>
<version>3.3.27</version>
<version>3.3.30</version>
</parent>

<artifactId>springboot-starter-data-authorization</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@

import com.codingapi.springboot.authorization.filter.DataAuthorizationFilter;
import com.codingapi.springboot.authorization.handler.Condition;
import com.codingapi.springboot.authorization.interceptor.SQLInterceptState;
import lombok.Getter;
import org.springframework.util.StringUtils;

import java.util.ArrayList;
import java.util.List;

/**
* 数据权限上下文
* 数据权限上下文
*/
public class DataAuthorizationContext {

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

public <T> T columnAuthorization(String tableName, String columnName, T value) {
for (DataAuthorizationFilter filter : filters) {
if (filter.supportColumnAuthorization(tableName, columnName, value)) {
return filter.columnAuthorization(tableName, columnName, value);
public void clearDataAuthorizationFilters(){
this.filters.clear();
}

public <T> T columnAuthorization(SQLInterceptState interceptState, String tableName, String columnName, T value) {
if (interceptState != null && interceptState.hasIntercept() && StringUtils.hasText(tableName)) {
for (DataAuthorizationFilter filter : filters) {
if (filter.supportColumnAuthorization(tableName, columnName, value)) {
return filter.columnAuthorization(tableName, columnName, value);
}
}
}
return value;
}

public Condition rowAuthorization(String tableName, String tableAlias) {
for (DataAuthorizationFilter filter : filters) {
if (filter.supportRowAuthorization(tableName, tableAlias)) {
return filter.rowAuthorization(tableName, tableAlias);
if(StringUtils.hasText(tableName) && StringUtils.hasText(tableAlias)) {
for (DataAuthorizationFilter filter : filters) {
if (filter.supportRowAuthorization(tableName, tableAlias)) {
return filter.rowAuthorization(tableName, tableAlias);
}
}
}
return null;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.codingapi.springboot.authorization.filter;

import com.codingapi.springboot.authorization.handler.Condition;

public class DefaultDataAuthorizationFilter implements DataAuthorizationFilter{

@Override
public <T> T columnAuthorization(String tableName, String columnName, T value) {
return value;
}

@Override
public Condition rowAuthorization(String tableName, String tableAlias) {
return null;
}

@Override
public boolean supportColumnAuthorization(String tableName, String columnName, Object value) {
return false;
}

@Override
public boolean supportRowAuthorization(String tableName, String tableAlias) {
return false;
}

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.codingapi.springboot.authorization.handler;

import com.codingapi.springboot.authorization.interceptor.SQLInterceptState;

import java.io.InputStream;
import java.io.Reader;
import java.math.BigDecimal;
Expand All @@ -12,40 +14,40 @@
*/
public interface ColumnHandler {

String getString(int columnIndex, String tableName, String columnName, String value);
String getString(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, String value);

boolean getBoolean(int columnIndex, String tableName, String columnName, boolean value);
boolean getBoolean(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, boolean value);

byte getByte(int columnIndex, String tableName, String columnName, byte value);
byte getByte(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, byte value);

short getShort(int columnIndex, String tableName, String columnName, short value);
short getShort(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, short value);

int getInt(int columnIndex, String tableName, String columnName, int value);
int getInt(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, int value);

long getLong(int columnIndex, String tableName, String columnName, long value);
long getLong(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, long value);

float getFloat(int columnIndex, String tableName, String columnName, float value);
float getFloat(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, float value);

double getDouble(int columnIndex, String tableName, String columnName, double value);
double getDouble(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, double value);

BigDecimal getBigDecimal(int columnIndex, String tableName, String columnName, BigDecimal value);
BigDecimal getBigDecimal(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, BigDecimal value);

byte[] getBytes(int columnIndex, String tableName, String columnName, byte[] value);
byte[] getBytes(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, byte[] value);

Date getDate(int columnIndex, String tableName, String columnName, Date value);
Date getDate(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, Date value);

Time getTime(int columnIndex, String tableName, String columnName, Time value);
Time getTime(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, Time value);

Timestamp getTimestamp(int columnIndex, String tableName, String columnName, Timestamp value);
Timestamp getTimestamp(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, Timestamp value);

InputStream getAsciiStream(int columnIndex, String tableName, String columnName, InputStream value);
InputStream getAsciiStream(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, InputStream value);

InputStream getUnicodeStream(int columnIndex, String tableName, String columnName, InputStream value);
InputStream getUnicodeStream(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, InputStream value);

InputStream getBinaryStream(int columnIndex, String tableName, String columnName, InputStream value);
InputStream getBinaryStream(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, InputStream value);

Object getObject(int columnIndex, String tableName, String columnName, Object value);
Object getObject(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, Object value);

Reader getCharacterStream(int columnIndex, String tableName, String columnName, Reader value);
Reader getCharacterStream(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, Reader value);

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.codingapi.springboot.authorization.handler;

import com.codingapi.springboot.authorization.interceptor.SQLInterceptState;
import lombok.Getter;
import lombok.Setter;

Expand All @@ -26,75 +27,75 @@ private ColumnHandlerContext() {
private ColumnHandler columnHandler;


public String getString(int columnIndex, String tableName, String columnName, String value) {
return columnHandler.getString(columnIndex, tableName, columnName, value);
public String getString(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, String value) {
return columnHandler.getString(interceptState,columnIndex, tableName, columnName, value);
}

public short getShort(int columnIndex, String tableName, String columnName, short value) {
return columnHandler.getShort(columnIndex, tableName, columnName, value);
public short getShort(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, short value) {
return columnHandler.getShort(interceptState,columnIndex, tableName, columnName, value);
}

public boolean getBoolean(int columnIndex, String tableName, String columnName, boolean value) {
return columnHandler.getBoolean(columnIndex, tableName, columnName, value);
public boolean getBoolean(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, boolean value) {
return columnHandler.getBoolean(interceptState,columnIndex, tableName, columnName, value);
}

public byte getByte(int columnIndex, String tableName, String columnName, byte value) {
return columnHandler.getByte(columnIndex, tableName, columnName, value);
public byte getByte(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, byte value) {
return columnHandler.getByte(interceptState,columnIndex, tableName, columnName, value);
}

public int getInt(int columnIndex, String tableName, String columnName, int value) {
return columnHandler.getInt(columnIndex, tableName, columnName, value);
public int getInt(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, int value) {
return columnHandler.getInt(interceptState,columnIndex, tableName, columnName, value);
}

public long getLong(int columnIndex, String tableName, String columnName, long value) {
return columnHandler.getLong(columnIndex, tableName, columnName, value);
public long getLong(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, long value) {
return columnHandler.getLong(interceptState,columnIndex, tableName, columnName, value);
}

public float getFloat(int columnIndex, String tableName, String columnName, float value) {
return columnHandler.getFloat(columnIndex, tableName, columnName, value);
public float getFloat(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, float value) {
return columnHandler.getFloat(interceptState,columnIndex, tableName, columnName, value);
}

public double getDouble(int columnIndex, String tableName, String columnName, double value) {
return columnHandler.getDouble(columnIndex, tableName, columnName, value);
public double getDouble(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, double value) {
return columnHandler.getDouble(interceptState,columnIndex, tableName, columnName, value);
}

public BigDecimal getBigDecimal(int columnIndex, String tableName, String columnName, BigDecimal value) {
return columnHandler.getBigDecimal(columnIndex, tableName, columnName, value);
public BigDecimal getBigDecimal(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, BigDecimal value) {
return columnHandler.getBigDecimal(interceptState,columnIndex, tableName, columnName, value);
}

public byte[] getBytes(int columnIndex, String tableName, String columnName, byte[] value) {
return columnHandler.getBytes(columnIndex, tableName, columnName, value);
public byte[] getBytes(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, byte[] value) {
return columnHandler.getBytes(interceptState,columnIndex, tableName, columnName, value);
}

public Timestamp getTimestamp(int columnIndex, String tableName, String columnName, Timestamp value) {
return columnHandler.getTimestamp(columnIndex, tableName, columnName, value);
public Timestamp getTimestamp(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, Timestamp value) {
return columnHandler.getTimestamp(interceptState,columnIndex, tableName, columnName, value);
}

public Time getTime(int columnIndex, String tableName, String columnName, Time value) {
return columnHandler.getTime(columnIndex, tableName, columnName, value);
public Time getTime(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, Time value) {
return columnHandler.getTime(interceptState,columnIndex, tableName, columnName, value);
}

public Date getDate(int columnIndex, String tableName, String columnName, Date value) {
return columnHandler.getDate(columnIndex, tableName, columnName, value);
public Date getDate(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, Date value) {
return columnHandler.getDate(interceptState,columnIndex, tableName, columnName, value);
}

public InputStream getAsciiStream(int columnIndex, String tableName, String columnName, InputStream value) {
return columnHandler.getAsciiStream(columnIndex, tableName, columnName, value);
public InputStream getAsciiStream(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, InputStream value) {
return columnHandler.getAsciiStream(interceptState,columnIndex, tableName, columnName, value);
}

public InputStream getUnicodeStream(int columnIndex, String tableName, String columnName, InputStream value) {
return columnHandler.getUnicodeStream(columnIndex, tableName, columnName, value);
public InputStream getUnicodeStream(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, InputStream value) {
return columnHandler.getUnicodeStream(interceptState,columnIndex, tableName, columnName, value);
}

public InputStream getBinaryStream(int columnIndex, String tableName, String columnName, InputStream value) {
return columnHandler.getBinaryStream(columnIndex, tableName, columnName, value);
public InputStream getBinaryStream(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, InputStream value) {
return columnHandler.getBinaryStream(interceptState,columnIndex, tableName, columnName, value);
}

public Object getObject(int columnIndex, String tableName, String columnName, Object value) {
return columnHandler.getObject(columnIndex, tableName, columnName, value);
public Object getObject(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, Object value) {
return columnHandler.getObject(interceptState,columnIndex, tableName, columnName, value);
}

public Reader getCharacterStream(int columnIndex, String tableName, String columnName, Reader value) {
return columnHandler.getCharacterStream(columnIndex, tableName, columnName, value);
public Reader getCharacterStream(SQLInterceptState interceptState, int columnIndex, String tableName, String columnName, Reader value) {
return columnHandler.getCharacterStream(interceptState,columnIndex, tableName, columnName, value);
}
}
Loading