diff --git a/api/interface.go b/api/interface.go index 86f5546..a6ff64c 100644 --- a/api/interface.go +++ b/api/interface.go @@ -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 { diff --git a/api/request/authApi.go b/api/request/authApi.go index 0edac85..92b9b46 100644 --- a/api/request/authApi.go +++ b/api/request/authApi.go @@ -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{} diff --git a/internal/controller/auth/user/authController.go b/internal/controller/auth/user/authController.go index 6687aa5..8ac86b8 100644 --- a/internal/controller/auth/user/authController.go +++ b/internal/controller/auth/user/authController.go @@ -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 +} diff --git a/internal/dao/userDAO/userDAO.go b/internal/dao/userDAO/userDAO.go index 4c4e768..db1a764 100644 --- a/internal/dao/userDAO/userDAO.go +++ b/internal/dao/userDAO/userDAO.go @@ -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 + } +} diff --git a/internal/logic/UserServiceImpl/userServiceImpl.go b/internal/logic/UserServiceImpl/userServiceImpl.go index d42c1ac..025988a 100644 --- a/internal/logic/UserServiceImpl/userServiceImpl.go +++ b/internal/logic/UserServiceImpl/userServiceImpl.go @@ -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,14 @@ func (_ *DefaultUserImpl) UserLogin(req *ghttp.Request, userVO *entity.UserLogin } } -func (_ *DefaultUserImpl) CheckLogin(req *ghttp.Request) { - +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) + } } diff --git a/utility/ResultUtil/ResultUtil.go b/utility/ResultUtil/ResultUtil.go index 11c3534..a085042 100644 --- a/utility/ResultUtil/ResultUtil.go +++ b/utility/ResultUtil/ResultUtil.go @@ -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, "", 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, "", message) req.Response.WriteJson(g.Map{ "output": output, "code": code,