Example #1
0
        public static LoginInfo ToLoginInfo(this Employee employee)
        {
            LoginInfo result = new LoginInfo()
            {
                ID          = employee.ID,
                IsAdmin     = employee.IsAdmin.GetValueOrDefault(false),
                UserName    = employee.UserName,
                MenuIDs     = new List <string>(),
                Permissions = new Dictionary <string, int>(),
            };

            if (!result.IsAdmin)
            {
                //var rids = (employee.RoleIDs + "").Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.ToInt()).ToList();
                var menus = MvcBase.Unity.Get <IMenuService>().ListCache();
                //var roles = MvcCore.Unity.Get<ISysRoleService>().ListCache().Where(s => rids.Contains(s.ID));

                //#region 绑定角色

                //foreach (var role in roles)
                //{
                //    foreach (var detail in role.Details)
                //    {
                //        if (result.Roles.ContainsKey(detail.MenuID.GetValueOrDefault(0)))
                //        {
                //            //取合集
                //            List<int> newValue = new List<int>();
                //            newValue.AddRange(System.Web.Mvc.RoleHelper.SplitRole(result.Roles[detail.MenuID.GetValueOrDefault(0)]));
                //            newValue.AddRange(System.Web.Mvc.RoleHelper.SplitRole(detail.Roles));
                //            newValue = newValue.Distinct().ToList();
                //            result.Roles[detail.MenuID.GetValueOrDefault(0)] = newValue.Sum(s => s);
                //        }
                //        else result.Roles.Add(detail.MenuID.GetValueOrDefault(0), detail.Roles.GetValueOrDefault(0));
                //    }
                //}

                //#endregion

                #region 权限
                var permissions     = MvcBase.Unity.Get <IPermissionService>().List().Where(m => m.UserID == employee.ID).ToList();
                var list_permission = new List <string>();
                foreach (var item in permissions)
                {
                    //取合集
                    list_permission.Add(item.MenuID);
                    list_permission = list_permission.Distinct().ToList();
                    result.Permissions[item.MenuID] = item.Permissions.GetValueOrDefault(0);
                }

                #endregion

                #region 绑定菜单

                foreach (var root in menus)
                {
                    bool hasChecked = false;
                    foreach (var item in root.Children.Where(s => list_permission.Contains(s.ID)))
                    {
                        result.MenuIDs.Add(item.ID);
                        hasChecked = true;
                    }
                    if (hasChecked)
                    {
                        result.MenuIDs.Add(root.ID);
                    }
                }

                #endregion
            }
            return(result);
        }
Example #2
0
 private static void SetCache(this LoginInfo loginInfo)
 {
     CacheExtensions.SetCache(LoginCacheName + loginInfo.ID, loginInfo, CacheTimeType.ByMinutes, 10);
 }