예제 #1
0
        public ActionResult Register(UserRegModel register)
        {
            if (ModelState.IsValid)
            {

                User user = new Knowledgeable.User();
                user = db.Users.Where(x => x.Email == register.Email).FirstOrDefault();
                if(user == null)
                {
                    user = new User();
                    user.UserID = Guid.NewGuid();
                    user.Email = register.Email;



                    user.Name = register.Name;
                    user.Surname = register.Surname;

                    string salt = BCrypt.Net.BCrypt.GenerateSalt(4);
                    string hashed1 = BCrypt.Net.BCrypt.HashPassword(register.Password, salt);
                    string hashed2 = BCrypt.Net.BCrypt.HashPassword(register.Password, hashed1);


                    user.Salt = salt;
                    user.Password = hashed2;
                    user.Active = false;

                    db.Users.Add(user);
                    db.SaveChanges();
                    

                    string name = register.Name;
                    string Subject = "Email Confirmation";
                    string mailContent = "<p>Thank you for your registration. Click on the link below to confirm your account.</p> <a href=\"http://localhost:23060/Login/EmailConfirmed/" + user.UserID + "\">Click Here</a>";

                    Utility.SendMail(name, user.Email, Subject, mailContent);

                    return RedirectToAction("ConfirmEmail");


                }
                else
                {
                    ViewBag.Error = "Email already exists.";
                    return View();

                }

            }
            return View();
        }
예제 #2
0
        public ActionResult ResetPassword(UserRegModel userRegModel)
        {


            string salt = BCrypt.Net.BCrypt.GenerateSalt(4);
            string hashed1 = BCrypt.Net.BCrypt.HashPassword(userRegModel.Password, salt);
            string hashed2 = BCrypt.Net.BCrypt.HashPassword(userRegModel.Password, hashed1);

            User user = db.Users.Find(userRegModel.UserID);
            user.Password = hashed2;
            user.Salt = salt;
            db.Entry(user).State = EntityState.Modified;
            db.SaveChanges();

            ResetPassword resetPassword = db.ResetPasswords.Find(user.UserID);
            db.ResetPasswords.Remove(resetPassword);
            db.SaveChanges();

            return RedirectToAction("Login");
        }
예제 #3
0
        public ActionResult ResetPassword(Guid? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            ResetPassword resetPassword = db.ResetPasswords.Where(x => x.ResetID == id).FirstOrDefault();
            if(resetPassword != null)
            {
                User user = db.Users.Find(resetPassword.UserID);
                UserRegModel userRegModel = new UserRegModel();
                userRegModel.UserID = user.UserID;
                userRegModel.Email = user.Email;
                return View(userRegModel);
            }
            else
            {
                return RedirectToAction("Register");
            }

        }