Skip to content

Commit 6c5f8fc

Browse files
committed
[opt](headless)Deletion of chat model and database should record user.
1 parent 04b1edb commit 6c5f8fc

6 files changed

Lines changed: 31 additions & 8 deletions

File tree

common/src/main/java/com/tencent/supersonic/common/service/ChatModelService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@ public interface ChatModelService {
1515

1616
ChatModel updateChatModel(ChatModel chatModel, User user);
1717

18-
void deleteChatModel(Integer id);
18+
void deleteChatModel(Integer id, User user);
1919
}

common/src/main/java/com/tencent/supersonic/common/service/impl/ChatModelServiceImpl.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,12 @@ public ChatModel updateChatModel(ChatModel chatModel, User user) {
7979
}
8080

8181
@Override
82-
public void deleteChatModel(Integer id) {
82+
public void deleteChatModel(Integer id, User user) {
83+
ChatModel chatModel = getChatModel(id);
84+
if (!checkAdminPermission(user, chatModel)) {
85+
throw new RuntimeException("没有权限删除该大模型");
86+
}
87+
8388
removeById(id);
8489
}
8590

@@ -103,4 +108,13 @@ private ChatModelDO convert(ChatModel chatModel) {
103108
chatModelDO.setConfig(JsonUtil.toString(chatModel.getConfig()));
104109
return chatModelDO;
105110
}
111+
112+
private boolean checkAdminPermission(User user, ChatModel chatModel) {
113+
String admin = chatModel.getAdmin();
114+
if (user.isSuperAdmin()) {
115+
return true;
116+
}
117+
return admin != null && admin.equals(user.getName())
118+
|| chatModel.getCreatedBy().equals(user.getName());
119+
}
106120
}

headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/ChatModelController.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,10 @@ public ChatModel updateModel(@RequestBody ChatModel model,
4646
}
4747

4848
@DeleteMapping("/{id}")
49-
public boolean deleteModel(@PathVariable("id") Integer id) {
50-
chatModelService.deleteChatModel(id);
49+
public boolean deleteModel(@PathVariable("id") Integer id,
50+
HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
51+
User user = UserHolder.findUser(httpServletRequest, httpServletResponse);
52+
chatModelService.deleteChatModel(id, user);
5153
return true;
5254
}
5355

headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/DatabaseController.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,10 @@ public List<DatabaseResp> getDatabaseList(HttpServletRequest request,
6464
}
6565

6666
@DeleteMapping("/{id}")
67-
public boolean deleteDatabase(@PathVariable("id") Long id) {
68-
databaseService.deleteDatabase(id);
67+
public boolean deleteDatabase(@PathVariable("id") Long id, HttpServletRequest request,
68+
HttpServletResponse response) {
69+
User user = UserHolder.findUser(request, response);
70+
databaseService.deleteDatabase(id, user);
6971
return true;
7072
}
7173

headless/server/src/main/java/com/tencent/supersonic/headless/server/service/DatabaseService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public interface DatabaseService {
3434

3535
List<DatabaseResp> getDatabaseList(User user);
3636

37-
void deleteDatabase(Long databaseId);
37+
void deleteDatabase(Long databaseId, User user);
3838

3939
List<String> getCatalogs(Long id) throws SQLException;
4040

headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DatabaseServiceImpl.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,12 @@ private boolean checkViewPermission(User user, DatabaseResp database) {
138138
}
139139

140140
@Override
141-
public void deleteDatabase(Long databaseId) {
141+
public void deleteDatabase(Long databaseId, User user) {
142+
DatabaseResp databaseResp = getDatabase(databaseId);
143+
if (!checkAdminPermission(user, databaseResp)) {
144+
throw new RuntimeException("没有权限删除该数据库");
145+
}
146+
142147
ModelFilter modelFilter = new ModelFilter();
143148
modelFilter.setDatabaseId(databaseId);
144149
modelFilter.setIncludesDetail(false);

0 commit comments

Comments
 (0)