登陆状态检查

This commit is contained in:
筱锋xiao_lfeng 2023-12-26 16:04:24 +08:00
parent ab93bd397a
commit 77be5fce3a
No known key found for this signature in database
GPG Key ID: F693AA12AABBFA87
6 changed files with 66 additions and 7 deletions

View File

@ -16,6 +16,7 @@ type IHelloV1 interface {
type IAuthV1 interface {
AuthRegister(ctx context.Context, req *request.RegisterReq) (res *request.RegisterRes, err error)
AuthLogin(ctx context.Context, req *request.LoginReq) (res *request.LoginRes, err error)
AuthCheck(ctx context.Context, req *request.CheckReq) (res *request.CheckRes, err error)
}
type ITokenV1 interface {

View File

@ -10,6 +10,10 @@ type RegisterReq struct {
type LoginReq struct {
g.Meta `path:"/login" tags:"登录" method:"get" summary:"登录账号"`
}
type CheckReq struct {
g.Meta `path:"/check" tags:"检查登录" method:"get" summary:"检查登录"`
}
type RegisterRes struct{}
type LoginRes struct{}
type CheckRes struct{}

View File

@ -14,7 +14,7 @@ import (
// AuthRegister
//
// 用户注册
func (_ *ControllerV1) AuthRegister(ctx context.Context, _ *request.RegisterReq) (res *request.RegisterRes, err error) {
func (*ControllerV1) AuthRegister(ctx context.Context, _ *request.RegisterReq) (res *request.RegisterRes, err error) {
userRegister := entity.UserRegisterVO{}
req := ghttp.RequestFromCtx(ctx)
// 获取 model 表单信息
@ -34,7 +34,7 @@ func (_ *ControllerV1) AuthRegister(ctx context.Context, _ *request.RegisterReq)
return res, err
}
func (_ *ControllerV1) AuthLogin(ctx context.Context, _ *request.LoginReq) (res *request.LoginRes, err error) {
func (*ControllerV1) AuthLogin(ctx context.Context, _ *request.LoginReq) (res *request.LoginRes, err error) {
userLogin := entity.UserLoginVO{}
req := ghttp.RequestFromCtx(ctx)
// 获取 model 表单信息
@ -53,3 +53,14 @@ func (_ *ControllerV1) AuthLogin(ctx context.Context, _ *request.LoginReq) (res
}
return res, err
}
// AuthCheck
//
// 检查登录
func (*ControllerV1) AuthCheck(ctx context.Context, _ *request.CheckReq) (res *request.CheckRes, err error) {
req := ghttp.RequestFromCtx(ctx)
// 获取数据库中用户信息
userService := UserService.NewUserService()
userService.CheckLogin(req)
return res, err
}

View File

@ -57,3 +57,35 @@ func GetUser(user string) *do.UserDO {
return nil
}
}
// GetUserByToken
//
// 通过Token获取用户信息
func GetUserByToken(token string) *do.UserDO {
userDO := do.UserDO{}
getTokenResult, err := g.Model("xf_token").Fields("user_id").Where("token = ?", token).One()
if err == nil {
result, err := g.Model("xf_user").Where("id = ?", getTokenResult["user_id"]).One()
if err == nil {
if result.IsEmpty() {
g.Log().Cat("Database").Cat("User").Notice(context.Background(), "无法获取", token, "用户。原因:不存在此用户")
return nil
} else {
err := result.Struct(&userDO)
if err != nil {
g.Log().Cat("Database").Cat("User").Error(context.Background(), err.Error())
return nil
} else {
g.Log().Cat("Database").Cat("User").Notice(context.Background(), "Token", token, "获取用户", userDO.UserName, "成功")
return &userDO
}
}
} else {
g.Log().Cat("Database").Cat("User").Error(context.Background(), err.Error())
return nil
}
} else {
g.Log().Cat("Database").Cat("User").Error(context.Background(), err.Error())
return nil
}
}

View File

@ -69,7 +69,7 @@ func (_ *DefaultUserImpl) UserLogin(req *ghttp.Request, userVO *entity.UserLogin
// 比对密码-=
err := bcrypt.CompareHashAndPassword([]byte(getUserDO.Password), []byte(userVO.Password))
if err == nil {
// TokenServiceImpl 注册更新
// Token 注册更新
getTokenDO := tokenService().LoginToken(req, *getUserDO)
if getTokenDO != nil {
getUserDO.Password = ""
@ -84,6 +84,17 @@ func (_ *DefaultUserImpl) UserLogin(req *ghttp.Request, userVO *entity.UserLogin
}
}
func (_ *DefaultUserImpl) CheckLogin(req *ghttp.Request) {
// CheckLogin
//
// 检查登录
func (*DefaultUserImpl) CheckLogin(req *ghttp.Request) {
// 获取 Token
userDO := userDAO.GetUserByToken(req.Cookie.Get("token").String())
if userDO != nil {
userDO.Password = ""
userDO.OldPassword = nil
ResultUtil.Success(req, "用户已处于登陆状态", userDO)
} else {
ResultUtil.ErrorNoData(req, ErrorCode.UserNotExist)
}
}

View File

@ -49,7 +49,7 @@ func Error(req *ghttp.Request, errorCode ErrorCode.ErrorCode, data interface{})
//
// 错误输出(不含 data
func ErrorNoData(req *ghttp.Request, errorCode ErrorCode.ErrorCode) {
g.Log().Cat("Result").Debug(context.WithValue(context.Background(), req.RequestURI, req.RequestURI), req.RequestURI, "ErrorNoData[", errorCode.Code(), "]>", errorCode.Message())
g.Log().Cat("Result").Debug(context.WithValue(context.Background(), req.RequestURI, req.RequestURI), req.RequestURI, "<ErrorNoData[", errorCode.Code(), "]>", errorCode.Message())
req.Response.WriteJson(g.Map{
"output": errorCode.Output(),
"code": errorCode.Code(),
@ -61,7 +61,7 @@ func ErrorNoData(req *ghttp.Request, errorCode ErrorCode.ErrorCode) {
//
// 默认错误输出(包含 data
func ErrorDefault(req *ghttp.Request, output string, code int, message string, data interface{}) {
g.Log().Cat("Result").Debug(context.WithValue(context.Background(), req.RequestURI, req.RequestURI), req.RequestURI, "ErrorDefault[", code, "]>", message)
g.Log().Cat("Result").Debug(context.WithValue(context.Background(), req.RequestURI, req.RequestURI), req.RequestURI, "<ErrorDefault[", code, "]>", message)
req.Response.WriteJson(g.Map{
"output": output,
"code": code,