Introduced `EnvelopeAuthService` and `IEnvelopeAuthService` to handle server-side authentication for envelope receiver pages. - Registered `IEnvelopeAuthService` as a scoped service in `Program.cs`. - Implemented `EnvelopeAuthService` to validate user authentication and envelope key matching using `IHttpContextAccessor` and JWT claims. - Added methods to retrieve the authenticated envelope key and current user (`ClaimsPrincipal`). - Prioritized `NameIdentifier` claim for envelope key extraction, with fallback to `sub` claim. - Documented the service and interface with XML comments for clarity. This centralizes authentication logic, ensuring reusability and adherence to SSR best practices.
30 lines
1.2 KiB
C#
30 lines
1.2 KiB
C#
using System.Security.Claims;
|
|
|
|
namespace EnvelopeGenerator.Server.Services;
|
|
|
|
/// <summary>
|
|
/// Service for handling envelope-specific authentication in SSR (Server-Side Rendering) context.
|
|
/// </summary>
|
|
public interface IEnvelopeAuthService
|
|
{
|
|
/// <summary>
|
|
/// Checks if the current user is authenticated for the given envelope key.
|
|
/// Validates both that the user is authenticated AND that the envelope key matches their claims.
|
|
/// </summary>
|
|
/// <param name="envelopeKey">The envelope key to validate against user claims.</param>
|
|
/// <returns>True if user is authenticated and envelope key matches; otherwise false.</returns>
|
|
bool IsAuthenticated(string envelopeKey);
|
|
|
|
/// <summary>
|
|
/// Gets the authenticated envelope key from the current user's claims (NameIdentifier or "sub" claim).
|
|
/// </summary>
|
|
/// <returns>The envelope key if user is authenticated; otherwise null.</returns>
|
|
string? GetAuthenticatedEnvelopeKey();
|
|
|
|
/// <summary>
|
|
/// Gets the current HttpContext user principal.
|
|
/// </summary>
|
|
/// <returns>ClaimsPrincipal if available; otherwise null.</returns>
|
|
ClaimsPrincipal? GetCurrentUser();
|
|
}
|