feat(dify): 更新权限控制并增加新功能
- 在 AppEntity 和 WorkflowData 中添加 createId 和 deptId 字段,用于记录创建者和部门信息 - 更新 MenuServiceImplTest 中的菜单权限,增加新的操作权限并调整现有权限- 修改 V1ChatController 中的 sendChatMessage 方法权限,从 query 改为 send - 新增 V1ChatController 中的 stopMessagesStream 方法权限,添加 stop 权限 - 更新 V1DatasetController 中的 retrieve 方法权限,从 query 改为 retrieve - 修改V1ServerController 中的 initAppApiKey 和 initDatasetApiKey 方法权限,从 create 改为 init - 在 V1WorkflowController 中的 list 方法添加数据权限控制
This commit is contained in:
parent
1dfc8ea017
commit
eddc46e40d
@ -1,6 +1,7 @@
|
||||
package com.zsc.edu.dify.modules.dify.controller;
|
||||
|
||||
import com.zsc.edu.dify.exception.ExceptionUtil;
|
||||
import com.zsc.edu.dify.framework.mybatisplus.DataPermission;
|
||||
import com.zsc.edu.dify.framework.security.SecurityUtil;
|
||||
import com.zsc.edu.dify.modules.dify.service.AppEntityService;
|
||||
import com.zsc.edu.dify.modules.operationLog.entity.OperationLogAnnotation;
|
||||
@ -40,7 +41,7 @@ public class V1ChatController {
|
||||
* apikey 建议在数据库进行存储,前端调用时传智能体 id,从数据库查询
|
||||
*/
|
||||
@PostMapping("/completions/{appId}")
|
||||
@PreAuthorize("hasAuthority('dify:chat:query')")
|
||||
@PreAuthorize("hasAuthority('dify:chat:send')")
|
||||
@OperationLogAnnotation(content = "'dify对话'", operationType = "发送")
|
||||
public ChatMessageSendResponse sendChatMessage(
|
||||
@RequestBody ChatMessageSendRequest sendRequest,
|
||||
@ -92,6 +93,7 @@ public class V1ChatController {
|
||||
* @param taskId 任务id
|
||||
*/
|
||||
@PatchMapping("/stream/stop")
|
||||
@PreAuthorize("hasAuthority('dify:chat:stop')")
|
||||
public void stopMessagesStream(@RequestParam String taskId, @RequestParam String appId) {
|
||||
String apiKey = appEntityService.getApikey(appId);
|
||||
String userId = SecurityUtil.getUserInfo().id.toString();
|
||||
|
@ -120,7 +120,7 @@ public class V1DatasetController {
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/retrieve")
|
||||
@PreAuthorize("hasAuthority('dify:dataset:query')")
|
||||
@PreAuthorize("hasAuthority('dify:dataset:retrieve')")
|
||||
public RetrieveResponse retrieve(@RequestBody RetrieveRequest request){
|
||||
return difyDataset.retrieve(request);
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.zsc.edu.dify.modules.dify.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.zsc.edu.dify.framework.mybatisplus.DataPermission;
|
||||
import com.zsc.edu.dify.modules.dify.entity.AppEntity;
|
||||
import com.zsc.edu.dify.modules.dify.service.AppEntityService;
|
||||
import com.zsc.edu.dify.modules.operationLog.entity.OperationLogAnnotation;
|
||||
@ -31,6 +32,7 @@ public class V1ServerController {
|
||||
*/
|
||||
@GetMapping("/apps")
|
||||
@PreAuthorize("hasAuthority('dify:server:query')")
|
||||
@DataPermission
|
||||
public List<AppsResponseVO> getApps(String mode, String name) {
|
||||
return appEntityService.getApps(mode, name);
|
||||
}
|
||||
@ -63,7 +65,7 @@ public class V1ServerController {
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/api-key/init/{id}")
|
||||
@PreAuthorize("hasAuthority('dify:server:create')")
|
||||
@PreAuthorize("hasAuthority('dify:server:init')")
|
||||
public List<ApiKeyResponseVO> initAppApiKey(@PathVariable("id") String id) {
|
||||
return difyServer.initAppApiKey(id);
|
||||
}
|
||||
@ -83,7 +85,7 @@ public class V1ServerController {
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/api-key/dataset/init")
|
||||
@PreAuthorize("hasAuthority('dify:server:create')")
|
||||
@PreAuthorize("hasAuthority('dify:server:init')")
|
||||
public List<DatasetApiKeyResponseVO> initDatasetApiKey() {
|
||||
return difyServer.initDatasetApiKey();
|
||||
}
|
||||
@ -107,6 +109,7 @@ public class V1ServerController {
|
||||
*/
|
||||
@GetMapping("/apps/enabled")
|
||||
@PreAuthorize("hasAuthority('dify:server:query')")
|
||||
@DataPermission
|
||||
public List<AppEntity> getEnableApps() {
|
||||
LambdaQueryWrapper<AppEntity> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(AppEntity::isEnabled, true);
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.zsc.edu.dify.modules.dify.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.zsc.edu.dify.framework.mybatisplus.DataPermission;
|
||||
import com.zsc.edu.dify.framework.security.SecurityUtil;
|
||||
import com.zsc.edu.dify.modules.dify.entity.WorkflowData;
|
||||
import com.zsc.edu.dify.modules.dify.service.AppEntityService;
|
||||
@ -104,6 +105,7 @@ public class V1WorkflowController {
|
||||
*/
|
||||
@GetMapping("/list/{appId}")
|
||||
@PreAuthorize("hasAuthority('dify:workflow:query')")
|
||||
@DataPermission
|
||||
public List<WorkflowData> list(@PathVariable String appId){
|
||||
return difyWorkflowService.list(new QueryWrapper<WorkflowData>().eq("app_id",appId));
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.zsc.edu.dify.modules.dify.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.zsc.edu.dify.framework.json.JsonbTypeHandler;
|
||||
@ -46,4 +47,9 @@ public class AppEntity extends AppsResponseVO {
|
||||
@TableField(exist = false)
|
||||
private List<AppEntity> children = null;
|
||||
|
||||
@TableField(value = "create_id", fill = FieldFill.INSERT)
|
||||
private Long createId;
|
||||
|
||||
@TableField(value = "dept_id", fill = FieldFill.INSERT)
|
||||
private Long deptId;
|
||||
}
|
||||
|
@ -25,4 +25,10 @@ public class WorkflowData {
|
||||
private Long userId;
|
||||
|
||||
private String appId;
|
||||
|
||||
@TableField(value = "create_id", fill = FieldFill.INSERT)
|
||||
private Long createId;
|
||||
|
||||
@TableField(value = "dept_id", fill = FieldFill.INSERT)
|
||||
private Long deptId;
|
||||
}
|
||||
|
@ -71,22 +71,29 @@ class MenuServiceImplTest {
|
||||
Menu bulletinDelete = new Menu(bulletin.getId(), Menu.Type.OPERATION, "bulletinDelete", null, "公告删除", null, true, false, 1, "message:bulletin:delete", "");
|
||||
Menu operationLogQuery = new Menu(operationLog.getId(), Menu.Type.OPERATION, "operationLogQuery", null, "操作日志查询", null, true, false, 1, "operationLog:query", "");
|
||||
Menu operationLogDelete = new Menu(operationLog.getId(), Menu.Type.OPERATION, "operationLogDelete", null, "操作日志删除", null, true, false, 1, "operationLog:delete", "");
|
||||
Menu difyChatQuery = new Menu(dify.getId(), Menu.Type.OPERATION, "difyChatQuery", null, "difyChat查询", null, true, false, 1, "difyChat:query", "");
|
||||
Menu difyChatCreate = new Menu(dify.getId(), Menu.Type.OPERATION, "difyChatCreate", null, "difyChat新增", null, true, false, 1, "difyChat:create", "");
|
||||
Menu difyChatUpdate = new Menu(dify.getId(), Menu.Type.OPERATION, "difyChatUpdate", null, "difyChat修改", null, true, false, 1, "difyChat:update", "");
|
||||
Menu difyChatDelete = new Menu(dify.getId(), Menu.Type.OPERATION, "difyChatDelete", null, "difyChat删除", null, true, false, 1, "difyChat:delete", "");
|
||||
Menu difyServerQuery = new Menu(dify.getId(), Menu.Type.OPERATION, "difyServerQuery", null, "difyServer查询", null, true, false, 1, "difyServer:query", "");
|
||||
Menu difyServerCreate = new Menu(dify.getId(), Menu.Type.OPERATION, "difyServerCreate", null, "difyServer新增", null, true, false, 1, "difyServer:create", "");
|
||||
Menu difyServerUpdate = new Menu(dify.getId(), Menu.Type.OPERATION, "difyServerUpdate", null, "difyServer修改", null, true, false, 1, "difyServer:update", "");
|
||||
Menu difyServerDelete = new Menu(dify.getId(), Menu.Type.OPERATION, "difyServerDelete", null, "difyServer删除", null, true, false, 1, "difyServer:delete", "");
|
||||
Menu difyDataSetQuery = new Menu(dify.getId(), Menu.Type.OPERATION, "difyDataSetQuery", null, "difyDataSet查询", null, true, false, 1, "difyDataSet:query", "");
|
||||
Menu difyDataSetCreate = new Menu(dify.getId(), Menu.Type.OPERATION, "difyDataSetCreate", null, "difyDataSet新增", null, true, false, 1, "difyDataSet:create", "");
|
||||
Menu difyDataSetUpdate = new Menu(dify.getId(), Menu.Type.OPERATION, "difyDataSetUpdate", null, "difyDataSet修改", null, true, false, 1, "difyDataSet:update", "");
|
||||
Menu difyDataSetDelete = new Menu(dify.getId(), Menu.Type.OPERATION, "difyDataSetDelete", null, "difyDataSet删除", null, true, false, 1, "difyDataSet:delete", "");
|
||||
Menu difyWorkFlowQuery = new Menu(dify.getId(), Menu.Type.OPERATION, "difyWorkFlowQuery", null, "difyWorkFlow查询", null, true, false, 1, "difyWorkFlow:query", "");
|
||||
Menu difyWorkFlowCreate = new Menu(dify.getId(), Menu.Type.OPERATION, "difyWorkFlowCreate", null, "difyWorkFlow新增", null, true, false, 1, "difyWorkFlow:create", "");
|
||||
Menu difyWorkFlowUpdate = new Menu(dify.getId(), Menu.Type.OPERATION, "difyWorkFlowUpdate", null, "difyWorkFlow修改", null, true, false, 1, "difyWorkFlow:update", "");
|
||||
Menu difyWorkFlowDelete = new Menu(dify.getId(), Menu.Type.OPERATION, "difyWorkFlowDelete", null, "difyWorkFlow删除", null, true, false, 1, "difyWorkFlow:delete", "");
|
||||
Menu difyChatQuery = new Menu(dify.getId(), Menu.Type.OPERATION, "difyChatQuery", null, "difyChat查询", null, true, false, 1, "dify:chat:query", "");
|
||||
Menu difyChatCreate = new Menu(dify.getId(), Menu.Type.OPERATION, "difyChatCreate", null, "difyChat新增", null, true, false, 1, "dify:chat:create", "");
|
||||
Menu difyChatUpdate = new Menu(dify.getId(), Menu.Type.OPERATION, "difyChatUpdate", null, "difyChat修改", null, true, false, 1, "dify:chat:update", "");
|
||||
Menu difyChatStop = new Menu(dify.getId(), Menu.Type.OPERATION, "difyChatStop", null, "difyChat停止", null, true, false, 1, "dify:chat:stop", "");
|
||||
Menu difyChatSend = new Menu(dify.getId(), Menu.Type.OPERATION, "difyChatSend", null, "difyChat发送", null, true, false, 1, "dify:chat:send", "");
|
||||
Menu difyChatDelete = new Menu(dify.getId(), Menu.Type.OPERATION, "difyChatDelete", null, "difyChat删除", null, true, false, 1, "dify:chat:delete", "");
|
||||
Menu difyServerQuery = new Menu(dify.getId(), Menu.Type.OPERATION, "difyServerQuery", null, "difyServer查询", null, true, false, 1, "dify:server:query", "");
|
||||
Menu difyServerCreate = new Menu(dify.getId(), Menu.Type.OPERATION, "difyServerCreate", null, "difyServer新增", null, true, false, 1, "dify:server:create", "");
|
||||
Menu difyServerUpdate = new Menu(dify.getId(), Menu.Type.OPERATION, "difyServerUpdate", null, "difyServer修改", null, true, false, 1, "dify:server:update", "");
|
||||
Menu difyServerInit = new Menu(dify.getId(), Menu.Type.OPERATION, "difyServerInit", null, "difyServer初始化", null, true, false, 1, "dify:server:init", "");
|
||||
Menu difyServerDelete = new Menu(dify.getId(), Menu.Type.OPERATION, "difyServerDelete", null, "difyServer删除", null, true, false, 1, "dify:server:delete", "");
|
||||
Menu difyDataSetQuery = new Menu(dify.getId(), Menu.Type.OPERATION, "difyDataSetQuery", null, "difyDataSet查询", null, true, false, 1, "dify:dataset:query", "");
|
||||
Menu difyDataSetCreate = new Menu(dify.getId(), Menu.Type.OPERATION, "difyDataSetCreate", null, "difyDataSet新增", null, true, false, 1, "dify:dataset:create", "");
|
||||
Menu difyDataSetUpdate = new Menu(dify.getId(), Menu.Type.OPERATION, "difyDataSetUpdate", null, "difyDataSet修改", null, true, false, 1, "dify:dataset:update", "");
|
||||
Menu difyDataSetRetrieve = new Menu(dify.getId(), Menu.Type.OPERATION, "difyDataSetRetrieve", null, "difyDataSet检索", null, true, false, 1, "dify:dataset:retrieve", "");
|
||||
Menu difyDataSetDelete = new Menu(dify.getId(), Menu.Type.OPERATION, "difyDataSetDelete", null, "difyDataSet删除", null, true, false, 1, "dify:dataset:delete", "");
|
||||
Menu difyWorkFlowQuery = new Menu(dify.getId(), Menu.Type.OPERATION, "difyWorkFlowQuery", null, "difyWorkFlow查询", null, true, false, 1, "dify:workflow:query", "");
|
||||
Menu difyWorkFlowCreate = new Menu(dify.getId(), Menu.Type.OPERATION, "difyWorkFlowCreate", null, "difyWorkFlow新增", null, true, false, 1, "dify:workflow:create", "");
|
||||
Menu difyWorkFlowUpdate = new Menu(dify.getId(), Menu.Type.OPERATION, "difyWorkFlowUpdate", null, "difyWorkFlow修改", null, true, false, 1, "dify:workflow:update", "");
|
||||
Menu difyWorkFlowInfo = new Menu(dify.getId(), Menu.Type.OPERATION, "difyWorkFlowInfo", null, "difyWorkFlow信息", null, true, false, 1, "dify:workflow:info", "");
|
||||
Menu difyWorkFlowLog = new Menu(dify.getId(), Menu.Type.OPERATION, "difyWorkFlowLog", null, "difyWorkFlow日志", null, true, false, 1, "dify:workflow:log", "");
|
||||
Menu difyWorkFlowRun = new Menu(dify.getId(), Menu.Type.OPERATION, "difyWorkFlowRun", null, "difyWorkFlow运行", null, true, false, 1, "dify:workflow:run", "");
|
||||
Menu difyWorkFlowDelete = new Menu(dify.getId(), Menu.Type.OPERATION, "difyWorkFlowDelete", null, "difyWorkFlow删除", null, true, false, 1, "dify:workflow:delete", "");
|
||||
menuService.saveBatch(List.of(roleCreate, roleDelete, roleUpdate, roleQuery,
|
||||
deptSave, deptUpdate, deptQuery, deptDelete,
|
||||
userSave, userUpdate, userQuery, userDelete,
|
||||
@ -94,10 +101,10 @@ class MenuServiceImplTest {
|
||||
noticeCreate, noticeUpdate, noticeQuery, noticeDelete,
|
||||
bulletinCreate, bulletinUpdate, bulletinQuery, bulletinDelete,
|
||||
operationLogQuery, operationLogDelete,
|
||||
difyChatQuery, difyChatCreate, difyChatUpdate, difyChatDelete,
|
||||
difyServerQuery, difyServerCreate, difyServerUpdate, difyServerDelete,
|
||||
difyDataSetQuery, difyDataSetCreate, difyDataSetUpdate, difyDataSetDelete,
|
||||
difyWorkFlowQuery, difyWorkFlowCreate, difyWorkFlowUpdate, difyWorkFlowDelete
|
||||
difyChatQuery, difyChatCreate, difyChatUpdate, difyChatDelete,difyChatSend,difyChatStop,
|
||||
difyServerQuery, difyServerCreate, difyServerUpdate, difyServerDelete,difyServerInit,
|
||||
difyDataSetQuery, difyDataSetCreate, difyDataSetUpdate, difyDataSetDelete,difyDataSetRetrieve,
|
||||
difyWorkFlowQuery, difyWorkFlowCreate, difyWorkFlowUpdate, difyWorkFlowDelete, difyWorkFlowInfo,difyWorkFlowLog,difyWorkFlowRun
|
||||
));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user