mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 11:07:06 +00:00
[feature][common]Add permission management to chat model.
This commit is contained in:
@@ -32,9 +32,12 @@ public class DatabaseReq extends RecordInfo {
|
||||
private String description;
|
||||
|
||||
private String schema;
|
||||
|
||||
private String url;
|
||||
|
||||
private List<String> admins = Lists.newArrayList();
|
||||
|
||||
private List<String> viewers = Lists.newArrayList();
|
||||
|
||||
private Integer isOpen = 0;
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ public class DatabaseResp extends RecordInfo {
|
||||
|
||||
private List<String> viewers = Lists.newArrayList();
|
||||
|
||||
private Integer isOpen = 0;
|
||||
|
||||
private String type;
|
||||
|
||||
private String url;
|
||||
@@ -48,6 +50,10 @@ public class DatabaseResp extends RecordInfo {
|
||||
|
||||
private boolean hasEditPermission = false;
|
||||
|
||||
public boolean isPublic() {
|
||||
return isOpen != null && isOpen == 1;
|
||||
}
|
||||
|
||||
public String getHost() {
|
||||
Pattern p = Pattern.compile("jdbc:(?<db>\\w+):.*((//)|@)(?<host>.+):(?<port>\\d+).*");
|
||||
Matcher m = p.matcher(url);
|
||||
|
||||
@@ -44,6 +44,8 @@ public class DatabaseDO {
|
||||
/** */
|
||||
private String viewer;
|
||||
|
||||
private Integer isOpen = 0;
|
||||
|
||||
/** 配置信息 */
|
||||
private String config;
|
||||
|
||||
|
||||
@@ -52,8 +52,10 @@ public class ChatModelController {
|
||||
}
|
||||
|
||||
@RequestMapping("/getModelList")
|
||||
public List<ChatModel> getModelList() {
|
||||
return chatModelService.getChatModels();
|
||||
public List<ChatModel> getModelList(HttpServletRequest httpServletRequest,
|
||||
HttpServletResponse httpServletResponse) {
|
||||
User user = UserHolder.findUser(httpServletRequest, httpServletResponse);
|
||||
return chatModelService.getChatModels(user);
|
||||
}
|
||||
|
||||
@RequestMapping("/getModelAppList")
|
||||
|
||||
@@ -96,14 +96,16 @@ public class DatabaseServiceImpl extends ServiceImpl<DatabaseDOMapper, DatabaseD
|
||||
databaseResp.setHasEditPermission(true);
|
||||
databaseResp.setHasUsePermission(true);
|
||||
}
|
||||
if (databaseResp.getViewers().contains(user.getName())) {
|
||||
if (databaseResp.getViewers().contains(user.getName())
|
||||
|| databaseResp.isPublic()) {
|
||||
databaseResp.setHasUsePermission(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private boolean filterByAuth(DatabaseResp database, User user, AuthType authType) {
|
||||
if (user.isSuperAdmin() || user.getName().equals(database.getCreatedBy())) {
|
||||
if (database.isPublic() || user.isSuperAdmin()
|
||||
|| user.getName().equals(database.getCreatedBy())) {
|
||||
return true;
|
||||
}
|
||||
authType = authType == null ? AuthType.VIEWER : authType;
|
||||
|
||||
Reference in New Issue
Block a user