/// <summary>
        /// Create Authorization based on a given type.
        /// </summary>
        /// <param name="values">the values (can provide none if ByPageACL or ByAuthenticated)</param>
        /// <returns></returns>
        public RegisterPageBuilderAuthorizationAttribute(PageBuilderAuthorizationTypes pageBuilderType, string[] pageBuilderValues, AuthorizationType type, string[] values = null, bool templateValuesArePrefix = false)
        {
            pageBuilderValues ??= Array.Empty <string>();
            CreatePageBuilderConfiguration(pageBuilderType, templateValuesArePrefix, pageBuilderValues);

            values ??= Array.Empty <string>();
            CreateAuthorizationCofiguration(type, values);
        }
        /// <summary>
        /// Use a custom IAuthorization class.  Must register this in the services container BEFORE the services.UseAuthorization().
        /// </summary>
        /// <param name="customAuthorization">Your class that implements IAuthorization, must also register in the services container BEFORE the services.UseAuthorization().</param>
        /// <returns></returns>
        public RegisterPageBuilderAuthorizationAttribute(PageBuilderAuthorizationTypes pageBuilderType, string pageBuilderValues, Type customAuthorization, bool templateValuesArePrefix = false)
        {
            CreatePageBuilderConfiguration(pageBuilderType, templateValuesArePrefix, ValueToArray(pageBuilderValues));

            AuthorizationConfiguration = new AuthorizationConfiguration()
            {
                CustomAuthorization = customAuthorization
            };
        }
        private void CreatePageBuilderConfiguration(PageBuilderAuthorizationTypes type, bool templateValuesArePrefix, string[] values)
        {
            PageBuilderConfiguration = new PageBuilderAuthorizationConfiguration();
            switch (type)
            {
            case PageBuilderAuthorizationTypes.ByPageTemplate:
                PageBuilderConfiguration.PageTemplateIdentifiers      = values;
                PageBuilderConfiguration.TemplateIdentifiersArePrefix = templateValuesArePrefix;
                break;

            case PageBuilderAuthorizationTypes.ByPageType:
                PageBuilderConfiguration.PageClassNames = values;
                break;
            }
        }
        /// <summary>
        /// Create Authorization based on a given type.
        /// </summary>
        /// <param name="users">; , or | separated string of values, can put none or null if ByPageACL or ByAuthenticated</param>
        /// <returns></returns>
        public RegisterPageBuilderAuthorizationAttribute(PageBuilderAuthorizationTypes pageBuilderType, string pageBuilderValues, AuthorizationType type, string values = null, bool templateValuesArePrefix = false)
        {
            CreatePageBuilderConfiguration(pageBuilderType, templateValuesArePrefix, ValueToArray(pageBuilderValues));

            CreateAuthorizationCofiguration(type, ValueToArray(values));
        }