public void Index(string login, string password)
        {
            var id = Session["AdminId"];

            if (id != null)
            {
                RedirectToSiteRoot();
            }
            if (IsPost)
            {
                if (ActiveDirectoryHelper.IsAuthenticated(login, password))
                {
                    var admin = DbSession.Query <Admin>().FirstOrDefault(a => a.UserName == login);
                    if (admin != null && admin.Permissions.Any(p => p.Shortcut.Match("RCA")))
                    {
                        Session["AdminId"] = admin.Id;
                        FormsAuthentication.RedirectFromLoginPage(login, true);
                        RedirectToSiteRoot();
                        return;
                    }
                }
                Logger.Info("Авторизация отклонена");
                Error("Не верное имя пользователя или пароль");
                RedirectToAction("Index");
            }
        }
Beispiel #2
0
        /// <summary>
        /// Аутентификация по MS ActiveDirectory
        /// </summary>
        /// <param name="login">Логин и пароль</param>
        /// <returns></returns>
        private ActionResult Authentication(Login login)
        {
            string AuthorizedController = "Client";
            string AuthorizedAction     = "Index";

            //попытка аутентифицировать пользователя по его логину и паролю
#if DEBUG
            var defaultPassword = ConfigurationManager.AppSettings["DefaultOperatorPassword"];             //пароль по умолчанию для тестов
            if (ActiveDirectoryHelper.IsAuthenticated(login.UserName, login.Password) || login.Password == defaultPassword)
            {
#else
            if (ActiveDirectoryHelper.IsAuthenticated(login.UserName, login.Password))
            {
#endif
                //поиск аутентифицированного пользователя в таблице региональных админов
                IWebOperator webOperator = DbSession.Query <Admin>().FirstOrDefault(p => p.Login == login.UserName);
                if (webOperator != null)
                {
                    return(Authenticate(AuthorizedAction, AuthorizedController, login.UserName, login.RememberMe, true.ToString()));
                }
                //если там его нет, ищем в таблице сторонних пользователей
                else
                {
                    webOperator = DbSession.Query <Outsider>().FirstOrDefault(p => p.Login == login.UserName && p.Enabled);
                    if (webOperator != null)
                    {
                        return(Authenticate(AuthorizedAction, AuthorizedController, login.UserName, login.RememberMe, false.ToString()));
                    }
                    else
                    {
                        Logoff();
                    }
                }
            }
            //если логин и пароль неверны возвращаем его на страницу ввода учетных данных
            MessageShow("Учетные данные введены неверно!", MessageType.danger);
            return(RedirectToAction("Login"));
        }