Some checks failed
ci/woodpecker/push/billing_fees Pipeline was successful
ci/woodpecker/push/bff Pipeline was successful
ci/woodpecker/push/db Pipeline was successful
ci/woodpecker/push/chain_gateway Pipeline was successful
ci/woodpecker/push/fx_ingestor Pipeline was successful
ci/woodpecker/push/fx_oracle Pipeline was successful
ci/woodpecker/push/frontend Pipeline was successful
ci/woodpecker/push/payments_orchestrator Pipeline was successful
ci/woodpecker/push/bump_version Pipeline failed
ci/woodpecker/push/nats Pipeline was successful
ci/woodpecker/push/ledger Pipeline was successful
ci/woodpecker/push/notification Pipeline was successful
53 lines
1.5 KiB
Go
53 lines
1.5 KiB
Go
package auth
|
|
|
|
import (
|
|
"github.com/tech/sendico/pkg/auth/internal/casbin"
|
|
"github.com/tech/sendico/pkg/auth/internal/native"
|
|
"github.com/tech/sendico/pkg/db/policy"
|
|
"github.com/tech/sendico/pkg/db/role"
|
|
"github.com/tech/sendico/pkg/merrors"
|
|
"github.com/tech/sendico/pkg/mlogger"
|
|
"go.mongodb.org/mongo-driver/mongo"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func CreateAuth(
|
|
logger mlogger.Logger,
|
|
client *mongo.Client,
|
|
db *mongo.Database,
|
|
pdb policy.DB,
|
|
rdb role.DB,
|
|
config *Config,
|
|
) (Enforcer, Manager, error) {
|
|
lg := logger.Named("auth")
|
|
lg.Debug("Creating enforcer...", zap.String("driver", string(config.Driver)))
|
|
l := lg.Named(string(config.Driver))
|
|
if config.Driver == Casbin {
|
|
enforcer, err := casbin.NewEnforcer(l, client, config.Settings)
|
|
if err != nil {
|
|
lg.Warn("Failed to create enforcer", zap.Error(err))
|
|
return nil, nil, err
|
|
}
|
|
manager, err := casbin.NewManager(l, pdb, rdb, enforcer, config.Settings)
|
|
if err != nil {
|
|
lg.Warn("Failed to create managment interface", zap.Error(err))
|
|
return nil, nil, err
|
|
}
|
|
return enforcer, manager, nil
|
|
}
|
|
if config.Driver == Native {
|
|
enforcer, err := native.NewEnforcer(l, db)
|
|
if err != nil {
|
|
lg.Warn("Failed to create enforcer", zap.Error(err))
|
|
return nil, nil, err
|
|
}
|
|
manager, err := native.NewManager(l, pdb, rdb, enforcer)
|
|
if err != nil {
|
|
lg.Warn("Failed to create managment interface", zap.Error(err))
|
|
return nil, nil, err
|
|
}
|
|
return enforcer, manager, nil
|
|
}
|
|
return nil, nil, merrors.InvalidArgument("Unknown enforcer type: "+string(config.Driver), "config.driver")
|
|
}
|