diff --git a/API/Controllers/AccountController.cs b/API/Controllers/AccountController.cs index 5febf8d..7942d1f 100644 --- a/API/Controllers/AccountController.cs +++ b/API/Controllers/AccountController.cs @@ -1,6 +1,7 @@ using System.Security.Claims; using API.Dtos; using API.Errors; +using API.Extensions; using Core.Entities.Identity; using Core.Interfaces; using Microsoft.AspNetCore.Authorization; @@ -25,8 +26,7 @@ namespace API.Controllers [HttpGet] public async Task> GetCurrentUser() { - var email = User.FindFirstValue(ClaimTypes.Email); - var user = await _userManager.FindByEmailAsync(email); + var user = await _userManager.FindByEmailFromClaimsPrinciple(User); return new UserDto { Email = user.Email, @@ -44,8 +44,7 @@ namespace API.Controllers [HttpGet("address")] public async Task> GetUserAddress() { - var email = User.FindFirstValue(ClaimTypes.Email); - var user = await _userManager.FindByEmailAsync(email); + var user = await _userManager.FindUserByClaimsPrincipleWithAddressAsync(User); return user.Address; } diff --git a/API/Extensions/UserManagerExtensions.cs b/API/Extensions/UserManagerExtensions.cs new file mode 100644 index 0000000..d3ef70d --- /dev/null +++ b/API/Extensions/UserManagerExtensions.cs @@ -0,0 +1,23 @@ +using System.Security.Claims; +using Core.Entities.Identity; +using Microsoft.AspNetCore.Identity; +using Microsoft.EntityFrameworkCore; + +namespace API.Extensions +{ + public static class UserManagerExtensions + { + public static async Task FindUserByClaimsPrincipleWithAddressAsync(this UserManager input, ClaimsPrincipal user) + { + var email = user.FindFirstValue(ClaimTypes.Email); + return await input.Users.Include(x => x.Address).SingleOrDefaultAsync(x => x.Email == email); + + } + + public static async Task FindByEmailFromClaimsPrinciple(this UserManager input, ClaimsPrincipal user) + { + var email = user.FindFirstValue(ClaimTypes.Email); + return await input.Users.SingleOrDefaultAsync(x => x.Email == email); + } + } +} \ No newline at end of file