Exemple #1
0
        public async Task <IActionResult> ChangeEmail([FromForm] ChangeEmailViewModel formData)
        {
            var checkResult = await CheckUserRegisteredOkAsync();

            if (checkResult != null)
            {
                return(checkResult);
            }

            // return to page if there are errors
            if (ModelState.IsValid == false)
            {
                return(View(nameof(ChangeEmail), formData));
            }

            // initialize change email process
            var errors = await ChangeEmailService.InitiateChangeEmailAsync(formData.EmailAddress, VirtualUser);

            if (errors.ErrorCount > 0)
            {
                ModelState.Merge(errors);
                return(View(nameof(ChangeEmail), formData));
            }

            // confirm email change link sent
            var changeEmailModel = new ChangeEmailStatusViewModel
            {
                OldEmail = VirtualUser.EmailAddress, NewEmail = formData.EmailAddress
            };

            // go to pending page
            return(RedirectToAction(nameof(ChangeEmailPending), new { data = Encryption.EncryptModel(changeEmailModel) }));
        }
Exemple #2
0
        public async Task <IActionResult> CompleteChangeEmailAsync(string code)
        {
            var checkResult = await CheckUserRegisteredOkAsync();

            if (checkResult != null)
            {
                return(checkResult);
            }

            // complete email change
            var errors = await ChangeEmailService.CompleteChangeEmailAsync(code, VirtualUser);

            if (errors.ErrorCount > 0)
            {
                // show failed reason
                ModelState.Merge(errors);
                return(View("ChangeEmailFailed"));
            }

            // show success
            var changeEmailCompletedModel = new ChangeEmailStatusViewModel {
                NewEmail = VirtualUser.EmailAddress
            };

            return(View("ChangeEmailCompleted", changeEmailCompletedModel));
        }