コード例 #1
0
        /// <summary>
        /// 注册角色 为管理员赋予全不权限
        /// </summary>
        public void RegistRole()
        {
            var accountTypeLists     = JsonExtensions.GetStrings <AccountType>();
            var rolePermmissionLists = base.Query <SystemRolePermission>().ToList();
            var actionIds            = Menus.Select(t => t.ActionId).ToList();

            //获取最新的角色权限关系
            rolePermmissionLists.Where(t => !actionIds.Contains(t.ActionId)).ToList().ForEach(x =>
            {
                base.Delete(x);
            });
            foreach (var accountType in accountTypeLists)
            {
                var role = base.Single <SystemRoles>(t => t.Id == accountType.Item1);
                if (role == null)
                {
                    base.Add(new SystemRoles {
                        Id = accountType.Item1, Name = accountType.Item2
                    });
                }
                else
                {
                    role.Name = accountType.Item2;
                    base.Update(role);
                }
                //超级管理员 赋予所有权限
                if (accountType.Item1 == (int)AccountType.Admin)
                {
                    foreach (var m in Menus)
                    {
                        if (!rolePermmissionLists.Any(x => x.RoleId == accountType.Item1 && x.ActionId == m.ActionId))
                        {
                            base.Add(new SystemRolePermission {
                                RoleId = accountType.Item1, ActionId = m.ActionId, CreateTime = DateTime.Now
                            });
                        }
                    }
                }
            }
            base.Save();
        }