Files
EnGin/internal/service/auth_ser/login.go
T

34 lines
674 B
Go

package auth_ser
import (
"EnGin/internal/db"
"EnGin/internal/ent"
"EnGin/internal/ent/user"
"EnGin/internal/global"
"EnGin/internal/utils/pwd"
"context"
"errors"
)
var (
ErrUserNotFound = errors.New("用户不存在")
ErrAccount = errors.New("账号和密码错误")
)
func Login(ctx context.Context, username, password string) (*ent.User, error) {
u, err := db.Client.User.Query().Where(user.UsernameEQ(username)).WithRoles().Only(ctx)
if err != nil {
if ent.IsNotFound(err) {
return nil, ErrUserNotFound
}
return nil, global.ErrDbQuery
}
if !pwd.CompareHashAndPassword(u.Password, password) {
return nil, ErrAccount
}
return u, nil
}