Quellcode durchsuchen

Merge pull request #2998 from seefs001/fix/pr-2900

Fix/pr 2900
Calcium-Ion vor 1 Woche
Ursprung
Commit
6d03fc828d
2 geänderte Dateien mit 12 neuen und 0 gelöschten Zeilen
  1. 10 0
      controller/oauth.go
  2. 2 0
      model/user.go

+ 10 - 0
controller/oauth.go

@@ -237,6 +237,16 @@ func findOrCreateOAuthUser(c *gin.Context, provider oauth.Provider, oauthUser *o
 
 	// Set up new user
 	user.Username = provider.GetProviderPrefix() + strconv.Itoa(model.GetMaxUserId()+1)
+
+	if oauthUser.Username != "" {
+		if exists, err := model.CheckUserExistOrDeleted(oauthUser.Username, ""); err == nil && !exists {
+			// 防止索引退化
+			if len(oauthUser.Username) <= model.UserNameMaxLength {
+				user.Username = oauthUser.Username
+			}
+		}
+	}
+
 	if oauthUser.DisplayName != "" {
 		user.DisplayName = oauthUser.DisplayName
 	} else if oauthUser.Username != "" {

+ 2 - 0
model/user.go

@@ -15,6 +15,8 @@ import (
 	"gorm.io/gorm"
 )
 
+const UserNameMaxLength = 20
+
 // User if you add sensitive fields, don't forget to clean them in setupLogin function.
 // Otherwise, the sensitive information will be saved on local storage in plain text!
 type User struct {