/// <summary> /// Get all actions by category /// </summary> /// <param name="role_id"></param> /// <returns></returns> public List <BAdminCategoryAction> GetActionsByCategory(int role_id = 0) { List <BAdminCategoryAction> actions = new List <BAdminCategoryAction>(); using (KuanMaiEntities db = new KuanMaiEntities()) { List <Admin_Action> roleActions = new List <Admin_Action>(); if (role_id > 0) { var tmp = from roleA in db.Admin_Role_Action where roleA.role_id == role_id join action in db.Admin_Action on roleA.action_id equals action.id into lAction from l_action in lAction.DefaultIfEmpty() select l_action; roleActions = (from action in tmp where action.enable == true select action).ToList <Admin_Action>(); } List <BAdminCategory> categories = (from category in db.Admin_Category select new BAdminCategory { ID = category.ID, Created = category.Created, Name = category.Name }).ToList <BAdminCategory>(); foreach (BAdminCategory category in categories) { BAdminCategoryAction cateAction = new BAdminCategoryAction(); cateAction.Category = category; cateAction.Actions = (from action in db.Admin_Action where action.category_id == category.ID && action.enable == true select new BAdminAction { ActionName = action.action_name, Description = action.action_description, ID = action.id, Enabled = action.enable }).ToList <BAdminAction>(); foreach (BAdminAction bAction in cateAction.Actions) { Admin_Action dbAction = (from action in roleActions where action.id == bAction.ID select action).FirstOrDefault <Admin_Action>(); if (dbAction != null) { bAction.HasPermission = true; } } actions.Add(cateAction); } } return(actions); }
/// <summary> /// /// </summary> /// <param name="role_id"></param> /// <param name="actions"></param> public void UpdateRoleActions(int role_id, int[] actions) { if (this.CurrentUserPermission.UPDATE_ROLE_ACTION == 0) { throw new KMJXCException("没有权限执行此操作"); } using (KuanMaiEntities db = new KuanMaiEntities()) { Admin_Role role = (from r in db.Admin_Role where r.id == role_id select r).FirstOrDefault <Admin_Role>(); if (role == null) { throw new KMJXCException("此权限分组不存在,不能添加任何权限"); } List <Admin_Role_Action> role_actions = (from ra in db.Admin_Role_Action where ra.role_id == role_id select ra).ToList <Admin_Role_Action>(); List <Admin_Action> all_actions = (from action in db.Admin_Action select action).ToList <Admin_Action>(); //add new foreach (int action in actions) { Admin_Action dbAction = (from dba in all_actions where dba.id == action select dba).FirstOrDefault <Admin_Action>(); //No action if (dbAction == null) { continue; } Admin_Role_Action dbRoleAction = (from dbra in role_actions where dbra.role_id == role_id && dbra.action_id == action select dbra).FirstOrDefault <Admin_Role_Action>(); //the role already has the action if (dbRoleAction != null) { continue; } dbRoleAction = new Admin_Role_Action(); dbRoleAction.action_id = action; dbRoleAction.role_id = role_id; db.Admin_Role_Action.Add(dbRoleAction); } //remove deleted foreach (Admin_Role_Action action in role_actions) { if (!actions.Contains(action.action_id)) { db.Admin_Role_Action.Remove(action); } } db.SaveChanges(); } }
/// <summary> /// Sync actions with Permission object /// </summary> public void SyncPermissionWithAction() { Type permission = typeof(Permission); FieldInfo[] fields = permission.GetFields(); if (fields == null || fields.Length <= 0) { return; } KuanMaiEntities db = new KuanMaiEntities(); try { foreach (FieldInfo field in fields) { var action = from a in db.Admin_Action where a.action_name == field.Name select a; if (action == null || action.ToList <Admin_Action>().Count == 0) { Admin_Action new_action = new Admin_Action(); new_action.action_name = field.Name; new_action.action_description = field.Name; new_action.enable = true; db.Admin_Action.Add(new_action); } } db.SaveChanges(); } catch (DbEntityValidationException ex) { } finally { db.Dispose(); } }
/// <summary> /// Sync actions with Permission object /// </summary> public static void SyncPermissionWithAction() { Type permission = typeof(Permission); FieldInfo[] fields = permission.GetFields(); if (fields == null || fields.Length <= 0) { return; } KuanMaiEntities db = new KuanMaiEntities(); try { List <AdminActionAttribute> cates = new List <AdminActionAttribute>(); List <Admin_Action> allActions = (from action in db.Admin_Action select action).ToList <Admin_Action>(); List <Admin_Category> allCates = (from cate in db.Admin_Category select cate).ToList <Admin_Category>(); foreach (FieldInfo field in fields) { AdminActionAttribute attr = field.GetCustomAttribute <AdminActionAttribute>(); Admin_Action action = (from a in allActions where a.action_name == field.Name select a).FirstOrDefault <Admin_Action>(); if (action == null) { action = new Admin_Action(); action.action_name = field.Name; action.enable = true; db.Admin_Action.Add(action); } if (attr != null) { action.category_id = attr.ID; action.action_description = attr.ActionDescription; AdminActionAttribute existed = (from pcate in cates where pcate.ID == attr.ID select pcate).FirstOrDefault <AdminActionAttribute>(); if (existed == null) { cates.Add(attr); } } } db.SaveChanges(); foreach (Admin_Action action in allActions) { bool found = false; foreach (FieldInfo field in fields) { if (action.action_name == field.Name) { found = true; break; } } if (!found) { action.enable = false; //db.Admin_Action.Remove(action); } } db.SaveChanges(); //category foreach (AdminActionAttribute pcate in cates) { Admin_Category dbCate = (from c in allCates where c.ID == pcate.ID select c).FirstOrDefault <Admin_Category>(); if (dbCate == null) { dbCate = new Admin_Category(); dbCate.ID = pcate.ID; dbCate.Name = pcate.CategoryName; dbCate.System_category = pcate.IsSystem; dbCate.Created = DateTimeUtil.ConvertDateTimeToInt(DateTime.Now); db.Admin_Category.Add(dbCate); } } db.SaveChanges(); } catch (Exception ex) { } finally { db.Dispose(); } }