mengstack-api/internal/modules/rbac/interfaces/routes.go
MengStack Dev df809f1045
Some checks failed
CI / Build & Test (push) Failing after 1m31s
feat: user CRUD API + dashboard stats + kernel infrastructure
- Add user management endpoints (list/create/get/update/delete) with pagination and search
- Add dashboard stats endpoint with tenant/user/online counts and growth metrics
- Add tenant resolver middleware for multi-tenant request scoping
- Add i18n kernel with zh/en message files and AcceptLanguage middleware
- Add WebSocket hub/handler for real-time communication
- Add job scheduler kernel with cron support
- Add plugin sandbox for isolated execution
- Add storage kernel (local filesystem)
- Add event bus kernel for pub/sub
- Add cache kernel abstraction
- Add database migration runner and version upgrade checker
- Add rate limiting middleware with Redis backend
- Add SQL migrations for rbac, audit_logs, settings, notifications, examples
- Extend user repository with list/delete/count operations
- Register all module routes with tenant resolver
2026-10-03 03:42:58 +08:00

56 lines
1.4 KiB
Go

package interfaces
import (
"mengstack/internal/app/middleware"
"mengstack/internal/kernel/tenant"
"mengstack/internal/modules/rbac/application"
"mengstack/internal/modules/rbac/infrastructure"
rbacmiddleware "mengstack/internal/modules/rbac/middleware"
"github.com/gin-gonic/gin"
"go.uber.org/fx"
"go.uber.org/zap"
"gorm.io/gorm"
)
func SetupRoutes(
r *gin.Engine,
h *Handler,
authMW gin.HandlerFunc,
tenantResolver tenant.Resolver,
) {
rbac := r.Group("/api/v1/rbac")
rbac.Use(authMW, middleware.MultiTenant(tenantResolver))
{
rbac.GET("/permissions", h.ListPermissions)
rbac.POST("/roles", h.CreateRole)
rbac.GET("/roles", h.ListRoles)
rbac.GET("/roles/:id", h.GetRole)
rbac.PUT("/roles/:id", h.UpdateRole)
rbac.DELETE("/roles/:id", h.DeleteRole)
rbac.PUT("/roles/:id/permissions", h.SetRolePermissions)
rbac.GET("/roles/:id/permissions", h.GetRolePermissions)
rbac.POST("/users/:userId/roles", h.AssignRole)
rbac.DELETE("/users/:userId/roles/:roleId", h.RemoveRole)
rbac.GET("/users/:userId/roles", h.GetUserRoles)
}
}
var Module = fx.Module("rbac",
fx.Provide(
infrastructure.NewPermissionRepository,
infrastructure.NewRoleRepository,
infrastructure.NewUserRoleRepository,
application.NewService,
NewHandler,
rbacmiddleware.NewPermissionMiddleware,
),
fx.Invoke(func(log *zap.Logger, db *gorm.DB) {
if err := infrastructure.Seed(db, log); err != nil {
log.Error("rbac seed failed", zap.Error(err))
}
}),
)