// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { // (1) - Dependency Inyection DependencyInjectionConfig.Register(services); // (2) - AutoMapper Configuration AutoMapperConfig.Register(services); // (3) - Swagger Configuration SwaggerConfig.Register(services); // (4) - Setting Configuration AppSettingsConfig.Register(services, _env, Configuration); // (5) - services.AddControllers(); // (6) - Filters configurations FiltersConfig.Register(services); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddIdentity <User, IdentityRole>() .AddEntityFrameworkStores <smartFundsDbContext>() .AddDefaultTokenProviders(); services.Configure <IdentityOptions>(options => { // Password settings. options.Password.RequireDigit = false; options.Password.RequireLowercase = false; options.Password.RequireNonAlphanumeric = false; options.Password.RequireUppercase = false; options.Password.RequiredLength = 8; options.Password.RequiredUniqueChars = 1; // Lockout settings. options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromSeconds(60); options.Lockout.MaxFailedAccessAttempts = 3; options.Lockout.AllowedForNewUsers = true; // User settings. options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+"; options.User.RequireUniqueEmail = false; }); services.Configure <DataProtectionTokenProviderOptions>(options => { options.TokenLifespan = TimeSpan.FromDays(1); }); services.Configure <SecurityStampValidatorOptions>(option => { option.ValidationInterval = TimeSpan.FromSeconds(0); }); services.ConfigureApplicationCookie(options => { // Cookie settings options.Cookie.HttpOnly = true; options.ExpireTimeSpan = TimeSpan.FromMinutes(30); options.LoginPath = "/Admin/Login"; options.AccessDeniedPath = "/error/access-denied"; options.SlidingExpiration = true; }); services.AddAuthorization(options => { options.AddPolicy("OnlyAccountantAccess", policy => policy.RequireRole(RoleName.Accountant)); options.AddPolicy("OnlyAdminAccess", policy => policy.RequireRole(RoleName.Admin)); options.AddPolicy("AdminManagerAccess", policy => policy.RequireRole(RoleName.Admin, RoleName.CustomerManager, RoleName.InvestmentManager, RoleName.Accountant)); options.AddPolicy("CustomerManagerNotAccess", policy => policy.RequireRole(RoleName.Admin, RoleName.InvestmentManager, RoleName.Accountant)); options.AddPolicy("CustomerAccess", policy => policy.RequireRole(RoleName.Customer)); options.AddPolicy("AccountantInvestmentManagerAccess", policy => policy.RequireRole(RoleName.InvestmentManager, RoleName.Accountant)); options.AddPolicy("AdminInvestmentManagerAccess", policy => policy.RequireRole(RoleName.Admin, RoleName.InvestmentManager)); options.AddPolicy("AdminAccountantAccess", policy => policy.RequireRole(RoleName.Admin, RoleName.Accountant)); }); services.AddAutoMapper(Assembly.GetAssembly(typeof(ServiceProfile))); services.AllowAllCors(); services.AddMvc() .SetCompatibilityVersion(CompatibilityVersion.Version_2_1) .AddJsonOptions(options => { options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; }); IocConfig.Register(services, Configuration); AppSettingsConfig.Register(services, Configuration); services.AddHangfire(x => x.UseSqlServerStorage(Configuration.GetConnectionString(Constants.Database.smartFundsConnectionStringName))); services.UseJwtAuthentication(new DigitalAppsAudience(Configuration)); }