public ActionResult Complete(CompleteRegistrationModel completeRegistrationModel)
{
if (completeRegistrationModel == null) completeRegistrationModel = new CompleteRegistrationModel();
if (Request.HttpMethod == "GET")
{
return View(completeRegistrationModel);
}
if (Request.HttpMethod != "POST")
{
return new HttpStatusCodeResult((int)HttpStatusCode.MethodNotAllowed);
}
if (ModelState.IsValid)
{
var registrations = from r in _repository.GetAll<Registration>()
where
r.Username == completeRegistrationModel.Username
&& r.EmailAddress == completeRegistrationModel.EmailAddress
orderby r.Expires descending
select r;
var registration = registrations.FirstOrDefault();
if (RegistrationIsValid(registration, completeRegistrationModel))
{
var user = new User
{
Id = Guid.NewGuid(),
Username = registration.Username,
EmailAddress = registration.EmailAddress,
Password = registration.Password
};
_repository.SaveOrUpdate(user);
_authenticator.SetCookie(user.Username);
return RedirectToAction("Index", "Home");
}
}
return View(completeRegistrationModel);
}