46 lines
1.1 KiB
Go
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
|
|
}
|