router_api.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package router
  2. import (
  3. "github.com/xinliangnote/go-gin-api/internal/api/admin"
  4. "github.com/xinliangnote/go-gin-api/internal/api/authorized"
  5. "github.com/xinliangnote/go-gin-api/internal/api/config"
  6. "github.com/xinliangnote/go-gin-api/internal/api/cron"
  7. "github.com/xinliangnote/go-gin-api/internal/api/helper"
  8. "github.com/xinliangnote/go-gin-api/internal/api/menu"
  9. "github.com/xinliangnote/go-gin-api/internal/api/tool"
  10. "github.com/xinliangnote/go-gin-api/internal/pkg/core"
  11. )
  12. func setApiRouter(r *resource) {
  13. // helper
  14. helperHandler := helper.New(r.logger, r.db, r.cache)
  15. helpers := r.mux.Group("/helper")
  16. {
  17. helpers.GET("/md5/:str", helperHandler.Md5())
  18. helpers.POST("/sign", helperHandler.Sign())
  19. }
  20. // admin
  21. adminHandler := admin.New(r.logger, r.db, r.cache)
  22. // 需要签名验证,无需登录验证,无需 RBAC 权限验证
  23. login := r.mux.Group("/api", r.interceptors.CheckSignature())
  24. {
  25. login.POST("/login", adminHandler.Login())
  26. }
  27. // 需要签名验证、登录验证,无需 RBAC 权限验证
  28. notRBAC := r.mux.Group("/api", core.WrapAuthHandler(r.interceptors.CheckLogin), r.interceptors.CheckSignature())
  29. {
  30. notRBAC.POST("/admin/logout", adminHandler.Logout())
  31. notRBAC.PATCH("/admin/modify_password", adminHandler.ModifyPassword())
  32. notRBAC.GET("/admin/info", adminHandler.Detail())
  33. notRBAC.PATCH("/admin/modify_personal_info", adminHandler.ModifyPersonalInfo())
  34. }
  35. // 需要签名验证、登录验证、RBAC 权限验证
  36. api := r.mux.Group("/api", core.WrapAuthHandler(r.interceptors.CheckLogin), r.interceptors.CheckSignature(), r.interceptors.CheckRBAC())
  37. {
  38. // authorized
  39. authorizedHandler := authorized.New(r.logger, r.db, r.cache)
  40. api.POST("/authorized", authorizedHandler.Create())
  41. api.GET("/authorized", authorizedHandler.List())
  42. api.PATCH("/authorized/used", authorizedHandler.UpdateUsed())
  43. api.DELETE("/authorized/:id", core.AliasForRecordMetrics("/api/authorized/info"), authorizedHandler.Delete())
  44. api.POST("/authorized_api", authorizedHandler.CreateAPI())
  45. api.GET("/authorized_api", authorizedHandler.ListAPI())
  46. api.DELETE("/authorized_api/:id", core.AliasForRecordMetrics("/api/authorized_api/info"), authorizedHandler.DeleteAPI())
  47. api.POST("/admin", adminHandler.Create())
  48. api.GET("/admin", adminHandler.List())
  49. api.PATCH("/admin/used", adminHandler.UpdateUsed())
  50. api.PATCH("/admin/offline", adminHandler.Offline())
  51. api.PATCH("/admin/reset_password/:id", core.AliasForRecordMetrics("/api/admin/reset_password"), adminHandler.ResetPassword())
  52. api.DELETE("/admin/:id", core.AliasForRecordMetrics("/api/admin"), adminHandler.Delete())
  53. api.POST("/admin/menu", adminHandler.CreateAdminMenu())
  54. api.GET("/admin/menu/:id", core.AliasForRecordMetrics("/api/admin/menu"), adminHandler.ListAdminMenu())
  55. // menu
  56. menuHandler := menu.New(r.logger, r.db, r.cache)
  57. api.POST("/menu", menuHandler.Create())
  58. api.GET("/menu", menuHandler.List())
  59. api.GET("/menu/:id", core.AliasForRecordMetrics("/api/menu"), menuHandler.Detail())
  60. api.PATCH("/menu/used", menuHandler.UpdateUsed())
  61. api.PATCH("/menu/sort", menuHandler.UpdateSort())
  62. api.DELETE("/menu/:id", core.AliasForRecordMetrics("/api/menu"), menuHandler.Delete())
  63. api.POST("/menu_action", menuHandler.CreateAction())
  64. api.GET("/menu_action", menuHandler.ListAction())
  65. api.DELETE("/menu_action/:id", core.AliasForRecordMetrics("/api/menu_action"), menuHandler.DeleteAction())
  66. // tool
  67. toolHandler := tool.New(r.logger, r.db, r.cache)
  68. api.GET("/tool/hashids/encode/:id", core.AliasForRecordMetrics("/api/tool/hashids/encode"), toolHandler.HashIdsEncode())
  69. api.GET("/tool/hashids/decode/:id", core.AliasForRecordMetrics("/api/tool/hashids/decode"), toolHandler.HashIdsDecode())
  70. api.POST("/tool/cache/search", toolHandler.SearchCache())
  71. api.PATCH("/tool/cache/clear", toolHandler.ClearCache())
  72. api.GET("/tool/data/dbs", toolHandler.Dbs())
  73. api.POST("/tool/data/tables", toolHandler.Tables())
  74. api.POST("/tool/data/mysql", toolHandler.SearchMySQL())
  75. api.POST("/tool/send_message", toolHandler.SendMessage())
  76. // config
  77. configHandler := config.New(r.logger, r.db, r.cache)
  78. api.PATCH("/config/email", configHandler.Email())
  79. // cron
  80. cronHandler := cron.New(r.logger, r.db, r.cache, r.cronServer)
  81. api.POST("/cron", cronHandler.Create())
  82. api.GET("/cron", cronHandler.List())
  83. api.GET("/cron/:id", core.AliasForRecordMetrics("/api/cron/detail"), cronHandler.Detail())
  84. api.POST("/cron/:id", core.AliasForRecordMetrics("/api/cron/modify"), cronHandler.Modify())
  85. api.PATCH("/cron/used", cronHandler.UpdateUsed())
  86. api.PATCH("/cron/exec/:id", core.AliasForRecordMetrics("/api/cron/exec"), cronHandler.Execute())
  87. }
  88. }