コード例 #1
0
        public async Task <ActionResult> Manage(ManageUserViewModel model)
        {
            bool hasPassword = HasPassword();

            ViewBag.HasLocalPassword = hasPassword;
            ViewBag.ReturnUrl        = Url.Action("Manage");

            if (hasPassword)
            {
                if (ModelState.IsValid)
                {
                    IdentityResult result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword, model.NewPassword);

                    if (result.Succeeded)
                    {
                        var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());
                        await SignInAsync(user, isPersistent : false);

                        return(RedirectToAction("Manage", new { Message = ManageMessageId.ChangePasswordSuccess }));
                    }
                    else
                    {
                        AddErrors(result);
                    }
                }
            }
            else
            {
                // User does not have a password so remove any validation errors caused by a missing OldPassword field
                ModelState state = ModelState["OldPassword"];
                if (state != null)
                {
                    state.Errors.Clear();
                }

                if (ModelState.IsValid)
                {
                    IdentityResult result = await UserManager.AddPasswordAsync(User.Identity.GetUserId(), model.NewPassword);

                    if (result.Succeeded)
                    {
                        return(RedirectToAction("Manage", new { Message = ManageMessageId.SetPasswordSuccess }));
                    }
                    else
                    {
                        AddErrors(result);
                    }
                }
            }

            ApplicationUser usertmp = db.Users.FirstOrDefault <ApplicationUser>(i => i.UserName == User.Identity.Name);

            ViewData["ChangeSettingsModel"] = new ChangeAccountViewModel {
                PictureUrl = usertmp.ImageUrl, TimeZoneInfo = usertmp.TimeZoneInfoId
            };

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
コード例 #2
0
        //
        // GET: /Account/Manage
        public ActionResult Manage(ManageMessageId?message)
        {
            ApplicationUser user = db.Users.FirstOrDefault <ApplicationUser>(i => i.UserName == User.Identity.Name);

            //ViewBag.ChangeSettingsModel = new ChangeAccountViewModel { PictureUrl = user.ImageUrl, TimeZoneInfo = user.TimeZoneInfoId };
            ViewData["ChangeSettingsModel"] = new ChangeAccountViewModel {
                PictureUrl = user.ImageUrl, TimeZoneInfo = user.TimeZoneInfoId
            };
            ViewBag.StatusMessage =
                message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
                : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
                : message == ManageMessageId.RemoveLoginSuccess ? "The external login was removed."
                : message == ManageMessageId.Error ? "An error has occurred."
                : "";
            ViewBag.HasLocalPassword = HasPassword();
            ViewBag.ReturnUrl        = Url.Action("Manage");
            return(View());
        }
コード例 #3
0
        public ActionResult Change(ChangeAccountViewModel model)
        {
            if (ModelState.IsValid)
            {
                ApplicationUser user = db.Users.FirstOrDefault <ApplicationUser>(i => i.UserName == User.Identity.Name);

                if (user == null)
                {
                    return(View("Error"));
                }

                user.ImageUrl       = model.PictureUrl;
                user.TimeZoneInfoId = model.TimeZoneInfo;

                db.SaveChangesAsync();

                return(RedirectToAction("Index", "Home"));
            }

            // If we got this far, something failed, redisplay form
            return(RedirectToAction("Manage", "Account"));
        }
コード例 #4
0
        public async Task <ActionResult> ChangeAccount(ChangeAccountViewModel cavm)
        {
            //if user forgot a field, send them back to
            //change password page to try again

            AppUser userLoggedIn = await _userManager.FindByNameAsync(User.Identity.Name);

            if (ModelState.IsValid == false && cavm.NewBirthday != default)
            {
                return(View(cavm));
            }

            //Find the logged in user using the UserManager

            String userType = "";

            if (_userManager.IsInRoleAsync(userLoggedIn, "Employee").Result)
            {
                userType = "Employee";
            }
            else if (_userManager.IsInRoleAsync(userLoggedIn, "Manager").Result)
            {
                userType = "Manager";
            }
            else
            {
                userType = "Customer";
            }

            if (cavm.NewBirthday != default)
            {
                if (userType == "Customer" && cavm.Age < 13)
                {
                    ViewBag.BirthdayErrorMessage = "You must be at least 13 years old to own an account";
                    return(View(cavm));
                }

                if (userType == "Manager" && cavm.Age < 18)
                {
                    ViewBag.BirthdayErrorMessage = "You must be at least 18 years old to own a manager account";
                    return(View(cavm));
                }

                if (userType == "Employee" && cavm.Age < 18)
                {
                    ViewBag.BirthdayErrorMessage = "You must be at least 18 years old to own an employee account";
                    return(View(cavm));
                }
            }
            //Attempt to change the password using the UserManager
            try
            {
                //update the scalar properties
                if (cavm.NewBirthday != default)
                {
                    userLoggedIn.Birthday = cavm.NewBirthday;
                }
                if (cavm.NewPhoneNumber != null)
                {
                    userLoggedIn.PhoneNumber = cavm.NewPhoneNumber;
                }
                if (cavm.NewAddress != null)
                {
                    userLoggedIn.Address = cavm.NewAddress;
                }
                if (cavm.NewCity != null)
                {
                    userLoggedIn.City = cavm.NewCity;
                }
                if (cavm.NewState != null)
                {
                    userLoggedIn.State = cavm.NewState;
                }
                if (cavm.NewZip != null)
                {
                    userLoggedIn.Zip = cavm.NewZip;
                }

                //save changes
                _context.Update(userLoggedIn);
                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                return(View("Error", new String[] { "There was a problem editing this record", ex.Message }));
            }


            return(RedirectToAction("Index"));
        }
コード例 #5
0
        public async Task <ActionResult> ChangeOtherAccount(String id, ChangeAccountViewModel cavm)
        {
            //if user forgot a field, send them back to
            //change password page to try again

            //AppUser userLoggedIn = await _userManager.FindByNameAsync(User.Identity.Name);

            AppUser user = _context.Users //.FirstOrDefault(u => u.UserName == id);
                           .Where(u => u.Email == id)
                           .Include(mo => mo.MovieOrders)
                           .ThenInclude(mo => mo.Tickets)
                           .ThenInclude(mo => mo.MovieShowing)
                           .ThenInclude(mo => mo.Movie)
                           .Include(mo => mo.OrdersReceived)
                           .FirstOrDefault();

            String userType = "";

            if (_userManager.IsInRoleAsync(user, "Employee").Result)
            {
                userType = "Employee";
            }
            else if (_userManager.IsInRoleAsync(user, "Manager").Result)
            {
                userType = "Manager";
            }
            else
            {
                userType = "Customer";
            }

            if (ModelState.IsValid == false && cavm.NewBirthday != default)
            {
                return(View(cavm));
            }

            //Find the logged in user using the UserManager
            if (cavm.NewBirthday != default)
            {
                if (userType == "Customer" && cavm.Age < 13)
                {
                    ViewBag.BirthdayErrorMessage = "Customers must be at least 13 years old to own an account";
                    return(View(cavm));
                }

                if (userType == "Manager" && cavm.Age < 18)
                {
                    ViewBag.BirthdayErrorMessage = "Employees must be at least 18 years old to own an account";
                    return(View(cavm));
                }

                if (userType == "Employee" && cavm.Age < 18)
                {
                    ViewBag.BirthdayErrorMessage = "Employees must be at least 18 years old to own an account";
                    return(View(cavm));
                }
            }

            //Attempt to change the password using the UserManager
            try
            {
                //update the scalar properties
                if (cavm.NewFirst != default)
                {
                    user.FirstName = cavm.NewFirst;
                }
                if (cavm.NewMiddle != default)
                {
                    user.MiddleInitial = cavm.NewMiddle;
                }
                if (cavm.NewLast != default)
                {
                    user.LastName = cavm.NewLast;
                }
                if (cavm.NewBirthday != default)
                {
                    user.Birthday = cavm.NewBirthday;
                }
                if (cavm.NewPhoneNumber != null)
                {
                    user.PhoneNumber = cavm.NewPhoneNumber;
                }
                if (cavm.NewAddress != null)
                {
                    user.Address = cavm.NewAddress;
                }
                if (cavm.NewCity != null)
                {
                    user.City = cavm.NewCity;
                }
                if (cavm.NewState != null)
                {
                    user.State = cavm.NewState;
                }
                if (cavm.NewZip != null)
                {
                    user.Zip = cavm.NewZip;
                }

                //save changes
                _context.Update(user);
                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                return(View("Error", new String[] { "There was a problem editing this record", ex.Message }));
            }


            return(RedirectToAction("SeeAll"));
        }