Fix: creat or load user error

pull/21/head
zijiren233 2 years ago
parent 145cc2d101
commit 8b104cd58d

@ -41,23 +41,24 @@ func CreateUser(username string, p provider.OAuth2Provider, puid uint, conf ...C
return u, err return u, err
} }
// 只有当provider和puid没有找到对应的user时才会创建
func CreateOrLoadUser(username string, p provider.OAuth2Provider, puid uint, conf ...CreateUserConfig) (*model.User, error) { func CreateOrLoadUser(username string, p provider.OAuth2Provider, puid uint, conf ...CreateUserConfig) (*model.User, error) {
u := &model.User{ var user model.User
Username: username, var userProvider model.UserProvider
Role: model.RoleUser,
Providers: []model.UserProvider{ if err := db.Where("provider = ? AND provider_user_id = ?", p, puid).First(&userProvider).Error; err != nil {
{ if errors.Is(err, gorm.ErrRecordNotFound) {
Provider: p, return CreateUser(username, p, puid, conf...)
ProviderUserID: puid, } else {
}, return nil, err
},
} }
for _, c := range conf { } else {
c(u) if err := db.First(&user, userProvider.UserID).Error; err != nil {
return nil, err
} }
return u, db.Preload("Providers", "provider = ? AND provider_user_id = ?", p, puid). }
FirstOrCreate(u).
Error return &user, nil
} }
func GetUserByProvider(p provider.OAuth2Provider, puid uint) (*model.User, error) { func GetUserByProvider(p provider.OAuth2Provider, puid uint) (*model.User, error) {

Loading…
Cancel
Save