public void ConfigureServices(IServiceCollection services) { if (services == null) { throw new ArgumentNullException(nameof(services)); } services.Configure <UserControllerOptions>(o => { var activationConfigurationSection = Configuration.GetSection("Activation"); o.ActivationAction = activationConfigurationSection["Action"]; o.ActivationController = activationConfigurationSection["Controller"]; o.ActivationHost = activationConfigurationSection["Host"]; o.ActivationKey = activationConfigurationSection["Key"]; }); services.AddSingleton <IAuthenticationService>(serviceProvider => { var openIdConnectAuthenticationConfigurationSection = Configuration.GetSection("OpenIdConnectAuthentication"); return(new AuthenticationService(openIdConnectAuthenticationConfigurationSection["TenantId"])); }); services.AddTransient <IGraphService>(serviceProvider => { var openIdConnectAuthenticationConfigurationSection = Configuration.GetSection("OpenIdConnectAuthentication"); return(new GraphService( serviceProvider.GetRequiredService <IAuthenticationService>(), openIdConnectAuthenticationConfigurationSection["TenantId"], openIdConnectAuthenticationConfigurationSection["ClientId"], openIdConnectAuthenticationConfigurationSection["ClientSecret"], new Uri(openIdConnectAuthenticationConfigurationSection["RedirectUri"]))); }); services.AddSingleton <IPasswordGenerator>(serviceProvider => new PasswordGenerator(20, PasswordCharacters.Alphanumeric)); var smtpServiceConfigurationSection = Configuration.GetSection("SendGridSmtpService"); var smtpService = new SendGridSmtpService( true, smtpServiceConfigurationSection["Host"], int.Parse(smtpServiceConfigurationSection["Port"]), smtpServiceConfigurationSection["User"], smtpServiceConfigurationSection["Pass"]); services.AddSingleton <ISmtpService>(smtpService); services.AddDbContext <WingTipDbContext>(optionsBuilder => optionsBuilder.UseSqlServer(Configuration.GetConnectionString("WingTipB2CDbConnectionString"))); services.AddIdentity <WingTipUser, IdentityRole>(identityOptions => { identityOptions.Password.RequireDigit = false; identityOptions.Password.RequireLowercase = false; identityOptions.Password.RequireNonAlphanumeric = false; identityOptions.Password.RequireUppercase = false; identityOptions.Password.RequiredLength = 8; }).AddEntityFrameworkStores <WingTipDbContext>(); services.AddScoped <WingTipUserManager>(); services.AddMvc(); }
public void ConfigureServices(IServiceCollection services) { if (services == null) { throw new ArgumentNullException(nameof(services)); } services.Configure <ActivationControllerOptions>(o => { var activationConfigurationSection = Configuration.GetSection("Activation"); o.Key = activationConfigurationSection["Key"]; }); services.Configure <InvitationControllerOptions>(o => { var invitationConfigurationSection = Configuration.GetSection("Invitation"); o.Key = invitationConfigurationSection["Key"]; }); services.AddAuthorization(authorizationOptions => { // Create an authorization policy for the Games API that requires the "Games.Read" scope to be contained in the bearer // JWT. authorizationOptions.AddPolicy( Constants.AuthorizationPolicies.ReadGames, policy => policy.RequireAssertion(context => { var scopeClaim = context.User.FindFirst("http://schemas.microsoft.com/identity/claims/scope"); if (scopeClaim == null) { return(false); } return(scopeClaim.Value.Split(' ').Contains("Games.Read")); })); }); services.AddMvc(options => { options.Filters.Add(typeof(CultureFilterAttribute)); options.Filters.Add(typeof(LocationFilterAttribute)); }); services.AddSingleton <ITempDataProvider, CookieTempDataProvider>(); services.AddTransient <IGameRepository, GameRepository>(); var billingService = new WingTipBillingService(); services.AddSingleton <IBillingService>(billingService); var geolocationService = new FreeGeoIpGeolocationService(); services.AddSingleton <IGeolocationService>(geolocationService); var musicService = new WingTipMusicService(); services.AddSingleton <IMusicService>(musicService); var smtpServiceConfigurationSection = Configuration.GetSection("SendGridSmtpService"); var smtpService = new SendGridSmtpService( true, smtpServiceConfigurationSection["Host"], int.Parse(smtpServiceConfigurationSection["Port"]), smtpServiceConfigurationSection["User"], smtpServiceConfigurationSection["Pass"]); services.AddSingleton <ISmtpService>(smtpService); }