public void ConfigureServices(IServiceCollection services)
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            services.AddAuthorization(authorizationOptions =>
            {
                // Create an authorization policy for the Games API that requires the "Music.Read" scope to be contained in the bearer
                // JWT.
                authorizationOptions.AddPolicy(
                    Constants.AuthorizationPolicies.ReadMusic,
                    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("Music.Read"));
                }));
            });

            services.AddMvc(options =>
            {
                options.Filters.Add(typeof(CultureFilterAttribute));
                options.Filters.Add(typeof(LocationFilterAttribute));
            });

            services.AddSingleton <ITempDataProvider, CookieTempDataProvider>();
            services.AddTransient <IAlbumRepository, AlbumRepository>();
            var geolocationService = new FreeGeoIpGeolocationService();

            services.AddSingleton <IGeolocationService>(geolocationService);
        }
Пример #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);
        }