Пример #1
0
 public ActionResult Delete(int?id, FormCollection collection)
 {
     try
     {
         PermissionMapRepository ml = new PermissionMapRepository();
         if (id != null && id > 0)
         {
             ml.Delete(id ?? 0);
         }
         else
         {
             if (string.IsNullOrEmpty(collection["IDs"]))
             {
                 return(Content("未指定删除对象ID"));
             }
             string[] ids = collection["IDs"].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
             foreach (string item in ids)
             {
                 ml.Delete(int.Parse(item));
             }
         }
         return(Content("1"));
     }
     catch (Exception ex)
     {
         return(Content(ErrorWirter(RouteData, ex.Message)));
     }
 }
Пример #2
0
 /// <summary>
 /// 首页
 /// </summary>
 /// <returns></returns>
 public ActionResult Index()
 {
     ViewData["optionNames"] = new List <string>();
     if (SiteHelper.Default.IsValidePermission == true)
     {
         if (CurrentMember.ID > 0)
         {
             //读取菜单
             if (CurrentMember.RoleID == 1)
             {
                 return(View());
             }
             PermissionHelper permission = new PermissionHelper();
             var           plts          = permission.PermissionDatas.Where(b => b.RID == CurrentMember.RoleID).ToList();
             List <string> optionNames   = new List <string>();
             if (plts != null && plts.Count > 0)
             {
                 foreach (var item in plts)
                 {
                     try
                     {
                         if (item.HasPermission == true)
                         {
                             var mid = new PermissionMapRepository().Search().Where(b => b.ID == item.PID && b.Name == "菜单").First().MID;
                             optionNames.Add(new MenuRepository().GetMenu(mid).Name);
                         }
                     }
                     catch { }
                 }
             }
             ViewData["optionNames"] = optionNames;
         }
     }
     return(View());
 }
Пример #3
0
        public ActionResult Detail(int id)
        {
            try
            {
                PermissionMapRepository ml = new PermissionMapRepository();

                PermissionMap obj = ml.GetPermissionMap(id);

                return(View(obj));
            }
            catch (Exception ex)
            {
                return(Content(ContentIcon.Error + "|" + ErrorWirter(RouteData, ex.Message)));
            }
        }
Пример #4
0
        public ActionResult Edit(int id)
        {
            try
            {
                PermissionMapRepository ml = new PermissionMapRepository();

                PermissionMap obj = ml.GetPermissionMap(id);

                ViewData["ForeachMenuByOption"]       = ForeachMenuByOption(obj.MID, 0);
                ViewData["ForeachPermissionByOption"] = ForeachPermissionByOption(obj.PID, 0, 1);

                return(View(obj));
            }
            catch (Exception ex)
            {
                return(Content(ContentIcon.Error + "|" + ErrorWirter(RouteData, ex.Message)));
            }
        }
Пример #5
0
        protected string GetMap()
        {
            string         permissionTree = "";
            MenuRepository ml             = new MenuRepository();

            mlts = ml.Search().Where(b => b.IsDeleted == false).ToList();
            PermissionMapRepository pml = new PermissionMapRepository();

            plts = pml.GetList(1, 1000);
            if (mlts != null)
            {
                permissionTree = GetMenuStr(new Menu()
                {
                    ID = 0
                });
            }
            return(permissionTree);
        }
Пример #6
0
        public ActionResult Create(FormCollection formCollection)
        {
            try
            {
                PermissionMapRepository ml = new PermissionMapRepository();

                PermissionMap obj = new PermissionMap()
                {
                    CreateDate = DateTime.Now, CreateUserID = ID, IsDeleted = false
                };

                UpdateModel(obj);

                bool result = ml.Insert(obj) > 0 ? true : false;

                return(result ? Content(ContentIcon.Succeed + "|操作成功|/Admin/PermissionMap/Index") : Content(ContentIcon.Error + "|操作失败"));
            }
            catch (Exception ex)
            {
                return(Content(ContentIcon.Error + "|" + ErrorWirter(RouteData, ex.Message)));
            }
        }
Пример #7
0
        private string ForeachPermissionByOption(int?id, int?parentID, int level)
        {
            StringBuilder        html     = new StringBuilder();
            List <PermissionMap> menulist = new PermissionMapRepository().Search().Where(b => b.PID == parentID).ToList();
            var i = 0;

            foreach (var item in menulist)
            {
                string selected = "";
                if (id == item.ID)
                {
                    selected = "selected";
                }
                if (item.PID == 0 || item.PID == null)
                {
                    html.Append("<option value='" + item.ID + "' " + selected + "> " + item.Name + " </option>");
                }
                else
                {
                    StringBuilder nbsp = new StringBuilder();
                    for (int j = 0; j < level * 2; j++)
                    {
                        nbsp.Append("&nbsp;");
                    }
                    if (i == menulist.Count() - 1)
                    {
                        html.Append("<option value='" + item.ID + "' " + selected + "> " + nbsp.ToString() + "└ " + item.Name + " </option>");
                    }
                    else
                    {
                        html.Append("<option value='" + item.ID + "' " + selected + "> " + nbsp.ToString() + "├ " + item.Name + " </option>");
                    }
                }
                i++;
                html.Append(ForeachPermissionByOption(id, item.ID, level + 1));
            }
            return(html.ToString());
        }
Пример #8
0
        public ActionResult Index(int?pageIndex, int?pageSize, PermissionMap entity)
        {
            try
            {
                PermissionMapRepository ml = new PermissionMapRepository();
                entity.IsDeleted = false;
                PagedList <PermissionMap> page = ml.Search(entity).GetPagedList(pageIndex ?? PageIndex, pageSize ?? PageSize, Order, By);
                if (page != null && page.TotalItemCount > 0)
                {
                    foreach (var item in page)
                    {
                        if (item.Menu.ID == 0)
                        {
                            PermissionDataRepository pl = new PermissionDataRepository();
                            var plts = pl.Search().Where(b => b.PID == item.ID).ToList();
                            if (plts != null)
                            {
                                pl.Deletes(plts);
                            }
                            ml.Delete(item);
                        }
                    }
                    page = ml.Search(entity).GetPagedList(pageIndex ?? PageIndex, pageSize ?? PageSize, Order, By);
                }
                IList <PermissionMap> objs = page;

                if (Request.IsAjaxRequest())
                {
                    return(PartialView("_Index", objs));
                }

                return(View(objs));
            }
            catch (Exception ex)
            {
                return(Content(ContentIcon.Error + "|" + ErrorWirter(RouteData, ex.Message)));
            }
        }
Пример #9
0
        public ActionResult Edit(int id, FormCollection formCollection)
        {
            try
            {
                PermissionMapRepository ml = new PermissionMapRepository();

                PermissionMap obj = ml.GetPermissionMap(id);

                UpdateModel(obj);

                obj.LastUpdateDate = DateTime.Now;

                obj.LastUpdateUserID = ID;

                bool result = ml.Update(obj) > 0 ? true : false;

                return(result ? Content(ContentIcon.Succeed + "|操作成功") : Content(ContentIcon.Error + "|操作失败"));
            }
            catch (Exception ex)
            {
                return(Content(ContentIcon.Error + "|" + ErrorWirter(RouteData, ex.Message)));
            }
        }
Пример #10
0
        /// <summary>
        /// 更新文件(非阻塞方式)
        /// </summary>
        /// <returns></returns>
        public bool Write()
        {
            bool result = false;

            if (site.IsFromFile == true)
            {
                var application = System.Web.HttpContext.Current.Application;
                application.Lock();
                Init();
                try
                {
                    Thread mt = new Thread(new ThreadStart(() =>
                    {
                        var mlts = new MenuRepository().Search().Where(b => b.IsDeleted == false).ToList();
                        if (mlts != null)
                        {
                            _Menus          = mlts;
                            string menusStr = Common.JsonHelper.JsonSerializer <List <Menu> >(mlts);
                            menusStr        = Common.EncryptionHelper.AESHelper.Encrypt(menusStr, password);
                            string menuFile = menuFilePath + "Menu.html";
                            Common.FileHelper.DeleteFile(menuFile);
                            Common.FileHelper.WriteFile(menuFile, menusStr);
                        }
                    }));
                    Thread pmt = new Thread(new ThreadStart(() =>
                    {
                        var pmlts = new PermissionMapRepository().Search().Where(b => b.IsDeleted == false).ToList();
                        if (pmlts != null)
                        {
                            _PermissionMaps          = pmlts;
                            string permissionmapsStr = Common.JsonHelper.JsonSerializer <List <PermissionMap> >(pmlts);
                            permissionmapsStr        = Common.EncryptionHelper.AESHelper.Encrypt(permissionmapsStr, password);
                            string permissionmapFile = permissionMapFilePath + "PermissionMap.html";
                            Common.FileHelper.DeleteFile(permissionmapFile);
                            Common.FileHelper.WriteFile(permissionmapFile, permissionmapsStr);
                        }
                    }));
                    Thread pdt = new Thread(new ThreadStart(() =>
                    {
                        var pdlts = new PermissionDataRepository().Search().Where(b => b.IsDeleted == false).ToList();
                        if (pdlts != null)
                        {
                            _PermissionDatas          = pdlts;
                            string permissiondatasStr = Common.JsonHelper.JsonSerializer <List <PermissionData> >(pdlts);
                            permissiondatasStr        = Common.EncryptionHelper.AESHelper.Encrypt(permissiondatasStr, password);
                            string permissiondataFile = permissionDataFilePath + "PermissionData.html";
                            Common.FileHelper.DeleteFile(permissiondataFile);
                            Common.FileHelper.WriteFile(permissiondataFile, permissiondatasStr);
                        }
                    }));
                    mt.Start();
                    pmt.Start();
                    pdt.Start();
                    while (true)
                    {
                        if (mt.ThreadState == ThreadState.Stopped && pmt.ThreadState == ThreadState.Stopped && pdt.ThreadState == ThreadState.Stopped)
                        {
                            break;
                        }
                        System.Threading.Thread.Sleep(100);
                    }
                    result = true;
                }
                catch { }
                application.UnLock();
            }
            return(result);
        }
Пример #11
0
        /// <summary>
        /// 自动生成菜单及权限结构
        /// </summary>
        /// <param name="title"></param>
        /// <param name="url"></param>
        /// <returns></returns>
        private static void AutoGenerateMenuAndMap(string title, string url)
        {
            DBContext db = new DBContext();

            //分析当前地址
            url = url.Substring(0, url.LastIndexOf("/") + 1) + "Index";
            int menuID = 0;

            //寻找菜单
            try
            {
                menuID = db.FromSql("SELECT * FROM [Menu] AS m WHERE [Url] LIKE '" + url.ToLower() + "'").ToFirst <Menu>().ID;
                if (menuID < 1)
                {
                    throw new Exception("菜单中不存在则新建");
                }
            }
            catch
            {
                try
                {
                    //若当前数据库中不存在该菜单,则自动创建一个菜单
                    var mt = new Menu()
                    {
                        Name             = title,
                        ParentID         = 0,
                        Icon             = "icos-list-images",
                        Url              = url,
                        Sort             = 0,
                        Level            = 1,
                        IsDeleted        = false,
                        LastUpdateDate   = DateTime.Now,
                        CreateDate       = DateTime.Now,
                        CreateUserID     = CurrentMember.ID,
                        LastUpdateUserID = CurrentMember.ID
                    };
                    MenuRepository ml = new MenuRepository();
                    menuID = ml.Insert(mt);
                }
                catch { }
            }
            //权限结构
            var  pmt    = new PermissionMap();
            bool hasMap = false;

            try
            {
                pmt = db.FromSql("SELECT * FROM [PermissionMap] AS pm WHERE [MID]=" + menuID + " AND [Name]='" + title + "'").ToFirst <PermissionMap>();
                if (pmt != null && pmt.ID > 0)
                {
                    hasMap = true;
                }
            }
            catch { }
            if (hasMap == false)
            {
                //自动产生权限结构
                pmt = new PermissionMap()
                {
                    SortID           = GetSort(title),
                    MID              = menuID,
                    Name             = title,
                    Description      = title,
                    IsBasic          = 0,
                    CreateUserID     = CurrentMember.ID,
                    CreateDate       = DateTime.Now,
                    LastUpdateDate   = DateTime.Now,
                    LastUpdateUserID = CurrentMember.ID,
                    IsDeleted        = false
                };
                var pml = new PermissionMapRepository();
                pml.Insert(pmt);
            }
        }
Пример #12
0
        public ActionResult Create(int[] kids, FormCollection formCollection)
        {
            try
            {
                RoleRepository ml = new RoleRepository();

                Role obj = new Role()
                {
                    CreateDate = DateTime.Now, CreateUserID = ID, IsDeleted = false
                };

                UpdateModel(obj);

                ml.Insert(obj);

                int rid = ml.Search(obj).First().ID;

                #region 更新引角色权限
                if (rid > 1)
                {
                    var pdl = new PermissionDataRepository();
                    pdl.DeleteByMIDOrRID(rid, 0);
                    var pmlts = new PermissionMapRepository().GetList(1, 1000);
                    if (pmlts != null)
                    {
                        string pData = formCollection["pData"];
                        foreach (var item in pmlts)
                        {
                            var pdt = new PermissionData()
                            {
                                PID              = item.ID,
                                RID              = rid,
                                HasPermission    = false,
                                CreateUserID     = CurrentMember.ID,
                                LastUpdateUserID = CurrentMember.ID,
                                CreateDate       = DateTime.Now,
                                LastUpdateDate   = DateTime.Now,
                                IsDeleted        = false
                            };
                            if (!string.IsNullOrEmpty(pData))
                            {
                                try
                                {
                                    var pDataArr = pData.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                                    if (pDataArr.Contains(item.ID.ToString()))
                                    {
                                        pdt.HasPermission = true;
                                    }
                                }
                                catch { }
                            }
                            pdl.Insert(pdt);
                        }
                    }
                }
                PermissionHelper permission = new PermissionHelper();
                permission.Write();
                #endregion

                return(Content(ContentIcon.Succeed + "|保存成功|/admin/Role/Index"));
            }
            catch (Exception ex)
            {
                return(Content(ContentIcon.Error + "|" + ErrorWirter(RouteData, ex.Message)));
            }
        }