mirror of
https://github.com/esiur/esiur-dotnet.git
synced 2026-07-30 17:30:40 +00:00
44 lines
1.3 KiB
C#
44 lines
1.3 KiB
C#
using Esiur.Security.Permissions;
|
|
using System;
|
|
|
|
namespace Esiur.Security.Management;
|
|
|
|
/// <summary>
|
|
/// Aggregated decisions from each independent manager category.
|
|
/// An allow in one category never grants admission in another category.
|
|
/// </summary>
|
|
public sealed class ResourceManagerEvaluation
|
|
{
|
|
public Ruling Permissions { get; }
|
|
public Ruling RateControl { get; }
|
|
public Ruling Auditing { get; }
|
|
public TimeSpan Delay { get; }
|
|
|
|
public string? PermissionsDenialReason { get; }
|
|
public string? RateControlDenialReason { get; }
|
|
public string? AuditingDenialReason { get; }
|
|
|
|
public bool IsAllowed =>
|
|
Permissions == Ruling.Allowed &&
|
|
RateControl != Ruling.Denied &&
|
|
Auditing != Ruling.Denied;
|
|
|
|
internal ResourceManagerEvaluation(
|
|
Ruling permissions,
|
|
Ruling rateControl,
|
|
Ruling auditing,
|
|
TimeSpan delay,
|
|
string? permissionsDenialReason,
|
|
string? rateControlDenialReason,
|
|
string? auditingDenialReason)
|
|
{
|
|
Permissions = permissions;
|
|
RateControl = rateControl;
|
|
Auditing = auditing;
|
|
Delay = delay > TimeSpan.Zero ? delay : TimeSpan.Zero;
|
|
PermissionsDenialReason = permissionsDenialReason;
|
|
RateControlDenialReason = rateControlDenialReason;
|
|
AuditingDenialReason = auditingDenialReason;
|
|
}
|
|
}
|