Some checks failed
CI / Build & Test (push) Failing after 1m31s
- 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
56 lines
1.4 KiB
Go
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))
|
|
}
|
|
}),
|
|
)
|