public AccessItem(IdentityType identityType, int identityId, AccessType data) { IdentityType = identityType; Access = data; this.identityId = identityId; this.identity = null; }
/// <summary> /// 메뉴중 사용자가 권한이 있는 루트메뉴목록 /// </summary> /// <param name="productId">제품Id</param> /// <param name="identity">요청자 정보</param> /// <returns>메뉴목록</returns> public override IEnumerable <MenuItem> GetRootMenu(string productId, IAccessIdentity identity) { if (IsDebugEnabled) { log.Debug("==>> S productId={0}, identity={1}", productId, identity); } productId.ShouldNotBeWhiteSpace("값이 없습니다."); //identity.ShouldNotBeNull("사용자 정보가 없습니다."); if (identity == null) { return(null); } var provider = SiteMap.Providers[productId]; if (IsDebugEnabled) { log.Debug("productId={0}, identity={1}, provider={2}", productId, identity, provider); } var menus = new List <MenuItem>(); if (provider != null) { if (IsDebugEnabled) { log.Debug("provider.RootNode={0}", provider.RootNode); } if (provider.RootNode != null) { var nodes = GetAuthMenus(provider.RootNode.ChildNodes, identity); foreach (SiteMapNode node in nodes) { var menu = new MenuItem(node.Title, node.Title, node.Url); menu.NodePosition.Level = 0; menu.NodePosition.Order = 0; menu.Parent = null; AddNode(node, menu, 1); menus.Add(menu); } } } if (IsDebugEnabled) { log.Debug("==>> E menus={0}", menus.CollectionToString()); } return(menus); }
/// <summary> /// Current를 셋팅한다. /// </summary> /// <param name="identity"></param> public static void SetCurrent(IAccessIdentity identity) { if(log.IsDebugEnabled) log.Debug("접속정보를 할당합니다. identity=[{0}]", identity); identity.ShouldNotBeNull("identity"); Identity = identity; ThemeName = WebAppTool.LoadValue(AppSettings.ApplicationName + @"_" + CurrentThemeKey, AppSettings.DefaultThemeAssemblyName); var principal = Services.Authentication.CreatePrincipal(Services.Authentication.Identity); if(Local.IsInWebContext) HttpContext.Current.User = principal; Thread.CurrentPrincipal = principal; }
/// <summary> /// 메뉴정보를 반환한다. /// </summary> /// <param name="productId">제품Id</param> /// <param name="identity">요청자 정보</param> /// <param name="menuId">메뉴Id</param> /// <returns>메뉴</returns> public override MenuItem FindOneMenu(string productId, IAccessIdentity identity, string menuId) { if (IsDebugEnabled) { log.Debug("==>> S productId={0}, identity={1}, menuId={2}", productId, identity, menuId); } productId.ShouldNotBeWhiteSpace("값이 없습니다."); //identity.ShouldNotBeNull("사용자 정보가 없습니다."); menuId.ShouldNotBeWhiteSpace("값이 없습니다."); if (identity == null) { return(null); } var provider = SiteMap.Providers[productId]; if (provider != null) { if (IsDebugEnabled) { log.Debug("provider.RootNode={0}", provider.RootNode); } if (provider.RootNode != null) { var nodes = GetAuthMenus(provider.RootNode.GetAllNodes(), identity); var node = nodes.ToList <SiteMapNode>().FirstOrDefault(nd => nd.Title == menuId); if (node != null) { var menu = new MenuItem(node.Title, node.Title, node.Url) { NodePosition = { Level = 0, Order = 0 } }; SetParent(node, menu); return(menu); } } } return(null); }
/// <summary> /// 제품메뉴중 사용자가 권한이 있는 메뉴목록 /// </summary> /// <param name="productId">제품Id</param> /// <param name="identity">요청자 정보</param> /// <returns>메뉴목록</returns> public override IEnumerable<MenuItem> FindAllMenuByProduct(string productId, IAccessIdentity identity) { if(IsDebugEnabled) log.Debug("==>> S productId={0}, identity={1}", productId, identity); productId.ShouldNotBeWhiteSpace("값이 없습니다."); //identity.ShouldNotBeNull("사용자 정보가 없습니다."); if(identity == null) return null; var provider = SiteMap.Providers[productId]; if(IsDebugEnabled) log.Debug("productId={0}, identity={1}, provider={2}", productId, identity, provider); var menus = new List<MenuItem>(); if(provider != null) { if(IsDebugEnabled) log.Debug("provider.RootNode={0}", provider.RootNode); if(provider.RootNode != null) { var nodes = GetAuthMenus(provider.RootNode.GetAllNodes(), identity); foreach(SiteMapNode node in nodes) { var menu = new MenuItem(node.Title, node.Title, node.Url); menu.NodePosition.Level = 0; menu.NodePosition.Order = 0; menu.Parent = null; //AddNode(node, menu, 1); menus.Add(menu); } } } if(IsDebugEnabled) log.Debug("==>> E menus={0}", menus.CollectionToString()); return menus; }
/// <summary> /// Current를 셋팅한다. /// </summary> /// <param name="identity"></param> public static void SetCurrent(IAccessIdentity identity) { if (log.IsDebugEnabled) { log.Debug("접속정보를 할당합니다. identity=[{0}]", identity); } identity.ShouldNotBeNull("identity"); Identity = identity; ThemeName = WebAppTool.LoadValue(AppSettings.ApplicationName + @"_" + CurrentThemeKey, AppSettings.DefaultThemeAssemblyName); var principal = Services.Authentication.CreatePrincipal(Services.Authentication.Identity); if (Local.IsInWebContext) { HttpContext.Current.User = principal; } Thread.CurrentPrincipal = principal; }
/// <summary> /// 사용자 인증정보인 Identity에 사용자 객체 정보를 채운다. /// </summary> protected virtual void SetIdentity(IAccessIdentity rwIdentity) { WebAppContext.Current.SetCurrent(rwIdentity); WebAppTool.SetValue(ApplicationKey, rwIdentity, DateTime.MinValue, string.Empty); }
/// <summary> /// Role에 해당하는 메뉴만 필터링하여 반환한다. /// </summary> /// <param name="nodes"></param> /// <param name="identity"></param> /// <returns></returns> private static IEnumerable <SiteMapNode> GetAuthMenus(SiteMapNodeCollection nodes, IAccessIdentity identity) { if (identity == null) { return(null); } var roles = WebAppContext.Services.RoleService.GetRoles(identity).ToArray(); if (roles.Length == 0) { return(Enumerable.Empty <SiteMapNode>()); } return(nodes.Cast <SiteMapNode>().Where(node => roles.In(node.Roles.Cast <string>()))); }
public bool Equals(IAccessIdentity other) { return (other != null) && GetHashCode().Equals(other.GetHashCode()); }
/// <summary> /// 메뉴정보를 반환한다. /// </summary> /// <param name="productId">제품Id</param> /// <param name="identity">요청자 정보</param> /// <param name="menuId">메뉴Id</param> /// <returns>메뉴</returns> public abstract MenuItem FindOneMenu(string productId, IAccessIdentity identity, string menuId);
/// <summary> /// 사용자의 해당 Role 소속여부를 판단합니다. /// </summary> /// <param name="roleName">Role Name</param> /// <param name="identity">요청자 정보</param> /// <returns>Role 소속 여부</returns> public abstract bool IsInRole(string roleName, IAccessIdentity identity);
/// <summary> /// 사용자의 모든 Role정보를 반환합니다. /// </summary> /// <param name="identity">요청자 정보</param> /// <returns>Role 목록</returns> public abstract string[] GetRoles(IAccessIdentity identity);
/// <summary> /// Role에 해당하는 메뉴만 필터링하여 반환한다. /// </summary> /// <param name="nodes"></param> /// <param name="identity"></param> /// <returns></returns> private static IEnumerable<SiteMapNode> GetAuthMenus(SiteMapNodeCollection nodes, IAccessIdentity identity) { if(identity == null) return null; var roles = WebAppContext.Services.RoleService.GetRoles(identity).ToArray(); if(roles.Length == 0) return Enumerable.Empty<SiteMapNode>(); return nodes.Cast<SiteMapNode>().Where(node => roles.In(node.Roles.Cast<string>())); }
/// <summary> /// 메뉴정보를 반환한다. /// </summary> /// <param name="productId">제품Id</param> /// <param name="identity">요청자 정보</param> /// <param name="menuId">메뉴Id</param> /// <returns>메뉴</returns> public override MenuItem FindOneMenu(string productId, IAccessIdentity identity, string menuId) { if(IsDebugEnabled) log.Debug("==>> S productId={0}, identity={1}, menuId={2}", productId, identity, menuId); productId.ShouldNotBeWhiteSpace("값이 없습니다."); //identity.ShouldNotBeNull("사용자 정보가 없습니다."); menuId.ShouldNotBeWhiteSpace("값이 없습니다."); if(identity == null) return null; var provider = SiteMap.Providers[productId]; if(provider != null) { if(IsDebugEnabled) log.Debug("provider.RootNode={0}", provider.RootNode); if(provider.RootNode != null) { var nodes = GetAuthMenus(provider.RootNode.GetAllNodes(), identity); var node = nodes.ToList<SiteMapNode>().FirstOrDefault(nd => nd.Title == menuId); if(node != null) { var menu = new MenuItem(node.Title, node.Title, node.Url) { NodePosition = { Level = 0, Order = 0 } }; SetParent(node, menu); return menu; } } } return null; }
public AccessItem(IAccessIdentity identity, AccessType data = AccessType.None) : this() { Identity = identity; Access = data; }
/// <summary> /// 메뉴중 사용자가 권한이 있는 루트메뉴목록 /// </summary> /// <param name="productId">제품Id</param> /// <param name="identity">요청자 정보</param> /// <returns>메뉴목록</returns>ㅍ public abstract IEnumerable<MenuItem> GetRootMenu(string productId, IAccessIdentity identity);
/// <summary> /// 제품메뉴중 사용자가 권한이 있는 메뉴목록 /// </summary> /// <param name="productId">제품Id</param> /// <param name="identity">요청자 정보</param> /// <returns>메뉴목록</returns> public abstract IEnumerable<MenuItem> FindAllMenuByProduct(string productId, IAccessIdentity identity);
/// <summary> /// 메뉴중 사용자가 권한이 있는 루트메뉴목록 /// </summary> /// <param name="productId">제품Id</param> /// <param name="identity">요청자 정보</param> /// <returns>메뉴목록</returns>ㅍ public abstract IEnumerable <MenuItem> GetRootMenu(string productId, IAccessIdentity identity);
/// <summary> /// 제품메뉴중 사용자가 권한이 있는 메뉴목록 /// </summary> /// <param name="productId">제품Id</param> /// <param name="identity">요청자 정보</param> /// <returns>메뉴목록</returns> public abstract IEnumerable <MenuItem> FindAllMenuByProduct(string productId, IAccessIdentity identity);
public bool Equals(IAccessIdentity other) { return((other != null) && GetHashCode().Equals(other.GetHashCode())); }