|
|
|
|
@ -29,14 +29,14 @@ var _ = Router.Post("/login", "用户登录",
|
|
|
|
|
userLogin)
|
|
|
|
|
|
|
|
|
|
type loginOpts struct {
|
|
|
|
|
UserName string `json:"username" src:"json" desc:"用户名"`
|
|
|
|
|
Code string `json:"code" src:"json" desc:"密码/授权码"`
|
|
|
|
|
UserName *string `json:"username" src:"json" desc:"用户名"`
|
|
|
|
|
Code *string `json:"code" src:"json" desc:"密码/授权码"`
|
|
|
|
|
|
|
|
|
|
VerifyCode string `json:"verify_code" src:"json" desc:"验证码"`
|
|
|
|
|
Region string `json:"region" src:"json" desc:"区域"`
|
|
|
|
|
Phone string `json:"phone" src:"json" desc:"手机号"`
|
|
|
|
|
VerifyCode *string `json:"verify_code" src:"json" desc:"验证码"`
|
|
|
|
|
Region *string `json:"region" src:"json" desc:"区域"`
|
|
|
|
|
Phone *string `json:"phone" src:"json" desc:"手机号"`
|
|
|
|
|
|
|
|
|
|
Email string `json:"email" src:"json" desc:"邮箱"`
|
|
|
|
|
Email *string `json:"email" src:"json" desc:"邮箱"`
|
|
|
|
|
Type *string `json:"type" src:"json" desc:"登录类型"`
|
|
|
|
|
AppID *string `json:"app_id" src:"json" desc:"应用ID"`
|
|
|
|
|
Device *string `json:"device" src:"json" desc:"设备信息"`
|
|
|
|
|
@ -53,25 +53,25 @@ func userLogin(x *vigo.X, opts *loginOpts) (string, error) {
|
|
|
|
|
}
|
|
|
|
|
switch typ {
|
|
|
|
|
case "phone":
|
|
|
|
|
query = query.Where("phone = ?", opts.Region+opts.Phone)
|
|
|
|
|
query = query.Where("phone = ?", *opts.Region+*opts.Phone)
|
|
|
|
|
case "email":
|
|
|
|
|
query = query.Where("email = ?", opts.Email)
|
|
|
|
|
query = query.Where("email = ?", *opts.Email)
|
|
|
|
|
default:
|
|
|
|
|
query = query.Where("username = ?", opts.UserName)
|
|
|
|
|
query = query.Where("username = ?", *opts.UserName)
|
|
|
|
|
}
|
|
|
|
|
err := query.First(user).Error
|
|
|
|
|
if err != nil {
|
|
|
|
|
return "", vigo.ErrNotFound
|
|
|
|
|
}
|
|
|
|
|
logv.Info().Str("user", user.ID).Msg("login")
|
|
|
|
|
if opts.VerifyCode != "" {
|
|
|
|
|
err = sms.VerifyCode(opts.Phone, opts.VerifyCode, opts.Region, "signin")
|
|
|
|
|
if opts.VerifyCode != nil {
|
|
|
|
|
err = sms.VerifyCode(*opts.Phone, *opts.VerifyCode, *opts.Region, "signin")
|
|
|
|
|
if err != nil {
|
|
|
|
|
logv.Warn().Msgf("verify code: %v", err)
|
|
|
|
|
return "", vigo.ErrNotAuthorized.WithError(err)
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
code, err := base64.URLEncoding.DecodeString(opts.Code)
|
|
|
|
|
code, err := base64.URLEncoding.DecodeString(*opts.Code)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return "", vigo.ErrArgInvalid.WithArgs("code")
|
|
|
|
|
}
|
|
|
|
|
|