[opt](headless)Deletion of chat model and database should record user.
Some checks failed
supersonic CentOS CI / build (21) (push) Failing after 19s
supersonic ubuntu CI / build (21) (push) Failing after 24s
supersonic mac CI / build (21) (push) Has been cancelled
supersonic windows CI / build (21) (push) Has been cancelled

This commit is contained in:
jerryjzhang
2025-10-22 19:17:30 +08:00
parent 04b1edb2e2
commit 6c5f8fce40
6 changed files with 31 additions and 8 deletions

View File

@@ -15,5 +15,5 @@ public interface ChatModelService {
ChatModel updateChatModel(ChatModel chatModel, User user);
void deleteChatModel(Integer id);
void deleteChatModel(Integer id, User user);
}

View File

@@ -79,7 +79,12 @@ public class ChatModelServiceImpl extends ServiceImpl<ChatModelMapper, ChatModel
}
@Override
public void deleteChatModel(Integer id) {
public void deleteChatModel(Integer id, User user) {
ChatModel chatModel = getChatModel(id);
if (!checkAdminPermission(user, chatModel)) {
throw new RuntimeException("没有权限删除该大模型");
}
removeById(id);
}
@@ -103,4 +108,13 @@ public class ChatModelServiceImpl extends ServiceImpl<ChatModelMapper, ChatModel
chatModelDO.setConfig(JsonUtil.toString(chatModel.getConfig()));
return chatModelDO;
}
private boolean checkAdminPermission(User user, ChatModel chatModel) {
String admin = chatModel.getAdmin();
if (user.isSuperAdmin()) {
return true;
}
return admin != null && admin.equals(user.getName())
|| chatModel.getCreatedBy().equals(user.getName());
}
}

View File

@@ -46,8 +46,10 @@ public class ChatModelController {
}
@DeleteMapping("/{id}")
public boolean deleteModel(@PathVariable("id") Integer id) {
chatModelService.deleteChatModel(id);
public boolean deleteModel(@PathVariable("id") Integer id,
HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
User user = UserHolder.findUser(httpServletRequest, httpServletResponse);
chatModelService.deleteChatModel(id, user);
return true;
}

View File

@@ -64,8 +64,10 @@ public class DatabaseController {
}
@DeleteMapping("/{id}")
public boolean deleteDatabase(@PathVariable("id") Long id) {
databaseService.deleteDatabase(id);
public boolean deleteDatabase(@PathVariable("id") Long id, HttpServletRequest request,
HttpServletResponse response) {
User user = UserHolder.findUser(request, response);
databaseService.deleteDatabase(id, user);
return true;
}

View File

@@ -34,7 +34,7 @@ public interface DatabaseService {
List<DatabaseResp> getDatabaseList(User user);
void deleteDatabase(Long databaseId);
void deleteDatabase(Long databaseId, User user);
List<String> getCatalogs(Long id) throws SQLException;

View File

@@ -138,7 +138,12 @@ public class DatabaseServiceImpl extends ServiceImpl<DatabaseDOMapper, DatabaseD
}
@Override
public void deleteDatabase(Long databaseId) {
public void deleteDatabase(Long databaseId, User user) {
DatabaseResp databaseResp = getDatabase(databaseId);
if (!checkAdminPermission(user, databaseResp)) {
throw new RuntimeException("没有权限删除该数据库");
}
ModelFilter modelFilter = new ModelFilter();
modelFilter.setDatabaseId(databaseId);
modelFilter.setIncludesDetail(false);