Esempio n. 1
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();

            //Setup para configuração do Swagger
            SwaggerConfiguration.AddSwagger(services);

            //Setup para configuração do EntityFramework
            EntityFrameworkConfiguration.AddEntityFramework(services, Configuration);

            //Setup para configuração do JWT
            JwtConfiguration.ConfigureServices(services, Configuration);

            //Setup para o MongoDB
            MongoDBConfiguration.AddMongoDBSetup(services, Configuration);

            //Injeção de dependência
            DependencyInjectionConfiguration.AddDependencyInjection(services);

            //Setup para o MediatR
            MediatRConfiguration.AddMediatRSetup(services);

            //Setup para o AutoMapper
            AutoMapperConfiguration.AddAutoMapperSetup(services);

            //Setup para o CORS
            CorsConfiguration.AddCors(services);
        }
Esempio n. 2
0
        private static MongoContext CreateNewContext()
        {
            MongoContext ctx = new MongoContext();

            ctx._mongoClient = new MongoClient(MongoDBConfiguration.GetConfig().MongoDBCollection["Connection"].Value);
            return(ctx);
        }
        public static IServiceCollection AddMongoDBIdentity <TUser, TRole>(this IServiceCollection services, IConfiguration configuration) where TUser : IdentityUser where TRole : IdentityRole
        {
            services.Configure <MongoDBConfiguration>(options => options = new MongoDBConfiguration {
                ConnectionString = configuration.GetSection("MongoDB::ConnectionString").Value
            });

            return(services.AddMongoDBIdentity <TUser, TRole>());
        }
Esempio n. 4
0
        protected BaseRepository(MongoDBConfiguration mongoDBConfig)
        {
            _mongoDBConfig = mongoDBConfig;

            var url    = new MongoUrl(_mongoDBConfig.DbConnectionString);
            var client = new MongoClient(url);
            var db     = client.GetDatabase(url.DatabaseName);

            EntityCollection = db.GetCollection <TEntity>(CollectionName);
        }
Esempio n. 5
0
 public OrchestratorService(ILogger <OrchestratorService> logger,
                            IOptions <MongoDBConfiguration> mongoDbOptions,
                            IOptions <RabbitMQConfiguration> rabbitMqOptions,
                            GameStateMachine stateMachine)
 {
     mongoDbConfig     = mongoDbOptions.Value;
     rabbitMqConfig    = rabbitMqOptions.Value;
     this.logger       = logger;
     this.stateMachine = stateMachine;
 }
Esempio n. 6
0
        public UsersRepository(MongoDBConfiguration mongoDBConfig) : base(mongoDBConfig)
        {
            var userIndexDefinition = Builders <UserEntity> .IndexKeys.Ascending(r => r.Username);

            var createIndexOptions = new CreateIndexOptions()
            {
                Name = "UserUsernameIndexAsc", Background = true, Unique = true
            };

            EntityCollection.Indexes.CreateOne(userIndexDefinition, createIndexOptions);
        }
        /// <summary>
        /// Initialized a new instance of the class <see cref="MongoDBStorageServiceProvider"/>
        /// </summary>
        public MongoDBStorageServiceProvider(IConfiguration configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            _mongoConfig     = configuration.GetConfig <MongoDBConfiguration>(MongoDBConfiguration.ConfigurationSectionKey);
            _collectionNames = _mongoConfig.CollectionNames.SelectMany(c => c.Value)
                               .ToImmutableDictionary(k => k, v => _mongoConfig.CollectionNames.First(t => t.Value.Contains(v)).Key);

            _mongoClient = new MongoClient($"mongodb://${_mongoConfig.Host}:${_mongoConfig.Port}/${_mongoConfig.DataBase}");

            _mongoDB = _mongoClient.GetDatabase(_mongoConfig.DataBase, s_mongoSettings);
        }
Esempio n. 8
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            MongoDBConfiguration mongoDBCfg = new MongoDBConfiguration();

            Configuration.GetSection("MongoDBConfiguration").Bind(mongoDBCfg);

            RedisConfiguration redisCfg = new RedisConfiguration();

            Configuration.GetSection("RedisConfiguration").Bind(mongoDBCfg);

            ServiceStartUp.StartUpMongoDB(mongoDBCfg);
            ServiceStartUp.StartUpRedis(redisCfg);

            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();
            app.UseMvc();
        }
Esempio n. 9
0
 public static IServiceCollection AddMongoDB(this IServiceCollection services, MongoDBConfiguration mongoConfig)
 {
     services.AddSingleton(p => new MongoDBService(mongoConfig));
     AddCommonServices(services);
     return(services);
 }
Esempio n. 10
0
 public PollRepository(MongoDBConfiguration _option)
 {
     _client   = new MongoClient(_option.DefaultConnection);
     _database = _client.GetDatabase(_option.DatabaseName);
 }
Esempio n. 11
0
 public DbContext(IOptions <MongoDBConfiguration> mongoOptions)
 {
     mongoConfig = mongoOptions.Value;
     Client      = new MongoClient(mongoConfig.Endpoint);
     Database    = Client.GetDatabase(mongoConfig.Database);
 }
 static MongoUrl BuildConnectionString(MongoDBConfiguration configuration)
 => new MongoUrlBuilder(configuration.Host)
 {
     UseTls       = configuration.UseSSL,
     DatabaseName = configuration.Database
 }.ToMongoUrl();
        public IServiceProvider ConfigureServices(IServiceCollection services)
        {
            //  if (this._loggerFactory == null)
            //this._loggerFactory = (ILoggerFactory) new LoggerFactory();

            //var cors = new DefaultCorsPolicyService(_loggerFactory.CreateLogger<DefaultCorsPolicyService>())
            //{
            //    AllowedOrigins = { "https://*.infusync.com" },
            //    AllowAll = true
            //};
            //services.AddSingleton<ICorsPolicyService>(cors);

            // options.AddPolicy("MyCorsPolicy",
            //    builder => builder
            //       .SetIsOriginAllowedToAllowWildcardSubdomains()
            //       .WithOrigins("https://*.infusync.com")
            //       .AllowAnyMethod()
            //       .AllowCredentials()
            //       .AllowAnyHeader()
            //       .Build()
            //    );


            var dbConf = new MongoDBConfiguration();

            if (Environment.IsDevelopment())
            {
                dbConf.ConnectionString = Configuration["MongoDB:LocalConnectionString"];
                dbConf.DatabaseName     = Configuration["MongoDB:DatabaseName"];
            }
            else
            {
                dbConf.ConnectionString = Configuration["MongoDB:ConnectionString"];
                dbConf.DatabaseName     = Configuration["MongoDB:DatabaseName"];
            }

            services.Configure <MongoDBConfiguration>(options =>
            {
                options.DatabaseName     = dbConf.DatabaseName;
                options.ConnectionString = dbConf.ConnectionString;
            });

            //services.AddIdentity<ApplicationUser, IdentityRole>()
            //    .AddEntityFrameworkStores<ApplicationDbContext>()
            //    .AddDefaultTokenProviders();

            services.AddScoped <IPasswordHasher <ApplicationUser>, BCryptPasswordHasher <ApplicationUser> >();

            services.Configure <CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded    = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);


            services.AddIdentity <ApplicationUser, ApplicationRole>()
            .AddEntityFrameworkStores <ApplicationDbContext>()
            .AddDefaultTokenProviders();

            var mongoDbIdentityConfiguration = new MongoDbIdentityConfiguration
            {
                MongoDbSettings = new MongoDbSettings
                {
                    ConnectionString = dbConf.ConnectionString,
                    DatabaseName     = dbConf.DatabaseName
                },

                IdentityOptionsAction = options =>
                {
                    options.Password.RequireDigit           = false;
                    options.Password.RequiredLength         = 8;
                    options.Password.RequireNonAlphanumeric = false;
                    options.Password.RequireUppercase       = false;
                    options.Password.RequireLowercase       = false;

                    // Lockout settings
                    options.Lockout.DefaultLockoutTimeSpan  = TimeSpan.FromMinutes(30);
                    options.Lockout.MaxFailedAccessAttempts = 10;

                    // ApplicationUser settings
                    options.User.RequireUniqueEmail        = true;
                    options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@.-_";
                }
            };


            // Add Multi-Tenancy services.
            services.AddMultiTenancy <ApplicationTenant, ObjectId>()
            .AddRequestParsers(parsers =>
            {
                // To test a domain parser locally, add a similar line
                // to your hosts file for each tenant you want to test
                // For Windows: C:\Windows\System32\drivers\etc\hosts
                // 127.0.0.1    tenant1.tenants.local
                //parsers.AddSubdomainParser(".tenants.local");

                parsers.AddChildPathParser("/tenants/");
            });


            services.ConfigureMongoDbIdentity <ApplicationUser, ApplicationRole, ObjectId>(mongoDbIdentityConfiguration);


            services.AddScoped <ApplicationDbContext>();
            services.AddScoped <ApplicationTenant>();
            services.AddScoped <ApplicationUser>();
            services.AddScoped <ApplicationRole>();

            services.AddScoped <IApplicationUserDbContext, ApplicationUserDbContext>();
            services.Configure <IISOptions>(iis =>
            {
                iis.AuthenticationDisplayName = "Windows";
                iis.AutomaticAuthentication   = false;
            });



            services.AddTransient <IEmailSender, EmailSender>();

            services.Configure <DataProtectionTokenProviderOptions>(options =>
            {
                options.TokenLifespan = TimeSpan.FromHours(72);
            });

            //services.AddTransient<IConfigurationDbContext, ConfigurationDbContext>();
            //services.AddTransient<IInitConfigFiles, InitConfigFiles>();

            var builder = services.AddIdentityServer()
                          //.AddSigningCredential(cert)
                          //.AddConfigurationStore(Configuration)
                          //.AddOperationalStore(Configuration)
                          //.AddAspNetIdentity<ApplicationUser>()

                          .AddProfileService <ProfileService>();

            if (Environment.IsDevelopment())
            {
                builder.AddDeveloperSigningCredential();
            }
            else
            {
                X509Certificate2 cert = null;
                using (X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser))
                {
                    certStore.Open(OpenFlags.ReadOnly);
                    X509Certificate2Collection certCollection = certStore.Certificates.Find(
                        X509FindType.FindByThumbprint,
                        Configuration["Certificate:thumbprint"],
                        false);
                    // Get the first cert with the thumbprint
                    if (certCollection.Count > 0)
                    {
                        cert = certCollection[0];
                        Log.Logger.Information($"Successfully loaded cert from registry: {cert.Thumbprint}");
                    }
                }
                if (cert == null)
                {
                    cert = new X509Certificate2(Path.Combine(Environment.ContentRootPath, "a29c9cfbbc021387f22e906e9f22aeb.pfx"), "infusync");
                    Log.Logger.Information($"Falling back to cert from file. Successfully loaded: {cert.Thumbprint}");
                }

                builder.AddSigningCredential(cert);
            }

            services.AddAuthentication();
            //.AddGoogle(options =>
            //{
            //    options.ClientId = "708996912208-9m4dkjb5hscn7cjrn5u0r4tbgkbj1fko.apps.googleusercontent.com";
            //    options.ClientSecret = "wdfPY6t8H8cecgjlxud__4Gh";
            //});

            services.AddHangfire(x => x.UseMongoStorage(dbConf.ConnectionString, dbConf.DatabaseName));

            var cbuilder = new ContainerBuilder();

            cbuilder.RegisterType(typeof(ODDbContext))
            .As(typeof(IODDbContext))
            .InstancePerLifetimeScope();

            cbuilder.RegisterType(typeof(InitConfigFiles))
            .As(typeof(IInitConfigFiles))
            .InstancePerLifetimeScope();

            cbuilder.RegisterType(typeof(ConfigurationDbContext))
            .As(typeof(IConfigurationDbContext))
            .InstancePerLifetimeScope();

            cbuilder.RegisterGeneric(typeof(Repository <>))
            .As(typeof(IRepository <>))
            .InstancePerLifetimeScope();

            cbuilder.Populate(services);

            ApplicationContainer = cbuilder.Build();
            //GlobalConfiguration.Configuration.UseAutofacActivator(ApplicationContainer, false);
            return(new AutofacServiceProvider(ApplicationContainer));
        }
Esempio n. 14
0
 /// <summary>
 /// Constructor used by the DI
 /// </summary>
 /// <param name="mongoClient">The injected interface of the mongo client</param>
 /// <param name="optionsMongoDB">The IOptions that contains the mongo configurations</param>
 /// <param name="logger">The injected logger</param>
 public MongoService(IMongoClient mongoClient, IOptions <MongoDBConfiguration> optionsMongoDB, ILogger <MongoService> logger)
 {
     this.logger          = logger;
     mongoDBConfiguration = optionsMongoDB.Value;
     this.mongoClient     = mongoClient;
 }
Esempio n. 15
0
 public NotesRepository(MongoDBConfiguration mongoDBConfig) : base(mongoDBConfig)
 {
 }