Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ruleName"></param>
        /// <param name="applicationName"></param>
        /// <param name="connectionStringName"></param>
        /// <returns></returns>
        public static FwkAuthorizationRule GetRule(string ruleName, string applicationName, string connectionStringName)
        {
            aspnet_Rule waspnet_Rule = null;

            try
            {
                Guid wApplicationId = GetApplication(applicationName, connectionStringName);

                using (Fwk.Security.RuleProviderDataContext dc = new Fwk.Security.RuleProviderDataContext(System.Configuration.ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString))
                {
                    if (dc.aspnet_Rules.Any <aspnet_Rule>(s => s.name.Equals(ruleName.Trim()) && s.ApplicationId == wApplicationId))
                    {
                        waspnet_Rule = dc.aspnet_Rules.First <aspnet_Rule>(s => s.name.Equals(ruleName.Trim()) && s.ApplicationId == wApplicationId);
                    }
                    FwkAuthorizationRule rule = new FwkAuthorizationRule(waspnet_Rule.name, waspnet_Rule.expression, waspnet_Rule.ApplicationId.Value);
                    rule.Description = waspnet_Rule.Description;
                    rule.Id          = waspnet_Rule.Id;
                    return(rule);
                }
            }
            catch (TechnicalException tx)
            { throw tx; }
            catch (Exception ex)
            {
                TechnicalException te = new TechnicalException(string.Format(Resource.Rule_ProblemGetingData_Error, ruleName), ex);
                te.ErrorId = "4003";
                Fwk.Exceptions.ExceptionHelper.SetTechnicalException <FwkMembership>(te);
                throw te;
            }
        }
Пример #2
0
        /// <summary>
        /// crea una regla rule si es que la regla todavia no existe
        /// </summary>
        ///<param name="rule">aspnet_Rules</param>
        /// <param name="providerName">Nombre del proveedor de membership</param>
        /// <returns>void</returns>
        /// <Date>2010-12-22T11:29:57</Date>
        /// <Author>moviedo</Author>
        public static void CreateRule(FwkAuthorizationRule rule, string providerName)
        {
            SqlMembershipProvider wProvider = GetSqlMembershipProvider(providerName);
            string cnn = GetProvider_ConnectionStringName(wProvider.Name);


            CreateRule(rule, wProvider.ApplicationName, cnn);
        }
Пример #3
0
        /// <summary>
        /// Update rule and also allow change the name.-
        /// Update all rules in category relationships
        /// </summary>
        /// <param name="rule">Rule object <see cref="FwkAuthorizationRule"/></param>
        /// <param name="newRuleName">New rule name</param>
        /// <param name="providerName">Membership provider name</param>
        public static void UpdateRuleAndRuleName(FwkAuthorizationRule rule, string newRuleName, string providerName)
        {
            SqlMembershipProvider wProvider = GetSqlMembershipProvider(providerName);



            //Actualiza solo la regla
            UpdateRule(rule, newRuleName, wProvider.ApplicationName, GetProvider_ConnectionStringName(wProvider.Name));
        }
Пример #4
0
        /// <summary>
        /// Agrega un rol a la expresion de la regla.- Modifica Expression
        /// </summary>
        /// <param name="pRol"></param>
        /// <param name="pRule"></param>
        public static void Rule_AppenRol(Rol pRol, FwkAuthorizationRule pRule)
        {
            RolList  rollistAux = null;
            UserList userList   = null;

            BuildRolesAndUsers_FromRuleExpression(pRule.Expression, out rollistAux, out userList);

            //Agregar el rol a la regla
            rollistAux.Add(pRol);

            pRule.SetExpression(BuildRuleExpression(rollistAux, userList));
        }
Пример #5
0
        /// <summary>
        ///  Quita un rol de la expresion de la regla.- Modifica Expression
        /// </summary>
        /// <param name="pRol"></param>
        /// <param name="pRule"></param>
        public static void RemoveRol_From_Rule(Rol pRol, FwkAuthorizationRule pRule)
        {
            RolList  rollistAux = null;
            UserList userList   = null;

            BuildRolesAndUsers_FromRuleExpression(pRule.Expression, out rollistAux, out userList);

            //Quitar el rol a la regla si es que existe en la regla
            if (rollistAux.Any <Rol>(r => r.RolName.Equals(pRol.RolName)))
            {
                rollistAux.Remove(rollistAux.First <Rol>(r => r.RolName.Equals(pRol.RolName)));

                pRule.SetExpression(BuildRuleExpression(rollistAux, userList));
            }
        }
Пример #6
0
        /// <summary>
        /// Crea una regla
        /// </summary>
        /// <param name="rule"></param>
        /// <param name="applicationName">Nombre de la aplicacion. Coincide con CompanyId en la arquitectura</param>
        /// <param name="connectionStringName">Nombre de cadena de coneccion del archivo de configuracion.-</param>
        public static void CreateRule(FwkAuthorizationRule rule, string applicationName, string connectionStringName)
        {
            //Verificar si ya existe
            if (FwkMembership.ExistRule(rule.Name, applicationName, connectionStringName))
            {
                TechnicalException te = new TechnicalException(string.Format(Resource.Rule_ExistError, rule.Name));
                te.ErrorId = "4004";
                throw te;
            }

            try
            {
                Guid wApplicationId = GetApplication(applicationName, connectionStringName);


                StringBuilder str = new StringBuilder(FwkMembershipScripts.Rule_i);
                str.Replace("[ApplicationId]", wApplicationId.ToString());
                str.Replace("[rulename]", rule.Name.Trim());
                str.Replace("[expression]", rule.Expression);

                if (!String.IsNullOrEmpty(rule.Description))
                {
                    str.Replace("[description]", rule.Description.Trim());
                }
                else
                {
                    str.Replace("[description]", string.Empty);
                }
                using (SqlConnection cnn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString))
                    using (SqlCommand cmd = new SqlCommand(str.ToString(), cnn))
                    {
                        cmd.CommandType = CommandType.Text;

                        cmd.ExecuteNonQuery();
                    }
            }
            catch (TechnicalException tx)
            { throw tx; }
            catch (Exception ex)
            {
                TechnicalException te = new TechnicalException(string.Format(Resource.Rule_Crate_Error, rule.Name), ex);
                te.ErrorId = "4005";
                Fwk.Exceptions.ExceptionHelper.SetTechnicalException <FwkMembership>(te);
                throw te;
            }
        }
Пример #7
0
        /// <summary>
        /// UpdateRule
        /// </summary>
        /// <param name="rule"></param>
        /// <param name="applicationName">Nombre de la aplicacion. Coincide con CompanyId en la arquitectura</param>
        /// <param name="connectionStringName">Nombre de cadena de coneccion del archivo de configuracion.-</param>
        private static void UpdateRule(FwkAuthorizationRule rule, string newRuleName, string applicationName, string connectionStringName)
        {
            //Verificar si existe
            if (!FwkMembership.ExistRule(rule.Name.Trim(), applicationName, connectionStringName))
            {
                TechnicalException te = new TechnicalException(string.Format(Resource.Rule_NotExist, rule.Name));
                te.ErrorId = "4004";
                throw te;
            }


            try
            {
                Guid wApplicationId = GetApplication(applicationName, connectionStringName);


                using (Fwk.Security.RuleProviderDataContext dc = new Fwk.Security.RuleProviderDataContext(System.Configuration.ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString))
                {
                    var ruleToUpdate = dc.aspnet_Rules.Where(p => p.Id.Equals(rule.Id)).FirstOrDefault();

                    if (!string.IsNullOrEmpty(newRuleName))
                    {
                        ruleToUpdate.name = newRuleName;
                    }

                    ruleToUpdate.expression  = rule.Expression;
                    ruleToUpdate.Description = rule.Description;

                    dc.SubmitChanges();
                }
            }
            catch (Exception ex)
            {
                TechnicalException te = new TechnicalException(Fwk.Security.Properties.Resource.MembershipSecurityGenericError, ex);
                ExceptionHelper.SetTechnicalException <FwkMembership>(te);
                te.ErrorId = "4000";
                throw te;
            }
        }
Пример #8
0
        /// <summary>
        /// Retorna una lista de reglas de una determinada coneccion
        /// </summary>
        /// <param name="applicationName">Nombre de la aplicacion. Coincide con CompanyId en la arquitectura</param>
        /// <param name="connectionStringName">Nombre de cadena de coneccion del archivo de configuracion.-</param>
        /// <returns></returns>
        public static FwkAuthorizationRuleList GetRulesAuxList(string applicationName, string connectionStringName)
        {
            FwkAuthorizationRule     rule   = null;
            FwkAuthorizationRuleList wRules = null;

            try
            {
                Guid wApplicationId = GetApplication(applicationName, connectionStringName);
                wRules = new FwkAuthorizationRuleList();

                using (Fwk.Security.RuleProviderDataContext dc = new Fwk.Security.RuleProviderDataContext(System.Configuration.ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString))
                {
                    var aspnet_Rules = from s in dc.aspnet_Rules where s.ApplicationId == wApplicationId select s;

                    foreach (aspnet_Rule aspnet_Rule in aspnet_Rules.ToList <aspnet_Rule>())
                    {
                        rule             = new FwkAuthorizationRule();
                        rule.Id          = aspnet_Rule.Id;
                        rule.Name        = aspnet_Rule.name.Trim();
                        rule.Expression  = aspnet_Rule.expression;
                        rule.Description = aspnet_Rule.Description;
                        wRules.Add(rule);
                    }
                }



                return(wRules);
            }
            catch (TechnicalException tx)
            { throw tx; }
            catch (Exception ex)
            {
                TechnicalException te = new TechnicalException(string.Format(Resource.Rule_ProblemGetingAlls_Error, applicationName), ex);
                te.ErrorId = "4004";
                Fwk.Exceptions.ExceptionHelper.SetTechnicalException <FwkMembership>(te);
                throw te;
            }
        }
Пример #9
0
        /// <summary>
        /// Update rule. Not allow update the ruel name .-
        /// </summary>
        /// <param name="rule">Rule object <see cref="FwkAuthorizationRule"/></param>
        /// <param name="providerName">Membership provider name</param>
        public static void UpdateRule(FwkAuthorizationRule rule, string providerName)
        {
            SqlMembershipProvider wProvider = GetSqlMembershipProvider(providerName);

            UpdateRule(rule, string.Empty, wProvider.ApplicationName, GetProvider_ConnectionStringName(wProvider.Name));
        }