Add UpdateUserInternal().

This commit is contained in:
Yang Luo
2021-06-09 21:41:27 +08:00
parent f672045b45
commit 8e5f3c18e1
3 changed files with 26 additions and 9 deletions

View File

@ -263,6 +263,11 @@ func (c *ApiController) Login() {
} }
object.AddUser(user) object.AddUser(user)
// sync info from 3rd-party if possible
object.SetUserOAuthProperties(user, provider.Type, userInfo)
object.LinkUserAccount(user, provider.Type, userInfo.Id)
resp = c.HandleLoggedIn(user, &form) resp = c.HandleLoggedIn(user, &form)
} else if !application.EnableSignUp { } else if !application.EnableSignUp {
resp = &Response{Status: "error", Msg: fmt.Sprintf("The account for provider: %s and username: %s does not exist and is not allowed to sign up as new account, please contact your IT support", provider.Type, userInfo.Username)} resp = &Response{Status: "error", Msg: fmt.Sprintf("The account for provider: %s and username: %s does not exist and is not allowed to sign up as new account, please contact your IT support", provider.Type, userInfo.Username)}

View File

@ -124,6 +124,22 @@ func UpdateUser(id string, user *User) bool {
return affected != 0 return affected != 0
} }
func UpdateUserInternal(id string, user *User) bool {
owner, name := util.GetOwnerAndNameFromId(id)
if getUser(owner, name) == nil {
return false
}
user.UpdateUserHash()
affected, err := adapter.Engine.ID(core.PK{owner, name}).AllCols().Update(user)
if err != nil {
panic(err)
}
return affected != 0
}
func UpdateUserForOriginal(user *User) bool { func UpdateUserForOriginal(user *User) bool {
affected, err := adapter.Engine.ID(core.PK{user.Owner, user.Name}).Cols("display_name", "password", "phone", "avatar", "affiliation", "score", "is_forbidden", "hash", "pre_hash").Update(user) affected, err := adapter.Engine.ID(core.PK{user.Owner, user.Name}).Cols("display_name", "password", "phone", "avatar", "affiliation", "score", "is_forbidden", "hash", "pre_hash").Update(user)
if err != nil { if err != nil {

View File

@ -113,30 +113,26 @@ func SetUserOAuthProperties(user *User, providerType string, userInfo *idp.UserI
propertyName := fmt.Sprintf("oauth_%s_displayName", providerType) propertyName := fmt.Sprintf("oauth_%s_displayName", providerType)
setUserProperty(user, propertyName, userInfo.DisplayName) setUserProperty(user, propertyName, userInfo.DisplayName)
if user.DisplayName == "" { if user.DisplayName == "" {
SetUserField(user, "display_name", userInfo.DisplayName) user.DisplayName = userInfo.DisplayName
} }
} }
if userInfo.Email != "" { if userInfo.Email != "" {
propertyName := fmt.Sprintf("oauth_%s_email", providerType) propertyName := fmt.Sprintf("oauth_%s_email", providerType)
setUserProperty(user, propertyName, userInfo.Email) setUserProperty(user, propertyName, userInfo.Email)
if user.Email == "" { if user.Email == "" {
SetUserField(user, "email", userInfo.Email) user.Email = userInfo.Email
} }
} }
if userInfo.AvatarUrl != "" { if userInfo.AvatarUrl != "" {
propertyName := fmt.Sprintf("oauth_%s_avatarUrl", providerType) propertyName := fmt.Sprintf("oauth_%s_avatarUrl", providerType)
setUserProperty(user, propertyName, userInfo.AvatarUrl) setUserProperty(user, propertyName, userInfo.AvatarUrl)
if user.Avatar == "" { if user.Avatar == "" {
SetUserField(user, "avatar", userInfo.AvatarUrl) user.Avatar = userInfo.AvatarUrl
} }
} }
affected, err := adapter.Engine.ID(core.PK{user.Owner, user.Name}).Cols("properties").Update(user) affected := UpdateUserInternal(user.GetId(), user)
if err != nil { return affected
panic(err)
}
return affected != 0
} }
func ClearUserOAuthProperties(user *User, providerType string) bool { func ClearUserOAuthProperties(user *User, providerType string) bool {