Exemple #1
0
        public ViewResult EditPassword(FormCollection collection)
        {
            string oldPassword = collection["oldPassword"];

            if (oldPassword.IsNullOrEmpty())
            {
                ModelState.AddModelError("oldPassword", "Введите старый пароль.");
            }
            else if (!UsersUtility.CheckPassword(Utility.Users.CurrentUser, oldPassword))
            {
                ModelState.AddModelError("oldPassword", "Пароль неверный.");
            }

            if (TrySetNewPassword(Utility.Authentication.UserId, collection))
            {
                ViewData.Add("message", "Пароль успешно изменен.");
            }

            ViewData.Model = Utility.Users.CurrentUser;

            // Отображаем ошибки
            return(View("EditPassword"));
        }
Exemple #2
0
        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;
            }
        }
Exemple #3
0
        public ActionResult Login(string id, string login, string password, bool rememberme, string returnUrl)
        {
            string inviteCode = id;

            if (login.IsNullOrEmpty())
            {
                ModelState.AddModelError("login", "Введите логин.");
            }
            if (password.IsNullOrEmpty())
            {
                ModelState.AddModelError("password", "Введите пароль.");
            }

            if (ModelState.IsValid)
            {
                IUser user = Utility.Users.Get(login);

                if (user != null)
                {
                    if (UsersUtility.CheckPassword(user, password))
                    {
                        if (user.IsConfirmed)
                        {
                            Utility.Authentication.SignIn(user.Id, rememberme);

                            if (!inviteCode.IsNullOrEmpty())
                            {
                                IOrganization organization = Utility.Organizations.GetByInviteCode(inviteCode);
                                try
                                {
                                    Utility.Organizations.AddUser(organization, user);
                                }
                                catch (TariffException exception)
                                {
                                    return(Message(exception.Message));
                                }
                            }

                            if (!returnUrl.IsNullOrEmpty())
                            {
                                return(Redirect(returnUrl));
                            }

                            return(RedirectToAction("index", "boards"));
                        }

                        ModelState.AddModelError("login", "Регистрация не подтверждена. Проверьте почту для получения инструкций.");
                    }
                    else
                    {
                        ModelState.AddModelError("password", "Пароль неверный.");
                    }
                }
                else
                {
                    ModelState.AddModelError("login", "Пользователя не существует.");
                }
            }

            return(View());
        }