Refactoring, database structure changed

This commit is contained in:
2025-03-03 00:56:32 +01:00
Unverified
parent d3805ef3db
commit c603c41c0b
913 changed files with 21764 additions and 32775 deletions

View File

@@ -0,0 +1,68 @@
using Ardalis.Result;
using WatchIt.Database.Model.Accounts;
using WatchIt.DTO.Models.Controllers.Accounts;
using WatchIt.DTO.Models.Controllers.Authentication;
using WatchIt.WebAPI.Helpers;
using WatchIt.WebAPI.Repositories.Accounts;
using WatchIt.WebAPI.Services.Tokens;
using WatchIt.WebAPI.Services.User;
namespace WatchIt.WebAPI.BusinessLogic.Authentication;
public class AuthenticationBusinessLogic : IAuthenticationBusinessLogic
{
#region SERVICES
private readonly ITokensService _tokensService;
private readonly IUserService _userService;
private readonly IAccountsRepository _accountRepository;
#endregion
#region CONSTRUCTORS
public AuthenticationBusinessLogic(ITokensService tokensService, IUserService userService, IAccountsRepository accountRepository)
{
_tokensService = tokensService;
_userService = userService;
_accountRepository = accountRepository;
}
#endregion
#region PUBLIC METHODS
public async Task<Result<AuthenticationResponse>> Authenticate(AuthenticationRequest body)
{
Account? accountEntity = await _accountRepository.GetByUsernameOrEmailAsync(body.UsernameOrEmail);
if (accountEntity is null || !PasswordHelpers.ValidatePassword(body.Password, accountEntity.GetPasswordData()))
{
return Result.Unauthorized();
}
string accessToken = _tokensService.CreateAccessToken(accountEntity);
string refreshToken = await _tokensService.CreateRefreshTokenAsync(accountEntity, body.RememberMe);
AuthenticationResponse response = AuthenticationMappers.CreateAuthenticationResponse(accessToken, refreshToken);
await _accountRepository.UpdateAsync(accountEntity, x => x.UpdateActiveDate());
return Result.Success(response);
}
public async Task<Result<AuthenticationResponse>> AuthenticateRefresh(AuthenticationRefreshRequest body)
{
Account accountEntity = await _tokensService.ExtendRefreshTokenAsync(body.RefreshToken, body.AccessToken);
string accessToken = _tokensService.CreateAccessToken(accountEntity);
AuthenticationResponse response = AuthenticationMappers.CreateAuthenticationResponse(accessToken, body.RefreshToken);
await _accountRepository.UpdateAsync(accountEntity, x => x.UpdateActiveDate());
return Result.Success(response);
}
#endregion
}

View File

@@ -0,0 +1,11 @@
using Ardalis.Result;
using WatchIt.DTO.Models.Controllers.Accounts.Account;
using WatchIt.DTO.Models.Controllers.Authentication;
namespace WatchIt.WebAPI.BusinessLogic.Authentication;
public interface IAuthenticationBusinessLogic
{
Task<Result<AuthenticationResponse>> Authenticate(AuthenticationRequest body);
Task<Result<AuthenticationResponse>> AuthenticateRefresh(AuthenticationRefreshRequest body);
}