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();
        }
Ejemplo n.º 2
0
        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);
        }