public void ConfigureServices(IServiceCollection services) { services.AddScoped <ApplicationDbContext>(); services.AddIdentityMongoDbProvider <ApplicationUser, ApplicationRole>(identityOptions => { identityOptions.Password.RequiredLength = 6; identityOptions.Password.RequireLowercase = false; identityOptions.Password.RequireUppercase = false; identityOptions.Password.RequireNonAlphanumeric = false; identityOptions.Password.RequireDigit = false; }, mongoIdentityOptions => { mongoIdentityOptions.ConnectionString = Configuration.GetMongoConnection(); }); services.AddAutoMapper(config => { ChcMapper.MapModels(config); CrmMapper.MapModels(config); EventsMapper.MapModels(config); DocumentsMapper.MapModels(config); EventsMapper.MapModels(config); GroupsMapper.MapModels(config); ExternalMapper.MapModels(config); }); // Add application services. //services.AddTransient<IEmailSender, EmailSender>(); ConfigureDepenedencyInjection(services); JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear(); // => remove default claims services .AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(cfg => { cfg.RequireHttpsMetadata = false; cfg.SaveToken = true; cfg.TokenValidationParameters = new TokenValidationParameters { ValidIssuer = Configuration["JwtIssuer"], ValidAudience = Configuration["JwtIssuer"], IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["JwtKey"])), ClockSkew = TimeSpan.Zero // remove delay of token when expire }; }); services.AddCors(options => { options.AddPolicy("default", policy => { policy.WithOrigins("*") .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); }); services.AddMvc(options => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); options.Filters.Add(new AuthorizeFilter(policy)); options.Filters.Add(new ValidateModelAttribute()); }) .SetCompatibilityVersion(CompatibilityVersion.Version_2_1) .AddJsonOptions(options => { options.SerializerSettings.ContractResolver = new DefaultContractResolver { NamingStrategy = new CamelCaseNamingStrategy() }; options.SerializerSettings.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter()); }); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "Demo API", Version = "0.0.1", Description = "This is a restful web api", Contact = new Contact { Name = "Timothy Kasasa", Email = "*****@*****.**" } }); var basePath = Environment.WebRootPath; var xmlPath = Path.Combine(basePath, "Documentation", "App.xml"); c.IncludeXmlComments(xmlPath); c.DescribeAllEnumsAsStrings(); }); services.AddSignalR(); }
public static void CreateConfigs(IMapperConfigurationExpression cfg) { ChcMapper.MapModels(cfg); EventsMapper.MapModels(cfg); DocumentsMapper.MapModels(cfg); }