mirror of
https://github.com/esiur/esiur-dotnet.git
synced 2026-07-31 01:40:42 +00:00
Managers
This commit is contained in:
@@ -1,19 +1,22 @@
|
||||
using Esiur.Data;
|
||||
using Esiur.Security.Authority;
|
||||
using Esiur.Security.Permissions;
|
||||
using Esiur.Security.Management;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Principal;
|
||||
using System.Text;
|
||||
|
||||
namespace Esiur.Resource
|
||||
{
|
||||
public class ResourceContext:IResourceContext
|
||||
public class ResourceContext : IResourceContext, IResourceManagersContext
|
||||
{
|
||||
public ulong Age { get; }
|
||||
public Map<string, object> Attributes { get; }
|
||||
public Map<string, object> Properties { get; }
|
||||
public IPermissionsManager PermissionsManager { get; }
|
||||
public IReadOnlyList<IResourceManager> ResourceManagers { get; }
|
||||
|
||||
public ResourceContext(ulong age, Map<string, object> attributes, Map<string, object> properties, IPermissionsManager permissionsManager)
|
||||
{
|
||||
@@ -21,6 +24,35 @@ namespace Esiur.Resource
|
||||
Attributes = attributes;
|
||||
Properties = properties;
|
||||
PermissionsManager = permissionsManager;
|
||||
ResourceManagers = permissionsManager is null
|
||||
? Array.Empty<IResourceManager>()
|
||||
: new IResourceManager[] { permissionsManager };
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a context with one or more locally supplied managers. Every manager
|
||||
/// must already be registered with the target Warehouse.
|
||||
/// </summary>
|
||||
public ResourceContext(
|
||||
IEnumerable<IResourceManager> resourceManagers,
|
||||
ulong age = 0,
|
||||
Map<string, object> attributes = null,
|
||||
Map<string, object> properties = null)
|
||||
{
|
||||
if (resourceManagers == null)
|
||||
throw new ArgumentNullException(nameof(resourceManagers));
|
||||
|
||||
var managers = resourceManagers.ToArray();
|
||||
if (managers.Any(manager => manager == null))
|
||||
throw new ArgumentException(
|
||||
"Resource managers cannot contain null values.",
|
||||
nameof(resourceManagers));
|
||||
|
||||
Age = age;
|
||||
Attributes = attributes;
|
||||
Properties = properties;
|
||||
ResourceManagers = Array.AsReadOnly(managers);
|
||||
PermissionsManager = managers.OfType<IPermissionsManager>().FirstOrDefault();
|
||||
}
|
||||
|
||||
//public virtual void Build()
|
||||
|
||||
Reference in New Issue
Block a user