/
den3011den
/
Tangy
Обзор
Документация
Войти
/
den3011den
/
Tangy
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
TangyWeb_API/Program.cs
111 строк
3 KB
Денис Богомолов
Уведомление по почте при оплате заказа через MailKit
16 апр 2022, 12:41
16 апр 2022, 12:41
197c35c
Код
Авторство
О чём код?
using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity.UI.Services; using Microsoft.EntityFrameworkCore; using Microsoft.IdentityModel.Tokens; using Microsoft.OpenApi.Models; using Stripe; using System.Text; using Tangy_Business.Repository; using Tangy_Business.Repository.IRepository; using Tangy_DataAccess; using Tangy_DataAccess.Data; using TangyWeb_API.Helper; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "TangWeb_Api", Version = "v1" }); c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme { In = ParameterLocation.Header, Description = "Please Bearer and then token in the field", Name = "Authorization", Type = SecuritySchemeType.ApiKey }); c.AddSecurityRequirement(new OpenApiSecurityRequirement { { new OpenApiSecurityScheme { Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }, new string[] { } } }); }); builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"))); builder.Services.AddIdentity<ApplicationUser, IdentityRole>().AddDefaultTokenProviders() .AddEntityFrameworkStores<ApplicationDbContext>(); var apiSettingsSection = builder.Configuration.GetSection("APISettings"); builder.Services.Configure<APISettings>(apiSettingsSection); var apiSettings = apiSettingsSection.Get<APISettings>(); var key = Encoding.ASCII.GetBytes(apiSettings.SecretKey); builder.Services.AddAuthentication(opt => { opt.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; opt.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; opt.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(x=> { x.RequireHttpsMetadata = false; x.SaveToken = true; x.TokenValidationParameters = new() { ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(key), ValidateAudience = true, ValidateIssuer = true, ValidAudience = apiSettings.ValidAudience, ValidIssuer = apiSettings.ValidIssuer, ClockSkew = TimeSpan.Zero }; }); builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); builder.Services.AddScoped<IProductRepository, ProductRepository>(); builder.Services.AddScoped<IOrderRepository, OrderRepository>(); builder.Services.AddScoped<IEmailSender, EmailSender>(); builder.Services.AddCors(o => o.AddPolicy("Tangy", builder => { builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader(); })); var app = builder.Build(); StripeConfiguration.ApiKey = builder.Configuration.GetSection("Stripe")["ApiKey"]; // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseHttpsRedirection(); app.UseCors("Tangy"); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapControllers(); app.Run();