Persiltech.UserServices.Abstractions 0.1.14

There is a newer version of this package available.
See the version list below for details.
dotnet add package Persiltech.UserServices.Abstractions --version 0.1.14
                    
NuGet\Install-Package Persiltech.UserServices.Abstractions -Version 0.1.14
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Persiltech.UserServices.Abstractions" Version="0.1.14" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Persiltech.UserServices.Abstractions" Version="0.1.14" />
                    
Directory.Packages.props
<PackageReference Include="Persiltech.UserServices.Abstractions" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Persiltech.UserServices.Abstractions --version 0.1.14
                    
#r "nuget: Persiltech.UserServices.Abstractions, 0.1.14"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Persiltech.UserServices.Abstractions@0.1.14
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Persiltech.UserServices.Abstractions&version=0.1.14
                    
Install as a Cake Addin
#tool nuget:?package=Persiltech.UserServices.Abstractions&version=0.1.14
                    
Install as a Cake Tool

Persiltech.UserServices.Abstractions

NuGet License: MIT

Define la interfaz IUserService, un Output Port que expone el estado de autenticación y la identidad del usuario actual, para que cualquier solución basada en Arquitectura Limpia lo consuma.

Instalación

dotnet add package Persiltech.UserServices.Abstractions

El contrato

namespace Persiltech.UserServices.Abstractions;

public interface IUserService
{
    bool IsAuthenticated { get; }

    string? UserName { get; }

    string? FullName { get; }
}

UserName y FullName son anulables porque el contrato no presupone de dónde sale la identidad: un usuario anónimo no tiene ninguno de los dos, y un usuario autenticado puede carecer de nombre completo si el proveedor de identidad no emitió ese dato. Consultarlos siempre después de IsAuthenticated no basta para descartar el null, y por eso la nulabilidad es parte de la firma.

Uso

La capa de aplicación depende del contrato, nunca de quien lo resuelve:

namespace Persiltech.Sales.Core.PlaceOrder;

public sealed class PlaceOrderHandler(IUserService userService, IOrderRepository orderRepository)
{
    public async Task<Guid> HandleAsync(PlaceOrderCommand command, CancellationToken cancellationToken)
    {
        if (!userService.IsAuthenticated)
        {
            throw new UnauthorizedAccessException();
        }

        Order order = Order.Create(command.Items, userService.UserName);

        await orderRepository.AddAsync(order, cancellationToken);

        return order.Id;
    }
}

Implementar el adaptador

El paquete no trae ninguna implementación: el adaptador y su registro en el contenedor corresponden a la solución consumidora, que es la que conoce su mecanismo de autenticación. En una aplicación ASP.NET Core suele resolverse desde HttpContext.User:

namespace Persiltech.Sales.Api.Security;

public sealed class HttpContextUserService(IHttpContextAccessor httpContextAccessor) : IUserService
{
    private ClaimsPrincipal? CurrentUser => httpContextAccessor.HttpContext?.User;

    public bool IsAuthenticated => CurrentUser?.Identity?.IsAuthenticated ?? false;

    public string? UserName => CurrentUser?.FindFirstValue(ClaimTypes.Name);

    public string? FullName => CurrentUser?.FindFirstValue("full_name");
}

Y su registro, en el proyecto que compone la aplicación:

builder.Services.AddHttpContextAccessor();
builder.Services.AddScoped<IUserService, HttpContextUserService>();

Decisiones de diseño

  • Paquete de puros contratos: no incluye ninguna implementación concreta de IUserService (Ej. una que la resuelva desde HttpContext.User); cada solución consumidora provee su propio adaptador de infraestructura para el contrato.
  • Sin dependencias a Microsoft.AspNetCore.* ni a ningún framework de hosting, para poder referenciarse desde una capa de dominio/aplicación sin arrastrar dependencias de infraestructura.
  • Sin registro en el contenedor de dependencias: no hay implementación que registrar.

Compatibilidad

net10.0

Estado

La versión es 0.x: la superficie pública puede cambiar entre versiones menores.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Persiltech.UserServices.Abstractions:

Package Downloads
Persiltech.UserServices

Implementación para ASP.NET Core de IUserService, el Output Port que define Persiltech.UserServices.Abstractions, que resuelve la identidad y el estado de autenticación del usuario actual a partir de HttpContext.User.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.15 109 9/6/2026
0.1.14 99 9/6/2026
0.1.13 98 9/6/2026
0.1.12 122 8/20/2026
0.1.11 90 8/19/2026
0.1.10 105 8/19/2026
0.1.9 98 8/19/2026
0.1.8 128 8/18/2026
0.1.7 113 8/18/2026
0.1.6 110 8/18/2026
0.1.5 96 8/18/2026
0.1.4 136 8/11/2026
0.1.3 91 8/10/2026
0.1.2 92 8/10/2026
0.1.1 95 8/10/2026
0.1.0 122 8/10/2026

v0.1.14
     - Restaura el historial de versiones, el soporte y el apoyo al desarrollo, que 0.1.13 perdió al migrar el paquete al monorepo
     - El soporte pasa a las incidencias de GitHub, ahora que el repositorio es público
     - Sin cambios en el código ni en la superficie pública

     v0.1.13
     - El .nuspec declara el repositorio, ahora público, y activa SourceLink: el depurador del consumidor puede entrar al código fuente
     - Sin cambios en el código ni en la superficie pública