Beispiel #1
0
 public int Update(SysPermission model)
 {
     using (var db = GetInstance())
     {
         model.Layer    = model.ParentId == "1" ? 0 : Get(model.ParentId).Layer += 1;
         model.IsEnable = model.IsEnable == null ? "0" : "1";
         //model.IsEdit = model.IsEdit == null ? "0" : "1";
         //model.IsPublic = model.IsPublic == null ? "0" : "1";
         model.ModifyUser = OperatorProvider.Instance.Current.Account;
         model.ModifyTime = DateTime.Now;
         return(db.Updateable <SysPermission>(model).UpdateColumns(it => new
         {
             it.ParentId,
             it.Layer,
             it.EnCode,
             it.Name,
             it.JsEvent,
             it.Icon,
             it.Url,
             it.Remark,
             it.Type,
             it.SortCode,
             it.IsEnable,
             it.ModifyUser,
             it.ModifyTime,
         }).ExecuteCommand());
     }
 }
        /// <summary>
        /// 权限页面
        /// </summary>
        /// <param name="user"></param>
        /// <param name="entity"></param>
        /// <param name=""></param>
        /// <returns></returns>
        public ActionResult SysPermissionForm(SysUser user, SysPermission entity = null)
        {
            //所属分类数据
            List <SysPermission> modulePermissions = new List <SysPermission>();

            modulePermissions.Add(new SysPermission()
            {
                name = "根", id = 0
            });
            modulePermissions.AddRange(GetModuleSysPermission());
            ViewBag.module = modulePermissions;

            if (Request.IsAjaxRequest())
            {
                StateCode state = ServiceIoc.Get <SysPermissionService>().Save(user.id, entity);
                AppGlobal.Instance.Initial();
                return(Json(GetResult(state)));
            }
            else
            {
                entity = ServiceIoc.Get <SysPermissionService>().GetById(bid);
                if (entity != null)
                {
                    ViewBag.entity = JsonConvert.SerializeObject(entity);
                }
            }

            return(View());
        }
Beispiel #3
0
 private List <SysPermission> GetBasePermissionList(Type t, List <SysPermission> list)
 {
     if (t.Name != "Object")
     {
         System.Reflection.FieldInfo[] properties = t.GetFields();
         foreach (System.Reflection.FieldInfo property in properties)
         {
             string   pId            = "0";
             object[] typeAttributes = property.GetCustomAttributes(false);
             foreach (PermissionCodeAttribute attribute in typeAttributes)
             {
                 pId = attribute.PId;
             }
             object        id    = property.GetValue(null);
             string        name  = property.Name;
             SysPermission model = new SysPermission();
             model.Id   = id.ToString();
             model.Name = name;
             model.PId  = pId;
             list.Add(model);
         }
         list = GetBasePermissionList(t.BaseType, list);
     }
     return(list);
 }
Beispiel #4
0
        //删除权限
        public JsonResult DeleteRight(int id)
        {
            SysPermission deleteRight = AllPermissions.First(p => p.PermissionId == id);

            if (deleteRight.ParentId == 0)
            {
                return(Json(new
                {
                    result = 0,
                    content = RetechWing.LanguageResources.Right.NotDeleteRootRight
                }, JsonRequestBehavior.AllowGet));
            }

            try
            {
                _permissionManager.DeletePermission(id);
                RefreshRightCache();
                return(Json(new
                {
                    result = 1,
                    content = RetechWing.LanguageResources.Common.DeleteSuccess
                }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(new
                {
                    result = 0,
                    content = RetechWing.LanguageResources.Common.DeleteFailed + ex.Message
                }, JsonRequestBehavior.AllowGet));
            }
        }
Beispiel #5
0
        /// <summary>
        /// 判断权限
        /// </summary>
        /// <param name="sysUser">用户实体</param>
        /// <param name="controllerName">控制器名称</param>
        /// <param name="actionName">方法名称</param>
        /// <returns></returns>
        public static bool IsAllowed(SysUser sysUser, string controllerName, string actionName)
        {
            if (HttpContext.Current.Session[CommonSession.SysPermission] is List <SysPermission> list)
            {
                //获取对应的controller
                SysPermission permissionController = list.FirstOrDefault(c =>
                                                                         c.ControllerName == controllerName);

                //controller存在
                if (permissionController == null)
                {
                    return(false);
                }
                {
                    // 获取对应的action
                    SysPermission permissionAction = list.FirstOrDefault(c =>
                                                                         c.ActionName == actionName && c.IsController == 0 &&
                                                                         c.ControllerName == controllerName);

                    return(permissionAction == null?IsAllowed(sysUser, permissionController)
                               : IsAllowed(sysUser, permissionAction));
                }
            }
            //没有定义controller的权限,表示无权限控制
            return(false);
        }
Beispiel #6
0
        /// <summary>
        /// 更新SysPermission信息
        /// </summary>
        public static void UpdateSysPermission(SysPermission entity)
        {
            DataCommand cmd = new DataCommand("UpdateSysPermission");

            cmd.SetParameter <SysPermission>(entity);
            cmd.ExecuteNonQuery();
        }
Beispiel #7
0
        /// <summary>
        /// 创建SysPermission信息
        /// </summary>
        public static int InsertSysPermission(SysPermission entity)
        {
            DataCommand cmd = new DataCommand("InsertSysPermission");

            cmd.SetParameter <SysPermission>(entity);
            int result = cmd.ExecuteScalar <int>();

            return(result);
        }
Beispiel #8
0
        /// <summary>
        /// 获取单个SysPermission信息
        /// </summary>
        public static SysPermission LoadSysPermission(int sysNo)
        {
            DataCommand cmd = new DataCommand("LoadSysPermission");

            cmd.SetParameter("@SysNo", DbType.Int32, sysNo);
            SysPermission result = cmd.ExecuteEntity <SysPermission>();

            return(result);
        }
Beispiel #9
0
        public ActionResult GetForm(string primaryKey)
        {
            SysPermission entity = permissionLogic.Get(primaryKey);

            //entity.IsEdit = entity.IsEdit == "1" ? "true" : "false";
            entity.IsEnable = entity.IsEnable == "1" ? "true" : "false";
            //entity.IsPublic = entity.IsPublic == "1" ? "true" : "false";
            return(Content(entity.ToJson()));
        }
        /// <summary>
        /// 更新SysPermission信息
        /// </summary>
        public void UpdateSysPermission(SysPermission entity)
        {
            CheckSysPermission(entity, false);
            MenuPermission menuPermission = new MenuPermission()
            {
                MenuSysNo       = entity.MenuSysNo,
                PermissionSysNo = entity.SysNo
            };

            MenuPermissionDA.UpdateMenuPermission(menuPermission);
            SysPermissionDA.UpdateSysPermission(entity);
        }
        /// <summary>
        /// 创建SysPermission信息
        /// </summary>
        public int InsertSysPermission(SysPermission entity)
        {
            CheckSysPermission(entity, true);
            MenuPermission menuPermission = new MenuPermission()
            {
                MenuSysNo       = entity.MenuSysNo,
                PermissionSysNo = entity.SysNo
            };

            MenuPermissionDA.InsertMenuPermission(menuPermission);
            return(SysPermissionDA.InsertSysPermission(entity));
        }
Beispiel #12
0
 public Task <IActionResult> Edit(SysPermission model)
 {
     return(Task.Factory.StartNew <IActionResult>(() =>
     {
         if (!ModelState.IsValid)
         {
             return Json(ExcutedResult.FailedResult("数据验证失败"));
         }
         SysPermissionRepository.Edit(model, false);
         return Json(ExcutedResult.SuccessResult());
     }));
 }
Beispiel #13
0
 public ActionResult Form(SysPermission model)
 {
     if (model.Id.IsNullOrEmpty())
     {
         int row = permissionLogic.Insert(model);
         return(row > 0 ? Success() : Error());
     }
     else
     {
         int row = permissionLogic.Update(model);
         return(row > 0 ? Success() : Error());
     }
 }
Beispiel #14
0
        /// <summary>
        /// // 自动生成API权限
        /// </summary>
        /// <param name="typeName"></param>
        /// <param name="space"></param>
        /// <param name="areaName"></param>
        /// <returns></returns>
        public static IList <SysPermission> GetPermissions(string typeName, string space, string areaName = null)
        {
            var result = new List <SysPermission>();
            //加载程序集
            var         assembly        = Assembly.Load(space);
            List <Type> controllerTypes = null;

            if (areaName == null)
            {
                //获取区域名为NoName下的所有Controller类型
                controllerTypes = assembly.GetTypes().Where(type => type.BaseType.Name == typeName && type.Namespace.Contains("Areas") == false).ToList();
            }
            else
            {
                //获取区域名为areaName下的所有Controller类型
                controllerTypes = assembly.GetTypes().Where(type => type.BaseType.Name == typeName && type.Namespace.Contains(areaName)).ToList();
            }
            Console.WriteLine("获取命名空间下控制器数:{0}", controllerTypes.Count);
            controllerTypes.ForEach((controller) =>
            {
                var permissionGroup = controller.GetCustomAttribute <DescriptionAttribute>();
                var controllName    = controller.Name;
                var actions         = controller.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly).Where(m => !m.IsSpecialName).ToList();
                actions.ForEach((a) =>
                {
                    var des = a.GetCustomAttribute <DescriptionAttribute>();
                    if (des != null)
                    {
                        var permissionName = "";
                        var para           = a.GetParameters();
                        if (para.Any())
                        {
                            para.ToList().ForEach((p) =>
                            {
                                permissionName = permissionName + p.ParameterType.Name;
                            });
                        }
                        var permission = new SysPermission
                        {
                            Name           = controllName + a.Name + permissionName,
                            ControllerName = controllName,
                            ActionName     = a.Name,
                            Parameters     = permissionName,
                            Description    = des.Description
                        };
                        result.Add(permission);
                    }
                });
            });
            return(result);
        }
Beispiel #15
0
        public static PermissionModel Create(SysPermission entity, int level = 0)
        {
            PermissionModel ret = new PermissionModel()
            {
                Id = entity.Id, Name = entity.Name
            };

            for (int i = 0; i < level; i++)
            {
                ret.Name = " " + ret.Name;
            }

            return(ret);
        }
Beispiel #16
0
        public ActionResult EditPermission(int id, int parentId = 0)
        {
            var           AllList = _permissionManager.GetAllPermissions();
            SysPermission right   = AllList.FirstOrDefault(p => p.PermissionId == id) ?? new SysPermission
            {
                LinkUrl        = "",
                PermissionName = "",
                PermissionCode = "",
                Description    = ""
            };

            ViewBag.parentId  = id == 0 ? parentId : right.ParentId;
            ViewBag.allrights = AllList;
            return(View(right));
        }
Beispiel #17
0
        public static PermissionMenu Create(SysPermission permission)
        {
            PermissionMenu ret = new PermissionMenu()
            {
                Id       = permission.Id,
                Name     = permission.Name,
                ParentId = permission.ParentId,
                Type     = permission.Type,
                Url      = permission.Url,
                Icon     = permission.Icon,
                SortCode = permission.GetSortCode(),
            };

            return(ret);
        }
Beispiel #18
0
 public vTenantFunction(SysPermission baseClass)
 {
     base.LinkUrl        = baseClass.LinkUrl;
     base.ParentId       = baseClass.ParentId;
     base.PermissionCode = baseClass.PermissionCode;
     base.PermissionId   = baseClass.PermissionId;
     base.PermissionName = baseClass.PermissionName;
     base.PermissionType = baseClass.PermissionType;
     base.Sort           = baseClass.Sort;
     base.Status         = baseClass.Status;
     base.Action         = baseClass.Action;
     base.AreaName       = baseClass.AreaName;
     base.Childrens.AddRange(baseClass.Childrens);
     base.Controller  = baseClass.Controller;
     base.Description = baseClass.Description;
     base.Icon        = baseClass.Icon;
 }
 public SysPermission AddPermission(string menuName
                              , string menuCode
                              , string path
                              , int parentId
                              , string picture
                              , string desc
                              , int orderNum)
 {
     var menu = new SysPermission();
     menu.PermissionName = menuName;
     menu.PermissionCode = menuCode;
     menu.LinkUrl = path;
     menu.ParentId = parentId;
     menu.Icon = picture;
     menu.Description = desc;
     menu.Sort = orderNum;
     menu.Status = 0;
     return AddPermission(menu);
 }
Beispiel #20
0
 public int Insert(SysPermission model)
 {
     using (var db = GetInstance())
     {
         model.Id = Guid.NewGuid().ToString().Replace("-", "");
         //最高级菜单id为1
         model.Layer      = model.ParentId == "1" ? 0 : Get(model.ParentId).Layer += 1;
         model.IsEnable   = model.IsEnable == null ? "0" : "1";
         model.IsEdit     = "1";
         model.IsPublic   = "1";
         model.DeleteMark = "0";
         model.CreateUser = OperatorProvider.Instance.Current.Account;
         model.CreateTime = DateTime.Now;
         model.ModifyUser = model.CreateUser;
         model.ModifyTime = model.CreateTime;
         model.ShopID     = OperatorProvider.Instance.Current.ShopID;
         return(db.Insertable <SysPermission>(model).ExecuteCommand());
     }
 }
Beispiel #21
0
        void GatherChildMenus(List <SysPermission> permissions, SysPermission permission, List <PermissionMenu> list, Dictionary <string, SysPermission> userPermissionDic)
        {
            var childPermissions = permissions.Where(a => a.ParentId == permission.Id).OrderBy(a => a.SortCode);

            foreach (SysPermission childPermission in childPermissions)
            {
                if (childPermission.Type == PermissionType.节点组)
                {
                    GatherChildMenus(permissions, childPermission, list, userPermissionDic);
                    continue;
                }

                if (childPermission.Type != PermissionType.公共菜单 && !this.CurrentSession.IsAdmin)
                {
                    if (!userPermissionDic.ContainsKey(childPermission.Id))
                    {
                        continue;
                    }
                }

                list.Add(PermissionMenu.Create(childPermission));
            }
        }
        public ActionResult SaveSysPermission()
        {
            string json = Request["data"];

            if (string.IsNullOrWhiteSpace(json))
            {
                throw new BusinessException("传入数据不能为空");
            }

            SysPermission permission = JsonConvert.DeserializeObject <SysPermission>(json);

            if (permission.SysNo > 0)
            {
                permission_service.UpdateSysPermission(permission);
            }
            else
            {
                permission_service.InsertSysPermission(permission);
            }

            return(Json(new AjaxResult {
                Success = true, Message = "保存成功"
            }, JsonRequestBehavior.AllowGet));
        }
 /// <summary>
 /// 检查SysPermission信息
 /// </summary>
 private void CheckSysPermission(SysPermission entity, bool isCreate)
 {
     if (!isCreate && entity.SysNo == 0)
     {
         throw new BusinessException(LangHelper.GetText("请传入数据主键!"));
     }
     if (isCreate && entity.FunctionSysNo == 0)
     {
         throw new BusinessException(LangHelper.GetText("没有所属功能编号!"));
     }
     if (isCreate && string.IsNullOrWhiteSpace(entity.FunctionSysCode))
     {
         throw new BusinessException(LangHelper.GetText("没有所属功能编码!"));
     }
     if (isCreate && !string.IsNullOrWhiteSpace(entity.FunctionSysCode))
     {
         if (entity.FunctionSysCode.Length > 30)
         {
             throw new BusinessException(LangHelper.GetText("所属功能系统Code长度不能超过30!"));
         }
     }
     if (isCreate && string.IsNullOrWhiteSpace(entity.ApplicationID))
     {
         throw new BusinessException(LangHelper.GetText("不能为空!"));
     }
     if (!string.IsNullOrWhiteSpace(entity.ApplicationID))
     {
         if (entity.ApplicationID.Length > 40)
         {
             throw new BusinessException(LangHelper.GetText("长度不能超过40!"));
         }
     }
     if (string.IsNullOrWhiteSpace(entity.PermissionName))
     {
         throw new BusinessException(LangHelper.GetText("权限名称不能为空!"));
     }
     if (!string.IsNullOrWhiteSpace(entity.PermissionName))
     {
         if (entity.PermissionName.Length > 200)
         {
             throw new BusinessException(LangHelper.GetText("权限名称长度不能超过200!"));
         }
     }
     if (string.IsNullOrWhiteSpace(entity.PermissionKey))
     {
         throw new BusinessException(LangHelper.GetText("权限Key不能为空!"));
     }
     if (!string.IsNullOrWhiteSpace(entity.PermissionKey))
     {
         if (entity.PermissionKey.Length > 200)
         {
             throw new BusinessException(LangHelper.GetText("权限Key长度不能超过200!"));
         }
     }
     if (!string.IsNullOrWhiteSpace(entity.Memo))
     {
         if (entity.Memo.Length > 200)
         {
             throw new BusinessException(LangHelper.GetText("备注长度不能超过200!"));
         }
     }
 }
Beispiel #24
0
        /// <summary>
        /// 具体一个Action的功能权限
        /// </summary>
        /// <param name="sysUser"></param>
        /// <param name="sysPermission"></param>
        /// <returns></returns>
        private static bool IsAllowed(SysUser sysUser, SysPermission sysPermission)
        {
            // 游客权限
            if (sysPermission.IsAllowedNoneRole == 1)
            {
                return(true);
            }

            // 允许有角色:只要有角色,允许访问
            if (sysPermission.IsAllowedAllRole == 1)
            {
                return(sysUser.SysUserRoles.Count > 0);//是否存在角色
            }

            //无权限、无登录
            if (sysUser == null || sysUser.SysUserRoles.Count == 0)
            {
                return(false);
            }


            ////选出action对应的角色
            var roles = sysPermission.SysRolePermissions.Select(a => a.SysRole).ToList();

            if (roles.Count == 0)
            {
                // 角色数量为0,也就是说没有定义访问规则,默认不允许访问
                return(false);
            }

            //获取所有权限配置
            var userHavesRoadsides = sysUser.SysUserRoles.Select(r => r.Id).ToList();

            var roleList = sysPermission.SysRolePermissions.ToList();

            // 查找禁止的角色
            var notAllowedRoles = roleList.FindAll(r => r.IsAllowed == 0).Select(ca => ca.SysRole).ToList();

            if (notAllowedRoles.Count > 0)
            {
                foreach (SysRole role in notAllowedRoles)
                {
                    // 用户的角色在禁止访问列表中,不允许访问
                    if (userHavesRoadsides.Contains(role.Id))
                    {
                        return(false);
                    }
                }
            }

            // 查找允许访问的角色列表
            var allowRoles = roleList.FindAll(r => r.IsAllowed == 1).Select(ca => ca.SysRole).ToList();

            if (allowRoles.Count > 0)
            {
                foreach (SysRole role in allowRoles)
                {
                    // 用户的角色在访问的角色列表
                    if (userHavesRoadsides.Contains(role.Id))
                    {
                        return(true);
                    }
                }
            }

            return(true);
        }
 public int Update(SysPermission sysPermission)
 {
     return(SysPermissionRepository.Update(sysPermission));
 }
 public int Insert(SysPermission sysPermission)
 {
     return(SysPermissionRepository.Insert(sysPermission));
 }
 public SysPermission AddPermission(SysPermission menu)
 {
     _dataAccess.AddEntity(menu);
     return menu;
 }
 public void UpdatePermission(SysPermission menu)
 {
     _dataAccess.UpdateEntity(menu);
 }
 public void DeletePermission(int menuId)
 {
     SysPermission menu = GetPermissionById(menuId);
     DeletePermission(menu);
 }
 public void DeletePermission(SysPermission menu)
 {
     menu.Status = 1;
     _dataAccess.UpdateEntity(menu);
 }