refactor(ConsumerService): Entfernt ReadLocalAsync Methode.
- LocalConsumer Eigenschaft in AuthApiParams hinzugefügt.
This commit is contained in:
@@ -45,7 +45,7 @@ namespace DigitalData.Auth.API.Controllers
|
||||
_consumerSignatureHandler = apiSignatureHandler;
|
||||
}
|
||||
|
||||
private async Task<IActionResult> CreateTokenAsync(LogInDto login, string consumerRoute, bool cookie = true)
|
||||
private async Task<IActionResult> CreateTokenAsync(LogInDto login, string consumerName, bool cookie = true)
|
||||
{
|
||||
bool isValid = await _dirSearchService.ValidateCredentialsAsync(login.Username, login.Password);
|
||||
|
||||
@@ -53,8 +53,12 @@ namespace DigitalData.Auth.API.Controllers
|
||||
return Unauthorized();
|
||||
|
||||
//find the user
|
||||
var uRes = await _userService.ReadByUsernameAsync(login.Username);
|
||||
if (uRes.IsFailed || !_apiParams.Consumers.TryGetByRoute(consumerRoute, out var consumer))
|
||||
var uRes = await _userService.ReadByUsernameAsync(login.Username);
|
||||
if (uRes.IsFailed)
|
||||
return Unauthorized();
|
||||
|
||||
var consumer = await _consumerService.ReadByNameAsync(consumerName);
|
||||
if (consumer is null)
|
||||
return Unauthorized();
|
||||
|
||||
if (!_cryptoFactory.TokenDescriptors.TryGet(_apiParams.Issuer, consumer.Audience, out var descriptor))
|
||||
@@ -65,7 +69,8 @@ namespace DigitalData.Auth.API.Controllers
|
||||
//set cookie
|
||||
if (cookie)
|
||||
{
|
||||
Response.Cookies.Append(_apiParams.CookieName, token, consumer.CookieOptions.Create(lifetime: descriptor.Lifetime));
|
||||
var cookieOptions = consumer.CookieOptions ?? _apiParams.DefaultCookieOptions;
|
||||
Response.Cookies.Append(_apiParams.DefaultCookieName, token, cookieOptions.Create(lifetime: descriptor.Lifetime));
|
||||
return Ok();
|
||||
}
|
||||
else
|
||||
@@ -74,20 +79,20 @@ namespace DigitalData.Auth.API.Controllers
|
||||
|
||||
private async Task<IActionResult> CreateTokenAsync(ConsumerLogin login, bool cookie = true)
|
||||
{
|
||||
var api = await _consumerService.ReadByNameAsync(login.Name);
|
||||
|
||||
if (api is null || api.Password != login.Password)
|
||||
var consumer = await _consumerService.ReadByNameAsync(login.Name);
|
||||
if (consumer is null || consumer.Password != login.Password)
|
||||
return Unauthorized();
|
||||
|
||||
if (!_cryptoFactory.TokenDescriptors.TryGet(_apiParams.Issuer, _apiParams.DefaultConsumer.Audience, out var descriptor))
|
||||
if (!_cryptoFactory.TokenDescriptors.TryGet(_apiParams.Issuer, _apiParams.LocalConsumer.Audience, out var descriptor))
|
||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||
|
||||
var token = _consumerSignatureHandler.WriteToken(api, descriptor);
|
||||
var token = _consumerSignatureHandler.WriteToken(consumer, descriptor);
|
||||
|
||||
//set cookie
|
||||
if (cookie)
|
||||
{
|
||||
Response.Cookies.Append(_apiParams.CookieName, token, _apiParams.DefaultConsumer.CookieOptions.Create(lifetime: descriptor.Lifetime));
|
||||
var cookieOptions = _apiParams.LocalConsumer.CookieOptions ?? _apiParams.DefaultCookieOptions;
|
||||
Response.Cookies.Append(_apiParams.DefaultCookieName, token, cookieOptions.Create(lifetime: descriptor.Lifetime));
|
||||
return Ok();
|
||||
}
|
||||
else
|
||||
@@ -95,13 +100,13 @@ namespace DigitalData.Auth.API.Controllers
|
||||
}
|
||||
|
||||
//TODO: Add role depends on group name
|
||||
[HttpPost("{consumerRoute}/login")]
|
||||
[HttpPost("{consumerName}/login")]
|
||||
[AllowAnonymous]
|
||||
public async Task<IActionResult> Login([FromForm] LogInDto login, [FromRoute] string consumerRoute)
|
||||
public async Task<IActionResult> Login([FromForm] LogInDto login, [FromRoute] string consumerName)
|
||||
{
|
||||
try
|
||||
{
|
||||
return await CreateTokenAsync(login, consumerRoute, true);
|
||||
return await CreateTokenAsync(login, consumerName, true);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -130,7 +135,7 @@ namespace DigitalData.Auth.API.Controllers
|
||||
{
|
||||
try
|
||||
{
|
||||
Response.Cookies.Delete(_apiParams.CookieName);
|
||||
Response.Cookies.Delete(_apiParams.DefaultCookieName);
|
||||
return Ok();
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -140,12 +145,12 @@ namespace DigitalData.Auth.API.Controllers
|
||||
}
|
||||
}
|
||||
|
||||
[HttpPost("{consumerRoute}")]
|
||||
public async Task<IActionResult> CreateTokenViaBody([FromBody] LogInDto login, [FromRoute] string consumerRoute, [FromQuery] bool cookie = false)
|
||||
[HttpPost("{consumerName}")]
|
||||
public async Task<IActionResult> CreateTokenViaBody([FromBody] LogInDto login, [FromRoute] string consumerName, [FromQuery] bool cookie = false)
|
||||
{
|
||||
try
|
||||
{
|
||||
return await CreateTokenAsync(login, consumerRoute, cookie);
|
||||
return await CreateTokenAsync(login, consumerName, cookie);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user