示例#1
0
        public Outsider LoginAsOutsider()
        {
            var item = session.Query <Outsider>().OrderByDescending(s => s.Id).FirstOrDefault();

            item.Enabled = true;
            session.Save(item);

            session.Transaction.Commit();

            var    blockNameNew = "#loginForm ";
            string login        = item.Login;
            string password     = ConfigurationManager.AppSettings["DefaultOperatorPassword"];

            Open("Account/Login");

            //login
            var inputObj = browser.FindElementByCssSelector(blockNameNew + "input[id='UserName']");

            inputObj.Clear();
            inputObj.SendKeys(login);
            //password
            inputObj = browser.FindElementByCssSelector(blockNameNew + "input[id='Password']");
            inputObj.Clear();
            inputObj.SendKeys(password);
            browser.FindElementByCssSelector(blockNameNew + "input[type='submit']").Click();
            AssertText("Пользователь " + login);
            CurrenOperator = item;
            return(item);
        }
示例#2
0
 public void DefaultOnTearDown()
 {
     if (CurrenOperator != null && browser.FindElementsById("logoutLink").Count > 0)
     {
         CurrenOperator = null;
         browser.FindElementByCssSelector("a[id='logoutLink']").Click();
     }
     CloseAllTabsButOne();
 }
示例#3
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            IWebOperator currentWebOperator = null;
            var          isAdmin            = false;

            if (!string.IsNullOrEmpty(filterContext.HttpContext.User.Identity.Name))
            {
                if (filterContext.Controller.ControllerContext.RequestContext.HttpContext.Request.IsAuthenticated)
                {
                    var cookie = filterContext.Controller.ControllerContext
                                 .RequestContext
                                 .HttpContext
                                 .Request
                                 .Cookies[FormsAuthentication.FormsCookieName];
                    if (cookie == null)
                    {
                        return;
                    }
                    var decrypted = FormsAuthentication.Decrypt(cookie.Value);
                    if (decrypted != null)
                    {
                        bool.TryParse(decrypted.UserData, out isAdmin);
                    }
                }
            }
            if (isAdmin)
            {
                currentWebOperator = DbSession.Query <Admin>().FirstOrDefault(s => s.Login == filterContext.HttpContext.User.Identity.Name);
            }
            else
            {
                currentWebOperator = DbSession.Query <Outsider>().FirstOrDefault(s => s.Login == filterContext.HttpContext.User.Identity.Name);
                if (currentWebOperator != null && (filterContext.Controller.GetType().GetCustomAttributes(typeof(AdminActionAccess), true).Length > 0 ||
                                                   filterContext.ActionDescriptor.GetCustomAttributes(typeof(AdminActionAccess), true).Length > 0))
                {
                    filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary {
                        { "controller", "Account" }, { "action", "Login" }
                    });
                }
            }
            filterContext.HttpContext.Items[typeof(IWebOperator)] = currentWebOperator;
        }
示例#4
0
        public Admin LoginAsAdmin()
        {
            var    item         = session.Query <Admin>().OrderByDescending(s => s.Id).FirstOrDefault();
            var    blockNameNew = "#loginForm ";
            string login        = item.Login;
            string password     = ConfigurationManager.AppSettings["DefaultOperatorPassword"];

            Open("Account/Login");

            //login
            var inputObj = browser.FindElementByCssSelector(blockNameNew + "input[id='UserName']");

            inputObj.Clear();
            inputObj.SendKeys(login);
            //password
            inputObj = browser.FindElementByCssSelector(blockNameNew + "input[id='Password']");
            inputObj.Clear();
            inputObj.SendKeys(password);
            browser.FindElementByCssSelector(blockNameNew + "input[type='submit']").Click();
            CurrenOperator = item;
            return(item);
        }
示例#5
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"));
        }