Add CurrentUserService to access sub from context
This commit is contained in:
6
src/Imprink.Application/Service/ICurrentUserService.cs
Normal file
6
src/Imprink.Application/Service/ICurrentUserService.cs
Normal file
@@ -0,0 +1,6 @@
|
||||
namespace Imprink.Application.Service;
|
||||
|
||||
public interface ICurrentUserService
|
||||
{
|
||||
string? GetCurrentUserId();
|
||||
}
|
||||
23
src/Imprink.Application/Users/Dtos/UserDto.cs
Normal file
23
src/Imprink.Application/Users/Dtos/UserDto.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using Imprink.Domain.Entities.Orders;
|
||||
using Imprink.Domain.Entities.Users;
|
||||
|
||||
namespace Imprink.Application.Users.Dtos;
|
||||
|
||||
public class UserDto
|
||||
{
|
||||
public string Id { get; set; } = null!;
|
||||
public required string Name { get; set; }
|
||||
public required string Nickname { get; set; }
|
||||
public required string Email { get; set; }
|
||||
public bool EmailVerified { get; set; }
|
||||
public string? FullName { get; set; }
|
||||
public string? PhoneNumber { get; set; }
|
||||
public required bool IsActive { get; set; }
|
||||
|
||||
public virtual ICollection<Address> Addresses { get; set; } = new List<Address>();
|
||||
public virtual ICollection<UserRole> UserRoles { get; set; } = new List<UserRole>();
|
||||
public virtual ICollection<Order> Orders { get; set; } = new List<Order>();
|
||||
|
||||
public Address? DefaultAddress => Addresses.FirstOrDefault(a => a is { IsDefault: true, IsActive: true });
|
||||
public IEnumerable<Role> Roles => UserRoles.Select(ur => ur.Role);
|
||||
}
|
||||
11
src/Imprink.Application/Users/SetUserPhoneHandler.cs
Normal file
11
src/Imprink.Application/Users/SetUserPhoneHandler.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using Imprink.Application.Users.Dtos;
|
||||
using MediatR;
|
||||
|
||||
namespace Imprink.Application.Users;
|
||||
|
||||
public record SetUserPhoneCommand(string Sub, Guid RoleId) : IRequest<UserRoleDto?>;
|
||||
|
||||
public class SetUserPhoneHandler
|
||||
{
|
||||
|
||||
}
|
||||
@@ -8,7 +8,6 @@ public class User
|
||||
public required string Name { get; set; }
|
||||
public required string Nickname { get; set; }
|
||||
public required string Email { get; set; }
|
||||
|
||||
public bool EmailVerified { get; set; }
|
||||
public string? FullName { get; set; }
|
||||
public string? PhoneNumber { get; set; }
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AutoMapper" Version="14.0.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.3.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="9.0.5" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.5" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.5">
|
||||
|
||||
14
src/Imprink.Infrastructure/Services/CurrentUserService.cs
Normal file
14
src/Imprink.Infrastructure/Services/CurrentUserService.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using System.Security.Claims;
|
||||
using Imprink.Application.Service;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
|
||||
namespace Imprink.Infrastructure.Services;
|
||||
|
||||
public class CurrentUserService(IHttpContextAccessor httpContextAccessor) : ICurrentUserService
|
||||
{
|
||||
public string? GetCurrentUserId()
|
||||
{
|
||||
return httpContextAccessor.HttpContext?.User?.FindFirst(ClaimTypes.NameIdentifier)?.Value
|
||||
?? httpContextAccessor.HttpContext?.User?.FindFirst("sub")?.Value;
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@ using System.Security.Claims;
|
||||
using FluentValidation;
|
||||
using Imprink.Application;
|
||||
using Imprink.Application.Products.Create;
|
||||
using Imprink.Application.Service;
|
||||
using Imprink.Application.Validation.Models;
|
||||
using Imprink.Domain.Repositories;
|
||||
using Imprink.Domain.Repositories.Products;
|
||||
@@ -10,6 +11,7 @@ using Imprink.Infrastructure;
|
||||
using Imprink.Infrastructure.Database;
|
||||
using Imprink.Infrastructure.Repositories.Products;
|
||||
using Imprink.Infrastructure.Repositories.Users;
|
||||
using Imprink.Infrastructure.Services;
|
||||
using Imprink.WebApi.Filters;
|
||||
using Imprink.WebApi.Middleware;
|
||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||
@@ -31,8 +33,11 @@ public static class Startup
|
||||
services.AddScoped<IUserRepository, UserRepository>();
|
||||
services.AddScoped<IUserRoleRepository, UserRoleRepository>();
|
||||
services.AddScoped<IUnitOfWork, UnitOfWork>();
|
||||
services.AddScoped<ICurrentUserService, CurrentUserService>();
|
||||
|
||||
services.AddScoped<Seeder>();
|
||||
|
||||
services.AddHttpContextAccessor();
|
||||
|
||||
services.AddDbContext<ApplicationDbContext>(options =>
|
||||
options.UseSqlServer(
|
||||
|
||||
Reference in New Issue
Block a user