web-production-saas-starter/go-b2b-starter/src/api/rbac/provider.go
2025-12-16 18:54:41 +04:00

46 lines
1.1 KiB
Go

package rbac
import (
"fmt"
"github.com/moasq/go-b2b-starter/pkg/auth"
"go.uber.org/dig"
)
// Provider handles dependency injection for the RBAC module
type Provider struct {
container *dig.Container
}
// NewProvider creates a new RBAC provider
func NewProvider(container *dig.Container) *Provider {
return &Provider{
container: container,
}
}
// RegisterDependencies registers all RBAC dependencies in the container
func (p *Provider) RegisterDependencies() error {
// Provide RBAC Service
if err := p.container.Provide(func() auth.RBACService {
return auth.NewRBACService()
}); err != nil {
return fmt.Errorf("failed to provide rbac service: %w", err)
}
// Provide RBAC Handler
if err := p.container.Provide(func(service auth.RBACService) *Handler {
return NewHandler(service)
}); err != nil {
return fmt.Errorf("failed to provide rbac handler: %w", err)
}
// Provide RBAC Routes
if err := p.container.Provide(func(handler *Handler) *Routes {
return NewRoutes(handler)
}); err != nil {
return fmt.Errorf("failed to provide rbac routes: %w", err)
}
return nil
}