a1156960b9
Resolves 1113 documentation-completeness gaps flagged by CommentChecker (MissingReturns, MissingInheritDoc, InheritDocMisused, MissingDoc, MissingParam, RedundantInheritDoc) so the API surface is fully documented and the analyzer scan is clean. Doc comments only; no code changes.
42 lines
1.1 KiB
C#
42 lines
1.1 KiB
C#
using ZB.MOM.WW.MxGateway.Server.Security.Authentication;
|
|
|
|
namespace ZB.MOM.WW.MxGateway.Server.Security.Authorization;
|
|
|
|
public sealed class GatewayRequestIdentityAccessor : IGatewayRequestIdentityAccessor
|
|
{
|
|
private readonly AsyncLocal<ApiKeyIdentity?> currentIdentity = new();
|
|
|
|
/// <inheritdoc />
|
|
public ApiKeyIdentity? Current => currentIdentity.Value;
|
|
|
|
/// <inheritdoc />
|
|
public IDisposable Push(ApiKeyIdentity identity)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(identity);
|
|
|
|
ApiKeyIdentity? previousIdentity = currentIdentity.Value;
|
|
currentIdentity.Value = identity;
|
|
|
|
return new IdentityScope(this, previousIdentity);
|
|
}
|
|
|
|
private sealed class IdentityScope(
|
|
GatewayRequestIdentityAccessor accessor,
|
|
ApiKeyIdentity? previousIdentity) : IDisposable
|
|
{
|
|
private bool disposed;
|
|
|
|
/// <summary>Restores the previous identity.</summary>
|
|
public void Dispose()
|
|
{
|
|
if (disposed)
|
|
{
|
|
return;
|
|
}
|
|
|
|
accessor.currentIdentity.Value = previousIdentity;
|
|
disposed = true;
|
|
}
|
|
}
|
|
}
|