init_router.go 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package router
  2. import (
  3. "gas-cylinder-api/common/middleware"
  4. handler2 "gas-cylinder-api/common/middleware/handler"
  5. "github.com/gin-gonic/gin"
  6. swaggerfiles "github.com/swaggo/files"
  7. ginSwagger "github.com/swaggo/gin-swagger"
  8. jwt "gogs.baozhida.cn/zoie/OAuth-core/pkg/jwtauth"
  9. "gogs.baozhida.cn/zoie/OAuth-core/sdk/config"
  10. "os"
  11. log "gogs.baozhida.cn/zoie/OAuth-core/logger"
  12. "gogs.baozhida.cn/zoie/OAuth-core/sdk"
  13. )
  14. // InitRouter 路由初始化,不要怀疑,这里用到了
  15. func InitRouter() {
  16. var r *gin.Engine
  17. h := sdk.Runtime.GetEngine()
  18. if h == nil {
  19. log.Fatal("not found engine...")
  20. os.Exit(-1)
  21. }
  22. switch h.(type) {
  23. case *gin.Engine:
  24. r = h.(*gin.Engine)
  25. default:
  26. log.Fatal("not support other engine")
  27. os.Exit(-1)
  28. }
  29. // the jwt middleware
  30. authMiddleware, err := middleware.AuthInit()
  31. if err != nil {
  32. log.Fatalf("JWT Init Error, %s", err.Error())
  33. }
  34. // 注册系统路由
  35. InitSysRouter(r, authMiddleware)
  36. }
  37. func InitSysRouter(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware) *gin.RouterGroup {
  38. g := r.Group("")
  39. // 静态文件
  40. // sysStaticFileRouter(g)
  41. // swagger;注意:生产环境可以注释掉
  42. if config.ApplicationConfig.Mode != "prod" {
  43. sysSwaggerRouter(g)
  44. }
  45. // 需要认证
  46. sysCheckRoleRouterInit(g, authMiddleware)
  47. AppletCustomerRouterInit(g)
  48. return g
  49. }
  50. func sysSwaggerRouter(r *gin.RouterGroup) {
  51. //r.GET("/swagger/admin/*any", ginSwagger.WrapHandler(swaggerfiles.NewHandler(), ginSwagger.InstanceName("admin")))
  52. //r.GET("/swagger/*any", func(c *gin.Context) {
  53. // ginSwagger.DisablingWrapHandler(swaggerfiles.Handler, "SWAGGER")(c)
  54. //})
  55. r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerfiles.Handler))
  56. }
  57. func sysCheckRoleRouterInit(r *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
  58. v1 := r.Group("/api/")
  59. {
  60. v1.POST("/login", authMiddleware.LoginHandler)
  61. // Refresh time can be longer than token timeout
  62. v1.GET("/refresh_token", authMiddleware.RefreshHandler)
  63. }
  64. for _, f := range routerCheckRole {
  65. f(v1, authMiddleware)
  66. }
  67. for _, f := range routerNoCheckRole {
  68. f(v1)
  69. }
  70. registerBaseRouter(v1, authMiddleware)
  71. }
  72. func registerBaseRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
  73. v1auth := v1.Group("").Use(authMiddleware.MiddlewareFunc())
  74. {
  75. v1auth.POST("/logout", handler2.LogOut)
  76. }
  77. }