Exemple #1
0
        /// <summary>
        /// This method gets called by the runtime. Use this method to add services to the container.
        /// </summary>
        /// <param name="services"></param>
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddWebApi();
            services.AddSingleton <IConfiguration>(Configuration);
            services.AddMvc(config =>
            {
                config.Filters.Add(typeof(UnhandledExceptionManager));
            });

            services.AddAutoMapperSetup();

            services.AddSwaggerGen(s =>
            {
                s.SwaggerDoc("v1", new Info
                {
                    Version     = "v1",
                    Title       = "Gateway Radix",
                    Description = "Radix API Swagger",
                    Contact     = new Contact {
                        Name = "Luciano Mattos", Email = "*****@*****.**"
                    },
                });

                string caminhoAplicacao = PlatformServices.Default.Application.ApplicationBasePath;
                string nomeAplicacao    = PlatformServices.Default.Application.ApplicationName;
                string caminhoXmlDoc    = Path.Combine(caminhoAplicacao, $"{nomeAplicacao}.xml");

                s.IncludeXmlComments(caminhoXmlDoc);
            });

            InjectorBootstrapper.RegisterServices(services);
        }
Exemple #2
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc()
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
            .AddDefaultJsonOptions()
            .AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining <BlogPostViewModelValidator>());

            services.AddAutoMapperProfiles();

            services.AddSqlServer(Configuration);

            services.AddPushSubscriptionService(Configuration);

            #region "  Register Services  "

            InjectorBootstrapper.RegisterServices(services);

            services.AddSingleton <ITempDataProvider, CookieTempDataProvider>();

            #endregion

            #region "  Configure Auth  "

            ConfigureAuth(services);

            #endregion

            services.AddDistributedMemoryCache();
            services.AddSession(options =>
            {
                options.IdleTimeout = TimeSpan.FromMinutes(1);
            });
        }
Exemple #3
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc()
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
            .AddDefaultJsonOptions()
            .AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining <BlogPostViewModelValidator>());

            services.AddAutoMapper(typeof(BlogPostProfile), typeof(UserProfile));

            services.AddEntityFrameworkSqlServer().AddDbContext <BlogContext>(options =>
            {
                options.UseSqlServer(Configuration["BlogFKConn:ConnectionString"],
                                     sqlOptions => sqlOptions.MigrationsAssembly(typeof(BlogContext)
                                                                                 .GetTypeInfo().Assembly.GetName().Name));
            });

            #region "  Register Services  "

            InjectorBootstrapper.RegisterServices(services);

            services.AddSingleton <ITempDataProvider, CookieTempDataProvider>();

            #endregion

            #region "  Configure Auth  "

            ConfigureAuth(services);

            #endregion

            services.AddSession();
        }
Exemple #4
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc(options =>
            {
                // Configura a aplicação para retornar um Status Code 406 - NOT ACCEPTABLE
                // para outros formatos de respostas diferentes dos aceitados.
                // Obs.: por padrão o único aceitável é (application/json)
                options.ReturnHttpNotAcceptable = true;
            })
            .AddJsonOptions(options =>
            {
                options.SerializerSettings.ContractResolver      = new CamelCasePropertyNamesContractResolver();
                options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
            });

            // Adicionando suporte ao AutoMapper;
            services.AddAutoMapper();

            // Adicionando suporte ao Framework de Cache
            services.AddHttpCacheHeaders(
                expirationOptions => { expirationOptions.MaxAge = 60; },
                validationOptions => { validationOptions.AddMustRevalidate = true; });

            // Adicionando suporte a Rate Limiting and Throttling
            services.AddMemoryCache();

            services.Configure <IpRateLimitOptions>(options =>
            {
                options.GeneralRules = new List <RateLimitRule>
                {
                    new RateLimitRule
                    {
                        Endpoint = "*",
                        Limit    = 1000, // para testes colocar 10 e realizar mais que 10 requests em menos de 5 minutos
                        Period   = "5m"
                    },
                    new RateLimitRule
                    {
                        Endpoint = "*",
                        Limit    = 200, // para testes colocar 2 e realizar mais que 2 requests em menos de 10 segundos
                        Period   = "10s"
                    }
                };
            });

            services.AddSingleton <IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>();
            services.AddSingleton <IIpPolicyStore, MemoryCacheIpPolicyStore>();

            // Adicionando o contexto e os services do negócio

            services.AddDbContext <UsuariosContext>(o =>
                                                    o.UseSqlServer(Configuration["connectionStrings:defaultConnectionString"]));
            InjectorBootstrapper.RegisterServices(services);
        }
Exemple #5
0
        public void Testar_RegisterServices()
        {
            //Arrange.
            IServiceCollection serviceCollection = new ServiceCollection();

            //Act.
            InjectorBootstrapper.RegisterServices(serviceCollection, TestUtil.GetConfiguration());
            var serviceProvider = serviceCollection.BuildServiceProvider();

            //Assert.
            Assert.IsNotNull(serviceProvider);
        }
Exemple #6
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext <ContentDbContext>(options =>
            {
                options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"], b => b.MigrationsAssembly("Planru.NCMS.WebAPI"));
                options.UseOpenIddict();
            });

            services.AddIdentity <ApplicationUser, ApplicationRole>()
            .AddEntityFrameworkStores <ContentDbContext>()
            .AddDefaultTokenProviders();

            // Configure Identity options and password complexity here
            services.Configure <IdentityOptions>(options =>
            {
                // User settings
                options.User.RequireUniqueEmail = true;

                //    //// Password settings
                //    //options.Password.RequireDigit = true;
                //    //options.Password.RequiredLength = 8;
                //    //options.Password.RequireNonAlphanumeric = false;
                //    //options.Password.RequireUppercase = true;
                //    //options.Password.RequireLowercase = false;

                //    //// Lockout settings
                //    //options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30);
                //    //options.Lockout.MaxFailedAccessAttempts = 10;

                options.ClaimsIdentity.UserNameClaimType = OpenIdConnectConstants.Claims.Name;
                options.ClaimsIdentity.UserIdClaimType   = OpenIdConnectConstants.Claims.Subject;
                options.ClaimsIdentity.RoleClaimType     = OpenIdConnectConstants.Claims.Role;
            });

            // Register the OpenIddict services.
            services.AddOpenIddict(options =>
            {
                options.AddEntityFrameworkCoreStores <ContentDbContext>();
                options.AddMvcBinders();
                options.EnableTokenEndpoint("/connect/token");
                options.AllowPasswordFlow();
                options.AllowRefreshTokenFlow();
                options.DisableHttpsRequirement();
                // options.UseJsonWebTokens(); //Use JWT if preferred
                options.AddSigningKey(new SymmetricSecurityKey(System.Text.Encoding.ASCII.GetBytes(Configuration["STSKey"])));
            });

            // Enable cors if required
            //services.AddCors();

            services.AddAuthorization(options =>
            {
                options.AddPolicy(AuthPolicies.ViewUserByUserIdPolicy, policy => policy.Requirements.Add(new ViewUserByIdRequirement()));

                options.AddPolicy(AuthPolicies.ViewUsersPolicy, policy => policy.RequireClaim(CustomClaimTypes.Permission, ApplicationPermissions.ViewUsers));

                options.AddPolicy(AuthPolicies.ManageUserByUserIdPolicy, policy => policy.Requirements.Add(new ManageUserByIdRequirement()));

                options.AddPolicy(AuthPolicies.ManageUsersPolicy, policy => policy.RequireClaim(CustomClaimTypes.Permission, ApplicationPermissions.ManageUsers));

                options.AddPolicy(AuthPolicies.ViewRoleByRoleNamePolicy, policy => policy.Requirements.Add(new ViewRoleByNameRequirement()));

                options.AddPolicy(AuthPolicies.ViewRolesPolicy, policy => policy.RequireClaim(CustomClaimTypes.Permission, ApplicationPermissions.ViewRoles));

                options.AddPolicy(AuthPolicies.AssignRolesPolicy, policy => policy.Requirements.Add(new AssignRolesRequirement()));

                options.AddPolicy(AuthPolicies.ManageRolesPolicy, policy => policy.RequireClaim(CustomClaimTypes.Permission, ApplicationPermissions.ManageRoles));
            });

            // Auth Policies
            services.AddSingleton <IAuthorizationHandler, ViewUserByIdHandler>();
            services.AddSingleton <IAuthorizationHandler, ManageUserByIdHandler>();
            services.AddSingleton <IAuthorizationHandler, ViewRoleByNameHandler>();
            services.AddSingleton <IAuthorizationHandler, AssignRolesHandler>();

            InjectorBootstrapper.RegisterServices(services, Configuration);

            Mapper.Initialize(cfg =>
            {
                cfg.AddProfile <IdentityAutoMapperProfile>();
            });

            // Add framework services.
            services.AddMvc();
        }
 public static void AddInjectorBootstrapper(this IServiceCollection services, IConfiguration configuration)
 {
     InjectorBootstrapper.RegisterServices(services, configuration);
 }
Exemple #8
0
 //Injeção de dependencia
 private static void RegisterServices(IServiceCollection services)
 {
     InjectorBootstrapper.RegisterServices(services);
 }