标签:
声明:本系列为原创,分享本人现用框架,未经本人同意,禁止转载!http://yuangang.cnblogs.com
希望大家好好一步一步做,所有的技术和项目,都毫无保留的提供,希望大家能自己跟着做一套,还有,请大家放心,只要大家喜欢,有人需要,绝对不会烂尾,我会坚持写完~
如果你感觉文章有帮助,点一下推荐,让更多的朋友参与进来,也是对本人劳动成果的鼓励,谢谢大家!由于还要工作,所以基本都是牺牲午休时间来写博客的,写博客呢不是简单的Ctrl+C、Ctrl+V,我是要挨着做一遍的,这也是对大家负责,所以有些时候更新不及时,或者问题没有及时解答,希望大家谅解,再次感谢大家!!
因为我引用了许多以前积累的类库,所以有些东西是重复的(后来更新),有些东西是过时的,包括我写的代码,希望大家不要纯粹的复制,取其精华去其糟粕>_<。
在项目最后我会把每个部分、每个阶段的Demo提供下载给大家,其实,如果跟着做完,并且剔除掉了我代码不好的地方,你也不需要这些Demo了,是吧~
索引
【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(1)搭建MVC环境 注册区域
【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(2)创建数据库和数据模型
【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(3)公共基础数据操作类 RepositoryBase
【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(4)对前面的一些问题汇总和总结
【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(5.1) 登录功能的实现,开始接触Spring IOC、DI
【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(5.2) 登录功能的实现,接口注入、log4net的使用
【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(5.3) 登录功能的实现,丰富数据表、建立关联
【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(5.4) 登录功能的实现,创建与登录用户相关的接口和实现类
【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(5.5) 登录功能的实现,完善登录功能
【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(6) 控制器基类 主要做登录用户、权限认证、日志记录等工作
【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(7.1) 模块管理,验证权限,展示模块列表
【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(7.2) 模块管理,模块的添加、修改、删除
【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(8) 权限管理,自定义权限,扩展权限
简述
今天我们来做角色的管理 和 角色权限分配
项目准备
我们用的工具是:VS 2013 + SqlServer 2012 + IIS7.5
希望大家对ASP.NET MVC有一个初步的理解,理论性的东西我们不做过多解释,有些地方不理解也没关系,会用就行了,用的多了,用的久了,自然就理解了。
项目开始
1 [UserAuthorizeAttribute(ModuleAlias = "Role", OperaAction = "View")] 2 public ActionResult Index() 3 { 4 5 return View(); 6 7 }
1 /// <summary> 2 /// 加载主页 3 /// </summary> 4 /// <returns></returns> 5 [UserAuthorizeAttribute(ModuleAlias = "Role", OperaAction = "View")] 6 public ActionResult Index() 7 { 8 try 9 { 10 #region 处理查询参数 11 12 //系统ID 13 string System = Request.QueryString["System"]; 14 ViewData["System"] = System; 15 16 //搜索的关键字(用于输出给前台的Input显示) 17 ViewBag.Search = base.keywords; 18 #endregion 19 20 //输出用户所拥有的系统列表到视图页 21 ViewData["Systemlist"] = this.SystemManage.LoadSystemInfo(CurrentUser.System_Id); 22 23 //输出分页查询列表 24 return View(BindList(System)); 25 } 26 catch (Exception e) 27 { 28 WriteLog(Common.Enums.enumOperator.Select, "加载角色列表:", e); 29 throw e.InnerException; 30 } 31 }
1 /// <summary> 2 /// 分页查询角色列表 3 /// </summary> 4 private Common.PageInfo BindList(string system) 5 { 6 7 }
1 //基础数据 2 var query = this.RoleManage.LoadAll(null);
1 //系统 2 if(!string.IsNullOrEmpty(system)) 3 { 4 int SuperAdminId = Common.Enums.ClsDic.DicRole["超级管理员"]; 5 query = query.Where(p => p.FK_BELONGSYSTEM == system || p.ISCUSTOM == true); 6 } 7 else 8 { 9 query = query.Where(p => this.CurrentUser.System_Id.Any(e => e == p.FK_BELONGSYSTEM)); 10 }
1 //查询关键字 2 if (!string.IsNullOrEmpty(keywords)) 3 { 4 query = query.Where(p => p.ROLENAME.Contains(keywords)); 5 }
1 //排序 2 query = query.OrderByDescending(p => p.CREATEDATE); 3 //分页 4 var result = this.RoleManage.Query(query, page, pagesize);
1 var list = result.List.Select(p => new 2 { 3 //以下是视图需要展示的内容,加动态可循环 4 p.CREATEDATE, 5 p.ROLENAME, 6 p.ROLEDESC, 7 USERNAME = p.CREATEPERID, 8 p.ID, 9 SYSNAME = SystemManage.Get(m=>m.ID==p.FK_BELONGSYSTEM).NAME, 10 ISCUSTOMSTATUS = p.ISCUSTOM ? "<i class=\"fa fa-circle text-navy\"></i>" : "<i class=\"fa fa-circle text-danger\"></i>" 11 }).ToList();
1 return new Common.PageInfo(result.Index, result.PageSize, result.Count, Common.JsonConverter.JsonClass(list));
1 /// <summary> 2 /// 分页查询角色列表 3 /// </summary> 4 private Common.PageInfo BindList(string system) 5 { 6 //基础数据 7 var query = this.RoleManage.LoadAll(null); 8 //系统 9 if(!string.IsNullOrEmpty(system)) 10 { 11 int SuperAdminId = Common.Enums.ClsDic.DicRole["超级管理员"]; 12 query = query.Where(p => p.FK_BELONGSYSTEM == system || p.ISCUSTOM == true); 13 } 14 else 15 { 16 query = query.Where(p => this.CurrentUser.System_Id.Any(e => e == p.FK_BELONGSYSTEM)); 17 } 18 //查询关键字 19 if (!string.IsNullOrEmpty(keywords)) 20 { 21 query = query.Where(p => p.ROLENAME.Contains(keywords)); 22 } 23 //排序 24 query = query.OrderByDescending(p => p.CREATEDATE); 25 //分页 26 var result = this.RoleManage.Query(query, page, pagesize); 27 28 var list = result.List.Select(p => new 29 { 30 //以下是视图需要展示的内容,加动态可循环 31 p.CREATEDATE, 32 p.ROLENAME, 33 p.ROLEDESC, 34 USERNAME = p.CREATEPERID, 35 p.ID, 36 SYSNAME = SystemManage.Get(m=>m.ID==p.FK_BELONGSYSTEM).NAME, 37 ISCUSTOMSTATUS = p.ISCUSTOM ? "<i class=\"fa fa-circle text-navy\"></i>" : "<i class=\"fa fa-circle text-danger\"></i>" 38 }).ToList(); 39 40 return new Common.PageInfo(result.Index, result.PageSize, result.Count, Common.JsonConverter.JsonClass(list)); 41 }
1 @{ 2 Layout = "~/Views/Shared/_Layout.cshtml"; 3 } 4 @model Common.PageInfo
1 <div class="ibox-title"> 2 <h5>角色管理</h5> 3 <div class="ibox-tools"> 4 <a class="btn btn-primary btn-xs p210" id="insert" action="add"><i class="fa fa-plus-circle fa-fw"></i> 创建新角色</a> 5 <a class="btn btn-warning btn-xs p210" id="modify" action="edit"><i class="fa fa-pencil fa-fw"></i> 编辑</a> 6 <a class="btn btn-danger btn-xs p210" id="delete" action="remove"><i class="fa fa-trash-o fa-fw"></i> 删除</a> 7 <a class="btn btn-info btn-xs p210" id="permission" action="allocation"><i class="fa fa-sheqel fa-fw"></i> 分配权限</a> 8 <a class="reload-link" style="color: #c4c4c4" href="javascript:dig.reload()" data-toggle="tooltip" data-placement="left" title="刷新"> 9 <i class="fa fa-repeat fa-lg"></i> 10 </a> 11 </div> 12 </div>
1 @section scripts{ 2 <script type="text/javascript"> 3 $(function () { 4 //添加新角色 5 $("#insert").click(function () { 6 dig.addPage("添加新角色", "/Sys/role/detail?systemId=" + $("#System").val(), 600, 450, function () { 7 if (this.returnValue == ‘yes‘) { 8 location.reload(); 9 } 10 }); 11 }); 12 //列表选择修改 13 $(‘#modify‘).click(function () { 14 var vals = ‘‘; 15 var num = 0; 16 $(‘input[name="checkbox_name"]:checked‘).each(function () { 17 vals = $(this).val(); 18 num++; 19 }); 20 if (!vals) { 21 dig.error("对不起,请选中您要操作的记录!"); 22 return; 23 } 24 if (num > 1) { 25 dig.error("对不起,每次只能修改一条记录!"); 26 return; 27 } 28 dig.addPage("编辑角色", "/Sys/role/detail/" + vals, 600, 450, function () { 29 if (this.returnValue == ‘yes‘) { 30 location.reload(); 31 } 32 }); 33 }); 34 //分配权限 35 $(‘#permission‘).click(function () { 36 var vals = ‘‘; 37 var num = 0; 38 $(‘input[name="checkbox_name"]:checked‘).each(function () { 39 vals = $(this).val(); 40 num++; 41 }); 42 if (!vals) { 43 dig.error("对不起,请选中您要操作的记录!"); 44 return; 45 } 46 if (num > 1) { 47 dig.error("对不起,每次只能给一个角色分配权限!"); 48 return; 49 } 50 dig.addPage(‘分配权限‘, ‘/Sys/Permission/PerAllocation/?id=‘ + vals + ‘&tp=role‘, 1000, 500, function () { 51 if (this.returnValue == ‘yes‘) { 52 location.reload(); 53 } 54 }); 55 }); 56 }); 57 //跳转修改 58 function EditRole(n) { 59 dig.addPage("编辑角色", "/Sys/role/detail/" + n, 600, 450, function () { 60 if (this.returnValue == ‘yes‘) { 61 location.reload(); 62 } 63 }); 64 } 65 </script> 66 }
1 /// <summary> 2 /// 加载详情 3 /// </summary> 4 /// <returns></returns> 5 [UserAuthorizeAttribute(ModuleAlias = "Role", OperaAction = "Detail")] 6 public ActionResult Detail(int? id) 7 { 8 var _entity = new Domain.SYS_ROLE() { ISCUSTOM = false }; 9 10 if(id!=null && id>0) 11 { 12 _entity = RoleManage.Get(p => p.ID == id); 13 } 14 else 15 { 16 if(!string.IsNullOrEmpty(Request.QueryString["systemId"])) 17 { 18 _entity.FK_BELONGSYSTEM = Request.QueryString["systemId"]; 19 } 20 } 21 22 ViewData["Systemlist"] = this.SystemManage.LoadSystemInfo(CurrentUser.System_Id); 23 24 return View(_entity); 25 } 26 /// <summary> 27 /// 保存角色 28 /// </summary> 29 [UserAuthorizeAttribute(ModuleAlias = "Role", OperaAction = "Add,Edit")] 30 public ActionResult Save(Domain.SYS_ROLE entity) 31 { 32 bool isEdit = false; 33 var json = new JsonHelper() { Msg = "保存成功", Status = "n" }; 34 try 35 { 36 if (entity != null) 37 { 38 //判断角色名是否汉字 39 if (System.Text.RegularExpressions.Regex.IsMatch(entity.ROLENAME.Trim(), "^[\u4e00-\u9fa5]+$")) 40 { 41 if (entity.ROLENAME.Length > 36) 42 { 43 json.Msg = "角色名称最多只能能包含36个汉字"; 44 return Json(json); 45 } 46 47 //添加 48 if (entity.ID <= 0) 49 { 50 entity.CREATEDATE = DateTime.Now; 51 entity.CREATEPERID = this.CurrentUser.Name; 52 entity.UPDATEDATE = DateTime.Now; 53 entity.UPDATEUSER = this.CurrentUser.Name; 54 } 55 else //修改 56 { 57 entity.UPDATEDATE = DateTime.Now; 58 entity.UPDATEUSER = this.CurrentUser.Name; 59 isEdit = true; 60 } 61 //判断角色是否重名 62 if (!this.RoleManage.IsExist(p => p.ROLENAME == entity.ROLENAME && p.ID != entity.ID)) 63 { 64 if (isEdit) 65 { 66 //系统更换 删除所有权限 67 var _entity = RoleManage.Get(p => p.ID == entity.ID); 68 if (_entity.FK_BELONGSYSTEM != entity.FK_BELONGSYSTEM) 69 { 70 RolePermissionManage.Delete(p => p.ROLEID == _entity.ID); 71 } 72 } 73 if (RoleManage.SaveOrUpdate(entity, isEdit)) 74 { 75 json.Status = "y"; 76 } 77 else 78 { 79 json.Msg = "保存失败"; 80 } 81 } 82 else 83 { 84 json.Msg = "角色名" + entity.ROLENAME + "已被使用,请修改角色名称再提交"; 85 } 86 87 } 88 else 89 { 90 json.Msg = "角色名称只能包含汉字"; 91 } 92 93 } 94 else 95 { 96 json.Msg = "未找到需要保存的角色信息"; 97 } 98 if (isEdit) 99 { 100 WriteLog(Common.Enums.enumOperator.Edit, "修改用户角色,结果:" + json.Msg, Common.Enums.enumLog4net.INFO); 101 } 102 else 103 { 104 WriteLog(Common.Enums.enumOperator.Add, "添加用户角色,结果:" + json.Msg, Common.Enums.enumLog4net.INFO); 105 } 106 } 107 catch (Exception e) 108 { 109 json.Msg = "保存用户角色发生内部错误!"; 110 WriteLog(Common.Enums.enumOperator.None, "保存用户角色:", e); 111 } 112 return Json(json); 113 }
删除的时候 我们首先还是要判断一下 是否是超级管理员,超级管理员角色不允许删除 然后我们要判断用户是否分配了角色
1 /// <summary> 2 /// 删除角色 3 /// </summary> 4 [UserAuthorizeAttribute(ModuleAlias = "Role", OperaAction = "Remove")] 5 public ActionResult Delete(string idList) 6 { 7 var json = new JsonHelper() { Msg = "删除角色完毕", Status = "n" }; 8 var id = idList.Trim(‘,‘).Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(p => int.Parse(p)).ToList(); 9 if (id.Contains(Common.Enums.ClsDic.DicRole["超级管理员"])) 10 { 11 json.Msg = "删除失败,不能删除系统固有角色!"; 12 WriteLog(Common.Enums.enumOperator.Remove, "删除用户角色:" + json.Msg, Common.Enums.enumLog4net.ERROR); 13 return Json(json); 14 } 15 if (this.UserRoleManage.IsExist(p => id.Contains(p.FK_ROLEID))) 16 { 17 json.Msg = "删除失败,不能删除系统中正在使用的角色!"; 18 WriteLog(Common.Enums.enumOperator.Remove, "删除用户角色:" + json.Msg, Common.Enums.enumLog4net.ERROR); 19 return Json(json); 20 } 21 try 22 { 23 //1、删除角色权限 24 RolePermissionManage.Delete(p => id.Contains(p.ROLEID)); 25 //2、删除角色 26 RoleManage.Delete(p => id.Contains(p.ID)); 27 json.Status = "y"; 28 WriteLog(Common.Enums.enumOperator.Remove, "删除用户角色:" + json.Msg, Common.Enums.enumLog4net.WARN); 29 } 30 catch (Exception e) 31 { 32 json.Msg = "删除用户角色发生内部错误!"; 33 WriteLog(Common.Enums.enumOperator.Remove, "删除用户角色:", e); 34 } 35 return Json(json); 36 }
1 /// <summary> 2 /// 角色、用户分配权限 3 /// </summary> 4 [UserAuthorizeAttribute(ModuleAlias = "Role", OperaAction = "Allocation")] 5 public ActionResult PerAllocation() 6 {}
1 //系统 2 string systemId = "所有可操作系统";
1 //用户或角色ID 2 string id = Request["id"]; 3 4 //权限类型,user/role 5 string tp = Request["tp"];
1 //搜索关键字 2 ViewBag.Search = base.keywords;
1 if (string.IsNullOrEmpty(tp)) 2 { 3 return Content("<script>alert(‘未接收到需要分配权限的类型‘)</script>"); 4 } 5 if (string.IsNullOrEmpty(id)) 6 { 7 return Content("<script>alert(‘未接收到需要分配权限的对象‘)</script>"); 8 }
1 int newid = int.Parse(id); 2 3 //模块 4 var moduleList = new List<Domain.SYS_MODULE>(); 5 6 if (tp == "role") 7 { 8 var Role = RoleManage.Get(p => p.ID == newid); 9 10 systemId = SystemManage.Get(p => p.ID == Role.FK_BELONGSYSTEM.ToString()).NAME; 11 12 //获取角色所属系统模块 13 moduleList = this.ModuleManage.RecursiveModule(this.ModuleManage.LoadAll(p => p.FK_BELONGSYSTEM == Role.FK_BELONGSYSTEM).ToList()); 14 } 15 else if (tp == "user") 16 { 17 //获取管理员可操作系统模块 18 moduleList = this.ModuleManage.RecursiveModule(this.ModuleManage.LoadAll(p => CurrentUser.System_Id.Any(e => e == p.FK_BELONGSYSTEM)).ToList()); 19 } 20 21 //搜索关键字 22 if (!string.IsNullOrEmpty(keywords)) 23 { 24 moduleList = moduleList.Where(p => p.NAME.Contains(keywords.ToLower())).ToList(); 25 } 26 27 ViewData["ModuleList"] = JsonConverter.JsonClass(moduleList.Select(p => new { p.ID, MODULENAME = GetModuleName(p.NAME, p.LEVELS), p.ICON, p.PARENTID, p.LEVELS }));
1 //获取权限 2 var moduleId = moduleList.Select(p => p.ID).ToList(); 3 4 ViewData["PermissionList"] = this.PermissionManage.LoadAll(p => moduleId.Any(e => e == p.MODULEID)).ToList();
1 //根据类型获取用户/角色已选中的权限 2 var selectper = new List<string>(); 3 if (tp == "user") 4 { 5 selectper = 6 this.UserPermissionManage.LoadAll(p => p.FK_USERID == newid) 7 .Select(p => p.FK_PERMISSIONID) 8 .Cast<string>() 9 .ToList(); 10 } 11 else if (tp == "role") 12 { 13 selectper = 14 this.RolePermissionManage.LoadAll(p => p.ROLEID == newid) 15 .Select(p => p.PERMISSIONID) 16 .Cast<string>() 17 .ToList(); 18 } 19 20 ViewData["selectper"] = selectper; 21 22 ViewData["PermissionType"] = tp; 23 24 ViewData["objId"] = id; 25 26 ViewData["systemId"] = systemId;
1 /// <summary> 2 /// 角色、用户分配权限 3 /// </summary> 4 [UserAuthorizeAttribute(ModuleAlias = "Role", OperaAction = "Allocation")] 5 public ActionResult PerAllocation() 6 { 7 //系统 8 string systemId = "所有可操作系统"; 9 //用户或角色ID 10 string id = Request["id"]; 11 12 //权限类型,user/role 13 string tp = Request["tp"]; 14 15 //搜索关键字 16 ViewBag.Search = base.keywords; 17 18 if (string.IsNullOrEmpty(tp)) 19 { 20 return Content("<script>alert(‘未接收到需要分配权限的类型‘)</script>"); 21 } 22 if (string.IsNullOrEmpty(id)) 23 { 24 return Content("<script>alert(‘未接收到需要分配权限的对象‘)</script>"); 25 } 26 27 int newid = int.Parse(id); 28 29 //模块 30 var moduleList = new List<Domain.SYS_MODULE>(); 31 32 if (tp == "role") 33 { 34 var Role = RoleManage.Get(p => p.ID == newid); 35 36 systemId = SystemManage.Get(p => p.ID == Role.FK_BELONGSYSTEM.ToString()).NAME; 37 38 //获取角色所属系统模块 39 moduleList = this.ModuleManage.RecursiveModule(this.ModuleManage.LoadAll(p => p.FK_BELONGSYSTEM == Role.FK_BELONGSYSTEM).ToList()); 40 } 41 else if (tp == "user") 42 { 43 //获取管理员可操作系统模块 44 moduleList = this.ModuleManage.RecursiveModule(this.ModuleManage.LoadAll(p => CurrentUser.System_Id.Any(e => e == p.FK_BELONGSYSTEM)).ToList()); 45 } 46 47 //搜索关键字 48 if (!string.IsNullOrEmpty(keywords)) 49 { 50 moduleList = moduleList.Where(p => p.NAME.Contains(keywords.ToLower())).ToList(); 51 } 52 53 ViewData["ModuleList"] = JsonConverter.JsonClass(moduleList.Select(p => new { p.ID, MODULENAME = GetModuleName(p.NAME, p.LEVELS), p.ICON, p.PARENTID, p.LEVELS })); 54 55 //获取权限 56 var moduleId = moduleList.Select(p => p.ID).ToList(); 57 58 ViewData["PermissionList"] = this.PermissionManage.LoadAll(p => moduleId.Any(e => e == p.MODULEID)).ToList(); 59 60 //根据类型获取用户/角色已选中的权限 61 var selectper = new List<string>(); 62 if (tp == "user") 63 { 64 selectper = 65 this.UserPermissionManage.LoadAll(p => p.FK_USERID == newid) 66 .Select(p => p.FK_PERMISSIONID) 67 .Cast<string>() 68 .ToList(); 69 } 70 else if (tp == "role") 71 { 72 selectper = 73 this.RolePermissionManage.LoadAll(p => p.ROLEID == newid) 74 .Select(p => p.PERMISSIONID) 75 .Cast<string>() 76 .ToList(); 77 } 78 79 ViewData["selectper"] = selectper; 80 81 ViewData["PermissionType"] = tp; 82 83 ViewData["objId"] = id; 84 85 ViewData["systemId"] = systemId; 86 87 return View(); 88 }
1 @{ 2 Layout = "~/Views/Shared/_Layout.cshtml"; 3 } 4 <style type="text/css">.gray-bg {background-color: white;} 5 .permissionlist .icheck_line {color: #1ab394;cursor: pointer;font-weight:normal;margin-right:5px;} 6 </style> 7 <div class="wrapper wrapper-content animated fadeInUp"> 8 <div class="row"> 9 <div class="ibox-detail-title"> 10 <i class="fa fa-pencil-square-o"></i>分配权限 11 </div> 12 <div class="ibox-content"> 13 @using (Ajax.BeginForm("PerAllocation", null, new AjaxOptions() { }, new { @id = "form1", @class = "form-horizontal", @method = "get" })) 14 { 15 @Html.Hidden("tp", ViewData["PermissionType"]) 16 @Html.Hidden("id", ViewData["objId"]) 17 <div class="row"> 18 <div class="col-sm-6"> 19 <label>系统:</label> 20 <label class="icheck_line" style="color:#1ab394"> @ViewData["systemId"]</label> 21 </div> 22 <div class="col-sm-6"> 23 <div class="input-group"> 24 @Html.TextBox("Search", null, new { @class = "input-sm form-control", @placeholder = "请输入查询关键词" }) 25 <span class="input-group-btn"> 26 <button type="submit" onclick="submit()" class="btn btn-sm btn-primary"> 搜索</button> 27 </span> 28 </div> 29 </div> 30 </div> 31 } 32 <div class="row"> 33 <table class="table table-striped table-bordered table-hover dataTables-example" style="text-align:center;"> 34 <thead> 35 <tr> 36 <th class="tn" style="width: 50px !important"><input name="checkall" class="icheck_box" type="checkbox" value=""></th> 37 <th style="width:200px!important;">模块名称</th> 38 <th>权限</th> 39 </tr> 40 </thead> 41 <tbody> 42 @{ 43 var module = ViewData["ModuleList"] as dynamic; 44 var permission = ViewData["PermissionList"] as List<Domain.SYS_PERMISSION>; 45 var selectper = ViewData["selectper"] as List<string>; 46 if (module != null) 47 { 48 foreach (var item in module) 49 { 50 <tr> 51 <td class="tn"> 52 @{ 53 if (permission.FindAll(p => p.MODULEID == item.ID).Count > 0) 54 { 55 <input name="ckb_module" class="icheck_box" type="checkbox" value="" data-id="@item.ID" /> 56 } 57 } 58 59 </td> 60 <td style="width:200px!important;text-align:left;"><a href="javascript:void(0)"><i class="@item.ICON"></i>@Html.Raw(item.MODULENAME)</a></td> 61 <td style="text-align:left;"> 62 <div class="permissionlist"> 63 @{ 64 if (permission != null && permission.Count > 0 && permission.FindAll(p => p.MODULEID == item.ID).Count > 0) 65 { 66 foreach (var per in permission.FindAll(p => p.MODULEID == item.ID)) 67 { 68 var sel = selectper.Find(p => p == per.ID.ToString()); 69 <label class="icheck_line"><input name="ckb_per" type="checkbox" data-module="@item.ID" class="icheck_box" value="@per.ID" @(sel != null ? "checked" : "") /><i class="@per.ICON"></i>@per.NAME</label> 70 } 71 } 72 } 73 </div> 74 </td> 75 </tr> 76 } 77 } 78 } 79 </tbody> 80 </table> 81 </div> 82 83 <div class="hr-line-dashed"></div> 84 <div class="text-center"> 85 <button class="btn btn-primary btn-save" type="submit"><i class="fa fa-check"></i> <span>确定保存</span></button> 86 <button class="btn btn-warning" id="btn-dig-close" type="button"><i class="fa fa-reply-all"></i> 取消返回</button> 87 </div> 88 </div> 89 </div> 90 </div> 91 @section scripts{ 92 <script type="text/javascript"> 93 $(function () { 94 //全选 反选 95 $(‘input[name="checkall"]‘).on(‘ifChecked‘, function (event) { 96 $("input[name=‘ckb_module‘]").iCheck(‘check‘); 97 }); 98 $(‘input[name="checkall"]‘).on(‘ifUnchecked‘, function (event) { 99 $("input[name=‘ckb_module‘]").iCheck(‘uncheck‘); 100 }); 101 //单行选中 取消 102 $(‘input[name="ckb_module"]‘).on(‘ifChecked‘, function (event) { 103 $("input[data-module=‘" + $(this).attr("data-id") + "‘]").iCheck(‘check‘); 104 }); 105 $(‘input[name="ckb_module"]‘).on(‘ifUnchecked‘, function (event) { 106 $("input[data-module=‘" + $(this).attr("data-id") + "‘]").iCheck(‘uncheck‘); 107 }); 108 //提交保存 109 $(‘.btn-save‘).click(function () { 110 var perid = ‘‘; 111 $(‘input[name="ckb_per"]:checked‘).each(function () { 112 perid += $(this).attr(‘value‘) + ‘,‘; 113 }); 114 $.post(‘/Sys/Permission/SaveAllocation‘, { 115 tp: $(‘#tp‘).val(), 116 id: $(‘#id‘).val(), 117 perid: perid 118 }, function (result) { 119 if (result.Status == ‘y‘) { 120 var dialog = top.dialog.get(window); 121 dig.successcallback(result.Msg, function () { 122 if (dialog == "undefined" || dialog == undefined) { 123 location.reload(); 124 } 125 else { 126 dialog.close(‘yes‘).remove(); 127 } 128 129 }); 130 } else { 131 dig.error(result.Msg); 132 } 133 }, ‘json‘); 134 }); 135 }); 136 </script> 137 }
1 /// <summary> 2 /// 设置角色、用户权限 3 /// </summary> 4 public ActionResult SaveAllocation() 5 { 6 var json = new JsonHelper(){Msg = "分配权限完毕",Status = "n"}; 7 //类型 8 string tp = Request.Form["tp"]; 9 //对象ID 10 string id = Request.Form["id"]; 11 //权限ID集合 12 string perid = Request.Form["perid"]; 13 14 if (string.IsNullOrEmpty(id)) 15 { 16 json.Msg = "未要分配权限的对象"; 17 WriteLog(Common.Enums.enumOperator.Allocation, "设置角色权限,结果:" + json.Msg, Common.Enums.enumLog4net.ERROR); 18 return Json(json); 19 } 20 21 if (string.IsNullOrEmpty(tp)) 22 { 23 json.Msg = "未要分配权限的类型"; 24 WriteLog(Common.Enums.enumOperator.Allocation, "设置角色权限,结果:" + json.Msg, Common.Enums.enumLog4net.ERROR); 25 return Json(json); 26 } 27 28 perid = perid.Trim(‘,‘); 29 30 try 31 { 32 if (tp == "user") 33 { 34 if (!this.UserPermissionManage.SetUserPermission(int.Parse(id), perid)) { json.Msg = "保存失败"; WriteLog(Common.Enums.enumOperator.Allocation, "设置用户权限,结果:" + json.Msg, Common.Enums.enumLog4net.ERROR); return Json(json); } 35 } 36 else if (tp == "role") 37 { 38 if (!this.RolePermissionManage.SetRolePermission(int.Parse(id), perid)) { json.Msg = "保存失败"; WriteLog(Common.Enums.enumOperator.Allocation, "设置角色权限,结果:" + json.Msg, Common.Enums.enumLog4net.ERROR); return Json(json); } 39 } 40 41 json.Status = "y"; 42 43 WriteLog(Common.Enums.enumOperator.Allocation, "设置角色权限,结果:" + json.Msg, Common.Enums.enumLog4net.INFO); 44 } 45 catch (Exception e) 46 { 47 json.Msg = "设置角色权限发生内部错误!"; 48 WriteLog(Common.Enums.enumOperator.Allocation, "设置角色权限:", e); 49 } 50 return Json(json); 51 }
原创文章 转载请尊重劳动成果 http://yuangang.cnblogs.com
【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(9) 角色管理,分配权限
标签:
原文地址:http://www.cnblogs.com/yuangang/p/5569518.html