Esempio n. 1
0
        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));
            }
        }
Esempio n. 2
0
        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));
        }