Developer 02 197db1e08b refactor: Entfernen des App Loggers und Implementierung des ILogger-Interfaces; Konfiguration der API für NLog
- App Logger entfernt und durch die Implementierung des `ILogger`-Interfaces ersetzt, um eine konsistente Logging-Architektur zu gewährleisten.
- API für die Nutzung von NLog konfiguriert, um eine leistungsstarke und flexible Logging-Lösung bereitzustellen.
- Konfigurationsdateien und Setup-Anpassungen für die Integration von NLog in die API vorgenommen.
2024-08-27 19:41:12 +02:00

101 lines
3.8 KiB
C#

using DAL;
using DAL._Shared.SharedModels;
using DAL._Shared.SharedRepositories;
using HRD.LDAPService.JWT;
using HRD.WebApi.Controllers;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Microsoft.Net.Http.Headers;
using System;
using System.Threading.Tasks;
namespace StaffDBServer.SharedControllers
{
[JWTAuthorize]
public class WebAppUserController : BaseMiniController
{
private readonly WebAppUserRepository webAppUserRepository;
private readonly WebAppUserHelper webAppUserHelper;
public WebAppUserController(WebApiContext context, WebAppUserRepository webAppUserRepository, WebAppUserHelper webAppUserHelper, ILogger<WebAppUserController> logger) : base(context, logger)
{
this.webAppUserRepository = webAppUserRepository;
this.webAppUserHelper = webAppUserHelper;
}
[HttpPost("Culture")]
public async Task<IActionResult> UpdateCultureAsync([FromBody] WebAppUser userFromClient)
{
try
{
WebAppUser userFromDB = await webAppUserRepository.GetByAsync(u => u.LoginName == userFromClient.LoginName, false);
if (userFromDB != default) //first login, get User from WebAppEmployeeInfo
{
userFromDB.Language = userFromClient.Language;
userFromDB.Culture = userFromClient.Culture;
if (!await webAppUserRepository.UpdateAsync(userFromDB))
{
return StatusCode(StatusCodes.Status400BadRequest, $"Cannot set User's language/culture");
}
}
return new OkObjectResult(userFromClient);
}
catch (Exception ex)
{
WriteLogException(ex, ex.Message);
return StatusCode(StatusCodes.Status400BadRequest, $"Cannot set User's language/culture");
}
}
[HttpPost("LoginWithJWT")]
public async Task<IActionResult> LoginWithAuthorizationAsync([FromBody] WebAppUser userFromClient)
{
try
{
var accessToken = Request.Headers[HeaderNames.Authorization];
WebAppUser result = await webAppUserHelper.CheckLoginWithJWTAsync(accessToken, userFromClient.ClientVersion);
return new OkObjectResult(result);
}
catch (Exception ex)
{
WriteLogException(ex, ex.Message);
return Unauthorized(ex.Message);
}
}
[HttpPost("LoginWithNameAndPassword/{webApiId}"),]
[Microsoft.AspNetCore.Authorization.AllowAnonymous]
public async Task<IActionResult> LoginWithNameAndPasswordAsync([FromBody] WebAppUser userFromClient, int webApiId)
{
try
{
var result = await webAppUserHelper.CheckLoginWithNameAndPasswordAsync(userFromClient, webApiId);
return new OkObjectResult(result);
}
catch (Exception ex)
{
WriteLogException(ex, ex.Message);
return NotFound(ex.Message);
}
}
[HttpPost("LoginWithNameAndPassword")]
[Microsoft.AspNetCore.Authorization.AllowAnonymous]
public async Task<IActionResult> LoginWithNameAndPasswordAsync([FromBody] WebAppUser userFromClient)
{
try
{
var result = await webAppUserHelper.CheckLoginWithNameAndPasswordAsync(userFromClient);
return new OkObjectResult(result);
}
catch (Exception ex)
{
WriteLogException(ex, ex.Message);
return NotFound(ex.Message);
}
}
}
}