http.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package server
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "github.com/go-nunu/nunu-layout-advanced/docs"
  5. "github.com/go-nunu/nunu-layout-advanced/internal/handler"
  6. "github.com/go-nunu/nunu-layout-advanced/internal/pkg/middleware"
  7. "github.com/go-nunu/nunu-layout-advanced/internal/pkg/response"
  8. "github.com/go-nunu/nunu-layout-advanced/pkg/jwt"
  9. "github.com/go-nunu/nunu-layout-advanced/pkg/log"
  10. swaggerfiles "github.com/swaggo/files"
  11. ginSwagger "github.com/swaggo/gin-swagger"
  12. )
  13. func NewServerHTTP(
  14. logger *log.Logger,
  15. jwt *jwt.JWT,
  16. userHandler handler.UserHandler,
  17. ) *gin.Engine {
  18. gin.SetMode(gin.ReleaseMode)
  19. r := gin.Default()
  20. // swagger doc
  21. docs.SwaggerInfo.BasePath = "/"
  22. r.GET("/swagger/*any", ginSwagger.WrapHandler(
  23. swaggerfiles.Handler,
  24. //ginSwagger.URL(fmt.Sprintf("http://localhost:%d/swagger/doc.json", conf.GetInt("app.http.port"))),
  25. ginSwagger.DefaultModelsExpandDepth(-1),
  26. ))
  27. r.Use(
  28. middleware.CORSMiddleware(),
  29. middleware.ResponseLogMiddleware(logger),
  30. middleware.RequestLogMiddleware(logger),
  31. //middleware.SignMiddleware(log),
  32. )
  33. // No route group has permission
  34. noAuthRouter := r.Group("/")
  35. {
  36. noAuthRouter.GET("/", func(ctx *gin.Context) {
  37. logger.WithContext(ctx).Info("hello")
  38. response.HandleSuccess(ctx, map[string]interface{}{
  39. ":)": "Thank you for using nunu!",
  40. })
  41. })
  42. noAuthRouter.POST("/register", userHandler.Register)
  43. noAuthRouter.POST("/login", userHandler.Login)
  44. }
  45. // Non-strict permission routing group
  46. noStrictAuthRouter := r.Group("/").Use(middleware.NoStrictAuth(jwt, logger))
  47. {
  48. noStrictAuthRouter.GET("/user", userHandler.GetProfile)
  49. }
  50. // Strict permission routing group
  51. strictAuthRouter := r.Group("/").Use(middleware.StrictAuth(jwt, logger))
  52. {
  53. strictAuthRouter.PUT("/user", userHandler.UpdateProfile)
  54. }
  55. return r
  56. }