80 lines
2.4 KiB
Go
80 lines
2.4 KiB
Go
package user
|
|
|
|
import (
|
|
"github.com/yaoapp/gou"
|
|
"github.com/yaoapp/kun/any"
|
|
"github.com/yaoapp/kun/exception"
|
|
"github.com/yaoapp/kun/log"
|
|
"github.com/yaoapp/kun/maps"
|
|
)
|
|
|
|
func init() {
|
|
gou.RegisterProcessHandler("xiang.user.Captcha", ProcessCaptcha)
|
|
gou.RegisterProcessHandler("xiang.user.Login", ProcessLogin)
|
|
}
|
|
|
|
// ProcessLogin xiang.user.Login 用户登录
|
|
func ProcessLogin(process *gou.Process) interface{} {
|
|
process.ValidateArgNums(1)
|
|
payload := process.ArgsMap(0).Dot()
|
|
log.With(log.F{"payload": payload}).Debug("ProcessLogin")
|
|
|
|
id := any.Of(payload.Get("captcha.id")).CString()
|
|
value := any.Of(payload.Get("captcha.code")).CString()
|
|
if id == "" {
|
|
exception.New("请输入验证码ID", 400).Ctx(maps.Map{"id": id, "code": value}).Throw()
|
|
}
|
|
if value == "" {
|
|
exception.New("请输入验证码", 400).Ctx(maps.Map{"id": id, "code": value}).Throw()
|
|
}
|
|
if !ValidateCaptcha(id, value) {
|
|
log.With(log.F{"id": id, "code": value}).Debug("ProcessLogin")
|
|
exception.New("验证码不正确", 403).Ctx(maps.Map{"id": id, "code": value}).Throw()
|
|
return nil
|
|
}
|
|
|
|
email := any.Of(payload.Get("email")).CString()
|
|
mobile := any.Of(payload.Get("mobile")).CString()
|
|
password := any.Of(payload.Get("password")).CString()
|
|
if email != "" {
|
|
return Auth("email", email, password)
|
|
} else if mobile != "" {
|
|
return Auth("mobile", mobile, password)
|
|
}
|
|
|
|
exception.New("参数错误", 400).Ctx(payload).Throw()
|
|
return nil
|
|
}
|
|
|
|
// ProcessCaptcha xiang.user.Captcha 验证码
|
|
func ProcessCaptcha(process *gou.Process) interface{} {
|
|
process.ValidateArgNums(1)
|
|
option := CaptchaOption{
|
|
Width: any.Of(process.ArgsURLValue(0, "width", "240")).CInt(),
|
|
Height: any.Of(process.ArgsURLValue(0, "height", "80")).CInt(),
|
|
Length: any.Of(process.ArgsURLValue(0, "height", "4")).CInt(),
|
|
Type: process.ArgsURLValue(0, "type", "math"),
|
|
Background: process.ArgsURLValue(0, "background", "#FFFFFF"),
|
|
Lang: process.ArgsURLValue(0, "lang", "zh"),
|
|
}
|
|
id, content := MakeCaptcha(option)
|
|
return maps.Map{
|
|
"id": id,
|
|
"content": content,
|
|
}
|
|
}
|
|
|
|
// ProcessToken xiang.user.Token 使用 Key & Secret 换取 Token
|
|
func ProcessToken(process *gou.Process) interface{} {
|
|
return nil
|
|
}
|
|
|
|
// ProcessTokenRefresh xiang.user.TokenRefresh 刷新Token
|
|
func ProcessTokenRefresh(process *gou.Process) interface{} {
|
|
return nil
|
|
}
|
|
|
|
// ProcessInfo xiang.user.Info 读取当前用户资料
|
|
func ProcessInfo(process *gou.Process) interface{} {
|
|
return nil
|
|
}
|