mirror of
https://github.com/esiur/esiur-dotnet.git
synced 2026-07-31 01:40:42 +00:00
Managers
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user