예제 #1
0
        public async Task <IActionResult> EditUser(Guid id, AdminEditUserViewModel model)
        {
            ICreateEditEntityDto castedModel = (ICreateEditEntityDto)model;

            castedModel.Area       = "Admin";
            castedModel.Controller = this.GetType().Name.Replace("Controller", string.Empty);
            castedModel.Action     = "Edit";
            castedModel.EntityName = "User";
            this.ViewData[BreadcrumbEntityNamePluralPlaceholder] = "Users";
            this.ModelState.Remove("Area");
            this.ModelState.Remove("Controller");
            this.ModelState.Remove("Action");
            this.ModelState.Remove("EntityName");

            if (this.ModelState.IsValid)
            {
                if (await this.identityService.EditUserAsync(model.Id, model.Email, model.FirstName, model.LastName))
                {
                    this.TempData["SuccessStatusMessage"] = "User data has been successfully edited.";
                    return(this.RedirectToAction("GetAll", this.ControllerName));
                }
            }

            return(this.View("AbstractViews/Edit", castedModel));
        }
예제 #2
0
        public async Task <ActionResult> Edit(AdminEditUserViewModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var Db   = new ApplicationDbContext();
                    var id   = User.Identity.GetUserId();
                    var user = Db.Users.First(u => u.Email == model.Email);

                    if (!String.IsNullOrEmpty(model.NewPassword))
                    {
                        user.PasswordHash = new PasswordHasher().HashPassword(model.NewPassword);
                    }

                    // Update the user data:
                    user.FullName  = model.FullName;
                    user.Email     = model.Email;
                    user.Alias     = model.Alias;
                    user.Suspended = model.Suspended;

                    Db.Entry(user).State = System.Data.Entity.EntityState.Modified;
                    await Db.SaveChangesAsync();

                    return(RedirectToAction("Index", "Account", new { area = "Admin" }));
                }
            }
            catch (DataException)
            {
                //Log the error (uncomment dex variable name and add a line here to write a log.
                ModelState.AddModelError("", "Unable to save userId. Try again, and if the problem persists submit bug report.");
            }
            // If we got this far, something failed, redisplay form
            return(View(model));
        }
예제 #3
0
        public IActionResult EditUser(AdminEditUserViewModel viewModel)
        {
            if (_userService.GetOrCreateUser(User.Identity.Name).AuthLevel == Models.User.AuthType.Admin)
            {
                if (ModelState.IsValid)
                {
                    User user = _userRepository.Get(viewModel.ID);
                    user.ImplantID = viewModel.ImplantID;
                    user.Pin       = viewModel.Pin;
                    user.PSN       = viewModel.PSN;
                    user.AuthLevel = viewModel.AuthLevel;
                    user.Email     = viewModel.Email;
                    user.IsDonator = viewModel.IsDonator;
                    if (user.AuthLevel == Models.User.AuthType.Admin)
                    {
                        user.Bio        = viewModel.Bio;
                        user.ProfilePic = viewModel.ProfilePic;
                    }

                    _userRepository.Update(user);

                    return(RedirectToAction("ManageUsers", "Admin", new { changeAction = "updated" }));
                }
                return(View());
            }
            else
            {
                return(RedirectToAction("Index", "Admin", new { changeAction = "unauth" }));
            }
        }
        public async Task <ActionResult> EditUser(string id, AdminEditUserViewModel model)
        {
            try
            {
                //find the user by id and pass it to edit column
                var user = UserManager.FindById(id);
                //with the user found we get its the details
                model.Email = user.Email;
                var roles = await UserManager.GetRolesAsync(user.Id);

                model.UserName = user.UserName;
                foreach (var role in roles)
                {
                    model.RoleName = role;
                }

                AdmnUserName  = model.UserName;
                AdmnUserEmail = model.Email;
                AdmnUserRole  = model.RoleName;
                return(RedirectToAction("EditUser"));
            }
            catch
            {
                return(View());
            }
        }
        public async Task <ActionResult> SaveUser(string id, AdminEditUserViewModel model)
        {
            try
            {
                AdmnUserRole = model.RoleName;
                AdmnUserName = model.UserName;

                //we find the user's ID by search the database with username
                var userid = context.Users.Where(x => x.UserName == AdmnUserName).Select(x => x.Id).FirstOrDefault();

                //with the user id we get user roles and create a string array of roles
                var user = await UserManager.FindByIdAsync(userid);

                var userRole = await UserManager.GetRolesAsync(user.Id);

                string[] roles = new string[userRole.Count];
                userRole.CopyTo(roles, 0);

                //we remove any existing roles of the user
                await UserManager.RemoveFromRolesAsync(user.Id, roles);

                //we asign new role
                await UserManager.AddToRoleAsync(user.Id, AdmnUserRole);

                return(RedirectToAction("Index", "Administrator", new { Message = ManageMessageId.UserUpdate }));
            }
            catch
            {
                return(RedirectToAction("Index", "Administrator", new { Message = ManageMessageId.Error }));
            }
        }
예제 #6
0
        //[Authorize(Roles = "Admin")]
        public ActionResult Index(string fullName, string alias, string email, string role)
        {
            var Db       = new ApplicationDbContext();
            var allRoles = Db.Roles;
            //var users = Db.Users;
            var users = from u in Db.Users
                        select u;

            //search for user
            if (!String.IsNullOrEmpty(fullName))
            {
                fullName = fullName.Trim();
                users    = users.Where(u => u.FullName.ToUpper().Contains(fullName.ToUpper()));
            }
            if (!String.IsNullOrEmpty(alias))
            {
                alias = alias.Trim();
                users = users.Where(u => u.Alias.ToUpper().Contains(alias.ToUpper()));
            }
            if (!String.IsNullOrEmpty(email))
            {
                email = email.Trim();
                users = users.Where(u => u.Email.ToUpper().Contains(email.ToUpper()));
            }

            //order users and limit
            users = users.Take(10).OrderBy(u => u.FullName);

            var usersList = new List <AdminEditUserViewModel>();

            foreach (var user in users.ToList())
            {
                var u = new AdminEditUserViewModel(user);
                usersList.Add(u);
            }
            //search for role
            if (!String.IsNullOrEmpty(role))
            {
                role = role.Trim();
                // usersList = usersList.Where(u=>u.UserRoles.Where(usr=>usr.RoleName.Contains(role.ToUpper())));
                var found = from pple in usersList
                            from guys in pple.UserRoles
                            where (guys.RoleName.ToUpper().Contains(role.ToUpper()))
                            select pple;
                usersList = found.ToList();
            }
            return(View(usersList));
        }
예제 #7
0
        public async Task <ActionResult> Edit(string id)
        {
            ApplicationUser user = await UserManager.FindByIdAsync(id);

            AdminEditUserViewModel userEditVM = new AdminEditUserViewModel(user);

            if (user != null)
            {
                //return View(user);
                return(View(userEditVM));
            }
            else
            {
                return(RedirectToAction("Index"));
            }
        }
예제 #8
0
        //[Authorize(Roles = "Admin")]
        public ActionResult Edit(string user, ManageMessageId?Message = null)
        {
            var Db = new ApplicationDbContext();

            if (user == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var dbUser = Db.Users.First(u => u.UserName == user);

            if (dbUser == null)
            {
                return(HttpNotFound());
            }
            var model = new AdminEditUserViewModel(dbUser);

            ViewBag.MessageId = Message;
            return(View(model));
        }
예제 #9
0
        public ActionResult EditUser(string id)
        {
            if (id == null)
            {
                return(RedirectToAction("Users"));
            }
            IUserRepository repo  = RepoFactory.CreateUserRepo();
            var             user  = repo.GetUserById(id);
            var             model = new AdminEditUserViewModel()
            {
                Email     = user.Email,
                FirstName = user.FirstName,
                Id        = User.Identity.GetUserId(),
                Role      = user.Role,
                LastName  = user.LastName
            };

            return(View(model));
        }
예제 #10
0
        public ActionResult EditUser(AdminEditUserViewModel modelUser)
        {
            if (modelUser.ConfirmPassword != modelUser.Password)
            {
                ModelState.AddModelError("", "confirm password did not match");
                return(View(modelUser));
            }
            if (ModelState.IsValid)
            {
                var     userMgr = HttpContext.GetOwinContext().GetUserManager <UserManager <AppUser> >();
                AppUser newUser = new AppUser()
                {
                    Id       = modelUser.Id,
                    Email    = modelUser.Email,
                    UserName = modelUser.Email
                };
                try
                {
                    userMgr.Update(newUser);
                }
                catch { }

                var identity = new ClaimsIdentity(newUser.Id);

                IUserRepository repo = RepoFactory.CreateUserRepo();

                repo.UpDateFirstLastName(modelUser.LastName, modelUser.FirstName, modelUser.Id);

                var response = userMgr.ChangePassword(modelUser.Id, modelUser.OldPassword, modelUser.ConfirmPassword);
                if (response.Succeeded)
                {
                    return(RedirectToAction("Users", "Admin"));
                }
                foreach (string error in response.Errors)
                {
                    ModelState.AddModelError("", error);
                }
            }

            return(View(modelUser));
        }
예제 #11
0
        //[Authorize(Roles = "Admin")]
        public ActionResult Delete(string user = null, bool?deleteError = false)
        {
            var Db = new ApplicationDbContext();

            if (user == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            if (deleteError.GetValueOrDefault())
            {
                ViewBag.ErrorMessage = "Delete failed. Please try again, and if the problem persists send us a bug report.";
            }
            var dbUser = Db.Users.First(u => u.UserName == user);

            if (dbUser == null)
            {
                return(HttpNotFound());
            }
            var model = new AdminEditUserViewModel(dbUser);

            return(View(model));
        }
        public async Task <ActionResult> EditUser(string id)
        {
            var UserManager = AccountController.GetUserManager(HttpContext);
            var user        = await UserManager.FindByIdAsync(id);

            var model = new AdminEditUserViewModel
            {
                UserId      = id,
                UserName    = user.UserName,
                FirstName   = user.FirstName,
                LastName    = user.LastName,
                Email       = user.Email,
                Role        = UserManager.GetRoles(id).FirstOrDefault(),
                RoleOptions = from r in ApplicationDbContext.Create().Roles
                              select new SelectListItem
                {
                    Value = r.Name,
                    Text  = r.Name
                },
            };

            return(View(model));
        }
예제 #13
0
        public async Task <ActionResult> Edit([Bind(Include = "UserName, Email,Id")] AdminEditUserViewModel editUser, params string[] selectedRole)
        {
            if (ModelState.IsValid)
            {
                var user = await UserManager.FindByIdAsync(editUser.Id);

                if (user == null)
                {
                    return(HttpNotFound());
                }

                user.UserName = editUser.UserName;
                user.Email    = editUser.Email;

                var userRoles = await UserManager.GetRolesAsync(user.Id);

                selectedRole = selectedRole ?? new string[] { };

                var result = await UserManager.AddToRolesAsync(user.Id, selectedRole.Except(userRoles).ToArray <string>());

                if (!result.Succeeded)
                {
                    ModelState.AddModelError("", result.Errors.First());
                    return(View());
                }
                result = await UserManager.RemoveFromRolesAsync(user.Id, userRoles.Except(selectedRole).ToArray <string>());

                if (!result.Succeeded)
                {
                    ModelState.AddModelError("", result.Errors.First());
                    return(View());
                }
                return(RedirectToAction("Index"));
            }
            ModelState.AddModelError("", "Something failed.");
            return(View());
        }
        public async Task <ActionResult> EditUser(AdminEditUserViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var UserManager = AccountController.GetUserManager(HttpContext);

            // update name and/or email
            var user = UserManager.FindById(model.UserId);

            if (user == null)
            {
                return(RedirectToAction("Users", "Admin", new { Message = $"User {model.UserId} does not exist" }));
            }
            if (!model.FirstName.IsNullOrWhiteSpace())
            {
                user.FirstName = model.FirstName;
            }
            if (!model.LastName.IsNullOrWhiteSpace())
            {
                user.LastName = model.LastName;
            }
            if (!model.UserName.IsNullOrWhiteSpace())
            {
                user.UserName = model.UserName;
            }
            if (!model.Email.IsNullOrWhiteSpace())
            {
                user.Email = model.Email;
            }
            await UserManager.UpdateAsync(user);

            // update password
            if (!model.NewPassword.IsNullOrWhiteSpace() && model.NewPassword.Equals(model.ConfirmPassword))
            {
                UserManager.RemovePassword(model.UserId);
                var result = UserManager.AddPassword(model.UserId, model.NewPassword);
                if (result.Succeeded)
                {
                    return(RedirectToAction("Users", "Admin", new { Message = "User Successfully Updated" }));
                }

                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError("", error);
                }

                return(View(model));
            }

            // update role
            var roles = await UserManager.GetRolesAsync(model.UserId);

            await UserManager.RemoveFromRolesAsync(model.UserId, roles.ToArray());

            await UserManager.AddToRoleAsync(model.UserId, model.Role);

            return(RedirectToAction("Users", "Admin", new { Message = "User Successfully Updated" }));
        }