예제 #1
0
 void provider_AclChanged(IAclProvider sender, string resource)
 {
     if (AclChanged != null)
     {
         AclChanged(this, resource);
     }
 }
예제 #2
0
        public Program(IAclProvider aclProvider)
        {
            _aclProvider = aclProvider;
            ISystemFactory system = new LocalFactory();

            _system = new IpTablesSystem(system, new IPTablesBinaryAdapter(), new IpSetBinaryAdapter(system));
        }
예제 #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SessionPermissions{TIdentity}" /> class.
 /// </summary>
 /// <param name="currentUserMembership">The current user membership.</param>
 /// <param name="membershipProvider">The membership provider.</param>
 /// <param name="aclProvider">The acl provider.</param>
 public SessionPermissions(
     IObjectIdentity <TIdentity>[][] currentUserMembership,
     IMembershipProvider <TIdentity> membershipProvider,
     IAclProvider <TIdentity> aclProvider)
 {
     _currentUserMembership = currentUserMembership;
     _calculator            = new PermissionCalculator <TIdentity>(membershipProvider, new OrderedPermissionProvider <TIdentity>(aclProvider));
 }
예제 #4
0
 public RouterProvider Register(string resource, IAclProvider provider, int priority)
 {
     resource = resource.ToLower();
     if (!Routes.ContainsKey(resource))
     {
         Routes[resource] = new OrderedList <int, IAclProvider>();
     }
     Routes[resource].Add(priority, provider);
     provider.AclChanged += provider_AclChanged;
     return(this);
 }
예제 #5
0
 void provider_AclChanged(IAclProvider sender, string obj)
 {
     if (AclChanged != null)
     {
         foreach (var providerResource in Routes)
         {
             string resource = providerResource.Key;
             foreach (IAclProvider provider in providerResource.Value)
             {
                 if (provider == sender)
                 {
                     AclChanged(this, resource + obj);
                 }
             }
         }
     }
 }
예제 #6
0
파일: AclManager.cs 프로젝트: spcooney/NAcl
        static AclManager()
        {
            Providers = new Dictionary <string, IAclProvider>();
#if !SILVERLIGHT
            AclConfigurationSection configSection = (AclConfigurationSection)ConfigurationManager.GetSection("nacl");
            if (configSection != null)
            {
                foreach (ProviderElement provider in configSection.Providers)
                {
                    IAclProvider securityProvider = provider.Provider;
                    Providers.Add(provider.Name, securityProvider);
                    if (provider.Name == configSection.DefaultProviderName)
                    {
                        DefaultProvider = securityProvider;
                    }
                }
                foreach (Ace ace in configSection.Rights)
                {
                    AccessRule privilege = null;
                    switch (ace.Type)
                    {
                    case AccessRules.Allow:
                        privilege = new Allow(ace.Resource, ace.Verb, ace.Subject);
                        break;

                    case AccessRules.Deny:
                        privilege = new Deny(ace.Resource, ace.Verb, ace.Subject);
                        break;
                    }

                    if (!string.IsNullOrEmpty(ace.TargetProvider))
                    {
                        Providers[ace.TargetProvider].SetAcls(privilege);
                    }
                    else
                    {
                        DefaultProvider.SetAcls(privilege);
                    }
                }
            }
            else
#endif
            DefaultProvider = new MemoryProvider();
        }
예제 #7
0
파일: AclManager.cs 프로젝트: spcooney/NAcl
        static void DefaultProvider_AclChanged(IAclProvider sender, string resource)
        {
            string currentResource  = resource;
            int    lastIndexOfSlash = resource.Length;
            ICollection <WeakReference> handlers;

            do
            {
                currentResource = currentResource.Substring(0, lastIndexOfSlash);
                if (aclChangedHandlers.TryGetValue(currentResource, out handlers))
                {
                    foreach (WeakReference weakHandler in handlers)
                    {
                        if (weakHandler.IsAlive)
                        {
                            ((Action <string>)weakHandler.Target)(resource);
                        }
                    }
                }
                if (lastIndexOfSlash == 0)
                {
                    break;
                }
                lastIndexOfSlash = currentResource.LastIndexOf('/');
            }while (true);

            if (aclChangedHandlers.TryGetValue("*", out handlers))
            {
                foreach (WeakReference weakHandler in handlers)
                {
                    if (weakHandler.IsAlive)
                    {
                        ((Action <string>)weakHandler.Target)(resource);
                    }
                }
            }
        }
예제 #8
0
 public Program(IAclProvider aclProvider)
 {
     _aclProvider = aclProvider;
     ISystemFactory system = new LocalFactory();
     _system = new IpTablesSystem(system, new IPTablesBinaryAdapter(), new IpSetBinaryAdapter(system));
 }
예제 #9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="OrderedPermissionProvider{TIdentity}" /> class.
 /// </summary>
 /// <param name="aclProvider">The acl provider.</param>
 public OrderedPermissionProvider(IAclProvider <TIdentity> aclProvider)
 {
     _aclProvider = aclProvider;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="PermissionEngine{TIdentity}"/> class.
 /// </summary>
 /// <param name="membershipProvider">The membership provider.</param>
 /// <param name="aclProvider">The acl provider.</param>
 /// <exception cref="ArgumentNullException">
 /// membershipProvider
 /// or
 /// aclProvider
 /// </exception>
 public PermissionEngine(IMembershipProvider <TIdentity> membershipProvider, IAclProvider <TIdentity> aclProvider)
 {
     _membershipProvider = membershipProvider ?? throw new ArgumentNullException(nameof(membershipProvider));
     _aclProvider        = aclProvider ?? throw new ArgumentNullException(nameof(aclProvider));
 }
예제 #11
0
 public void Remove(IAclProvider provider)
 {
     ((List <IAclProvider>)Providers).Remove(provider);
     provider.AclChanged -= provider_AclChanged;
 }
예제 #12
0
 public void Add(IAclProvider provider)
 {
     ((List <IAclProvider>)Providers).Add(provider);
     provider.AclChanged += provider_AclChanged;
 }
예제 #13
0
 public RouterProvider Register(string resource, IAclProvider provider)
 {
     return(Register(resource, provider, 3));
 }