SHARE
TWEET

Untitled

a guest Apr 23rd, 2019 77 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using Microsoft.AspNetCore.Authentication.JwtBearer;
  2. using Microsoft.AspNetCore.Builder;
  3. using Microsoft.AspNetCore.Hosting;
  4. using Microsoft.AspNetCore.HttpsPolicy;
  5. using Microsoft.AspNetCore.Identity;
  6. using Microsoft.AspNetCore.Mvc;
  7. using Microsoft.AspNetCore.SpaServices.AngularCli;
  8. using Microsoft.EntityFrameworkCore;
  9. using Microsoft.Extensions.Configuration;
  10. using Microsoft.Extensions.DependencyInjection;
  11. using Microsoft.IdentityModel.Tokens;
  12. using Omdle.Account;
  13. using Omdle.Course;
  14. using Omdle.Data;
  15. using Omdle.Data.Models.Account;
  16. using System;
  17. using System.Text;
  18.  
  19. namespace Omdle.Web
  20. {
  21.     public class Startup
  22.     {
  23.         public Startup(IConfiguration configuration)
  24.         {
  25.             Configuration = configuration;
  26.         }
  27.  
  28.         public IConfiguration Configuration { get; }
  29.  
  30.         // This method gets called by the runtime. Use this method to add services to the container.
  31.         public void ConfigureServices(IServiceCollection services)
  32.         {
  33.             services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
  34.             services.AddDbContext<OmdleDbContext>(options =>
  35.                 options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"),
  36.                     o => o.MigrationsAssembly("Omdle.Data")));
  37.  
  38.             ConfigureIdentity(services);
  39.  
  40.             ConfigureAuthentication(services);
  41.  
  42.             services.AddCors(options => options
  43.                 .AddPolicy("CorsPolicy",
  44.                     builder =>
  45.                     {
  46.                         builder.AllowAnyMethod()
  47.                             .AllowAnyHeader()
  48.                             .AllowAnyOrigin()
  49.                             .AllowCredentials();
  50.                     }));
  51.  
  52.  
  53.             // In production, the Angular files will be served from this directory
  54.             services.AddSpaStaticFiles(configuration =>
  55.             {
  56.                 configuration.RootPath = "ClientApp/dist";
  57.             });
  58.             RegisterOmdleModules(services);
  59.         }
  60.         private static void ConfigureIdentity(IServiceCollection services)
  61.         {
  62.             services.AddIdentity<OmdleUser, OmdleRole>()
  63.                 .AddEntityFrameworkStores<OmdleDbContext>()
  64.                 .AddDefaultTokenProviders();
  65.  
  66.             services.Configure<IdentityOptions>(options =>
  67.             {
  68.                 options.Password.RequireDigit = true;
  69.                 options.Password.RequireLowercase = true;
  70.                 options.Password.RequireNonAlphanumeric = true;
  71.                 options.Password.RequireUppercase = true;
  72.                 options.Password.RequiredLength = 6;
  73.  
  74.                 options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
  75.                 options.Lockout.MaxFailedAccessAttempts = 5;
  76.                 options.Lockout.AllowedForNewUsers = true;
  77.  
  78.                 options.User.AllowedUserNameCharacters =
  79.                     "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
  80.             });
  81.         }
  82.  
  83.         private void ConfigureAuthentication(IServiceCollection services)
  84.         {
  85.             var signingKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Tokens:Key"]));
  86.             services
  87.                 .AddAuthentication(options =>
  88.                 {
  89.                     options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
  90.                     options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
  91.                 })
  92.                 .AddJwtBearer(config =>
  93.                 {
  94.                     config.RequireHttpsMetadata = false;
  95.                     config.SaveToken = true;
  96.                     config.TokenValidationParameters = new TokenValidationParameters
  97.                     {
  98.                         IssuerSigningKey = signingKey,
  99.                         ValidateLifetime = true,
  100.                         ValidateAudience = false,
  101.                         ValidateIssuer = false,
  102.                         ValidateIssuerSigningKey = true
  103.                     };
  104.                 });
  105.         }
  106.  
  107.         private void RegisterOmdleModules(IServiceCollection services)
  108.         {
  109.             // Register all projects DI            
  110.             services.RegisterDataModule();
  111.             services.RegisterAccountModule();
  112.             services.CourseModule();
  113.         }
  114.  
  115.             // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
  116.         public void Configure(IApplicationBuilder app, IHostingEnvironment env)
  117.         {
  118.             if (env.IsDevelopment())
  119.             {
  120.                 app.UseDeveloperExceptionPage();
  121.             }
  122.             else
  123.             {
  124.                 app.UseExceptionHandler("/Error");
  125.                 app.UseHsts();
  126.             }
  127.  
  128.             app.UseAuthentication();
  129.             app.UseCors("CorsPolicy");
  130.             app.UseHttpsRedirection();
  131.             app.UseStaticFiles();
  132.             app.UseSpaStaticFiles();
  133.  
  134.             app.UseMvc(routes =>
  135.             {
  136.                 routes.MapRoute(
  137.                     name: "default",
  138.                     template: "{controller}/{action=Index}/{id?}");
  139.             });
  140.  
  141.             app.UseSpa(spa =>
  142.             {
  143.                 // To learn more about options for serving an Angular SPA from ASP.NET Core,
  144.                 // see https://go.microsoft.com/fwlink/?linkid=864501
  145.  
  146.                 spa.Options.SourcePath = "ClientApp";
  147.  
  148.                 if (env.IsDevelopment())
  149.                 {
  150.                     spa.UseAngularCliServer(npmScript: "start");
  151.                 }
  152.             });
  153.  
  154.             UpdateDatabase(app);
  155.         }
  156.         private void UpdateDatabase(IApplicationBuilder app)
  157.         {
  158.             using (var serviceScope = app.ApplicationServices
  159.                 .GetRequiredService<IServiceScopeFactory>()
  160.                 .CreateScope())
  161.             {
  162.                 using (var context = serviceScope.ServiceProvider.GetService<OmdleDbContext>())
  163.                 {
  164.                     context.Database.Migrate();
  165.                 }
  166.             }
  167.         }
  168.     }
  169. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top