diff --git a/common/user_groups.go b/common/user_groups.go index 67c3e79..e705394 100644 --- a/common/user_groups.go +++ b/common/user_groups.go @@ -21,3 +21,8 @@ func UpdateUserUsableGroupsByJSONString(jsonStr string) error { UserUsableGroups = make(map[string]string) return json.Unmarshal([]byte(jsonStr), &UserUsableGroups) } + +func GroupInUserUsableGroups(groupName string) bool { + _, ok := UserUsableGroups[groupName] + return ok +} diff --git a/controller/relay.go b/controller/relay.go index ef04232..4a49d51 100644 --- a/controller/relay.go +++ b/controller/relay.go @@ -68,9 +68,15 @@ func Playground(c *gin.Context) { } c.Set("original_model", playgroundRequest.Model) group := playgroundRequest.Group + userGroup := c.GetString("group") + if group == "" { - group = c.GetString("group") + group = userGroup } else { + if !common.GroupInUserUsableGroups(group) && group != userGroup { + openaiErr = service.OpenAIErrorWrapperLocal(errors.New("无权访问该分组"), "group_not_allowed", http.StatusForbidden) + return + } c.Set("group", group) } c.Set("token_name", "playground-"+group)