fix: 枚举值接口支持行权限
This commit is contained in:
parent
2a4f3a760c
commit
47f9ca83bc
@ -16,7 +16,7 @@ import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
public class F2CLinkFilter extends AnonymousFilter {
|
||||
|
||||
private static final String LINK_TOKEN_KEY = "LINK-PWD-TOKEN";
|
||||
public static final String LINK_TOKEN_KEY = "LINK-PWD-TOKEN";
|
||||
|
||||
@Override
|
||||
protected boolean onPreHandle(ServletRequest request, ServletResponse response, Object mappedValue) {
|
||||
|
||||
@ -50,7 +50,6 @@ public class ShiroServiceImpl implements ShiroService {
|
||||
filterChainDefinitionMap.put("/api/link/validate**", ANON);
|
||||
filterChainDefinitionMap.put("/api/map/areaEntitys/**", ANON);
|
||||
filterChainDefinitionMap.put("/dataset/field/fieldValues/**", ANON);
|
||||
filterChainDefinitionMap.put("/dataset/field/multFieldValues", ANON);
|
||||
filterChainDefinitionMap.put("/linkJump/queryPanelJumpInfo/**", ANON);
|
||||
|
||||
filterChainDefinitionMap.put("/tempMobileLink/**", ANON);
|
||||
@ -84,6 +83,7 @@ public class ShiroServiceImpl implements ShiroService {
|
||||
|
||||
filterChainDefinitionMap.put("/api/link/resourceDetail/**", "link");
|
||||
filterChainDefinitionMap.put("/api/link/viewDetail/**", "link");
|
||||
filterChainDefinitionMap.put("/dataset/field/linkMultFieldValues", ANON);
|
||||
|
||||
filterChainDefinitionMap.put("/**", "authc");
|
||||
|
||||
|
||||
@ -1,7 +1,11 @@
|
||||
package io.dataease.controller.dataset;
|
||||
|
||||
import com.auth0.jwt.JWT;
|
||||
import com.auth0.jwt.interfaces.DecodedJWT;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||
import io.dataease.auth.filter.F2CLinkFilter;
|
||||
import io.dataease.base.domain.DatasetTableField;
|
||||
import io.dataease.controller.request.dataset.MultFieldValuesRequest;
|
||||
import io.dataease.controller.response.DatasetTableField4Type;
|
||||
import io.dataease.service.dataset.DataSetFieldService;
|
||||
import io.dataease.service.dataset.DataSetTableFieldsService;
|
||||
@ -10,8 +14,11 @@ import io.swagger.annotations.ApiOperation;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
@ -75,18 +82,23 @@ public class DataSetTableFieldController {
|
||||
dataSetTableFieldsService.delete(id);
|
||||
}
|
||||
|
||||
@ApiOperation("值枚举")
|
||||
@PostMapping("fieldValues/{fieldId}")
|
||||
public List<Object> fieldValues(@PathVariable String fieldId) throws Exception {
|
||||
return dataSetFieldService.fieldValues(fieldId);
|
||||
@ApiOperation("多字段值枚举")
|
||||
@PostMapping("linkMultFieldValues")
|
||||
public List<Object> linkMultFieldValues(@RequestBody MultFieldValuesRequest multFieldValuesRequest) throws Exception {
|
||||
HttpServletRequest request =((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
||||
String linkToken = request.getHeader(F2CLinkFilter.LINK_TOKEN_KEY);
|
||||
DecodedJWT jwt = JWT.decode(linkToken);
|
||||
Long userId = jwt.getClaim("userId").asLong();
|
||||
multFieldValuesRequest.setUserId(userId);
|
||||
return multFieldValues(multFieldValuesRequest);
|
||||
}
|
||||
|
||||
@ApiOperation("多字段值枚举")
|
||||
@PostMapping("multFieldValues")
|
||||
public List<Object> multFieldValues(@RequestBody List<String> fieldIds) throws Exception {
|
||||
public List<Object> multFieldValues(@RequestBody MultFieldValuesRequest multFieldValuesRequest) throws Exception {
|
||||
List<Object> results = new ArrayList<>();
|
||||
for (String fieldId : fieldIds) {
|
||||
results.addAll(dataSetFieldService.fieldValues(fieldId));
|
||||
for (String fieldId : multFieldValuesRequest.getFieldIds()) {
|
||||
results.addAll(dataSetFieldService.fieldValues(fieldId, multFieldValuesRequest.getUserId()));
|
||||
}
|
||||
ArrayList<Object> list = results.stream().collect(
|
||||
Collectors.collectingAndThen(
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
package io.dataease.controller.panel.server;
|
||||
|
||||
|
||||
import com.auth0.jwt.JWT;
|
||||
import com.auth0.jwt.interfaces.DecodedJWT;
|
||||
import io.dataease.auth.filter.F2CLinkFilter;
|
||||
import io.dataease.base.domain.PanelLink;
|
||||
import io.dataease.controller.panel.api.LinkApi;
|
||||
import io.dataease.controller.request.chart.ChartExtRequest;
|
||||
@ -14,8 +17,11 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.net.URLDecoder;
|
||||
import java.util.Map;
|
||||
|
||||
@ -91,6 +97,11 @@ public class LinkServer implements LinkApi {
|
||||
|
||||
@Override
|
||||
public Object viewDetail(String viewId, ChartExtRequest requestList) throws Exception {
|
||||
HttpServletRequest request =((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
||||
String linkToken = request.getHeader(F2CLinkFilter.LINK_TOKEN_KEY);
|
||||
DecodedJWT jwt = JWT.decode(linkToken);
|
||||
Long userId = jwt.getClaim("userId").asLong();
|
||||
requestList.setUser(userId);
|
||||
return chartViewService.getData(viewId, requestList);
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,12 @@
|
||||
package io.dataease.controller.request.dataset;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class MultFieldValuesRequest {
|
||||
List<String> fieldIds = new ArrayList<>();
|
||||
Long userId= null;
|
||||
}
|
||||
@ -5,5 +5,5 @@ import java.util.List;
|
||||
|
||||
public interface DataSetFieldService {
|
||||
|
||||
List<Object> fieldValues(String fieldId) throws Exception;
|
||||
List<Object> fieldValues(String fieldId, Long userId) throws Exception;
|
||||
}
|
||||
|
||||
@ -456,17 +456,18 @@ public class DataSetTableService {
|
||||
}
|
||||
RowPermissionService rowPermissionService = SpringContextUtil.getBean(RowPermissionService.class);
|
||||
CurrentUserDto user = AuthUtils.getUser();
|
||||
List<Long> roleIds;
|
||||
Long deptId;
|
||||
List<Long> roleIds = new ArrayList<>();
|
||||
Long deptId = null;
|
||||
|
||||
if(user == null){
|
||||
SysUserEntity userEntity = authUserService.getUserById(userId);
|
||||
if(userEntity.getIsAdmin()){
|
||||
return datasetRowPermissions;
|
||||
}
|
||||
deptId = userEntity.getDeptId();
|
||||
roleIds = authUserService.roles(userId).stream().map(r -> Long.valueOf(r)).collect(Collectors.toList());
|
||||
}else {
|
||||
if(user == null && userId == null ){
|
||||
return datasetRowPermissions;
|
||||
}
|
||||
|
||||
if(user != null && userId != null ){
|
||||
return datasetRowPermissions;
|
||||
}
|
||||
|
||||
if(user != null){
|
||||
if(user.getIsAdmin()){
|
||||
return datasetRowPermissions;
|
||||
}
|
||||
@ -474,7 +475,16 @@ public class DataSetTableService {
|
||||
deptId = user.getDeptId();
|
||||
roleIds = user.getRoles().stream().map(CurrentRoleDto::getId).collect(Collectors.toList());
|
||||
}
|
||||
userId = user != null ? user.getUserId() : userId;
|
||||
|
||||
if(userId != null){
|
||||
SysUserEntity userEntity = authUserService.getUserById(userId);
|
||||
if(userEntity.getIsAdmin()){
|
||||
return datasetRowPermissions;
|
||||
}
|
||||
deptId = userEntity.getDeptId();
|
||||
roleIds = authUserService.roles(userId).stream().map(r -> Long.valueOf(r)).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
DataSetRowPermissionsDTO dataSetRowPermissionsDTO = new DataSetRowPermissionsDTO();
|
||||
dataSetRowPermissionsDTO.setDatasetId(datasetId);
|
||||
|
||||
@ -42,7 +42,7 @@ public class DirectFieldService implements DataSetFieldService {
|
||||
private DataSetTableUnionService dataSetTableUnionService;
|
||||
|
||||
@Override
|
||||
public List<Object> fieldValues(String fieldId) throws Exception{
|
||||
public List<Object> fieldValues(String fieldId, Long userId) throws Exception{
|
||||
List<DatasetTableField> list = dataSetTableFieldsService.getListByIds(new ArrayList<String>() {{
|
||||
add(fieldId);
|
||||
}});
|
||||
@ -58,7 +58,7 @@ public class DirectFieldService implements DataSetFieldService {
|
||||
|
||||
DatasetTableField datasetTableField = DatasetTableField.builder().tableId(tableId).checked(Boolean.TRUE).build();
|
||||
List<DatasetTableField> fields = dataSetTableFieldsService.list(datasetTableField);
|
||||
List<ChartFieldCustomFilterDTO> customFilter = dataSetTableService.getCustomFilters(fields, datasetTable, null);
|
||||
List<ChartFieldCustomFilterDTO> customFilter = dataSetTableService.getCustomFilters(fields, datasetTable, userId);
|
||||
|
||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||
DatasourceProvider datasourceProvider = null;
|
||||
|
||||
@ -146,6 +146,15 @@ export function multFieldValues(data) {
|
||||
})
|
||||
}
|
||||
|
||||
export function linkMultFieldValues(data) {
|
||||
return request({
|
||||
url: '/dataset/field/linkMultFieldValues',
|
||||
method: 'post',
|
||||
loading: true,
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function isKettleRunning(showLoading = true) {
|
||||
return request({
|
||||
url: '/dataset/group/isKettleRunning',
|
||||
|
||||
@ -28,8 +28,9 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { multFieldValues } from '@/api/dataset/dataset'
|
||||
import { multFieldValues, linkMultFieldValues} from '@/api/dataset/dataset'
|
||||
import bus from '@/utils/bus'
|
||||
import {getLinkToken, getToken} from "@/utils/auth";
|
||||
export default {
|
||||
|
||||
props: {
|
||||
@ -85,9 +86,16 @@ export default {
|
||||
'element.options.attrs.fieldId': function(value, old) {
|
||||
if (typeof value === 'undefined' || value === old) return
|
||||
this.datas = []
|
||||
|
||||
let method = multFieldValues
|
||||
const token = this.$store.getters.token || getToken()
|
||||
const linkToken = this.$store.getters.linkToken || getLinkToken()
|
||||
if (!token && linkToken) {
|
||||
method = linkMultFieldValues
|
||||
}
|
||||
this.element.options.attrs.fieldId &&
|
||||
this.element.options.attrs.fieldId.length > 0 &&
|
||||
multFieldValues(this.element.options.attrs.fieldId.split(',')).then(res => {
|
||||
method({fieldIds: this.element.options.attrs.fieldId.split(',')}).then(res => {
|
||||
this.datas = this.optionDatas(res.data)
|
||||
}) || (this.element.options.value = '')
|
||||
},
|
||||
@ -124,7 +132,13 @@ export default {
|
||||
this.value = this.fillValueDerfault()
|
||||
this.datas = []
|
||||
if (this.element.options.attrs.fieldId) {
|
||||
multFieldValues(this.element.options.attrs.fieldId.split(',')).then(res => {
|
||||
let method = multFieldValues
|
||||
const token = this.$store.getters.token || getToken()
|
||||
const linkToken = this.$store.getters.linkToken || getLinkToken()
|
||||
if (!token && linkToken) {
|
||||
method = linkMultFieldValues
|
||||
}
|
||||
method({fieldIds: this.element.options.attrs.fieldId.split(',')}).then(res => {
|
||||
this.datas = this.optionDatas(res.data)
|
||||
})
|
||||
}
|
||||
|
||||
@ -36,9 +36,8 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
multFieldValues
|
||||
} from '@/api/dataset/dataset'
|
||||
import {multFieldValues, linkMultFieldValues} from '@/api/dataset/dataset'
|
||||
import {getLinkToken, getToken} from "@/utils/auth";
|
||||
export default {
|
||||
|
||||
props: {
|
||||
@ -110,9 +109,15 @@ export default {
|
||||
'element.options.attrs.fieldId': function(value, old) {
|
||||
if (typeof value === 'undefined' || value === old) return
|
||||
this.datas = []
|
||||
let method = multFieldValues
|
||||
const token = this.$store.getters.token || getToken()
|
||||
const linkToken = this.$store.getters.linkToken || getLinkToken()
|
||||
if (!token && linkToken) {
|
||||
method = linkMultFieldValues
|
||||
}
|
||||
this.element.options.attrs.fieldId &&
|
||||
this.element.options.attrs.fieldId.length > 0 &&
|
||||
multFieldValues(this.element.options.attrs.fieldId.split(',')).then(res => {
|
||||
method({fieldIds: this.element.options.attrs.fieldId.split(',')}).then(res => {
|
||||
this.datas = this.optionDatas(res.data)
|
||||
}) || (this.element.options.value = '')
|
||||
},
|
||||
@ -137,7 +142,13 @@ export default {
|
||||
initLoad() {
|
||||
this.value = this.element.options.attrs.multiple ? [] : null
|
||||
if (this.element.options.attrs.fieldId) {
|
||||
multFieldValues(this.element.options.attrs.fieldId.split(',')).then(res => {
|
||||
let method = multFieldValues
|
||||
const token = this.$store.getters.token || getToken()
|
||||
const linkToken = this.$store.getters.linkToken || getLinkToken()
|
||||
if (!token && linkToken) {
|
||||
method = linkMultFieldValues
|
||||
}
|
||||
method({fieldIds: this.element.options.attrs.fieldId.split(',')}).then(res => {
|
||||
this.datas = this.optionDatas(res.data)
|
||||
if (this.element.options.attrs.multiple) {
|
||||
this.checkAll = this.value.length === this.datas.length
|
||||
|
||||
@ -239,7 +239,7 @@ export default {
|
||||
initEnumOptions() {
|
||||
// 查找枚举值
|
||||
if (this.item.deType === 0 || this.item.deType === 5) {
|
||||
multFieldValues([this.item.id]).then(res => {
|
||||
multFieldValues({fieldIds: [this.item.id]}).then(res => {
|
||||
this.fieldOptions = this.optionDatas(res.data)
|
||||
})
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user