public void Initialize(IPermissionSetBuilder permissionSetBuilder)
        {
            if (permissionSetBuilder == null)
            {
                throw new ArgumentNullException(nameof(permissionSetBuilder));
            }

            // A custom IAnonymousRolePermissionConfiguration implementation can optionally be defined
            // which overrides the base implementation in the definition.
            var anonymousRolePermissionConfiguration = _serviceProvider.GetService <IEnumerable <IAnonymousRolePermissionConfiguration> >();

            if (EnumerableHelper.IsNullOrEmpty(anonymousRolePermissionConfiguration))
            {
                var anonymousRole = new AnonymousRole();
                anonymousRole.ConfigurePermissions(permissionSetBuilder);
            }
            else if (anonymousRolePermissionConfiguration.Count() > 1)
            {
                throw new InvalidOperationException($"Expected a single implementation of {nameof(IAnonymousRolePermissionConfiguration)} but encountered {anonymousRolePermissionConfiguration.Count()}. Only one implementation is permitted.");
            }
            else
            {
                anonymousRolePermissionConfiguration
                .First()
                .ConfigurePermissions(permissionSetBuilder);
            }
        }
 public DashboardPermissionBuilder(
     IPermissionSetBuilder permissionSetBuilder,
     bool isIncludeOperation
     )
     : base(permissionSetBuilder, isIncludeOperation)
 {
 }
Esempio n. 3
0
 public PageDirectoryPermissionBuilder(
     IPermissionSetBuilder permissionSetBuilder,
     bool isIncludeOperation
     )
     : base(permissionSetBuilder, isIncludeOperation)
 {
 }
 public NonCofoundryUserPermissionBuilder(
     IPermissionSetBuilder permissionSetBuilder,
     bool isIncludeOperation
     )
     : base(permissionSetBuilder, isIncludeOperation)
 {
 }
 public SettingsPermissionBuilder(
     IPermissionSetBuilder permissionSetBuilder,
     bool isIncludeOperation
     )
     : base(permissionSetBuilder, isIncludeOperation)
 {
 }
 public PageTemplatePermissionBuilder(
     IPermissionSetBuilder permissionSetBuilder,
     bool isIncludeOperation
     )
     : base(permissionSetBuilder, isIncludeOperation)
 {
 }
Esempio n. 7
0
 public RewriteRulePermissionBuilder(
     IPermissionSetBuilder permissionSetBuilder,
     bool isIncludeOperation
     )
     : base(permissionSetBuilder, isIncludeOperation)
 {
 }
Esempio n. 8
0
 public CurrentUserPermissionBuilder(
     IPermissionSetBuilder permissionSetBuilder,
     bool isIncludeOperation
     )
     : base(permissionSetBuilder, isIncludeOperation)
 {
 }
Esempio n. 9
0
 public ImageAssetPermissionBuilder(
     IPermissionSetBuilder permissionSetBuilder,
     bool isIncludeOperation
     )
     : base(permissionSetBuilder, isIncludeOperation)
 {
 }
Esempio n. 10
0
 /// <summary>
 /// This method determines which permissions the role is granted when it is first created.
 /// To help do this you are provided with a builder that contains all permissions in the
 /// system which you can use to either include or exclude permissions based on rules.
 /// </summary>
 public void ConfigurePermissions(IPermissionSetBuilder builder)
 {
     // In this example application we don't require any additional permissions for members
     // so we can re-use the permission set on the anonymous role which include read access
     // to most entities.
     builder.ApplyAnonymousRoleConfiguration();
 }
Esempio n. 11
0
        private static IPermissionSetBuilder Run(IPermissionSetBuilder builder, Action <CurrentUserPermissionBuilder> configure, bool isIncludeOperation)
        {
            var usersBuilder = new CurrentUserPermissionBuilder(builder, isIncludeOperation);

            configure(usersBuilder);

            return(builder);
        }
Esempio n. 12
0
 public EntityPermissionBuilder(
     IPermissionSetBuilder permissionSetBuilder,
     bool isIncludeOperation
     )
 {
     _permissionSetBuilder = permissionSetBuilder;
     _isIncludeOperation   = isIncludeOperation;
 }
        /// <summary>
        /// Casts the builder instance as <see cref="IExtendablePermissionSetBuilder"/> to
        /// provide access to hidden functionality intended for extending a builder with
        /// bespoke features. These are advanced feature intended to be used for extension only
        /// e.g. internally by Cofoundry, in plugins or custom extensions
        /// </summary>
        public static IExtendablePermissionSetBuilder AsExtendableBuilder(this IPermissionSetBuilder builder)
        {
            if (builder is IExtendablePermissionSetBuilder extendableBuilder)
            {
                return(extendableBuilder);
            }

            throw new Exception($"An {nameof(IPermissionSetBuilder)} implementation should also implement {nameof(IExtendablePermissionSetBuilder)} to allow internal/plugin extendibility.");
        }
        public void Initialize(IPermissionSetBuilder permissionSetBuilder)
        {
            if (permissionSetBuilder == null)
            {
                throw new ArgumentNullException(nameof(permissionSetBuilder));
            }

            _roleDefinition.ConfigurePermissions(permissionSetBuilder);
        }
Esempio n. 15
0
        private static IPermissionSetBuilder Run(IPermissionSetBuilder builder, Action <RewriteRulePermissionBuilder> configure, bool isIncludeOperation)
        {
            if (configure == null)
            {
                configure = c => c.All();
            }
            var entityBuilder = new RewriteRulePermissionBuilder(builder, isIncludeOperation);

            configure(entityBuilder);

            return(builder);
        }
 public CustomEntityPermissionBuilder(
     ICustomEntityDefinition customEntityDefinition,
     IPermissionSetBuilder permissionSetBuilder,
     bool isIncludeOperation
     )
     : base(permissionSetBuilder, isIncludeOperation)
 {
     if (customEntityDefinition == null)
     {
         throw new ArgumentNullException(nameof(customEntityDefinition));
     }
     _customEntityDefinition = customEntityDefinition;
 }
        private static IPermissionSetBuilder Run <TCustomEntityDefinition>(IPermissionSetBuilder builder, Action <CustomEntityPermissionBuilder> configure, bool isIncludeOperation)
            where TCustomEntityDefinition : ICustomEntityDefinition
        {
            if (configure == null)
            {
                configure = c => c.All();
            }
            var definition    = GetDefinition <TCustomEntityDefinition>(builder);
            var entityBuilder = new CustomEntityPermissionBuilder(definition, builder, isIncludeOperation);

            configure(entityBuilder);

            return(builder);
        }
Esempio n. 18
0
 public void ConfigurePermissions(IPermissionSetBuilder builder)
 {
     builder
     .ApplyRoleConfiguration <AnonymousRole>()
     .IncludePage(c => c.CRUD())
     .IncludeCurrentUser(c => c.Update().Delete())
     .ExcludeUserInCofoundryAdminUserArea()
     .IncludeAllWrite(p => p.ExceptEntityPermissions <PageEntityDefinition>())
     .IncludeAllAdminModule(p => p.ExceptEntityPermissions <PageEntityDefinition>())
     .Include <CofoundryUserCreatePermission>()
     .IncludeAllRead()
     .ExcludeUserInAllUserAreas()
     ;
 }
Esempio n. 19
0
        /// <summary>
        /// Configure the builder to exclude all permissions for users in the Cofoundry admin user area.
        /// </summary>
        public static IPermissionSetBuilder ExcludeUserInCofoundryAdminUserArea(this IPermissionSetBuilder builder)
        {
            Action <CofoundryUserPermissionBuilder> configure = c => c.All();

            return(Run(builder, configure, false));
        }
Esempio n. 20
0
 /// <summary>
 /// Configure the builder to exclude permissions for rewrite rules.
 /// </summary>
 /// <param name="configure">A configuration action to select which permissions to exclude.</param>
 public static IPermissionSetBuilder ExcludeRewriteRule(this IPermissionSetBuilder builder, Action <RewriteRulePermissionBuilder> configure)
 {
     return(Run(builder, configure, false));
 }
Esempio n. 21
0
 /// <summary>
 /// Configure the builder to exclude permissions for the currently signed in user account.
 /// </summary>
 /// <param name="configure">A configuration action to select which permissions to exclude.</param>
 public static IPermissionSetBuilder ExcludeCurrentUser(this IPermissionSetBuilder builder, Action <CurrentUserPermissionBuilder> configure)
 {
     return(Run(builder, configure, false));
 }
Esempio n. 22
0
 /// <summary>
 /// Configure the builder to include permissions for users in the Cofoundry admin user area.
 /// </summary>
 /// <param name="configure">A configuration action to select which permissions to include.</param>
 public static IPermissionSetBuilder IncludeUserInCofoundryAdminUserArea(this IPermissionSetBuilder builder, Action <CofoundryUserPermissionBuilder> configure)
 {
     return(Run(builder, configure, true));
 }
Esempio n. 23
0
 /// <summary>
 /// Configure the builder to exclude all permissions for rewrite  rules.
 /// </summary>
 public static IPermissionSetBuilder ExcludeRewriteRule(this IPermissionSetBuilder builder)
 {
     return(Run(builder, null, false));
 }
Esempio n. 24
0
 /// <summary>
 /// Configure the builder to exclude permissions for users in a custom user area (excludes the Cofoundry admin user area).
 /// </summary>
 /// <param name="configure">A configuration action to select which permissions to exclude.</param>
 public static IPermissionSetBuilder ExcludeUserInCustomUserArea(this IPermissionSetBuilder builder, Action <NonCofoundryUserPermissionBuilder> configure)
 {
     return(Run(builder, configure, false));
 }
 /// <summary>
 /// Configure the builder to include the permissions configured for
 /// the <see cref="AnonymousRole"/>, which usually is a good base
 /// to start from before adding additional permissions.
 /// </summary>
 public static IPermissionSetBuilder ApplyAnonymousRoleConfiguration(this IPermissionSetBuilder builder)
 {
     return(builder.ApplyRoleConfiguration <AnonymousRole>());
 }
 /// <summary>
 /// Configure the builder to include all permissions.
 /// </summary>
 public static IPermissionSetBuilder IncludeAll(this IPermissionSetBuilder builder)
 {
     return(builder.Include(p => p));
 }
 public void ConfigurePermissions(IPermissionSetBuilder builder)
 {
     builder.IncludeAnonymousRoleDefaults();
 }
Esempio n. 28
0
        /// <summary>
        /// Configure the builder to include all permissions for the currently signed in user account.
        /// </summary>
        public static IPermissionSetBuilder IncludeCurrentUser(this IPermissionSetBuilder builder)
        {
            Action <CurrentUserPermissionBuilder> configure = c => c.All();

            return(Run(builder, configure, true));
        }
Esempio n. 29
0
 public void ConfigurePermissions(IPermissionSetBuilder builder)
 {
     builder.IncludeAll();
 }
Esempio n. 30
0
        /// <summary>
        /// Configure the builder to include all permissions for users in a custom user area (excludes the Cofoundry admin user area).
        /// </summary>
        public static IPermissionSetBuilder IncludeUserInCustomUserArea(this IPermissionSetBuilder builder)
        {
            Action <NonCofoundryUserPermissionBuilder> configure = c => c.All();

            return(Run(builder, configure, true));
        }