/* This method is used for authentication in login and check if there * exist user in the base */ private bool isValid(string username, string password, bool forExist) { var crypto = new SimpleCrypto.PBKDF2(); bool validation = false; using (var db = new Blog.Models.BlogDataEntities()) { var user = db.User.FirstOrDefault(u => u.Username == username); if (user != null) { if (forExist == true) { return(true); } if (user.Password == crypto.Compute(password, user.PasswordSalt)) { validation = true; } } } return(validation); }
public ActionResult Register(Models.RegisterUser user) { try { if (ModelState.IsValid) { using (var db = new Blog.Models.BlogDataEntities()) { var crypto = new SimpleCrypto.PBKDF2(); var encryptPass = crypto.Compute(user.Password); var newUser = db.User.Create(); newUser.Username = user.Username; newUser.Password = encryptPass; newUser.PasswordSalt = crypto.Salt; newUser.FirstName = user.FirstName; newUser.LastName = user.LastName; newUser.DateCreated = DateTime.Now; if (isValid(newUser.Username, newUser.Password, true)) { ModelState.AddModelError("", "The username exist in the database. Please choice another username"); return(View()); } db.User.Add(newUser); db.SaveChanges(); TempData["successRegister"] = "Successful register"; return(RedirectToAction("Login", "User")); } } else { ModelState.AddModelError("", "Data is not correct!"); } } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (var ve in eve.ValidationErrors) { Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } throw; } return(View()); }