Program cs - Assignment 3
Mon Jun 17 2024 09:01:45 GMT+0000 (Coordinated Universal Time)
Saved by @iamkatmakhafola
using Assignment3_Backend.Factory; using Assignment3_Backend.Models; using Microsoft.AspNetCore.Http.Features; using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using Microsoft.IdentityModel.Tokens; using System.Text; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddCors(options => options.AddDefaultPolicy( include => { include.AllowAnyHeader(); include.AllowAnyMethod(); include.AllowAnyOrigin(); })); builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); //For identity builder.Services.AddIdentity<AppUser, IdentityRole>(options => { options.Password.RequireUppercase = false; options.Password.RequireLowercase = false; options.Password.RequireNonAlphanumeric = false; options.Password.RequireDigit = true; options.User.RequireUniqueEmail = true; }) .AddEntityFrameworkStores<AppDbContext>() .AddDefaultTokenProviders(); //Adding JWT Bearer builder.Services.AddAuthentication() .AddCookie() .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters() { ValidIssuer = builder.Configuration["Tokens:Issuer"], ValidAudience = builder.Configuration["Tokens:Audience"], IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["Tokens:Key"])) }; }); // File upload functionality builder.Services.Configure<FormOptions>(o => { o.ValueLengthLimit = int.MaxValue; o.MultipartBodyLengthLimit = int.MaxValue; o.MemoryBufferThreshold = int.MaxValue; }); builder.Services.AddScoped<IUserClaimsPrincipalFactory<AppUser>, AppUserClaimsPrincipalFactory>(); builder.Services.Configure<DataProtectionTokenProviderOptions>(options => options.TokenLifespan = TimeSpan.FromHours(3)); //For Entity Framework builder.Services.AddDbContext<AppDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"))); builder.Services.AddScoped<IRepository, Repository>(); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseCors(); app.UseAuthentication(); app.UseAuthorization(); app.MapControllers(); app.Run();
Comments