Example #1
0
        /// <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);
        }
Example #2
0
        /// <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();
            }
        }
Example #3
0
        /// <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();
            }
        }
Example #4
0
        /// <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();
            }
        }