/// <summary> /// Extension transformate User to RegistrationViewModel object /// </summary> /// <param name="user">User DTO object</param> /// <returns>RegistrationViewModel object which contains data from User DTO object</returns> public static RegistrationViewModel ToViewModel(this User user) { RegistrationViewModel userViewModel = null; if (user != null) { userViewModel = new RegistrationViewModel(); userViewModel.Id = user.Id; userViewModel.FirstName = user.FirstName; userViewModel.MiddleName = user.MiddleName; userViewModel.LastName = user.LastName; userViewModel.Email = user.Email; userViewModel.Phone = user.Phone; userViewModel.Login = user.Login; userViewModel.Password = user.Password; userViewModel.ConfirmPassword = user.Password; } return userViewModel; }
public ActionResult Registration(RegistrationViewModel registrationViewModel) { if (UserRepository.IsLoginExists(registrationViewModel.Login)) { ModelState.AddModelError("Login", Error.CurrentLoginExists); } if (!string.Equals(registrationViewModel.Password, registrationViewModel.ConfirmPassword)) { ModelState.AddModelError("Password", Error.PasswordsMismatch); } if (ModelState.IsValid) { var user = registrationViewModel.ToEntity(); //Save / Register user var response = UserRepository.Add(SessionVars.UserId, user); user.Id = response.Id; TagRepository.Add(user.Id, new Tag { Name = "ExpensesTag" }); var ticket = new FormsAuthenticationTicket(1, user.Login, DateTime.Now, DateTime.Now.AddSeconds(1800), false, "SimpleUser"); //TODO: Implement more rolles if it will be needed for the task, or I could user MemberShip provide. Just wanted to show my experience with authentication. var strEncryptedTicket = FormsAuthentication.Encrypt(ticket); var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, strEncryptedTicket); Response.Cookies.Add(cookie); SessionVars.UserId = user.Id; SessionVars.UserName = string.Format("{0} {1} {2}", user.FirstName, user.MiddleName, user.LastName).Replace(" ", " "); //The last replacing will work when user don't have middle name. It will correct full name format. return RedirectToAction("GetTagsTree", "Tag"); } else { return View(registrationViewModel); } }