public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            string controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
            string actionName     = filterContext.ActionDescriptor.ActionName;
            string metot          = filterContext.HttpContext.Request.RequestType;

            if (HttpContext.Current.Session["Kullanici"] == null)
            {
                if ((controllerName != "Kullanici" || controllerName == "Kullanici") && actionName != "Login" && actionName != "SifremiUnuttum")
                {
                    filterContext.Result = new RedirectResult("/Kullanici/Login");
                }
            }
            else
            {
                Personel p = (Personel)HttpContext.Current.Session["Kullanici"];
                if (controllerName == "Admin" && actionName == "Index")
                {
                    return;
                }
                else
                {
                    if (actionName == "MenuGetir")
                    {
                        return;
                    }

                    if (metot == "POST")
                    {
                        IslemErisim currentIslem = db.IslemErisim.Where(x => x.Action == actionName && x.Controller == controllerName).SingleOrDefault();
                        if (currentIslem != null)
                        {
                            ErisimRol rol = db.ErisimRol.Where(x => x.RolID == p.RolID && x.ErisimID == currentIslem.ID).SingleOrDefault();
                            if (rol == null)
                            {
                                if (actionName == "YetkiBulunamadi")
                                {
                                    return;
                                }
                                filterContext.Result = new RedirectResult("/Admin/YetkiBulunamadi");
                            }
                            else
                            {
                                if (controllerName != currentIslem.Controller && actionName != currentIslem.Action)
                                {
                                    filterContext.Result = new RedirectResult("/" + currentIslem.Controller + "/" + currentIslem.Action);
                                }
                                return;
                            }
                        }
                        else
                        {
                            return;
                        }
                    }
                    else
                    {
                        Menu currentMenu = db.Menu.Where(x => x.Action == actionName && x.Controller == controllerName).SingleOrDefault();
                        if (currentMenu != null)
                        {
                            MenuRol rol = db.MenuRol.Where(x => x.RolID == p.RolID && x.MenuID == currentMenu.ID).SingleOrDefault();
                            if (rol == null)
                            {
                                if (actionName == "YetkiBulunamadi")
                                {
                                    return;
                                }
                                filterContext.Result = new RedirectResult("/Admin/YetkiBulunamadi");
                            }
                            else
                            {
                                if (controllerName != currentMenu.Controller && actionName != currentMenu.Action)
                                {
                                    filterContext.Result = new RedirectResult("/" + currentMenu.Controller + "/" + currentMenu.Action);
                                }
                                return;
                            }
                        }
                        else
                        {
                            return;
                        }
                    }
                }
            }
            base.OnActionExecuting(filterContext);
        }
예제 #2
0
        public ActionResult Yetkiler(int RolID, string menuler, string islemler, string katrol)
        {
            try
            {
                //, MenuList list , IslemErisimList list2
                Rol r = db.Rol.Where(x => x.ID == RolID).FirstOrDefault(); // Düzenlenmek istenen Rolu bul

                if (r == null)                                             // rol boş ise hata döndür
                {
                    return(RedirectToAction("Hata", "Admin"));
                }

                #region ,Menü Rolleri update
                //Bu role ait tüm yetkileri
                List <MenuRol> menuRol = db.MenuRol.Where(x => x.RolID == r.ID).ToList();


                // Menü rollerinin silinmesi
                foreach (var item in menuRol)
                {
                    db.MenuRol.Remove(item);
                }
                db.SaveChanges(); // roller sıfırlandı.

                //Tüm rolleri yeniden yükle ve değişiklikleri kayıt et.
                string[] Menuparts = menuler.Split('^');
                Array.Reverse(Menuparts);
                List <Menu> Eklenenmenuler = new List <Menu>();
                for (int i = 0; i < Menuparts.Length; i++)
                {
                    string s   = Menuparts[i].ToString();
                    Menu   alt = db.Menu.Where(x => x.Adi == s).FirstOrDefault();
                    if (alt != null)
                    {
                        Eklenenmenuler.Add(alt);
                    }
                }
                foreach (Menu item in Eklenenmenuler)
                {
                    MenuRol rol = new MenuRol();
                    rol.MenuID = item.ID;
                    rol.RolID  = RolID;
                    db.MenuRol.Add(rol);
                    db.SaveChanges();
                }
                // MenuList.RolKontrol(list, RolID);
                ViewBag.Yetkileri = db.MenuRol.Where(x => x.RolID == r.ID).ToList();
                ViewBag.Menuler   = db.Menu.ToList();
                #endregion

                #region ,İşlem Rolleri Update
                //Bu role ait post izinleri
                List <ErisimRol> erisimRol = db.ErisimRol.Where(x => x.RolID == r.ID).ToList();


                // Erisim rollerinin silinmesi
                foreach (var item in erisimRol)
                {
                    db.ErisimRol.Remove(item);
                }
                db.SaveChanges(); // roller sıfırlandı.



                string[]           Islemparts = islemler.Split('^');
                List <IslemErisim> islemlerim = new List <IslemErisim>();
                for (int i = 0; i < Islemparts.Length; i++)
                {
                    string      s      = Islemparts[i].ToString();
                    IslemErisim islemi = db.IslemErisim.Where(x => x.Adı == s).FirstOrDefault();
                    if (islemi != null)
                    {
                        islemlerim.Add(islemi);
                    }
                }

                //Tüm erisimleri yeniden yükle ve değişiklikleri kayıt et.
                foreach (IslemErisim item in islemlerim)
                {
                    ErisimRol rol = new ErisimRol();
                    rol.ErisimID = item.ID;
                    rol.RolID    = RolID;
                    db.ErisimRol.Add(rol);
                    db.SaveChanges();
                }
                #endregion

                #region , ürün Kategori rolleri
                string[]           parts = katrol.Split('^');
                List <AltKategori> alts  = new List <AltKategori>();
                for (int i = 0; i < parts.Length; i++)
                {
                    string      s   = parts[i].ToString();
                    AltKategori alt = db.AltKategori.Where(x => x.KategoriAdi == s).FirstOrDefault();
                    if (alt != null)
                    {
                        alts.Add(alt);
                    }
                }
                List <KategoriRol> kr = db.KategoriRol.Where(x => x.RolID == RolID).ToList();

                foreach (var item in kr) // tüm kategori rollerini sil.
                {
                    db.KategoriRol.Remove(item);
                }
                db.SaveChanges();


                //tüm rolleri yeniden yükle
                foreach (AltKategori item in alts)
                {
                    KategoriRol ktr = new KategoriRol();
                    ktr.RolID      = RolID;
                    ktr.KategoriID = item.ID;
                    db.KategoriRol.Add(ktr);
                    db.SaveChanges();
                }
                #endregion
                //Sayfayı geri yükle
                TempData["GenelMesaj"] = "Profil yetkileri başarılı bir şekilde güncellenmiştir.";
                return(RedirectToAction("ProfilListesi"));
            }
            catch (Exception)
            {
                return(Redirect("/Admin/Hata"));
            }
        }