aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSyndamia <kamen.d.mladenov@protonmail.com>2020-12-12 14:47:33 +0200
committerSyndamia <kamen.d.mladenov@protonmail.com>2020-12-12 14:47:33 +0200
commit9b287f08b8e2c8d091967597bc9610afea8058ca (patch)
treec4d24122bbe0e90774892d0b4c3a87952a988887
parent688fd7d0ad87ba9a7e72266cd5f7f7f493d9cc38 (diff)
downloadDevHive-9b287f08b8e2c8d091967597bc9610afea8058ca.tar
DevHive-9b287f08b8e2c8d091967597bc9610afea8058ca.tar.gz
DevHive-9b287f08b8e2c8d091967597bc9610afea8058ca.zip
Improved appsettings.json reading
-rw-r--r--API/Controllers/UserController.cs6
-rw-r--r--API/Service/UserService.cs10
-rw-r--r--API/Startup.cs5
-rw-r--r--Data/Models/Options/JWTOptions.cs14
4 files changed, 26 insertions, 9 deletions
diff --git a/API/Controllers/UserController.cs b/API/Controllers/UserController.cs
index fd94283..ceeee33 100644
--- a/API/Controllers/UserController.cs
+++ b/API/Controllers/UserController.cs
@@ -5,7 +5,7 @@ using AutoMapper;
using Microsoft.AspNetCore.Mvc;
using Data.Models.DTOs;
using Microsoft.AspNetCore.Authorization;
-using Data.Models.Classes;
+using Data.Models.Options;
using Microsoft.Extensions.Configuration;
namespace API.Controllers
@@ -16,9 +16,9 @@ namespace API.Controllers
{
private readonly UserService _service;
- public UserController(DevHiveContext context, IMapper mapper, IConfiguration configuration)
+ public UserController(DevHiveContext context, IMapper mapper, JWTOptions jwtOptions)
{
- this._service = new UserService(context, mapper, configuration.GetSection("AppSettings"));
+ this._service = new UserService(context, mapper, jwtOptions);
}
[HttpPost]
diff --git a/API/Service/UserService.cs b/API/Service/UserService.cs
index c4f6e92..797a924 100644
--- a/API/Service/UserService.cs
+++ b/API/Service/UserService.cs
@@ -4,7 +4,7 @@ using AutoMapper;
using Data.Models.Classes;
using Data.Models.DTOs;
using Microsoft.AspNetCore.Mvc;
-
+using Data.Models.Options;
using System.IdentityModel.Tokens.Jwt;
using Microsoft.IdentityModel.Tokens;
using System.Security.Claims;
@@ -18,13 +18,13 @@ namespace API.Service
{
private readonly UserDbRepository _userDbRepository;
private readonly IMapper _userMapper;
- private readonly IConfiguration _appSettings;
+ private readonly JWTOptions _jwtOptions;
- public UserService(DevHiveContext context, IMapper mapper, IConfiguration appSettings)
+ public UserService(DevHiveContext context, IMapper mapper, JWTOptions jwtOptions)
{
this._userDbRepository = new UserDbRepository(context);
this._userMapper = mapper;
- this._appSettings = appSettings;
+ this._jwtOptions = jwtOptions;
}
public async Task<IActionResult> LoginUser(LoginDTO loginDTO)
@@ -35,7 +35,7 @@ namespace API.Service
return new NotFoundObjectResult("User does not exist!");
// Get key from appsettings.json
- var key = Encoding.ASCII.GetBytes(_appSettings.GetSection("Secret").Value);
+ var key = Encoding.ASCII.GetBytes(_jwtOptions.Secret);
if (user.PasswordHash != GeneratePasswordHash(loginDTO.Password))
return new BadRequestObjectResult("Incorrect password!");
diff --git a/API/Startup.cs b/API/Startup.cs
index 46d9fc6..b58311d 100644
--- a/API/Startup.cs
+++ b/API/Startup.cs
@@ -10,7 +10,7 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.OpenApi.Models;
using Data.Models.Classes;
-
+using Data.Models.Options;
using Microsoft.IdentityModel.Tokens;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using System.Text;
@@ -45,6 +45,9 @@ namespace API
options.Password.RequiredLength = 5;
});
+ services.AddSingleton<JWTOptions>(
+ new JWTOptions(Configuration.GetSection("AppSettings").GetSection("Secret").Value));
+
// Get key from appsettings.json
var key = Encoding.ASCII.GetBytes(Configuration.GetSection("AppSettings").GetSection("Secret").Value);
// Setup Jwt Authentication
diff --git a/Data/Models/Options/JWTOptions.cs b/Data/Models/Options/JWTOptions.cs
new file mode 100644
index 0000000..2cb8640
--- /dev/null
+++ b/Data/Models/Options/JWTOptions.cs
@@ -0,0 +1,14 @@
+using Microsoft.Extensions.Options;
+
+namespace Data.Models.Options
+{
+ public class JWTOptions
+ {
+ public JWTOptions(string secret)
+ {
+ this.Secret = secret;
+ }
+
+ public string Secret { get; set; }
+ }
+}