提交 47f9ca83 authored 作者: taojinlong's avatar taojinlong

fix: 枚举值接口支持行权限

上级 2a4f3a76
......@@ -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");
......
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(
......
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);
}
......
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)
})
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论