base.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /*
  2. * @desc:system base controller
  3. * @company:云南奇讯科技有限公司
  4. * @Author: yixiaohu
  5. * @Date: 2022/3/4 18:12
  6. */
  7. package controller
  8. import (
  9. "github.com/gogf/gf/v2/frame/g"
  10. "github.com/gogf/gf/v2/net/ghttp"
  11. "github.com/gogf/gf/v2/util/gconv"
  12. "github.com/tiger1103/gfast-token/gftoken"
  13. commonController "github.com/tiger1103/gfast/v3/internal/app/common/controller"
  14. "github.com/tiger1103/gfast/v3/internal/app/system/model"
  15. "github.com/tiger1103/gfast/v3/internal/app/system/service"
  16. "github.com/tiger1103/gfast/v3/library/libResponse"
  17. )
  18. type baseController struct {
  19. commonController.BaseController
  20. }
  21. // Init 自动执行的初始化方法
  22. func (c *baseController) Init(r *ghttp.Request) {
  23. c.BaseController.Init(r)
  24. b, failed := c.setLoginUser(r)
  25. if !b {
  26. libResponse.JsonExit(r, failed.Code, failed.Message)
  27. }
  28. }
  29. //判断登录并设置用户信息
  30. func (c *baseController) setLoginUser(r *ghttp.Request) (b bool, failed *gftoken.AuthFailed) {
  31. ctx := r.GetCtx()
  32. b = true
  33. // 验证用户是否登录
  34. b, failed = service.GfToken(ctx).IsLogin(r)
  35. if !b {
  36. return
  37. }
  38. // 初始化登录用户信息
  39. data, err := service.GfToken(ctx).ParseToken(r)
  40. if err != nil {
  41. return
  42. }
  43. if data != nil {
  44. context := new(model.Context)
  45. err = gconv.Struct(data.Data, &context.User)
  46. if err != nil {
  47. g.Log().Error(ctx, err)
  48. return
  49. }
  50. service.Context().Init(r, context)
  51. }
  52. return
  53. }