diff --git a/FaKrosnoApi/Controllers/ScheduleOrdersController.cs b/FaKrosnoApi/Controllers/ScheduleOrdersController.cs index 5185da8..0106e1a 100644 --- a/FaKrosnoApi/Controllers/ScheduleOrdersController.cs +++ b/FaKrosnoApi/Controllers/ScheduleOrdersController.cs @@ -7,6 +7,7 @@ namespace FaKrosnoApi.Controllers { [ApiController] [Route("api/[controller]")] + [Authorize] public class ScheduleOrdersController(IScheduleOrderService service) : Controller { [HttpGet] diff --git a/FaKrosnoApi/Controllers/UsersController.cs b/FaKrosnoApi/Controllers/UsersController.cs index 8cd7b9d..54bb570 100644 --- a/FaKrosnoApi/Controllers/UsersController.cs +++ b/FaKrosnoApi/Controllers/UsersController.cs @@ -37,7 +37,6 @@ public class UsersController(IUserService service, IConfiguration configuration) [HttpPost("login")] public async Task Login([FromBody] AuthenticateRequestModel loginDto) { - // Sprawdź poprawność użytkownika (np. w bazie danych) var user = await service.GetByUsername(loginDto.Login); if(user == null || !BCrypt.Net.BCrypt.Verify(loginDto.Password, user.PasswordHash)) @@ -47,19 +46,19 @@ public class UsersController(IUserService service, IConfiguration configuration) var claims = new[] { - new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()), - new Claim(ClaimTypes.Name, user.Login), + new Claim(JwtRegisteredClaimNames.Sub, user.Login), + new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()) }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["Jwt:Key"])); - var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); + var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken( issuer: configuration["Jwt:Issuer"], audience: configuration["Jwt:Audience"], claims: claims, - expires: DateTime.Now.AddHours(1), // Token ważny przez 1 godzinę - signingCredentials: creds); + expires: DateTime.Now.AddHours(1), + signingCredentials: credentials); return Ok(new { diff --git a/FaKrosnoApi/Program.cs b/FaKrosnoApi/Program.cs index 4417df4..da0e9d8 100644 --- a/FaKrosnoApi/Program.cs +++ b/FaKrosnoApi/Program.cs @@ -43,7 +43,8 @@ builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) ValidateIssuerSigningKey = true, ValidIssuer = builder.Configuration["Jwt:Issuer"], ValidAudience = builder.Configuration["Jwt:Audience"], - IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"] ?? string.Empty)) + IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"] ?? string.Empty)), + NameClaimType = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier" }; }); @@ -71,19 +72,19 @@ builder.Services.AddOpenApiDocument(config => config.OperationProcessors.Add(new OperationSecurityScopeProcessor("Bearer")); }); -builder.Services.AddHangfire(config => config - .SetDataCompatibilityLevel(CompatibilityLevel.Version_170) - .UseSimpleAssemblyNameTypeSerializer() - .UseRecommendedSerializerSettings() - .UseSqlServerStorage(builder.Configuration.GetConnectionString("OrdersManagementConnection"), new SqlServerStorageOptions - { - CommandBatchMaxTimeout = TimeSpan.FromMinutes(5), - SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5), - QueuePollInterval = TimeSpan.Zero, - UseRecommendedIsolationLevel = true, - DisableGlobalLocks = true - })); -builder.Services.AddHangfireServer(); +// builder.Services.AddHangfire(config => config +// .SetDataCompatibilityLevel(CompatibilityLevel.Version_170) +// .UseSimpleAssemblyNameTypeSerializer() +// .UseRecommendedSerializerSettings() +// .UseSqlServerStorage(builder.Configuration.GetConnectionString("OrdersManagementConnection"), new SqlServerStorageOptions +// { +// CommandBatchMaxTimeout = TimeSpan.FromMinutes(5), +// SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5), +// QueuePollInterval = TimeSpan.Zero, +// UseRecommendedIsolationLevel = true, +// DisableGlobalLocks = true +// })); +// builder.Services.AddHangfireServer(); builder.Services.AddAutoMapper(typeof(FaKrosnoMappingProfile), typeof(SytelineSaAppMappingProfile), typeof(OrdersManagementMappingProfile)); @@ -115,6 +116,6 @@ app.UseAuthorization(); app.MapControllers(); -app.UseHangfireDashboard(); +// app.UseHangfireDashboard(); app.Run(); diff --git a/OrdersManagement/Components/Layout/MainLayout.razor b/OrdersManagement/Components/Layout/MainLayout.razor index aec0b20..f7b144f 100644 --- a/OrdersManagement/Components/Layout/MainLayout.razor +++ b/OrdersManagement/Components/Layout/MainLayout.razor @@ -36,7 +36,7 @@ { MenuItems = new List { - new() { Text = "Zamówienia DELFOR", Url = "/", IconCss = "fa-solid fa-landmark" }, + new() { Text = "Zamówienia DELFOR", Url = "/ScheduleOrders", IconCss = "fa-solid fa-landmark" }, new() { Text = "Zamówienia klienta EDI", Url = "/EdiCustomerOrders", IconCss = "fa-solid fa-list-check" }, new() { Text = "Zamówienia klienta", Url = "/CustomerOrders", IconCss = "fa-solid fa-database" } }; diff --git a/OrdersManagement/Components/Pages/ScheduleOrder.razor b/OrdersManagement/Components/Pages/ScheduleOrder.razor index 6cbccb3..91a9827 100644 --- a/OrdersManagement/Components/Pages/ScheduleOrder.razor +++ b/OrdersManagement/Components/Pages/ScheduleOrder.razor @@ -1,6 +1,5 @@ @page "/ScheduleOrder/{ScheduleOrderId:int}" - -@rendermode InteractiveServer +@attribute [Authorize] @using Microsoft.AspNetCore.Authorization @using Syncfusion.Blazor.Grids diff --git a/OrdersManagement/Components/Pages/ScheduleOrders.razor b/OrdersManagement/Components/Pages/ScheduleOrders.razor index bf33fc8..bd03173 100644 --- a/OrdersManagement/Components/Pages/ScheduleOrders.razor +++ b/OrdersManagement/Components/Pages/ScheduleOrders.razor @@ -1,14 +1,12 @@ -@page "/" +@page "/ScheduleOrders" + +@attribute [Authorize] @using Microsoft.AspNetCore.Authorization -@using Microsoft.AspNetCore.Components.Authorization -@using Microsoft.IdentityModel.Tokens @using OrdersManagement.Components.Pages.Shared @using Syncfusion.Blazor.Grids @inject ScheduleOrderService ScheduleOrderService -@inject AuthenticationStateProvider AuthStateProvider -@* //@inject AuthTokenHandler TokenHandler *@
Zamówienia DELFOR
diff --git a/OrdersManagement/Components/Routes.razor b/OrdersManagement/Components/Routes.razor index 2ec0ad0..d0df781 100644 --- a/OrdersManagement/Components/Routes.razor +++ b/OrdersManagement/Components/Routes.razor @@ -1,5 +1,4 @@ -@using OrdersManagement.Components.Layout - + diff --git a/OrdersManagement/Program.cs b/OrdersManagement/Program.cs index 4d26c63..71ece89 100644 --- a/OrdersManagement/Program.cs +++ b/OrdersManagement/Program.cs @@ -27,7 +27,8 @@ builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) ValidateIssuerSigningKey = true, ValidIssuer = builder.Configuration["Jwt:Issuer"], ValidAudience = builder.Configuration["Jwt:Audience"], - IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"])) + IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"] ?? string.Empty)), + NameClaimType = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier" }; });