fix(oauth): 支持 Casdoor 认证,修复第三方回调的用户id为string时会导致服务器内部错误的问题 (#46)

* fix(oauth): support Casdoor string user IDs

* test(oauth): verify legacy IDs and auth source isolation

---------

Co-authored-by: Noru Wyrms <wyrmsnoru@gmail.com>
This commit is contained in:
velor2012
2026-10-08 08:20:15 +08:00
committed by GitHub
parent 6f63715182
commit fec9bd18dd
6 changed files with 173 additions and 26 deletions
+2 -5
View File
@@ -199,11 +199,11 @@ func UpdateUser(ctx context.Context, user *model.User) error {
}
// CreateUserFromOAuth creates a user from OAuth profile data and fills userOut.
// The local ID is generated independently of the provider's identity claims.
func CreateUserFromOAuth(ctx context.Context, userOut *model.User, oauthInfo *model.OAuthUserInfo) error {
now := time.Now()
userID := oauthInfo.GetID()
newUser := model.User{
ID: userID,
ID: idgen.NextUint64ID(),
Username: oauthInfo.Username,
Nickname: oauthInfo.Name,
Email: oauthInfo.Email,
@@ -212,9 +212,6 @@ func CreateUserFromOAuth(ctx context.Context, userOut *model.User, oauthInfo *mo
LastLoginAt: now,
IsAdmin: false,
}
if newUser.ID == 0 {
newUser.ID = idgen.NextUint64ID()
}
if err := db.DB(ctx).Create(&newUser).Error; err != nil {
return err
}