Skip to content

Commit ea4b324

Browse files
committedAug 18, 2024·
latest updates
1 parent f1bb0fa commit ea4b324

File tree

6 files changed

+51
-51
lines changed

6 files changed

+51
-51
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using System.ComponentModel.DataAnnotations;
2+
3+
namespace WMS.WebUI.Configurations;
4+
5+
public sealed class ApiConfiguration
6+
{
7+
public const string SectionName = "API";
8+
9+
[Required]
10+
public string Url { get; init; }
11+
}

‎WMS.WebUI/WMS.WebUI/Controllers/AccountController.cs

+10-14
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
using Microsoft.AspNetCore.Authentication.Cookies;
2-
using Microsoft.AspNetCore.Http.Extensions;
3-
using Microsoft.AspNetCore.Identity;
4-
using Microsoft.AspNetCore.Mvc;
5-
using System.ComponentModel.DataAnnotations;
1+
using Microsoft.AspNetCore.Mvc;
62
using WMS.WebUI.Services.Interfaces;
73
using WMS.WebUI.ViewModels.Auth;
84

@@ -23,7 +19,7 @@ public AccountController(IUserAgentService userAgentService)
2319
public IActionResult Login()
2420
{
2521

26-
return View();
22+
return View();
2723
}
2824

2925
[HttpPost]
@@ -59,13 +55,13 @@ public async Task<IActionResult> Register(RegisterViewModel model)
5955
model.ClientUri = Url.Action("EmailConfirmed", "Account", null, Request.Scheme);
6056
var response = await _client.PostAsJsonAsync("auth/register", model);
6157

62-
if (response.IsSuccessStatusCode)
63-
{
64-
return RedirectToAction("ConfirmEmail");
65-
}
58+
if (response.IsSuccessStatusCode)
59+
{
60+
return RedirectToAction("ConfirmEmail");
61+
}
6662

67-
ModelState.AddModelError(string.Empty, "Invalid login attempt.");
68-
}
63+
ModelState.AddModelError(string.Empty, "Invalid login attempt.");
64+
}
6965

7066
return View(model);
7167
}
@@ -74,7 +70,7 @@ public IActionResult Logout()
7470
{
7571
var cookies = HttpContext.Request.Cookies;
7672

77-
foreach(var cookie in cookies)
73+
foreach (var cookie in cookies)
7874
{
7975
Response.Cookies.Delete(cookie.Key);
8076
}
@@ -154,7 +150,7 @@ public async Task<IActionResult> EmailConfirmed(string token, string email)
154150

155151
if (response.IsSuccessStatusCode)
156152
{
157-
return RedirectToAction("AccountConfirmation", new {isConfirmed = true, message = "You have successfully confirmed your email. Now, you can login to the system." });
153+
return RedirectToAction("AccountConfirmation", new { isConfirmed = true, message = "You have successfully confirmed your email. Now, you can login to the system." });
158154
}
159155

160156
return RedirectToAction("AccountConfirmation", new { isConfirmed = false, message = "There was an error confirming your email. Please, try again." });
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,27 @@
11
using Syncfusion.Licensing;
2+
using WMS.WebUI.Configurations;
23

3-
namespace WMS.WebUI.Extensions
4+
namespace WMS.WebUI.Extensions;
5+
6+
public static class DependencyInjection
47
{
5-
public static class DependencyInjection
8+
public static IServiceCollection AddSyncfusion(this IServiceCollection services, IConfiguration configuration)
69
{
7-
public static IServiceCollection AddSyncfusion(this IServiceCollection services, IConfiguration configuration)
10+
var section = configuration.GetSection("Keys");
11+
var key = section.GetValue<string>("Syncfusion");
12+
13+
if (string.IsNullOrEmpty(key))
814
{
9-
var section = configuration.GetSection("Keys");
10-
var key = section.GetValue<string>("Syncfusion");
15+
throw new InvalidOperationException("Cannot register Syncfusion without key.");
16+
}
1117

12-
if (string.IsNullOrEmpty(key))
13-
{
14-
throw new InvalidOperationException("Cannot register Syncfusion without key.");
15-
}
18+
services.AddOptions<ApiConfiguration>()
19+
.Bind(configuration.GetSection(ApiConfiguration.SectionName))
20+
.ValidateDataAnnotations()
21+
.ValidateOnStart();
1622

17-
SyncfusionLicenseProvider.RegisterLicense(key);
23+
SyncfusionLicenseProvider.RegisterLicense(key);
1824

19-
return services;
20-
}
25+
return services;
2126
}
2227
}

‎WMS.WebUI/WMS.WebUI/Program.cs

+1-14
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
using Microsoft.AspNetCore.Authentication.JwtBearer;
22
using Microsoft.IdentityModel.Tokens;
3-
using System.Text;
43
using WMS.WebUI.Extensions;
54
using WMS.WebUI.Filters;
6-
using WMS.WebUI.Helpers;
75
using WMS.WebUI.Services;
86
using WMS.WebUI.Services.Interfaces;
97
using WMS.WebUI.Stores;
@@ -12,7 +10,7 @@
1210
var builder = WebApplication.CreateBuilder(args);
1311

1412
// Add services to the container.
15-
builder.Services.AddControllersWithViews(options =>
13+
builder.Services.AddControllersWithViews(options =>
1614
options.Filters.Add(new ExceptionFilter()));
1715
builder.Services.AddSingleton<ApiClient>();
1816
builder.Services.AddSingleton<RolesService>();
@@ -30,17 +28,6 @@
3028
})
3129
.AddJwtBearer(options =>
3230
{
33-
options.TokenValidationParameters = new TokenValidationParameters
34-
{
35-
ValidateIssuer = true,
36-
ValidateAudience = true,
37-
ValidateLifetime = true,
38-
ValidateIssuerSigningKey = true,
39-
ValidIssuer = builder.Configuration["Jwt:Issuer"],
40-
ValidAudience = builder.Configuration["Jwt:Audience"],
41-
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["Jwt:SecretKey"]))
42-
};
43-
4431
options.Events = new JwtBearerEvents
4532
{
4633
OnAuthenticationFailed = context =>

‎WMS.WebUI/WMS.WebUI/Services/ApiClient.cs

+9-10
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
using Newtonsoft.Json;
1+
using Microsoft.Extensions.Options;
2+
using Newtonsoft.Json;
23
using System.Net.Http.Headers;
4+
using WMS.WebUI.Configurations;
35
using WMS.WebUI.Exceptions;
46

57
namespace WMS.WebUI.Services;
@@ -9,17 +11,14 @@ public class ApiClient
911
private readonly HttpClient _client;
1012
private readonly IHttpContextAccessor _httpContextAccessor;
1113

12-
public ApiClient(IConfiguration configuration, IHttpContextAccessor httpContextAccessor)
14+
public ApiClient(
15+
IConfiguration configuration,
16+
IHttpContextAccessor httpContextAccessor,
17+
IOptions<ApiConfiguration> apiConfiguration)
1318
{
1419
_client = new HttpClient();
15-
var url = configuration.GetValue<string>("API_URL");
1620

17-
if (string.IsNullOrEmpty(url))
18-
{
19-
throw new InvalidOperationException("Cannot setup API Client without URL.");
20-
}
21-
22-
_client.BaseAddress = new Uri("https://localhost:7097/api/");
21+
_client.BaseAddress = new Uri(apiConfiguration.Value.Url);
2322
_httpContextAccessor = httpContextAccessor;
2423
}
2524

@@ -53,7 +52,7 @@ public async Task<Stream> GetAsStreamAsync(string url)
5352
return stream;
5453
}
5554

56-
public async Task<TResult> PostAsync<TResult, TBody>(string url, TBody body)
55+
public async Task<TResult> PostAsync<TResult, TBody>(string url, TBody body)
5756
where TBody : class
5857
{
5958
AddJwt();

‎WMS.WebUI/WMS.WebUI/appsettings.Development.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
"ApiKey": "1234",
1010
"Syncfusion": "Mgo+DSMBMAY9C3t2U1hhQlJBfV5AQmBIYVp/TGpJfl96cVxMZVVBJAtUQF1hTX5UdkFiWH5ZcXVURWBU"
1111
},
12-
"API_URL": "https://locahost:7097/api/",
12+
"API": {
13+
"Url": "https://w2sc5qx5-7097.inc1.devtunnels.ms/api/"
14+
},
1315
"Jwt": {
1416
"ValidIssuer": "https://locahost:7097",
1517
"ValidAudience": "WMS.Api",

0 commit comments

Comments
 (0)
Please sign in to comment.