/// <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); }
public override SearchAllRulesRes Execute(SearchAllRulesReq pServiceRequest) { SearchAllRulesRes wRes = new SearchAllRulesRes(); FwkAuthorizationRuleList rules = FwkMembership.GetRulesAuxList(pServiceRequest.SecurityProviderName); wRes.BusinessData = rules; return(wRes); }
//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); } }
//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; } }
/// <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; } }
/// <summary> /// Actualiza la lista de Roles y Reglas._ /// AllRolList /// FwkAuthorizationRuleList /// </summary> public static void RefreshSecurity() { _AllRolList = GetAllRoles(string.Empty); _FwkAuthorizationRuleList = SearchAllRules(); }
//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); } } }
//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); } }
/// <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; } }
/// <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; } }