This commit is contained in:
Dvurechensky 2025-05-12 07:49:45 +03:00
parent 0c601885db
commit 149937ed88
12 changed files with 121 additions and 32 deletions

3
.gitignore vendored

@ -6,7 +6,8 @@
# #
# or wget: # or wget:
# wget --no-check-certificate http://gist.githubusercontent.com/kmorcinek/2710267/raw/.gitignore # wget --no-check-certificate http://gist.githubusercontent.com/kmorcinek/2710267/raw/.gitignore
pre_commit.log
pre_commit.ps1
# User-specific files # User-specific files
*.suo *.suo
*.user *.user

@ -1,4 +1,12 @@
using Companies.Data.Ajax; /*
* Author: Nikolay Dvurechensky
* Site: https://www.dvurechensky.pro/
* Gmail: dvurechenskysoft@gmail.com
* Last Updated: 12 мая 2025 07:46:05
* Version: 1.0.8
*/
using Companies.Data.Ajax;
using Companies.Data.Home; using Companies.Data.Home;
using Companies.Services; using Companies.Services;
using Extensions; using Extensions;

@ -1,4 +1,12 @@
using Companies.Data.Home; /*
* Author: Nikolay Dvurechensky
* Site: https://www.dvurechensky.pro/
* Gmail: dvurechenskysoft@gmail.com
* Last Updated: 12 мая 2025 07:46:05
* Version: 1.0.8
*/
using Companies.Data.Home;
using Companies.Models; using Companies.Models;
using Companies.Services; using Companies.Services;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;

@ -1,4 +1,12 @@
using Companies.Data.Home; /*
* Author: Nikolay Dvurechensky
* Site: https://www.dvurechensky.pro/
* Gmail: dvurechenskysoft@gmail.com
* Last Updated: 12 мая 2025 07:46:05
* Version: 1.0.8
*/
using Companies.Data.Home;
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
namespace Companies.Data.Ajax namespace Companies.Data.Ajax

@ -1,4 +1,12 @@
using System.ComponentModel.DataAnnotations.Schema; /*
* Author: Nikolay Dvurechensky
* Site: https://www.dvurechensky.pro/
* Gmail: dvurechenskysoft@gmail.com
* Last Updated: 12 мая 2025 07:46:05
* Version: 1.0.8
*/
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization; using System.Text.Json.Serialization;

@ -1,4 +1,12 @@
namespace Extensions; /*
* Author: Nikolay Dvurechensky
* Site: https://www.dvurechensky.pro/
* Gmail: dvurechenskysoft@gmail.com
* Last Updated: 12 мая 2025 07:46:05
* Version: 1.0.8
*/
namespace Extensions;
/// <summary> /// <summary>
/// Класс вспомогательных методов для авторизации /// Класс вспомогательных методов для авторизации

@ -1,4 +1,12 @@
using System.Text.Json; /*
* Author: Nikolay Dvurechensky
* Site: https://www.dvurechensky.pro/
* Gmail: dvurechenskysoft@gmail.com
* Last Updated: 12 мая 2025 07:46:05
* Version: 1.0.8
*/
using System.Text.Json;
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;

@ -1,4 +1,12 @@
using Microsoft.AspNetCore.Antiforgery; /*
* Author: Nikolay Dvurechensky
* Site: https://www.dvurechensky.pro/
* Gmail: dvurechenskysoft@gmail.com
* Last Updated: 12 мая 2025 07:46:05
* Version: 1.0.8
*/
using Microsoft.AspNetCore.Antiforgery;
namespace Middleware; namespace Middleware;

@ -1,3 +1,11 @@
/*
* Author: Nikolay Dvurechensky
* Site: https://www.dvurechensky.pro/
* Gmail: dvurechenskysoft@gmail.com
* Last Updated: 12 мая 2025 07:46:05
* Version: 1.0.8
*/
namespace Companies.Models namespace Companies.Models
{ {
public class ErrorViewModel public class ErrorViewModel

@ -1,4 +1,12 @@
using Companies.Data.Home; /*
* Author: Nikolay Dvurechensky
* Site: https://www.dvurechensky.pro/
* Gmail: dvurechenskysoft@gmail.com
* Last Updated: 12 мая 2025 07:46:05
* Version: 1.0.8
*/
using Companies.Data.Home;
namespace Models; namespace Models;

@ -1,3 +1,11 @@
/*
* Author: Nikolay Dvurechensky
* Site: https://www.dvurechensky.pro/
* Gmail: dvurechenskysoft@gmail.com
* Last Updated: 12 мая 2025 07:46:05
* Version: 1.0.8
*/
using Companies.Services; using Companies.Services;
using Extensions; using Extensions;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
@ -11,38 +19,38 @@ var connection = builder.Configuration.GetConnectionString("DefaultConnection");
// Configure Database // Configure Database
builder.Services.AddDbContext<DatabaseContext>(options => builder.Services.AddDbContext<DatabaseContext>(options =>
options.UseSqlite(connection)); options.UseSqlite(connection));
//конфигурация политики кук //конфигурация политики кук
builder.Services.Configure<CookiePolicyOptions>(options => builder.Services.Configure<CookiePolicyOptions>(options =>
{ {
options.CheckConsentNeeded = _ => false; //политики согласия не оцениваются options.CheckConsentNeeded = _ => false; //политики согласия не оцениваются
options.MinimumSameSitePolicy = SameSiteMode.None; //запрет переопределения значений cookie options.MinimumSameSitePolicy = SameSiteMode.None; //запрет переопределения значений cookie
options.Secure = CookieSecurePolicy.Always; //файлы cookie должны быть безопасными options.Secure = CookieSecurePolicy.Always; //файлы cookie должны быть безопасными
}); });
builder.Services.AddSession(options =>//конфигурируем параметры сессии builder.Services.AddSession(options =>//конфигурируем параметры сессии
{ {
options.Cookie.Name = AuthExt.NameSessionCookie; //ставим название куку сессии options.Cookie.Name = AuthExt.NameSessionCookie; //ставим название куку сессии
options.IdleTimeout = TimeSpan.FromMinutes(10); //время хранения сессии при бездействии options.IdleTimeout = TimeSpan.FromMinutes(10); //время хранения сессии при бездействии
options.Cookie.HttpOnly = true; //доступ только с сервера options.Cookie.HttpOnly = true; //доступ только с сервера
options.Cookie.IsEssential = true; //нужен ли файл cookie для работы (true-проверки политики согласия пропускаются) options.Cookie.IsEssential = true; //нужен ли файл cookie для работы (true-проверки политики согласия пропускаются)
}); });
builder.Services.AddAntiforgery(options =>//настройки службы против подделки запросов builder.Services.AddAntiforgery(options =>//настройки службы против подделки запросов
{ {
options.HeaderName = "X-CSRF-TOKEN"; options.HeaderName = "X-CSRF-TOKEN";
}); });
builder.Services.AddControllersWithViews();// Add services to the container. builder.Services.AddControllersWithViews();// Add services to the container.
builder.Services.AddCors(); //добавляем политику CORS builder.Services.AddCors(); //добавляем политику CORS
//добавляем Swagger //добавляем Swagger
builder.Services.AddSwaggerGen(options => builder.Services.AddSwaggerGen(options =>
{ {
//пишем опции Swagger //пишем опции Swagger
options.SwaggerDoc("v1", new OpenApiInfo options.SwaggerDoc("v1", new OpenApiInfo
{ {
Version = "1.0.1", Version = "1.0.1",
Title = "REST API Strategy Risk", Title = "REST API Strategy Risk",
Description = "Тестовове задание", Description = "Тестовове задание",
Contact = new OpenApiContact Contact = new OpenApiContact
{ {
Name = "Nikolay", Name = "Nikolay",
@ -59,7 +67,7 @@ var app = builder.Build();
app.UseSwagger(); app.UseSwagger();
app.UseSwaggerUI(c => app.UseSwaggerUI(c =>
{ {
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Документация"); c.SwaggerEndpoint("/swagger/v1/swagger.json", "Документация");
c.RoutePrefix = "docs"; c.RoutePrefix = "docs";
}); });
@ -77,17 +85,17 @@ else
app.UseStaticFiles(); app.UseStaticFiles();
app.UseCookiePolicy(); //использовать политику куки app.UseCookiePolicy(); //использовать политику куки
app.UseSession(); //использовать сессии app.UseSession(); //использовать сессии
app.UseRouting(); app.UseRouting();
app.UseMiddleware<AntiforgeryMiddleware>(); //обработчик службы против подделки запросов app.UseMiddleware<AntiforgeryMiddleware>(); //обработчик службы против подделки запросов
app.UseAuthorization(); app.UseAuthorization();
app.UseCors(options =>//используем CORS с любых хостов app.UseCors(options =>//используем CORS с любых хостов
{ {
options.SetIsOriginAllowed(_ => true) options.SetIsOriginAllowed(_ => true)
.AllowAnyMethod() .AllowAnyMethod()
@ -96,10 +104,10 @@ app.UseCors(options =>//
}); });
#pragma warning disable ASP0014 #pragma warning disable ASP0014
app.UseEndpoints(endpoints =>//маршрутизация app.UseEndpoints(endpoints =>//маршрутизация
{ {
endpoints.MapDefaultControllerRoute();//дефолтный роутер endpoints.MapDefaultControllerRoute();//дефолтный роутер
endpoints.MapControllers();//для маршрутизации если используются атрибуты endpoints.MapControllers();//для маршрутизации если используются атрибуты
}); });
#pragma warning restore ASP0014 #pragma warning restore ASP0014

@ -1,4 +1,12 @@
using Companies.Data.Home; /*
* Author: Nikolay Dvurechensky
* Site: https://www.dvurechensky.pro/
* Gmail: dvurechenskysoft@gmail.com
* Last Updated: 12 мая 2025 07:46:05
* Version: 1.0.8
*/
using Companies.Data.Home;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Diagnostics; using Microsoft.EntityFrameworkCore.Diagnostics;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;