Skip to content

Commit

Permalink
refactor: improve user group handling and add GetUserUsableGroups fun…
Browse files Browse the repository at this point in the history
…ction

- Introduced a new function `GetUserUsableGroupsCopy` to return a copy of user usable groups.
- Updated `GetUserUsableGroups` to utilize the new function for better encapsulation.
- Changed variable names from `UserUsableGroups` to `userUsableGroups` for consistency.
- Enhanced `GetUserUsableGroups` logic to ensure it returns a copy of the groups, preventing unintended modifications.
  • Loading branch information
Calcium-Ion committed Dec 27, 2024
1 parent 5f082d7 commit 77861e6
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 15 deletions.
7 changes: 6 additions & 1 deletion controller/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"net/http"
"one-api/common"
"one-api/model"
"one-api/setting"
"strconv"
"strings"
"sync"
Expand Down Expand Up @@ -454,7 +455,11 @@ func GetUserModels(c *gin.Context) {
})
return
}
models := model.GetGroupModels(user.Group)
groups := setting.GetUserUsableGroups(user.Group)
var models []string
for group := range groups {
models = append(models, model.GetGroupModels(group)...)
}
c.JSON(http.StatusOK, gin.H{
"success": true,
"message": "",
Expand Down
32 changes: 18 additions & 14 deletions setting/user_usable_group.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,43 +5,47 @@ import (
"one-api/common"
)

var UserUsableGroups = map[string]string{
var userUsableGroups = map[string]string{
"default": "默认分组",
"vip": "vip分组",
}

func GetUserUsableGroupsCopy() map[string]string {
copyUserUsableGroups := make(map[string]string)
for k, v := range userUsableGroups {
copyUserUsableGroups[k] = v
}
return copyUserUsableGroups
}

func UserUsableGroups2JSONString() string {
jsonBytes, err := json.Marshal(UserUsableGroups)
jsonBytes, err := json.Marshal(userUsableGroups)
if err != nil {
common.SysError("error marshalling user groups: " + err.Error())
}
return string(jsonBytes)
}

func UpdateUserUsableGroupsByJSONString(jsonStr string) error {
UserUsableGroups = make(map[string]string)
return json.Unmarshal([]byte(jsonStr), &UserUsableGroups)
userUsableGroups = make(map[string]string)
return json.Unmarshal([]byte(jsonStr), &userUsableGroups)
}

func GetUserUsableGroups(userGroup string) map[string]string {
groupsCopy := GetUserUsableGroupsCopy()
if userGroup == "" {
// 如果userGroup为空,返回UserUsableGroups
return UserUsableGroups
return groupsCopy
}
// 如果userGroup不在UserUsableGroups中,返回UserUsableGroups + userGroup
if _, ok := UserUsableGroups[userGroup]; !ok {
appendUserUsableGroups := make(map[string]string)
for k, v := range UserUsableGroups {
appendUserUsableGroups[k] = v
}
appendUserUsableGroups[userGroup] = "用户分组"
return appendUserUsableGroups
if _, ok := groupsCopy[userGroup]; !ok {
groupsCopy[userGroup] = "用户分组"
}
// 如果userGroup在UserUsableGroups中,返回UserUsableGroups
return UserUsableGroups
return groupsCopy
}

func GroupInUserUsableGroups(groupName string) bool {
_, ok := UserUsableGroups[groupName]
_, ok := userUsableGroups[groupName]
return ok
}

0 comments on commit 77861e6

Please sign in to comment.