mirror of
https://github.com/go-nunu/nunu-layout-advanced.git
synced 2025-09-26 20:41:33 +08:00
feat: Support for route splitting
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
"github.com/go-nunu/nunu-layout-advanced/internal/handler"
|
||||
"github.com/go-nunu/nunu-layout-advanced/internal/job"
|
||||
"github.com/go-nunu/nunu-layout-advanced/internal/repository"
|
||||
"github.com/go-nunu/nunu-layout-advanced/internal/router"
|
||||
"github.com/go-nunu/nunu-layout-advanced/internal/server"
|
||||
"github.com/go-nunu/nunu-layout-advanced/internal/service"
|
||||
"github.com/go-nunu/nunu-layout-advanced/pkg/app"
|
||||
@@ -65,6 +66,7 @@ func NewWire(*viper.Viper, *log.Logger) (*app.App, func(), error) {
|
||||
handlerSet,
|
||||
jobSet,
|
||||
serverSet,
|
||||
wire.Struct(new(router.RouterDeps), "*"),
|
||||
sid.NewSid,
|
||||
jwt.NewJwt,
|
||||
newApp,
|
||||
|
@@ -10,6 +10,7 @@ import (
|
||||
"github.com/go-nunu/nunu-layout-advanced/internal/handler"
|
||||
"github.com/go-nunu/nunu-layout-advanced/internal/job"
|
||||
"github.com/go-nunu/nunu-layout-advanced/internal/repository"
|
||||
"github.com/go-nunu/nunu-layout-advanced/internal/router"
|
||||
"github.com/go-nunu/nunu-layout-advanced/internal/server"
|
||||
"github.com/go-nunu/nunu-layout-advanced/internal/service"
|
||||
"github.com/go-nunu/nunu-layout-advanced/pkg/app"
|
||||
@@ -34,7 +35,12 @@ func NewWire(viperViper *viper.Viper, logger *log.Logger) (*app.App, func(), err
|
||||
userRepository := repository.NewUserRepository(repositoryRepository)
|
||||
userService := service.NewUserService(serviceService, userRepository)
|
||||
userHandler := handler.NewUserHandler(handlerHandler, userService)
|
||||
httpServer := server.NewHTTPServer(logger, viperViper, jwtJWT, userHandler)
|
||||
routerDeps := router.RouterDeps{
|
||||
Logger: logger,
|
||||
JWT: jwtJWT,
|
||||
UserHandler: userHandler,
|
||||
}
|
||||
httpServer := server.NewHTTPServer(logger, viperViper, routerDeps)
|
||||
jobJob := job.NewJob(transaction, logger, sidSid)
|
||||
userJob := job.NewUserJob(jobJob, userRepository)
|
||||
jobServer := server.NewJobServer(logger, userJob)
|
||||
|
13
internal/router/router.go
Normal file
13
internal/router/router.go
Normal file
@@ -0,0 +1,13 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"github.com/go-nunu/nunu-layout-advanced/internal/handler"
|
||||
"github.com/go-nunu/nunu-layout-advanced/pkg/jwt"
|
||||
"github.com/go-nunu/nunu-layout-advanced/pkg/log"
|
||||
)
|
||||
|
||||
type RouterDeps struct {
|
||||
Logger *log.Logger
|
||||
JWT *jwt.JWT
|
||||
UserHandler *handler.UserHandler
|
||||
}
|
32
internal/router/user.go
Normal file
32
internal/router/user.go
Normal file
@@ -0,0 +1,32 @@
|
||||
// internal/router/user.go
|
||||
package router
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/go-nunu/nunu-layout-advanced/internal/middleware"
|
||||
)
|
||||
|
||||
func InitUserRouter(
|
||||
r *gin.RouterGroup,
|
||||
deps RouterDeps,
|
||||
) {
|
||||
{
|
||||
// No route group has permission
|
||||
noAuthRouter := r.Group("/")
|
||||
{
|
||||
noAuthRouter.POST("/register", deps.UserHandler.Register)
|
||||
noAuthRouter.POST("/login", deps.UserHandler.Login)
|
||||
}
|
||||
// Non-strict permission routing group
|
||||
noStrictAuthRouter := r.Group("/").Use(middleware.NoStrictAuth(deps.JWT, deps.Logger))
|
||||
{
|
||||
noStrictAuthRouter.GET("/user", deps.UserHandler.GetProfile)
|
||||
}
|
||||
|
||||
// Strict permission routing group
|
||||
strictAuthRouter := r.Group("/").Use(middleware.StrictAuth(deps.JWT, deps.Logger))
|
||||
{
|
||||
strictAuthRouter.PUT("/user", deps.UserHandler.UpdateProfile)
|
||||
}
|
||||
}
|
||||
}
|
@@ -4,9 +4,8 @@ import (
|
||||
"github.com/gin-gonic/gin"
|
||||
apiV1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
|
||||
"github.com/go-nunu/nunu-layout-advanced/docs"
|
||||
"github.com/go-nunu/nunu-layout-advanced/internal/handler"
|
||||
"github.com/go-nunu/nunu-layout-advanced/internal/middleware"
|
||||
"github.com/go-nunu/nunu-layout-advanced/pkg/jwt"
|
||||
"github.com/go-nunu/nunu-layout-advanced/internal/router"
|
||||
"github.com/go-nunu/nunu-layout-advanced/pkg/log"
|
||||
"github.com/go-nunu/nunu-layout-advanced/pkg/server/http"
|
||||
"github.com/spf13/viper"
|
||||
@@ -17,8 +16,7 @@ import (
|
||||
func NewHTTPServer(
|
||||
logger *log.Logger,
|
||||
conf *viper.Viper,
|
||||
jwt *jwt.JWT,
|
||||
userHandler *handler.UserHandler,
|
||||
deps router.RouterDeps,
|
||||
) *http.Server {
|
||||
if conf.GetString("env") == "prod" {
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
@@ -53,25 +51,7 @@ func NewHTTPServer(
|
||||
})
|
||||
|
||||
v1 := s.Group("/v1")
|
||||
{
|
||||
// No route group has permission
|
||||
noAuthRouter := v1.Group("/")
|
||||
{
|
||||
noAuthRouter.POST("/register", userHandler.Register)
|
||||
noAuthRouter.POST("/login", userHandler.Login)
|
||||
}
|
||||
// Non-strict permission routing group
|
||||
noStrictAuthRouter := v1.Group("/").Use(middleware.NoStrictAuth(jwt, logger))
|
||||
{
|
||||
noStrictAuthRouter.GET("/user", userHandler.GetProfile)
|
||||
}
|
||||
|
||||
// Strict permission routing group
|
||||
strictAuthRouter := v1.Group("/").Use(middleware.StrictAuth(jwt, logger))
|
||||
{
|
||||
strictAuthRouter.PUT("/user", userHandler.UpdateProfile)
|
||||
}
|
||||
}
|
||||
router.InitUserRouter(v1, deps)
|
||||
|
||||
return s
|
||||
}
|
||||
|
Reference in New Issue
Block a user