public ResourceMongoDbRepository(MongoDbContextProvider mongoDbContextProvider)
        {
            if (dbContext == null)
            {
                Check.NotEmpty(mongoDbContextProvider.UserDatabaseName, "MongoDb UserDatabaseName");

                var client = new MongoClient(mongoDbContextProvider.ConnectionString);
                dbContext = client.GetDatabase(mongoDbContextProvider.UserDatabaseName);
            }
        }
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // Add framework services.
            services.AddMvc();

            //services.Configure<MongoDbContextProvider>(Configuration);
            services.AddSingleton(new MongoDbContextProvider()
            {
                ConnectionString   = Configuration["MongoDbContextProvider:ConnectionString"],
                PolicyDatabaseName = Configuration["MongoDbContextProvider:PolicyDatabaseName"],
                UserCollectionName = Configuration["MongoDbContextProvider:UserCollectionName"],
                UserDatabaseName   = Configuration["MongoDbContextProvider:UserDatabaseName"]
            });

            MongoDbContextProvider.Setup();

            services.AddScoped(typeof(IAccessControlPolicyRepository), typeof(AccessControlPolicyMongoDbRepository));
            services.AddScoped(typeof(IPrivacyPolicyRepository), typeof(PrivacyPolicyMongoDbRepository));
            services.AddScoped(typeof(IPolicyCombiningRepository), typeof(PolicyCombiningMongoDbRepository));
            services.AddScoped(typeof(IPrivacyDomainRepository), typeof(PrivacyDomainMongoDbRepository));
            services.AddScoped(typeof(IResourceRepository), typeof(ResourceMongoDbRepository));
            services.AddScoped(typeof(ISubjectRepository), typeof(SubjectMongoDbRepository));

            services.AddSingleton(typeof(AccessControlService));
            services.AddSingleton(typeof(PrivacyService));
            services.AddSingleton(typeof(SecurityService));
            services.AddSingleton(typeof(ConditionalExpressionService));

            var corsBuilder = new CorsPolicyBuilder();

            corsBuilder.AllowAnyHeader();
            corsBuilder.AllowAnyMethod();
            corsBuilder.AllowAnyOrigin(); // For anyone access.
            corsBuilder.AllowCredentials();

            services.AddCors(options =>
            {
                options.AddPolicy("CorsPolicy", corsBuilder.Build());
            });

            var pluginFunctionFactory = UserDefinedFunctionFactory.GetInstance();

            pluginFunctionFactory.RegisterDefaultFunctions();

            var domainFactory = PrivacyDomainPluginFactory.GetInstance();

            domainFactory.RegisterDefaultPlugin();
        }
        private static IContainer SetupContainer()
        {
            MongoDbContextProvider.Setup();

            var builder = new ContainerBuilder();

            builder.RegisterType <AccessControlPolicyMongoDbRepository>().As <IAccessControlPolicyRepository>();
            builder.RegisterType <PrivacyPolicyMongoDbRepository>().As <IPrivacyPolicyRepository>();
            builder.RegisterType <PolicyCombiningMongoDbRepository>().As <IPolicyCombiningRepository>();
            builder.RegisterType <PrivacyDomainMongoDbRepository>().As <IPrivacyDomainRepository>().SingleInstance();
            builder.RegisterType <AccessControlPolicyMongoDbRepository>().As <IAccessControlPolicyRepository>();
            builder.RegisterType <SubjectMongoDbRepository>().As <ISubjectRepository>();
            builder.RegisterType <ResourceMongoDbRepository>().As <IResourceRepository>();

            builder.RegisterType <LoggerFactory>().As <ILoggerFactory>().SingleInstance();
            builder.RegisterType <Logger <AccessControlService> >().As <ILogger <AccessControlService> >();
            builder.RegisterType <Logger <PrivacyService> >().As <ILogger <PrivacyService> >();
            builder.RegisterType <Logger <ConditionalExpressionService> >().As <ILogger <ConditionalExpressionService> >();

            builder.Register(c => new MongoDbContextProvider()
            {
                ConnectionString   = "mongodb://localhost:27017",
                PolicyDatabaseName = "Policy",
                UserCollectionName = "UserDB",
                UserDatabaseName   = "UserDB"
            }).SingleInstance();

            builder.RegisterType <AccessControlService>().SingleInstance();
            builder.RegisterType <PrivacyService>().SingleInstance();
            builder.RegisterType <ConditionalExpressionService>().SingleInstance();
            builder.RegisterType <SecurityService>().SingleInstance();

            var pluginFunctionFactory = UserDefinedFunctionFactory.GetInstance();

            pluginFunctionFactory.RegisterDefaultFunctions();

            var domainFactory = PrivacyDomainPluginFactory.GetInstance();

            domainFactory.RegisterDefaultPlugin();

            var container = builder.Build();

            return(container);
        }
Esempio n. 4
0
 public PrivacyDomainMongoDbRepository(MongoDbContextProvider mongoDbContextProvider)
     : base(mongoDbContextProvider)
 {
     _mongoCollection = dbContext.GetCollection <PrivacyDomain>("PrivacyDomain");
     _privacyDomains  = _mongoCollection.Find(_ => true).ToList();
 }
Esempio n. 5
0
 public PrivacyPolicyMongoDbRepository(MongoDbContextProvider mongoDbContextProvider)
     : base(mongoDbContextProvider)
 {
 }
 public AccessControlPolicyMongoDbRepository(MongoDbContextProvider mongoDbContextProvider)
     : base(mongoDbContextProvider)
 {
 }
 public PolicyCombiningMongoDbRepository(MongoDbContextProvider mongoDbContextProvider)
     : base(mongoDbContextProvider)
 {
 }