public async Task <IActionResult> SubmitForgotPassword(ForgotPasswordModel model, CancellationToken cancellationToken = default) { if (!ModelState.IsValid) { ViewBag.WarningMessage = Messages.InvalidData; return(View("ForgotPassword", model)); } try { var requestResetPasswordModel = new GoblinIdentityRequestResetPasswordModel { Email = model.Email }; var resetPasswordToken = await GoblinIdentityHelper.RequestResetPasswordAsync(requestResetPasswordModel, cancellationToken); var resetPasswordMessage = $"Your reset password code is {resetPasswordToken.SetPasswordToken}."; if (resetPasswordToken.SetPasswordTokenExpireTime.HasValue) { resetPasswordMessage += $"<br />Code will expire at {resetPasswordToken.SetPasswordTokenExpireTime.Value.ToString("f")}"; } var newEmailModel = new GoblinNotificationNewEmailModel { ToEmails = new List <string> { model.Email }, Subject = $"{SystemSetting.Current.ApplicationName} | Reset Password Code", HtmlBody = resetPasswordMessage }; await GoblinNotificationHelper.SendAsync(newEmailModel, cancellationToken); return(View("ResetPassword", new ResetPasswordModel { Email = model.Email })); } catch (GoblinException e) { ViewBag.ErrorMessage = e.ErrorModel.Message; return(View("ForgotPassword", model)); } catch (Exception e) { ViewBag.ErrorMessage = e.Message; return(View("ForgotPassword", model)); } }
public async Task <IActionResult> VerifyEmail(CancellationToken cancellationToken = default) { var updateIdentityModel = new GoblinIdentityUpdateIdentityModel { NewUserName = LoggedInUser <GoblinIdentityUserModel> .Current.Data.UserName, NewEmail = LoggedInUser <GoblinIdentityUserModel> .Current.Data.Email }; if (LoggedInUser <GoblinIdentityUserModel> .Current.Data.EmailConfirmedTime.HasValue) { ViewBag.ErrorMessage = "Your email already verified!"; return(View("Account", updateIdentityModel)); } try { var emailConfirmationModel = await GoblinIdentityHelper.RequestConfirmEmailAsync(LoggedInUser <GoblinIdentityUserModel> .Current.Data.Id, cancellationToken).ConfigureAwait(true); // Send Email var confirmEmailMessage = $"Your verify email code is {emailConfirmationModel.EmailConfirmToken}."; if (emailConfirmationModel.EmailConfirmTokenExpireTime.HasValue) { confirmEmailMessage += $"<br />Code will expire at {emailConfirmationModel.EmailConfirmTokenExpireTime.Value.ToString("f")}"; } var newEmailModel = new GoblinNotificationNewEmailModel { ToEmails = new List <string> { LoggedInUser <GoblinIdentityUserModel> .Current.Data.Email }, Subject = $"{SystemSetting.Current.ApplicationName} | Verify Your Email", HtmlBody = confirmEmailMessage }; await GoblinNotificationHelper.SendAsync(newEmailModel, cancellationToken); ViewBag.WarningMessage = "Please check your email inbox to get the Verify Code."; return(View()); } catch (GoblinException e) { ViewBag.ErrorMessage = e.ErrorModel.Message; } catch (Exception e) { ViewBag.ErrorMessage = e.Message; } return(View("Account", updateIdentityModel)); }