public ActionResult ChangePassword(ChangePasswordModel p)
        {
            var isAvaliable = db.PassResets.Where(x => x.AutID == p.passReset.AutID).FirstOrDefault().isAvaliable;
            if (isAvaliable == true)
            {
                var userID = db.PassResets.Where(x => x.AutID == p.passReset.AutID).FirstOrDefault().UserID;
                User toBeUpdated = db.Users.Find(userID);
                User updated = new User();
                updated = toBeUpdated;
                updated.Password = p.user.Password;

                db.Entry(toBeUpdated).CurrentValues.SetValues(updated);
                db.SaveChanges();
                var value = db.PassResets.Where(x => x.AutID == p.passReset.AutID).FirstOrDefault();
                PassReset isAvaliabletoFalse = new PassReset();
                isAvaliabletoFalse = value;
                isAvaliabletoFalse.isAvaliable = false;
                db.Entry(value).CurrentValues.SetValues(isAvaliabletoFalse);
                db.SaveChanges();
                ViewBag.Message = "Your password has been successfully updated.";
                return View();
            }
            else ViewBag.Message = "Authentication code is already used.";
            return View();
        }
        public ActionResult ForgotPassword(User s)
        {
            var u = db.Users.Where(x => x.EMail == s.EMail).FirstOrDefault();

            if (u == null)
            {
                ModelState.AddModelError("", "Such user cannot be found.");
                return(View());
            }
            else
            {
                PassReset p = new PassReset();
                p.AutID       = Guid.NewGuid().ToString();
                p.isAvaliable = true;
                p.EMail       = u.EMail;
                p.UserID      = u.UserID;
                db.PassResets.Add(p);
                db.SaveChanges();


                GMailer.GmailUsername = "******";
                GMailer.GmailPassword = "******";

                GMailer mailer = new GMailer();
                mailer.ToEmail = u.EMail;
                mailer.Subject = "Password Reset";
                mailer.Body    = "A request to reset your password has been sent. <br> Please enter the code below to Change Password page to Change your Password. <br> <a href='localhost.com/Account/ChangePassword'>verify</a> Authentication Code :" + p.AutID;
                mailer.IsHtml  = true;
                mailer.Send();
                ViewBag.Message = "A confirmation mail has been sent to you.";
                // return RedirectToAction("Index", "Home");
            }
            return(View());
        }
Beispiel #3
0
        public IActionResult PasswordReset([FromBody] PassReset passReset)
        {
            var context   = this.services.GetService(typeof(HGTDbContext)) as HGTDbContext;
            var foundUser = context.HGTUsers.FirstOrDefault(x => x.Email.Equals(passReset.Email, StringComparison.InvariantCultureIgnoreCase));

            if (foundUser == null)
            {
                return(Ok(new ServiceResponse {
                    Status = "error", Message = "User not found!"
                }));
            }

            if (foundUser.VerificationCode != passReset.Code)
            {
                return(Ok(new ServiceResponse {
                    Status = "error", Message = "Wrong Code"
                }));
            }

            foundUser.VerificationCode      = "Not available";
            foundUser.LastPassowrdResetTime = DateTime.Now;

            var hasher         = new PasswordHasher <HGTUser>();
            var hashedPassword = hasher.HashPassword(foundUser, passReset.Password);

            foundUser.PasswordHash = hashedPassword;

            context.SaveChanges();
            return(Ok(new ServiceResponse {
                Status = "good", Message = "Password Reset Successful"
            }));
        }
Beispiel #4
0
        public IActionResult PasswordResetEmail([FromBody] PassReset passReset)
        {
            var context   = this.services.GetService(typeof(HGTDbContext)) as HGTDbContext;
            var foundUser = context.HGTUsers.FirstOrDefault(x => x.Email.Equals(passReset.Email, StringComparison.InvariantCultureIgnoreCase));

            if (foundUser == null)
            {
                return(Ok(new ServiceResponse {
                    Status = "error", Message = "User not found!"
                }));
            }

            var rand = new Random();

            if (DateTime.Now - foundUser.LastPassowrdResetTime < TimeSpan.FromHours(5))
            {
                return(Ok(new ServiceResponse {
                    Status = "error", Message = "You Have to wait 5 hours before requesting new password reset code since your last request"
                }));
            }
            if (foundUser.VerificationCode != "Not available")
            {
                return(Ok(new ServiceResponse {
                    Status = "error", Message = "Code Already sent to your email."
                }));
            }

            foundUser.VerificationCode = rand.Next(1000, 9999).ToString();

            if (this.emailSender.SendMail(passReset.Email, "Code To Reset Your Password", $"The code to reset your password is {foundUser.VerificationCode}"))
            {
                context.SaveChanges();
                return(Ok(new ServiceResponse {
                    Status = "good", Message = "We have mailed you code to reset your password"
                }));
            }

            foundUser.VerificationCode = "Not available";
            return(Ok(new ServiceResponse {
                Status = "error", Message = "Error in sending mail"
            }));
        }
        public ActionResult ChangePassword(ChangePasswordModel p)
        {
            var isAvaliable = db.PassResets.First().isAvaliable;

            try
            {
                isAvaliable = db.PassResets.Where(x => x.AutID == p.passReset.AutID).FirstOrDefault().isAvaliable;
            }
            catch (Exception ex)
            {
                ViewBag.Message = "There is no such authentication code.";
                Console.WriteLine(ex.Message);
                return(View());
            }

            if (isAvaliable == true)
            {
                var  userID      = db.PassResets.Where(x => x.AutID == p.passReset.AutID).FirstOrDefault().UserID;
                User toBeUpdated = db.Users.Find(userID);
                User updated     = new User();
                updated          = toBeUpdated;
                updated.Password = p.user.Password;

                db.Entry(toBeUpdated).CurrentValues.SetValues(updated);
                db.SaveChanges();
                var       value = db.PassResets.Where(x => x.AutID == p.passReset.AutID).FirstOrDefault();
                PassReset isAvaliabletoFalse = new PassReset();
                isAvaliabletoFalse             = value;
                isAvaliabletoFalse.isAvaliable = false;
                db.Entry(value).CurrentValues.SetValues(isAvaliabletoFalse);
                db.SaveChanges();
                ViewBag.Message = "Your password has been successfully updated.";
                return(View());
            }
            else
            {
                ViewBag.Message = "Authentication code is already used.";
            }
            return(View());
        }
        public ActionResult ForgotPassword(User s)
        {
            var u = db.Users.Where(x => x.EMail == s.EMail).FirstOrDefault();
            if (u == null)
            {
                ViewBag.Message = "Such user cannot be found.";
                return View();
            }
            else
            {
                if (ModelState.IsValid)
                {
                    PassReset p = new PassReset();
                    p.AutID = Guid.NewGuid().ToString();
                    p.isAvaliable = true;
                    p.EMail = u.EMail;
                    p.UserID = u.UserID;
                    db.PassResets.Add(p);
                    db.SaveChanges();

                    GMailer.GmailUsername = "******";
                    GMailer.GmailPassword = "******";

                    GMailer mailer = new GMailer();
                    mailer.ToEmail = u.EMail;
                    mailer.Subject = "Password Reset";
                    mailer.Body = "A request to reset your password has been sent. <br> Please enter the code below to Change Password page to Change your Password. <br> <a href='localhost.com/Account/ChangePassword'>verify</a> Authentication Code :" + p.AutID;
                    mailer.IsHtml = true;
                    mailer.Send();
                    ViewBag.Message = "A confirmation mail has been sent to you.";
                    // return RedirectToAction("Index", "Home");
                }
            }
            return View();
        }