You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
1.6 KiB
Go
77 lines
1.6 KiB
Go
package auth
|
|
|
|
import (
|
|
"cls/internal/domain/auth"
|
|
domainUser "cls/internal/domain/user"
|
|
middleware "cls/internal/infrastructure/middleware/auth"
|
|
"cls/pkg/logger"
|
|
"cls/pkg/xorm_engine"
|
|
"errors"
|
|
"xorm.io/builder"
|
|
)
|
|
|
|
type AuthRepositoryORM struct {
|
|
engine *xorm_engine.Engine
|
|
auth *middleware.AuthMiddleware
|
|
log logger.Logger
|
|
}
|
|
|
|
var _ auth.AuthRepository = (*AuthRepositoryORM)(nil)
|
|
|
|
func NewAuthRepositoryORM(db *xorm_engine.Engine, auth *middleware.AuthMiddleware, logger logger.New) auth.AuthRepository {
|
|
return &AuthRepositoryORM{
|
|
engine: db,
|
|
auth: auth,
|
|
log: logger("panoramic:persistence:auth"),
|
|
}
|
|
}
|
|
func (a AuthRepositoryORM) LoginByPassword(phone, password string) (string, error) {
|
|
u := &domainUser.User{}
|
|
has, err := a.engine.Where(builder.Eq{"phone": phone}).Get(u)
|
|
if err != nil {
|
|
a.log.Error(err)
|
|
return "", err
|
|
}
|
|
if !has {
|
|
a.log.Errorf("用户不存在")
|
|
return "", errors.New("")
|
|
}
|
|
|
|
if u.Password == "" {
|
|
return "", errors.New("请使用验证码登录")
|
|
}
|
|
|
|
if u.Password != password {
|
|
return "", errors.New("密码错误")
|
|
}
|
|
token, err := a.auth.GenerateUserToken(phone)
|
|
if err != nil {
|
|
a.log.Error(err.Error())
|
|
return "", err
|
|
}
|
|
return token, nil
|
|
}
|
|
|
|
func (a AuthRepositoryORM) LoginByCaptcha(phone string) (string, error) {
|
|
u := &domainUser.User{}
|
|
has, err := a.engine.Where(builder.Eq{"phone": phone}).Get(u)
|
|
if err != nil {
|
|
a.log.Error(err)
|
|
return "", err
|
|
}
|
|
if !has {
|
|
//注册用户
|
|
u.Phone = phone
|
|
u.GiftCount = 2
|
|
_, err = a.engine.Insert(u)
|
|
if err != nil {
|
|
a.log.Error(err)
|
|
}
|
|
}
|
|
token, err := a.auth.GenerateUserToken(phone)
|
|
if err != nil {
|
|
a.log.Error(err)
|
|
}
|
|
return token, nil
|
|
}
|