IMethodReturn IInterceptionBehavior.Invoke(IMethodInvocation input, GetNextInterceptionBehaviorDelegate getNext) { var mb = input.MethodBase; object[] attrObj = mb.GetCustomAttributes(typeof(RightAttribute), false); if (attrObj.Count() > 0) { string badge = ""; for (int i = 0; i < input.Arguments.Count; i++) { if (input.Arguments[i] != null) { string x = input.Arguments[i].GetType().ToString(); if (x == "SchoolCheckIn.CheckIn.Model.Employee") { var tmpEmployee = (SchoolCheckIn.CheckIn.Model.Employee)input.Arguments[i]; badge = tmpEmployee.Badge; break; } } } var rightInfo = (RightAttribute)attrObj[0]; User u = rightService.GetUserByBadge(badge); if (u == null) { throw new Exception("未对登录用户分配权限用户!"); } List <Role> userRole = rightService.GetRoleByUser(u); if (userRole == null) { throw new Exception("未对用户分配角色权限!"); } //查找当前用户的角色,判断权限 bool havePermission = rightService.HaveRight(badge, rightInfo.ResourceName, rightInfo.OperationCode); if (havePermission) { var methodReturn = getNext().Invoke(input, getNext); //可调用执行方法 return(methodReturn); } else { throw new Exception("没有权限!"); } } else { var methodReturn = getNext().Invoke(input, getNext); //调用执行方法 return(methodReturn); } }
public JsonResult AddUserInRole(int roleId, string badge, string name, string department) { string msg = string.Empty; bool state = true; try { Right.Entity.Role r = ars.GetRole(roleId); Right.Entity.User u = ars.GetUserByBadge(badge); if (u == null) { u = new Right.Entity.User(); u.Badge = badge; u.UserName = name; u.Department = department; ars.SaveUser(u); ars.AddRoleToUser(r, u); } else { var roles = ars.GetRoleByUser(u); if (roles.Where(a => a.RoleId == r.RoleId).Count() > 0) { throw new Exception("本角色已包含用户" + u.UserName + "!"); } ars.AddRoleToUser(r, u); } } catch (Exception e) { state = false; msg = e.Message; } return(new JsonResult { Data = new { State = state, Msg = msg }, JsonRequestBehavior = JsonRequestBehavior.AllowGet }); }