public static IServiceCollection AddInfrastructure()

in src/Services/User/User.Infrastructure/DependencyInjection.cs [34:74]


        public static IServiceCollection AddInfrastructure(this IServiceCollection services, IConfiguration configuration)
        {
            services.AddOptions<ClientIdentityOptions>()
                .Configure<IConfiguration>((settings, config) =>
                {
                    config.GetSection("ClientIdentity").Bind(settings);
                });

            services.AddOptions<CassandraOptions>()
                .Configure<IConfiguration>((settings, config) =>
                {
                    config.GetSection("Cassandra").Bind(settings);
                });

            services.AddSingleton<ICassandraCluster, CassandraCluster>();
            services.AddSingleton<ICassandraSession, CassandraSession>();
            services.AddTransient<IUserRepository, UserRepository>();
            services.AddTransient<IMedicalRegistrationRepository, MedicalRegistrationRepository>();

            services.AddScoped<AspNetUserManager<ApplicationUser>>();

            services.AddTransient<IIdentityService, IdentityService>();

            services.AddIdentityWithStore(configuration, typeof(ApplicationDbContextSeed).Assembly);

            services.Configure<IdentityOptions>(options =>
            {
                options.Password.RequireDigit = true;
                options.Password.RequireLowercase = true;
                options.Password.RequireNonAlphanumeric = true;
                options.Password.RequireUppercase = true;
                options.Password.RequiredLength = 8;
                options.Password.RequiredUniqueChars = 1;

                options.Lockout.AllowedForNewUsers = true;
                options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(10);
                options.Lockout.MaxFailedAccessAttempts = 4;
            });

            return services;
        }