gtoken_group.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package gtoken
  2. import (
  3. "context"
  4. "errors"
  5. "github.com/gogf/gf/v2/frame/g"
  6. "github.com/gogf/gf/v2/net/ghttp"
  7. "github.com/gogf/gf/v2/text/gstr"
  8. )
  9. // Middleware 绑定group
  10. func (m *GfToken) Middleware(ctx context.Context, group *ghttp.RouterGroup) error {
  11. if !m.InitConfig() {
  12. return errors.New("InitConfig fail")
  13. }
  14. // 设置为Group模式
  15. m.MiddlewareType = MiddlewareTypeGroup
  16. g.Log().Info(ctx, "[GToken][params:"+m.String()+"]start... ")
  17. // 缓存模式
  18. if m.CacheMode > CacheModeFile {
  19. g.Log().Error(ctx, "[GToken]CacheMode set error")
  20. return errors.New("CacheMode set error")
  21. }
  22. // 登录
  23. if m.LoginPath == "" || m.LoginBeforeFunc == nil {
  24. g.Log().Error(ctx, "[GToken]LoginPath or LoginBeforeFunc not set")
  25. return errors.New("LoginPath or LoginBeforeFunc not set")
  26. }
  27. // 登出
  28. if m.LogoutPath == "" {
  29. g.Log().Error(ctx, "[GToken]LogoutPath not set")
  30. return errors.New("LogoutPath not set")
  31. }
  32. group.Middleware(m.authMiddleware)
  33. registerFunc(ctx, group, m.LoginPath, m.Login)
  34. registerFunc(ctx, group, m.LogoutPath, m.Logout)
  35. return nil
  36. }
  37. // 如果包含请求方式,按照请求方式注册;默认注册所有
  38. func registerFunc(ctx context.Context, group *ghttp.RouterGroup, pattern string, object interface{}) {
  39. if gstr.Contains(pattern, ":") || gstr.Contains(pattern, "@") {
  40. group.Map(map[string]interface{}{
  41. pattern: object,
  42. })
  43. } else {
  44. group.ALL(pattern, object)
  45. }
  46. }