コード例 #1
0
        public async Task <bool> IsEnabledAsync(PermissionDefinition permission)
        {
            using (var scope = ServiceProvider.CreateScope())
            {
                var context = new PermissionStateContext
                {
                    Permission      = permission,
                    ServiceProvider = scope.ServiceProvider.GetRequiredService <ICachedServiceProvider>()
                };

                foreach (var provider in permission.StateProviders)
                {
                    if (!await provider.IsEnabledAsync(context))
                    {
                        return(false);
                    }
                }

                foreach (IPermissionStateProvider provider in Options.GlobalStateProviders.Select(x => ServiceProvider.GetRequiredService(x)))
                {
                    if (!await provider.IsEnabledAsync(context))
                    {
                        return(false);
                    }
                }

                return(true);
            }
        }
コード例 #2
0
        public PermissionValueCheckContext([NotNull] PermissionDefinition permission, [CanBeNull] ClaimsPrincipal principal)
        {
            Check.NotNull(permission, nameof(permission));

            Permission = permission;
            Principal  = principal;
        }
コード例 #3
0
        public static PermissionDefinition AddStateProviders(
            [NotNull] this PermissionDefinition permissionDefinition,
            [NotNull] params IPermissionStateProvider[] permissionStateProviders)
        {
            Check.NotNull(permissionDefinition, nameof(permissionDefinition));
            Check.NotNull(permissionStateProviders, nameof(permissionStateProviders));

            permissionDefinition.StateProviders.AddRange(permissionStateProviders);

            return(permissionDefinition);
        }
コード例 #4
0
        protected virtual void AddPermissionToDictionaryRecursively(
            Dictionary <string, PermissionDefinition> permissions,
            PermissionDefinition permission)
        {
            if (permissions.ContainsKey(permission.Name))
            {
                throw new AbpException("Duplicate permission name: " + permission.Name);
            }

            permissions[permission.Name] = permission;

            foreach (var child in permission.Children)
            {
                AddPermissionToDictionaryRecursively(permissions, child);
            }
        }