mirror of
https://github.com/go-nunu/nunu-layout-advanced.git
synced 2025-09-27 04:45:52 +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/handler"
|
||||||
"github.com/go-nunu/nunu-layout-advanced/internal/job"
|
"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/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/server"
|
||||||
"github.com/go-nunu/nunu-layout-advanced/internal/service"
|
"github.com/go-nunu/nunu-layout-advanced/internal/service"
|
||||||
"github.com/go-nunu/nunu-layout-advanced/pkg/app"
|
"github.com/go-nunu/nunu-layout-advanced/pkg/app"
|
||||||
@@ -65,6 +66,7 @@ func NewWire(*viper.Viper, *log.Logger) (*app.App, func(), error) {
|
|||||||
handlerSet,
|
handlerSet,
|
||||||
jobSet,
|
jobSet,
|
||||||
serverSet,
|
serverSet,
|
||||||
|
wire.Struct(new(router.RouterDeps), "*"),
|
||||||
sid.NewSid,
|
sid.NewSid,
|
||||||
jwt.NewJwt,
|
jwt.NewJwt,
|
||||||
newApp,
|
newApp,
|
||||||
|
@@ -10,6 +10,7 @@ import (
|
|||||||
"github.com/go-nunu/nunu-layout-advanced/internal/handler"
|
"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/job"
|
||||||
"github.com/go-nunu/nunu-layout-advanced/internal/repository"
|
"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/server"
|
||||||
"github.com/go-nunu/nunu-layout-advanced/internal/service"
|
"github.com/go-nunu/nunu-layout-advanced/internal/service"
|
||||||
"github.com/go-nunu/nunu-layout-advanced/pkg/app"
|
"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)
|
userRepository := repository.NewUserRepository(repositoryRepository)
|
||||||
userService := service.NewUserService(serviceService, userRepository)
|
userService := service.NewUserService(serviceService, userRepository)
|
||||||
userHandler := handler.NewUserHandler(handlerHandler, userService)
|
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)
|
jobJob := job.NewJob(transaction, logger, sidSid)
|
||||||
userJob := job.NewUserJob(jobJob, userRepository)
|
userJob := job.NewUserJob(jobJob, userRepository)
|
||||||
jobServer := server.NewJobServer(logger, userJob)
|
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"
|
"github.com/gin-gonic/gin"
|
||||||
apiV1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
|
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/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/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/log"
|
||||||
"github.com/go-nunu/nunu-layout-advanced/pkg/server/http"
|
"github.com/go-nunu/nunu-layout-advanced/pkg/server/http"
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
@@ -17,8 +16,7 @@ import (
|
|||||||
func NewHTTPServer(
|
func NewHTTPServer(
|
||||||
logger *log.Logger,
|
logger *log.Logger,
|
||||||
conf *viper.Viper,
|
conf *viper.Viper,
|
||||||
jwt *jwt.JWT,
|
deps router.RouterDeps,
|
||||||
userHandler *handler.UserHandler,
|
|
||||||
) *http.Server {
|
) *http.Server {
|
||||||
if conf.GetString("env") == "prod" {
|
if conf.GetString("env") == "prod" {
|
||||||
gin.SetMode(gin.ReleaseMode)
|
gin.SetMode(gin.ReleaseMode)
|
||||||
@@ -53,25 +51,7 @@ func NewHTTPServer(
|
|||||||
})
|
})
|
||||||
|
|
||||||
v1 := s.Group("/v1")
|
v1 := s.Group("/v1")
|
||||||
{
|
router.InitUserRouter(v1, deps)
|
||||||
// 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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user