public async Task <bool> forgotPasswordAsync(string email, string securityQuestion, string securityQuestionReply)
        {
            var myuser = await _context.Users.FirstOrDefaultAsync(x => x.Email == email);

            if (myuser == null)
            {
                throw new KeyNotFoundException();
            }
            else
            {
                if (myuser.SecurityQuestion.Equals(securityQuestion) &&
                    myuser.SecurityQuestionAnswer.Equals(securityQuestionReply))
                {
                    if (myuser.IsEmailVerified ?? false)
                    {
                        var tempPassword = Authentication.generateTempPassord();
                        myuser.PasswordHash        = Authentication.generateUserHash(tempPassword);
                        myuser.IsTemporaryPassword = true;
                        EmailOperations.sendPasswordChangeEmailAsync(tempPassword, myuser.Name, myuser.Email);
                        _context.Update(myuser);
                        await _context.SaveChangesAsync();

                        return(true);
                    }
                    else
                    {
                        var token = Authentication.generateEmailTokenHash();
                        myuser.VerificationToken       = token;
                        myuser.VerificationTokenExpiry = DateTime.UtcNow.AddDays(1);
                        EmailOperations.sendVerificationEmailAsync(myuser.Name, myuser.Email, token);
                    }
                }
                return(false);
            }
        }