Example #1
0
        /// <summary>
        /// Inicializa:
        ///     IAuthorizationProvider cargandole las reglas por medio de un servicio.-
        ///     IndentityUserInfo (servicio)
        ///     Genera el Principal (local) <see>GetGenericPrincipal</see>
        /// </summary>
        /// <param name="msgError">Mensage de error en caso de que se produzca alguno</param>
        public static void InitAuthorizationFactory(out string pMsgError)
        {
            pMsgError = string.Empty;
            // Inicializo Fwk Authorization provider y catching security provider
            // ASP.NET Membership y Profile providers no se inicializan de esta manera.
            try
            {
                if (FormBase.RuleProvider == null)
                {
                    FwkAuthorizationRuleList wFwkAuthorizationRuleList = SecurityServiceCalls.SearchAllRules();
                    FormBase.RuleProvider = new FwkAuthorizationRuleProvider(wFwkAuthorizationRuleList);
                }
                FormBase.IdentityName = FormBase.IndentityUserInfo.UserName;

                if (FormBase.Principal == null)
                {
                    GenericIdentity genericIdentity = new GenericIdentity(FormBase.IdentityName, "Database");
                    FormBase.Principal = new GenericPrincipal(genericIdentity, FormBase.IndentityUserInfo.Roles);
                }

                #region Este codigo se usaba cuando la aplicacion obtenia RuleProvider e IndentityUserInfo de manera local y sin servicios de fwk
                //if (FRM_FormBase.RuleProvider == null)
                //    FRM_FormBase.RuleProvider = AuthorizationFactory.GetAuthorizationProvider("RuleProvider_Fwk");
                //if (FRM_FormBase.IndentityUserInfo == null)
                //    FRM_FormBase.IndentityUserInfo = GetUserInfo(FRM_FormBase.IdentityName);
                #endregion
            }
            catch (Exception ex)
            {
                Fwk.Exceptions.TechnicalException wTechEx = new Fwk.Exceptions.TechnicalException("No se configuró correctamente el proveedor de autorización", ex);

                wTechEx.UserName = FormBase.IdentityName;
                throw wTechEx;
            }
        }
        /// <summary>
        /// Initialize an instance of the <see cref="AuthorizationRuleProvider"/> class.
        /// </summary>
        /// <param name="authorizationRules">The collection of rules.</param>
        public FwkAuthorizationRuleProvider(FwkAuthorizationRuleList authorizationRules)
        {
            if (authorizationRules == null)
            {
                throw new ArgumentNullException("authorizationRules");
            }

            this.authorizationRules = CreateRulesDictionary <FwkAuthorizationRule>(authorizationRules);
        }
Example #3
0
        public override SearchAllRulesRes Execute(SearchAllRulesReq pServiceRequest)
        {
            SearchAllRulesRes wRes = new SearchAllRulesRes();

            FwkAuthorizationRuleList rules = FwkMembership.GetRulesAuxList(pServiceRequest.SecurityProviderName);



            wRes.BusinessData = rules;

            return(wRes);
        }
Example #4
0
        //TODO: usar scripts
        static void RulesApendRol(Rol pRol, FwkAuthorizationRuleList pRulesList)
        {
            RolList  rollistAux  = new RolList();
            UserList userListAux = new UserList();;

            foreach (FwkAuthorizationRule rule in pRulesList)
            {
                rollistAux.Clear();
                userListAux.Clear();

                Fwk.Security.FwkMembership.BuildRolesAndUsers_FromRuleExpression(rule.Expression, out rollistAux, out userListAux);

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

                rule.Expression = Fwk.Security.FwkMembership.BuildRuleExpression(rollistAux, userListAux);
            }
        }
Example #5
0
        //TODO: usar scripts
        static void RulesRemoveRol(Rol pRol, FwkAuthorizationRuleList pRulesList)
        {
            RolList  rollistAux  = new RolList();
            UserList userListAux = new UserList();

            foreach (FwkAuthorizationRule rule in pRulesList)
            {
                rollistAux.Clear();
                userListAux.Clear();

                Fwk.Security.FwkMembership.BuildRolesAndUsers_FromRuleExpression(rule.Expression, out rollistAux, out userListAux);

                ///Agregar el rol a la regla
                if (rollistAux.Any <Rol>(r => r.RolName.Equals(pRol.RolName)))
                {
                    rollistAux.Remove(rollistAux.First <Rol>(r => r.RolName.Equals(pRol.RolName)));
                    rule.Expression = Fwk.Security.FwkMembership.BuildRuleExpression(rollistAux, userListAux);
                }
            }
        }
        /// <summary>
        /// Obtiele la lista de reglas relacionadas al proveedor
        /// </summary>
        /// <returns></returns>
        public FwkAuthorizationRuleList GetAuthorizationRules()
        {
            FwkAuthorizationRuleList list = new FwkAuthorizationRuleList();

            if (authorizationRules == null)
            {
                return(null);
            }
            if (authorizationRules.Count == 0)
            {
                return(list);
            }

            var a = from s in authorizationRules.Values select new FwkAuthorizationRule {
                Name = s.Name, Expression = s.Expression
            };

            list.AddRange(a.ToList <FwkAuthorizationRule>());
            return(list);
        }
        /// <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;
            }
        }
Example #8
0
        /// <summary>
        /// Asocia un rol a determinadas reglas
        /// </summary>
        /// <param name="pRol"></param>
        /// <param name="pRulesList">Lista de reglas que queda asociada al nuevo rol</param>
        /// <param name="pPerformRemoveRoles"></param>
        public static void RulesUpdateService(Rol pRol, FwkAuthorizationRuleList pRulesList, bool pPerformRemoveRoles)
        {
            if (pPerformRemoveRoles)
            {
                RulesRemoveRol(pRol, pRulesList);
            }
            else
            {
                RulesApendRol(pRol, pRulesList);
            }

            UpdateRulesReq req = new UpdateRulesReq();


            req.BusinessData.FwkAuthorizationRuleList = pRulesList;

            UpdateRulesRes res = req.ExecuteService <UpdateRulesReq, UpdateRulesRes>(WrapperSecurityProvider, req);

            if (res.Error != null)
            {
                Fwk.Exceptions.ExceptionHelper.ProcessException(res.Error);
            }
        }
        /// <summary>
        /// Busca las reglas agrupadas en una determinada categoria.-
        /// </summary>
        /// <param name="pCategoryId">Identificador de categoria</param>
        /// <param name="connectionStringName">Cadena de coanexion</param>
        /// <returns></returns>
        public static FwkAuthorizationRuleList GetFwkRules_By_Category(int pCategoryId, string connectionStringName)
        {
            IEnumerable <FwkAuthorizationRule> rulesinCat = null;
            FwkAuthorizationRuleList           list       = null;

            try
            {
                using (Fwk.Security.RuleProviderDataContext dc = new Fwk.Security.RuleProviderDataContext(System.Configuration.ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString))
                {
                    rulesinCat = from s in dc.aspnet_Rules
                                 from p in dc.aspnet_RulesInCategories

                                 where
                                 s.Id.Equals(p.RuleId)
                                 &&
                                 p.CategoryId == pCategoryId
                                 select new FwkAuthorizationRule {
                        Id = s.Id, Description = s.Description, Name = s.name, Expression = s.expression
                    };



                    list = new FwkAuthorizationRuleList();
                    list.AddRange(rulesinCat);
                    return(list);
                }
            }
            catch (TechnicalException tx)
            { throw tx; }
            catch (Exception ex)
            {
                TechnicalException te = new TechnicalException(Fwk.Security.Properties.Resource.MembershipSecurityGenericError, ex);
                ExceptionHelper.SetTechnicalException <FwkMembership>(te);
                te.ErrorId = "4000";
                throw te;
            }
        }
Example #10
0
 /// <summary>
 /// Actualiza la lista de Roles y Reglas._ 
 /// AllRolList
 /// FwkAuthorizationRuleList
 /// </summary>
 public static void RefreshSecurity()
 {
     _AllRolList = GetAllRoles(string.Empty);
     _FwkAuthorizationRuleList = SearchAllRules();
 }
Example #11
0
        //TODO: usar scripts
        static void RulesRemoveRol(Rol pRol, FwkAuthorizationRuleList pRulesList)
        {
            RolList rollistAux = new RolList();
            UserList userListAux = new UserList();
            foreach (FwkAuthorizationRule rule in pRulesList)
            {
                rollistAux.Clear();
                userListAux.Clear();

                Fwk.Security.FwkMembership.BuildRolesAndUsers_FromRuleExpression(rule.Expression, out rollistAux, out userListAux);

                ///Agregar el rol a la regla
                if (rollistAux.Any<Rol>(r => r.RolName.Equals(pRol.RolName)))
                {
                    rollistAux.Remove(rollistAux.First<Rol>(r => r.RolName.Equals(pRol.RolName)));
                    rule.Expression = Fwk.Security.FwkMembership.BuildRuleExpression(rollistAux, userListAux);
                }
            }
        }
Example #12
0
        //TODO: usar scripts
        static void RulesApendRol(Rol pRol, FwkAuthorizationRuleList pRulesList)
        {
            RolList rollistAux = new RolList();
            UserList userListAux = new UserList(); ;
            foreach (FwkAuthorizationRule rule in pRulesList)
            {
                rollistAux.Clear();
                userListAux.Clear();

                Fwk.Security.FwkMembership.BuildRolesAndUsers_FromRuleExpression(rule.Expression, out rollistAux, out userListAux);

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

                rule.Expression = Fwk.Security.FwkMembership.BuildRuleExpression(rollistAux, userListAux);
            }
        }
Example #13
0
        /// <summary>
        /// Asocia un rol a determinadas reglas
        /// </summary>
        /// <param name="pRol"></param>
        /// <param name="pRulesList">Lista de reglas que queda asociada al nuevo rol</param>
        /// <param name="pPerformRemoveRoles"></param>
        public static void RulesUpdateService(Rol pRol, FwkAuthorizationRuleList pRulesList, bool pPerformRemoveRoles)
        {
            if (pPerformRemoveRoles)
                RulesRemoveRol(pRol, pRulesList);
            else
                RulesApendRol(pRol, pRulesList);

            UpdateRulesReq req = new UpdateRulesReq();


            req.BusinessData.FwkAuthorizationRuleList = pRulesList;

            UpdateRulesRes res = req.ExecuteService<UpdateRulesReq, UpdateRulesRes>(WrapperSecurityProvider,req);

            if (res.Error != null)
                Fwk.Exceptions.ExceptionHelper.ProcessException(res.Error);
        }
Example #14
0
        /// <summary>
        /// Busca las reglas agrupadas en una determinada categoria.-
        /// </summary>
        /// <param name="pCategoryId">Identificador de categoria</param>
        /// <param name="connectionStringName">Cadena de coanexion</param>
        /// <returns></returns>
        public static FwkAuthorizationRuleList GetFwkRules_By_Category(int pCategoryId, string connectionStringName)
        {
            IEnumerable<FwkAuthorizationRule> rulesinCat = null;
            FwkAuthorizationRuleList list = null;
            try
            {

                using (Fwk.Security.RuleProviderDataContext dc = new Fwk.Security.RuleProviderDataContext(System.Configuration.ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString))
                {
                    rulesinCat = from s in dc.aspnet_Rules
                                 from p in dc.aspnet_RulesInCategories

                                 where
                                 s.Id.Equals(p.RuleId)
                                 &&
                                 p.CategoryId == pCategoryId
                                 select new FwkAuthorizationRule { Id = s.Id,Description = s.Description, Name = s.name, Expression = s.expression };



                    list = new FwkAuthorizationRuleList();
                    list.AddRange(rulesinCat);
                    return list;

                }

            }
            catch (TechnicalException tx)
            { throw tx; }
            catch (Exception ex)
            {

                TechnicalException te = new TechnicalException(Fwk.Security.Properties.Resource.MembershipSecurityGenericError, ex);
                ExceptionHelper.SetTechnicalException<FwkMembership>(te);
                te.ErrorId = "4000";
                throw te;
            }
        }
Example #15
0
 /// <summary>
 /// Actualiza la lista de Roles y Reglas._
 /// AllRolList
 /// FwkAuthorizationRuleList
 /// </summary>
 public static void RefreshSecurity()
 {
     _AllRolList = GetAllRoles(string.Empty);
     _FwkAuthorizationRuleList = SearchAllRules();
 }
Example #16
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;
            }

        }