feat: support calling get-user API by only email, phone or userId without owner (#2398)

This commit is contained in:
Pedro Padron
2023-10-12 15:48:55 -03:00
committed by GitHub
parent 3d567c3d45
commit 983da685a2
2 changed files with 71 additions and 23 deletions

View File

@ -160,6 +160,18 @@ func (c *ApiController) GetUser() {
id = util.GetId(userFromUserId.Owner, userFromUserId.Name) id = util.GetId(userFromUserId.Owner, userFromUserId.Name)
} }
var user *object.User
if id == "" && owner == "" {
switch {
case email != "":
user, err = object.GetUserByEmailOnly(email)
case phone != "":
user, err = object.GetUserByPhoneOnly(phone)
case userId != "":
user, err = object.GetUserByUserIdOnly(userId)
}
} else {
if owner == "" { if owner == "" {
owner = util.GetOwnerFromId(id) owner = util.GetOwnerFromId(id)
} }
@ -179,7 +191,6 @@ func (c *ApiController) GetUser() {
} }
} }
var user *object.User
switch { switch {
case email != "": case email != "":
user, err = object.GetUserByEmail(owner, email) user, err = object.GetUserByEmail(owner, email)
@ -190,6 +201,7 @@ func (c *ApiController) GetUser() {
default: default:
user, err = object.GetUser(id) user, err = object.GetUser(id)
} }
}
if err != nil { if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())

View File

@ -372,6 +372,24 @@ func GetUserByEmail(owner string, email string) (*User, error) {
} }
} }
func GetUserByEmailOnly(email string) (*User, error) {
if email == "" {
return nil, nil
}
user := User{Email: email}
existed, err := ormer.Engine.Get(&user)
if err != nil {
return nil, err
}
if existed {
return &user, nil
} else {
return nil, nil
}
}
func GetUserByPhone(owner string, phone string) (*User, error) { func GetUserByPhone(owner string, phone string) (*User, error) {
if owner == "" || phone == "" { if owner == "" || phone == "" {
return nil, nil return nil, nil
@ -390,6 +408,24 @@ func GetUserByPhone(owner string, phone string) (*User, error) {
} }
} }
func GetUserByPhoneOnly(phone string) (*User, error) {
if phone == "" {
return nil, nil
}
user := User{Phone: phone}
existed, err := ormer.Engine.Get(&user)
if err != nil {
return nil, err
}
if existed {
return &user, nil
} else {
return nil, nil
}
}
func GetUserByUserId(owner string, userId string) (*User, error) { func GetUserByUserId(owner string, userId string) (*User, error) {
if owner == "" || userId == "" { if owner == "" || userId == "" {
return nil, nil return nil, nil