Files
sxchnge/backend/pkg/auth/internal/casbin/factory.go
T

35 lines
1022 B
Go

package casbin
import (
cc "git.sendico.io/tech/sxchnge/bff/pkg/auth/internal/casbin/config"
"git.sendico.io/tech/sxchnge/bff/pkg/auth/internal/casbin/mongoadapter"
"git.sendico.io/tech/sxchnge/bff/pkg/mlogger"
"github.com/casbin/casbin/v3"
"go.mongodb.org/mongo-driver/v2/mongo"
"go.uber.org/zap"
)
func createAdapter(logger mlogger.Logger, config *cc.Config, client *mongo.Client) (*casbin.Enforcer, error) {
dbc, err := cc.PrepareConfig(logger, config)
if err != nil {
logger.Warn("Failed to prepare database configuration", zap.Error(err))
return nil, err
}
adapter, err := mongoadapter.New(client, dbc.Adapter)
if err != nil {
logger.Warn("Failed to create DB adapter", zap.Error(err))
return nil, err
}
e, err := casbin.NewEnforcer(dbc.ModelPath, adapter, NewCasbinLogger(logger))
if err != nil {
logger.Warn("Failed to create permissions enforcer", zap.Error(err))
return nil, err
}
e.EnableAutoSave(true)
// No need to manually load policy. Casbin does it for us
return e, nil
}