Exemple #1
0
        // GET: AdminManagment/Edit/5
        public ActionResult Edit(string id)
        {
            if (id != null)
            {
                // Check if we have some store modelstate
                if (TempData["ViewData"] != null)
                {
                    ViewData = (ViewDataDictionary)TempData["ViewData"];
                }

                ViewBag.Roles = GetAdminRoles();
                PaskolUser user = UserManager.Users.Where(u => u.Id == id).FirstOrDefault();

                // Save url to geet back to after action ends
                ViewBag.ReturnURL = Request.UrlReferrer;
                var mev = new ManagersEditView(user);
                mev.Roles = RoleManager.Roles.Where(r => mev.Roles.Any(ur => ur == r.Id)).Select(r => r.Name).ToList();
                return(View(mev));
            }

            return(RedirectToAction("Index"));
        }
Exemple #2
0
        public async Task <ActionResult> Edit(ManagersEditView model, string ReturnURL)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    PaskolUser user = await UserManager.FindByIdAsync(model.UserID);

                    if (user == null)
                    {
                        ModelState.AddModelError("", "משתמש לא נמצא");
                    }
                    else
                    {
                        user.UserName = model.Name;
                        user.Email    = model.Email;
                        user.Note     = model.Note;

                        // User cant change permission to his self
                        if (user.Id != User.Identity.GetUserId())
                        {
                            // Before change role names
                            IEnumerable <string> BeforeChange = user.Roles
                                                                .Select(r => RoleManager.Roles.SingleOrDefault(rn => rn.Id == r.RoleId).Name);

                            model.Roles = model.Roles ?? new List <string>();
                            // Ids to add
                            IEnumerable <string> RoleIdsToAdd = model.Roles.Except(BeforeChange);
                            // Ids to delete
                            IEnumerable <string> RoleIdsToDelete = BeforeChange.Except(model.Roles);

                            IdentityResult result = null;

                            //Delete and add roles
                            foreach (string roleName in RoleIdsToAdd.ToList())
                            {
                                result = await UserManager.AddToRoleAsync(user.Id, roleName);

                                if (!result.Succeeded)
                                {
                                    return(View("Error", result.Errors));
                                }
                            }

                            foreach (string roleName in RoleIdsToDelete.ToList())
                            {
                                result = await UserManager.RemoveFromRoleAsync(user.Id, roleName);

                                if (!result.Succeeded)
                                {
                                    return(View("Error", result.Errors));
                                }
                            }
                        }

                        if (await UpdateUserAsync(user, model.Password))
                        {
                            return(RedirectToAction("index"));
                        }
                    }
                }
                catch (Exception e)
                {
                    ModelState.AddModelError("", e.Message);
                }
            }

            TempData["ViewData"] = ViewData;

            return(RedirectToAction("Edit", new { id = model.UserID }));
        }