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,8 @@
using WatchIt.Database.Model.Accounts;
namespace WatchIt.WebAPI.Services.User;
public interface IUserService
{
Task<Account> GetAccountAsync();
}

View File

@@ -0,0 +1,80 @@
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using Microsoft.IdentityModel.Tokens;
using WatchIt.Database.Model.Accounts;
using WatchIt.WebAPI.Constants;
using WatchIt.WebAPI.Repositories.Accounts;
using WatchIt.WebAPI.Services.Tokens;
namespace WatchIt.WebAPI.Services.User;
public class UserService : IUserService
{
#region SERVICES
private readonly IHttpContextAccessor _accessor;
private readonly IAccountsRepository _accountsRepository;
#endregion
#region CONSTRUCTORS
public UserService(IHttpContextAccessor accessor, IAccountsRepository accountsRepository)
{
_accessor = accessor;
_accountsRepository = accountsRepository;
}
#endregion
#region PUBLIC METHODS
public async Task<Account> GetAccountAsync()
{
long? id = GetAccountId();
if (!id.HasValue)
{
throw new SecurityTokenException("Incorrect sub claim");
}
Account? account = await _accountsRepository.GetAsync(id.Value);
if (account is null)
{
throw new SecurityTokenException("Account with sub claim id not found");
}
return account;
}
#endregion
#region PRIVATE METHODS
private ClaimsPrincipal? GetClaims()
{
if (_accessor.HttpContext is null)
{
throw new NullReferenceException();
}
return _accessor.HttpContext.User;
}
private long? GetAccountId()
{
ClaimsPrincipal? user = GetClaims();
Claim? subClaim = user?.FindFirst(JwtRegisteredClaimNames.Sub);
if (subClaim is null)
{
return null;
}
long.TryParse(subClaim.Value, out long accountId);
return accountId;
}
#endregion
}