public async Task <ActionResult> ResetEmail(ResetEmailViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            var user = await UserManager.FindByIdAsync(model.Id);

            if (user == null)
            {
                return(RedirectToAction("ResetPasswordConfirmation", "Account"));
            }
            user.Email = model.Email;
            //  var code = await UserManager.GeneratePasswordResetTokenAsync(user.Id);
            //    var result = await UserManager.ResetPasswordAsync(user.Id, code, model.Password);
            var res = UserManager.Update(user);

            if (res.Succeeded)
            {
                if (model.Type == "admin")
                {
                    return(RedirectToAction("Index", "Admin"));
                }
                if (model.Type == "user")
                {
                    return(RedirectToAction("UserPage", "User"));
                }
            }
            // AddErrors(result);
            return(View());
        }
Exemple #2
0
        public IActionResult changeemail(ResetEmailViewModel model)
        {
            ViewData["Page"] = "change-email";
            if (!ModelState.IsValid)
            {
                return(View("~/Views/Home/index.cshtml", model));
            }

            // validate id and key
            if (UserBLL.Validate_User_Key(_context, model.Id, model.Code))
            {
                // update email
                UserBLL.Update_Field_Id(_context, model.Id, "email", model.Email);

                var user = SiteConfig.userManager.FindByIdAsync(model.Id).Result;
                if (user != null)
                {
                    _emailSender.ChangeEmailResetCompletedAsync(_context, user.Email, user.UserName);
                }
            }
            else
            {
                throw new ApplicationException(SiteConfig.generalLocalizer["_email_reset_failed"].Value);
            }

            ViewData["Page"] = "signin";
            return(RedirectToAction(nameof(HomeController.Index), "Home"));
        }
        public async Task <IActionResult> ChangeEmail(ResetEmailViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var user = await _userManager.FindByIdAsync(viewModel.UserId);

            if (user == null)
            {
                return(BadRequest("Could not find User"));
            }

            var result = await _userManager.ChangeEmailAsync(user, viewModel.NewEmail, viewModel.Token);

            var resultUserNameChange = await _userManager.SetUserNameAsync(user, viewModel.NewEmail);

            if (result.Succeeded && resultUserNameChange.Succeeded)
            {
                return(Ok());
            }

            return(BadRequest(result.Succeeded ? resultUserNameChange.Errors : result.Errors));
        }
        public IActionResult ResetEmail(ResetEmailViewModel r)
        {
            if (GlobalStatic.userID == null)
            {
                return(View("Index"));
            }

            List <User> Users = context.Users.ToList();

            foreach (User user in Users)
            {
                if (user.UserId == GlobalStatic.userID)
                {
                    // this is the right user to update
                    context.Users.Remove(user);
                    context.SaveChanges();

                    user.Email = r.Email;
                    context.Users.Add(user);
                    context.SaveChanges();

                    GlobalStatic.Email = r.Email;

                    return(View("Profile", new ProfileViewModel
                    {
                        FirstName = GlobalStatic.FirstName,
                        LastName = GlobalStatic.LastName,
                        Role = GlobalStatic.role,
                        Email = GlobalStatic.Email
                    }));
                }
            }

            return(View("Index"));
        }
        public IActionResult ResetEmail()
        {
            if (GlobalStatic.userID == null)
            {
                return(View("Index"));
            }
            ResetEmailViewModel revm = new ResetEmailViewModel
            {
                Email = GlobalStatic.Email
            };

            return(View(revm));
        }
Exemple #6
0
        public IActionResult changeemail(string code = null, string user = null)
        {
            ViewData["Page"] = "change-email";
            if (code == null || user == null)
            {
                throw new ApplicationException(SiteConfig.generalLocalizer["_email_reset_code_error"].Value);
            }
            var model = new ResetEmailViewModel {
                Code = code, Id = user
            };

            ViewData["Code"] = code;
            ViewData["Id"]   = user;
            return(View("~/Views/Home/index.cshtml"));
        }
Exemple #7
0
        public async Task <IActionResult> ResetEmail(ResetEmailViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await userManager.FindByIdAsync(User.Identity.GetUserId());

                var CheckPassword = await signInManager.CheckPasswordSignInAsync(user, model.Password, false);

                if (CheckPassword.Succeeded)
                {
                    user.Email    = model.NewEmail;
                    user.UserName = model.NewEmail;
                    await userManager.UpdateAsync(user);

                    return(RedirectToAction("MyAccount"));
                }
            }
            return(View(model));
        }
Exemple #8
0
        public async Task <IActionResult> ChangeEmail(ResetEmailViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = await _userManager.FindByIdAsync(viewModel.UserId);

            if (user is null)
            {
                return(BadRequest("Could not find User"));
            }

            var emailChange = await _userManager.ChangeEmailAsync(user, viewModel.NewEmail, viewModel.Token);

            if (!emailChange.Succeeded)
            {
                _log.LogError(string.Join(", ", emailChange.Errors.Select(e => $"{e.Code}: {e.Description}")));
                if (emailChange.Errors.Any(c => c.Description.Contains("DuplicateEmail")))
                {
                    return(BadRequest("Email is already bound to a user"));
                }
                return(BadRequest("Could not change email"));
            }

            var userNameChange = await _userManager.SetUserNameAsync(user, viewModel.NewEmail);

            if (!userNameChange.Succeeded)
            {
                _log.LogCritical("Changed email, but not username");
                return(BadRequest("Could not change userName to new email"));
            }

            return(RedirectToAction("ChangeEmailSuccess",
                                    new ChangeEmailSuccessViewModel {
                NewEmail = viewModel.NewEmail
            }));
        }
Exemple #9
0
        public async Task <IActionResult> ResetEmail(ResetEmailViewModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    //get userid from access token
                    string userId = User.Claims.First(c => c.Type == "UserID").Value;
                    var    user   = await _userManager.FindByIdAsync(userId);

                    var userstatus = user.UserStatus;
                    if (user != null && userstatus)
                    {
                        // If user has to activate his email to confirm his account, the use code listing below
                        if (!_userManager.IsEmailConfirmedAsync(user).Result)
                        {
                            return(Ok(new { status = StatusCodes.Status200OK, success = false, message = ResponseMessages.msgEmailNotConfirmed, userstatus }));
                        }

                        if (user.Otp == Convert.ToInt32(model.OldEmailOTP) && user.EmailOtp == Convert.ToInt32(model.NewEmailOTP))
                        {
                            user.UserName           = user.Newemail;
                            user.NormalizedUserName = user.Newemail;
                            user.Email                = user.Newemail;
                            user.NormalizedEmail      = user.Newemail;
                            user.Otp                  = null;
                            user.EmailOtp             = null;
                            user.EmailchangeConfirmed = true;
                            user.EmailchangeCounter   = (user.EmailchangeCounter == null || user.EmailchangeCounter == 0) ? 1 : user.EmailchangeCounter + 1;
                            user.UpdatedBy            = userId;
                            user.UpdatedDate          = DateTime.Now;
                            IdentityResult res = await _userManager.UpdateAsync(user);

                            if (res.Succeeded)
                            {
                                return(Ok(new { status = StatusCodes.Status200OK, success = true, message = ResponseMessages.msgEmailResetSuccess, userstatus }));
                            }
                            else
                            {
                                return(Ok(new { status = StatusCodes.Status400BadRequest, success = false, message = res.Errors.First().Code, userstatus = false }));
                            }
                        }
                        else
                        {
                            return(Ok(new { status = StatusCodes.Status400BadRequest, success = false, message = ResponseMessages.msgNewOldOtpInvalid, userstatus = false }));;
                        }
                    }
                    else
                    {
                        return(Ok(new { status = StatusCodes.Status404NotFound, success = false, message = ResponseMessages.msgCouldNotFoundAssociatedUser, userstatus }));
                    }
                }
                else
                {
                    return(Ok(new { status = StatusCodes.Status406NotAcceptable, success = false, message = ResponseMessages.msgParametersNotCorrect, userstatus = false }));
                }
            }
            catch (Exception ex)
            {
                return(Ok(new { status = StatusCodes.Status500InternalServerError, success = false, message = "something went wrong." + ex.Message, userstatus = false }));
            }
        }