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 }