private IList <RoleCustomCodeType> GetCurrentUserBusinessRole(IAuthorizeServices service) { try { IList <RoleCustomCodeType> roles = new List <RoleCustomCodeType>(); if (!SessionHelper.HasSessionValue(SessionHelper.GTSCurrentUserManagmentState)) { bool isManager = service.IsManager(this.CurrentUSer.Person.ID); bool isSubstitute = service.IsSubstituteManager(this.CurrentUSer.Person.ID); bool isOperator = service.IsOperator(this.CurrentUSer.Person.ID); Dictionary <string, object> ManagementState = new Dictionary <string, object>(); if (isManager) { Role role = service.GetRoleByCode(RoleCustomCodeType.Manager); if (role != null) { ManagementState.Add("ManagerRoleId", role.ID); } } if (isOperator) { Role role = service.GetRoleByCode(RoleCustomCodeType.Operator); if (role != null) { ManagementState.Add("OperatorRoleId", role.ID); } } if (isSubstitute) { Role role = service.GetRoleByCode(RoleCustomCodeType.Substitute); if (role != null) { ManagementState.Add("SubstituteRoleId", role.ID); } } ManagementState.Add("IsManager", isManager); ManagementState.Add("IsOperator", isOperator); ManagementState.Add("IsSubstitute", isSubstitute); SessionHelper.SaveSessionValue(SessionHelper.GTSCurrentUserManagmentState, ManagementState); } Dictionary <string, object> managementState = (Dictionary <string, object>)SessionHelper.GetSessionValue(SessionHelper.GTSCurrentUserManagmentState); if (Utility.ToBoolean(managementState["IsManager"])) { roles.Add(RoleCustomCodeType.Manager); } if (Utility.ToBoolean(managementState["IsOperator"])) { roles.Add(RoleCustomCodeType.Operator); } if (Utility.ToBoolean(managementState["IsSubstitute"])) { roles.Add(RoleCustomCodeType.Substitute); } return(roles); } catch (Exception ex) { throw ex; } }
protected void Authorize(IAuthorizeServices service) { #region Retrive Page Controls List <ResourceControl> pageControles = new List <ResourceControl>(); foreach (System.Web.UI.Control innerControl1 in Page.Controls) { if (innerControl1 is HtmlForm) { GetControls(pageControles, innerControl1.Controls); } } if (NavBarControles.Count > 0) { foreach (NavBar navbar in NavBarControles) { if (navbar.Items.Count > 0) { foreach (NavBarItem navbarItem in navbar.Items) { GetNavBarItems(navbarItem); } } } } if (toolbarControles.Count > 0) { foreach (ToolBar toolbar in toolbarControles) { if (toolbar.Items.Count > 0) { foreach (ToolBarItem toolbarItem in toolbar.Items) { toolbarItems.Add(toolbarItem); } } } } #endregion accessDeniedList.AddRange(service.GetAccessDeniedList(CurrnetUserRole.ID)); accessAllowedResourceList.AddRange(service.GetAlowedResourceList(CurrnetUserRole.ID)); #region Apply Other Business Roles IList <RoleCustomCodeType> otherRoles = this.GetCurrentUserBusinessRole(service); Dictionary <string, object> managementState = (Dictionary <string, object>)SessionHelper.GetSessionValue(SessionHelper.GTSCurrentUserManagmentState); if (this.CurrentUSer.Role.CustomCode.Equals(((int)RoleCustomCodeType.User).ToString())) { if (otherRoles.Count > 0) { foreach (RoleCustomCodeType roleCode in otherRoles) { decimal roleId = 0; switch (roleCode) { case RoleCustomCodeType.Manager: if (managementState.ContainsKey("ManagerRoleId")) { roleId = Utility.ToDecimal(managementState["ManagerRoleId"]); } break; case RoleCustomCodeType.Substitute: if (managementState.ContainsKey("SubstituteRoleId")) { roleId = Utility.ToDecimal(managementState["SubstituteRoleId"]); } break; case RoleCustomCodeType.Operator: if (managementState.ContainsKey("OperatorRoleId")) { roleId = Utility.ToDecimal(managementState["OperatorRoleId"]); } break; //Role role = service.GetRoleByCode(roleCode); } if (roleId > 0) { accessDeniedList.AddRange(service.GetAccessDeniedList(roleId)); accessAllowedResourceList.AddRange(service.GetAlowedResourceList(roleId)); } } accessDeniedList = accessDeniedList.Distinct().ToList(); accessAllowedResourceList = accessAllowedResourceList.Distinct().ToList(); } } #endregion DoAthorizeOnNavBarItems(); DoAthorizeOnToolBarItems(); }