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:
# wget --no-check-certificate http://gist.githubusercontent.com/kmorcinek/2710267/raw/.gitignore
pre_commit.log
pre_commit.ps1
# User-specific files
*.suo
*.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.Services;
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.Services;
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;
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.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>
/// Класс вспомогательных методов для авторизации

@ -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 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;

@ -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
{
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;

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