public ActionResult Register(string id, string returnUrl, FormCollection collection) { string password = collection["password"]; string confirmPassword = collection["confirmPassword"]; string email = collection["email"].Trim(); // во время обычной регистрации имейл это логин TimeSpan offset = TimeSpan.FromMinutes(collection["timezone"].ToInt()); try { #region Валидация if (password.IsNullOrEmpty()) { ModelState.AddModelError("password", "Введите пароль."); } if (email.IsNullOrEmpty()) { ModelState.AddModelError("email", "Введите email."); } if (!email.IsValidEmail()) { ModelState.AddModelError("email", "Введите правильный email."); } if (password != confirmPassword) { ModelState.AddModelError("confirmPassword", "Повторите пароль правильно."); } // Пользователь регестрируется через имейл, по этому он является логином IUser oldUser = Utility.Users.Get(email); if (oldUser != null) { ViewData.Add("email", email); ModelState.AddModelError("email", "Пользователь уже зарегестрирован."); // на всякий случай высылаем повторно конфирм, если пользователь решил ввести данные повторно if (!oldUser.IsConfirmed && UsersUtility.CheckPassword(oldUser, password)) { MailsManager.SendConfirmEmail(oldUser); } } #endregion if (ModelState.IsValid) { string nick = email.Split('@')[0]; try { Utility.Users.Add( nick, password, email, offset, id, // Код инвайта RegistrationType.Default); } catch (TariffException exception) { return(Message(exception.Message)); } if (returnUrl.IsNullOrEmpty()) { return(View("Registration")); } return(Redirect(returnUrl)); } ViewData.Model = GetTimeZones(); return(View()); } catch { Utility.Users.Delete(email); throw; } }