コード例 #1
0
ファイル: AuthController.cs プロジェクト: ogbuifymark/IWash
        public async Task <IActionResult> ConfirmEmail(EmailConfirmationModel model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    throw new InvalidOperationException("Input Parameters Not In Correct Format");
                }

                var email = await EmailConfirmationService.ConfirmEmail(model.UserId, model.Token);

                string redirectUrl = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host.Value}/EmailConfirmationSuccessful";
                EmailConfirmationResponse emailConfirmationResponse = new EmailConfirmationResponse
                {
                    Email = email,
                    ConfirmationStatus = EmailConfirmation.CONFIRMED
                };

                return(Ok(emailConfirmationResponse, "Email Confirmed Successfully", ResponseStatus.OK));
            }
            catch (InvalidOperationException ex)
            {
                EmailConfirmationResponse emailConfirmationResponse = new EmailConfirmationResponse
                {
                    ConfirmationStatus = EmailConfirmation.UNCONFIRMED
                };

                var user = await UserManager.FindByIdAsync(model.UserId);

                if (user != null)
                {
                    emailConfirmationResponse.Email = user.Email;
                }

                return(BadRequest(emailConfirmationResponse, ex.Message, ResponseStatus.APP_ERROR));
            }
            catch (Exception ex)
            {
                EmailConfirmationResponse emailConfirmationResponse = new EmailConfirmationResponse
                {
                    ConfirmationStatus = EmailConfirmation.UNCONFIRMED
                };

                var user = await UserManager.FindByIdAsync(model.UserId);

                if (user != null)
                {
                    emailConfirmationResponse.Email = user.Email;
                }



                return(BadRequest(emailConfirmationResponse, "Oops Something Went Wrong", ResponseStatus.FATAL_ERROR));
            }
        }
コード例 #2
0
        public ActionResult <EmailConfirmationResponse> PostConfirmEmail(string token)
        {
            try
            {
                EmailConfirmationResponse confirmation = new EmailConfirmationResponse();
                var decryptedToken = security.DecryptTokenObject(token);

                var user = context.Users.Where(u => u.EmailAddress == decryptedToken.EmailAddress).FirstOrDefault();

                if (user.ConfirmationToken != decryptedToken.Token)
                {
                    confirmation.Messages.Add("Unauthorized");
                    confirmation.Success = false;

                    return(confirmation);
                }

                if (user.ConfirmationToken == decryptedToken.Token && DateTime.Now < user.ConfirmationTokenExpires)
                {
                    user.EmailConfirmed           = true;
                    user.ConfirmationToken        = security.GenerateConfirmationToken();
                    user.ConfirmationTokenExpires = DateTime.Now.AddMinutes(security.ConfirmationTokenExpiresMinutes());
                    context.SaveChanges();

                    confirmation.Token   = security.EncryptTokenObject(user.EmailAddress, user.ConfirmationToken);
                    confirmation.Success = true;
                    confirmation.Messages.Add("Email Confirmed");
                    return(confirmation);
                }
                else
                {
                    confirmation.Token   = "";
                    confirmation.Success = false;
                    confirmation.Messages.Add("Link Expired.  Please contact the system Administrator.");
                    return(confirmation);
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }