Esempio n. 1
0
        public async Task <AccountResponse> ChangeEmailAsync(User user, EmailChangeViewModel emailChangeViewModel)
        {
            if (user != null)
            {
                if (emailChangeViewModel.Email != null && emailChangeViewModel.ConfirmEmail != null)
                {
                    if (emailChangeViewModel.Email.Equals(emailChangeViewModel.ConfirmEmail))
                    {
                        var emailChangeToken = await userManager.GenerateChangeEmailTokenAsync(user, emailChangeViewModel.Email);

                        var    baseUrl          = "http://localhost:44338/api/user/emailChangeConfirm";
                        string emailCallbackUrl = baseUrl + String.Format("/?userId={0}&email={1}&token={2}", user.Id, emailChangeViewModel.Email, emailChangeToken);
                        string message          = "Click on the link to confirm email change: " + emailCallbackUrl;
                        await emailSender.SendEmailAsync(user.Email, "Email change link", message);

                        return(new AccountResponse {
                            ResponseStatus = Status.Success, Message = "The email change link was sent to your email"
                        });
                    }
                    return(new AccountResponse {
                        ResponseStatus = Status.Error, Message = "Emails do not match"
                    });
                }
                return(new AccountResponse {
                    ResponseStatus = Status.Error, Message = "Request is missing some data"
                });
            }
            return(new AccountResponse {
                ResponseStatus = Status.Error, Message = "User not found"
            });
        }
        public ActionResult ChangeEmail(EmailChangeViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = _repositoryServices.GetUserByName(User.Identity.Name);

                user.Email = model.Email;
                _accountManagementServices.ChangeUserEmail(user);

                return(View("Success"));
            }
            return(View(model));
        }
Esempio n. 3
0
        public async Task <IActionResult> RequestEmailChange([FromBody] EmailChangeViewModel emailChangeViewModel)
        {
            if (emailChangeViewModel != null)
            {
                var user = await userManager.GetUserAsync(HttpContext.User);

                AccountResponse response = await accountServices.ChangeEmailAsync(user, emailChangeViewModel);

                if (response.ResponseStatus == Status.Success)
                {
                    return(Ok(response.Message));
                }
                else
                {
                    return(StatusCode(StatusCodes.Status400BadRequest, response.Message));
                }
            }
            return(StatusCode(StatusCodes.Status400BadRequest));
        }