public MyTrelloUser Authenticate(string nickName, string password, out MembershipCreateStatus status) { var userModel = _repo.GetById(nickName); if (userModel == null) { status = MembershipCreateStatus.InvalidUserName; return null; } if(!userModel.IsValid) { status = MembershipCreateStatus.ProviderError; return userModel; } IGenerator gen = new Generator(); if (!gen.GenerateHash(password).SequenceEqual(userModel.Password)) { status = MembershipCreateStatus.InvalidPassword; return null; } status = MembershipCreateStatus.Success; return userModel; }
public ActionResult Register(UserRegister user) { if (RepoUser.VerifyIfExistWithId(user.NickName)) ModelState.AddModelError("NickName", "MyTrelloUser name already exists."); if (ModelState.IsValid) { IGenerator gen = new Generator(); var userModel = new MyTrelloUser { Id = user.NickName, Name = user.Name, Password = gen.GenerateHash(user.Password), Email = user.Email, CurrentRole = RoleStatus.User, IsValid = false, VerificationToken = gen.GenerateToken(), ContainsImage = false }; RepoUser.Add(userModel); try { MvcUtils.SendVerificationMail(userModel); } catch (SmtpFailedRecipientsException exception) { ModelState.AddModelError("Email", exception); Response.StatusCode = HttpStatusCodes.BadRequest; RepoUser.Remove(userModel.Id); return View("Error"); } catch(SmtpException) { Response.StatusCode = HttpStatusCodes.InternalServerError; RepoUser.Remove(userModel.Id); return View("Error"); } return new SeeOtherResult { Uri = Url.Action("Login", "Users") }; } Response.StatusCode = HttpStatusCodes.BadRequest; return View(user); }