コード例 #1
0
        public ActionResult Index()
        {
            if (Request.IsAuthenticated)
            {
                //Получаем идентификатор текущего пользователя
                using (ApplicationDbContext aspdb = new ApplicationDbContext())
                {
                    using (RoleManager <ApplicationRole> roleManager = new RoleManager <ApplicationRole>(new RoleStore <ApplicationRole>(aspdb)))
                    {
                        var             _UserId     = System.Web.HttpContext.Current.User.Identity.GetUserId();
                        ApplicationRole currentRole = roleManager.FindById(aspdb.Users.FirstOrDefault(x => x.Id == _UserId).Roles.FirstOrDefault().RoleId);

                        @ViewData["FirstName"] = aspdb.Users.FirstOrDefault(x => x.Id == _UserId).FirstName.ToString();
                        @ViewData["UserName"]  = aspdb.Users.FirstOrDefault(x => x.Id == _UserId).UserName.ToString();
                        @ViewData["UserRole"]  = currentRole.Description.ToString();
                    }
                }

                using (FRModel db = new FRModel())
                {
                    db.Database.Log = (s => System.Diagnostics.Debug.WriteLine(s));

                    List <int> WorkerIdsList = UsrWksMethods.GetWorkerId(db); // Получаем ID связанных сотрудников для пользователя в роли "Руководитель проекта"
                    //Количество действующих проектов
                    @ViewData["PrjCount"] = db.Projects.Where(x => (x.EndDateFact == null) &&
                                                              (WorkerIdsList.FirstOrDefault() == -1 || WorkerIdsList.Contains(x.Chief ?? 0)))
                                            .Count();
                }
            }
            return(View());
        }
コード例 #2
0
        // Метод определения идентификатора связанного сотрудника
        // для текущего пользователя системы в роли "Руководитель проекта"
        public static List <int> GetWorkerId(FRModel db)
        {
            // Проверяем принадлежность текущего пользователя к роли "Руководитель проекта"
            bool isPrgManager = System.Web.HttpContext.Current.User.IsInRole("ProjectManager");

            // Флаг для отмены фильтрации по руководителю проекта в запросе.
            // Если текущий пользователь не принадлежит к роли "Руководитель проекта" -
            // возвращаем один элемент списка со значением "-1".
            List <int> WorkerIdsList = new List <int>()
            {
                -1
            };

            //Если в системных настройках включен параметр "Разрешить руководителям проектов доступ ко всем проектам" -
            //возвращаем "-1" (фильтрация не выполняется)
            var _PM_access_all_projects = db.Settings.FirstOrDefault(x => x.SettingName == "PM_access_all_projects");

            if (_PM_access_all_projects != null)
            {
                if (Convert.ToBoolean(_PM_access_all_projects.SettingValue.ToString()))
                {
                    return(WorkerIdsList);
                }
            }

            if (isPrgManager)
            {
                //Получаем идентификатор текущего пользователя
                var user = System.Web.HttpContext.Current.User.Identity.GetUserId();
                //Получаем список связанных сотрудников
                WorkerIdsList = db.UsrWksRelations.Where(x => x.UserId == user).Select(x => x.WorkerId).ToList();
            }
            return(WorkerIdsList);
        }
コード例 #3
0
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        var  request  = filterContext.HttpContext.Request;
        bool?_resbool = null;

        if ((string)filterContext.Controller.TempData["LoginResult"] == "Success")
        {
            _resbool = true;
        }
        if ((string)filterContext.Controller.TempData["LoginResult"] == "Failure")
        {
            _resbool = false;
        }

        using (FRModel db = new FRModel())
        {
            try
            {
                AspVisitor visitor = new AspVisitor()
                {
                    Login    = filterContext.Controller.TempData["LoginName"].ToString(),
                    Ip       = request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? request.UserHostAddress,
                    Url      = filterContext.Controller.TempData["ReturnUrl"].ToString(),
                    Password = filterContext.Controller.TempData["Password"].ToString(),
                    Result   = _resbool,
                    Date     = DateTime.Now,
                };

                db.AspVisitors.Add(visitor);
                db.SaveChanges();
            }
            catch (Exception)
            {
                return;
            }
        }
        base.OnActionExecuted(filterContext);
    }
コード例 #4
0
        // Метод определения наличия прав доступа к данной сущности у текущего пользователя
        // на основании сопоставления пользователей системы сотрудникам
        public static bool isAllowed(FRModel db, int PrjId)
        {
            db.Database.Log = (s => System.Diagnostics.Debug.WriteLine(s)); //Debug Information====================

            //Если в системных настройках включен параметр "Разрешить руководителям проектов доступ ко всем проектам" -
            //возвращаем "true" (фильтрация не выполняется)
            var _PM_access_all_projects = db.Settings.FirstOrDefault(x => x.SettingName == "PM_access_all_projects");

            if (_PM_access_all_projects != null)
            {
                if (Convert.ToBoolean(_PM_access_all_projects.SettingValue.ToString()))
                {
                    return(true);
                }
            }

            // Проверяем принадлежность текущего пользователя к роли "Руководитель проекта"
            bool isPrgManager = System.Web.HttpContext.Current.User.IsInRole("ProjectManager");

            if (!isPrgManager)
            {
                return(true); //Разрешаем доступ к сущности
            }
            else
            {
                //Получаем идентификатор текущего пользователя
                var user = System.Web.HttpContext.Current.User.Identity.GetUserId();

                //Проверяем наличие сопоставления текущего пользователя системы руководителю указанного проекта
                int?_wksCount = (from _prj in db.Projects
                                 join _usrwks in db.UsrWksRelations on _prj.Chief equals _usrwks.WorkerId
                                 where _prj.id == PrjId && _usrwks.UserId == user
                                 select _usrwks.WorkerId).ToList().Count();
                bool result = _wksCount > 0 ? true : false;
                return(result);
            }
        }
コード例 #5
0
        public ActionResult GetLogins()
        {
            try
            {
                using (FRModel visitorcontext = new FRModel())
                {
                    visitorcontext.Database.Log = (s => System.Diagnostics.Debug.WriteLine(s)); //Debug Information====================

                    var draw          = Request.Form.GetValues("draw").FirstOrDefault();
                    var start         = Request.Form.GetValues("start").FirstOrDefault();
                    var length        = Request.Form.GetValues("length").FirstOrDefault();
                    var sortColumn    = Request.Form.GetValues("columns[" + Request.Form.GetValues("order[0][column]").FirstOrDefault() + "][name]").FirstOrDefault();
                    var sortColumnDir = Request.Form.GetValues("order[0][dir]").FirstOrDefault();


                    int pageSize = length != null?Convert.ToInt32(length) : 0;

                    int skip = start != null?Convert.ToInt32(start) : 0;

                    int totalRecords = 0;

                    string _login      = Request.Form.GetValues("columns[0][search][value]").FirstOrDefault().ToString();
                    string _ip         = Request.Form.GetValues("columns[1][search][value]").FirstOrDefault().ToString();
                    string _url        = Request.Form.GetValues("columns[2][search][value]").FirstOrDefault().ToString();
                    string _resulttext = Request.Form.GetValues("columns[3][search][value]").FirstOrDefault().ToString();

                    bool _result = true;
                    bool.TryParse(_resulttext, out _result);

                    // Парсинг диапазона дат из DateRangePicker
                    DateTime?_startdate = null;
                    DateTime?_enddate   = null;
                    string   _datetext  = Request.Form.GetValues("columns[4][search][value]").FirstOrDefault().ToString();
                    if (!string.IsNullOrEmpty(_datetext))
                    {
                        _datetext = _datetext.Trim();
                        int    _length           = (_datetext.Length) - (_datetext.IndexOf('-') + 2);
                        string _startagrdatetext = _datetext.Substring(0, _datetext.IndexOf('-')).Trim();
                        string _endagrdatetext   = _datetext.Substring(_datetext.IndexOf('-') + 2, _length).Trim();
                        _startdate = DateTime.Parse(_startagrdatetext);
                        _enddate   = DateTime.Parse(_endagrdatetext);
                        _enddate   = _enddate.Value.AddHours(23).AddMinutes(59).AddSeconds(59);
                    }
                    //--------------------------

                    var _la = (from visitor in visitorcontext.AspVisitors
                               where (
                                   (string.IsNullOrEmpty(_login) || visitor.Login.Contains(_login)) &&
                                   (string.IsNullOrEmpty(_ip) || visitor.Ip.Contains(_ip)) &&
                                   (string.IsNullOrEmpty(_url) || visitor.Url.Contains(_url)) &&
                                   (string.IsNullOrEmpty(_ip) || visitor.Ip.Contains(_ip)) &&
                                   (string.IsNullOrEmpty(_resulttext) || visitor.Result == _result) &&
                                   (string.IsNullOrEmpty(_datetext) || visitor.Date >= _startdate && visitor.Date <= _enddate)     //Диапазон дат
                                   )
                               select new
                    {
                        Id = visitor.Id,
                        Login = visitor.Login,
                        Password = visitor.Password,
                        Ip = visitor.Ip,
                        Url = visitor.Url,
                        Result = visitor.Result,
                        Date = visitor.Date
                    }).AsEnumerable().Select(x => new AspVisitor
                    {
                        Id       = x.Id,
                        Login    = x.Login,
                        Password = x.Password,
                        Ip       = x.Ip,
                        Url      = x.Url,
                        Result   = x.Result,
                        Date     = x.Date
                    }).ToList();

                    if (!(string.IsNullOrEmpty(sortColumn) && string.IsNullOrEmpty(sortColumnDir)))
                    {
                        _la = _la.OrderBy(sortColumn + " " + sortColumnDir + ", Id desc").ToList();
                    }
                    else
                    {
                        _la = _la.OrderByDescending(x => x.Date).ThenByDescending(x => x.Id).ToList();
                    }

                    totalRecords = _la.Count();
                    var data = _la.Skip(skip).Take(pageSize);

                    return(Json(new
                    {
                        result = true,
                        draw = draw,
                        recordsFiltered = totalRecords,
                        recordsTotal = totalRecords,
                        data = data
                    }, JsonRequestBehavior.AllowGet));
                }
            }
            catch (Exception ex)
            {
                return(Json(new { result = false, message = "Ошибка выполнения запроса! " + ex.Message }, JsonRequestBehavior.AllowGet));
            }
        }