public void OnAuthorization(AuthorizationContext filterContext)
 {
     //PermissionManager permissionManager = new PermissionManager();
     string action = filterContext.ActionDescriptor.ActionName;
     string controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
     string user = filterContext.HttpContext.User.Identity.Name;
     bool isManager = false;
     using (UserService userService = new UserService())
     {
         var _user = userService.GetUserWithDomain(user);
         isManager = _user.isManager;
     }
     if (!isManager)
     {
         throw new UnauthorizedAccessException("Пользователю не разрешено использование данного действия");
     }
 }
Example #2
0
        public ActionResult Index()
        {
            QrDoc model = (QrDoc)TempData["qrDoc"];

            using (UserService userService = new UserService())
            {
                model.ActionUser = userService.GetUser(OtherFunctions.StripDomain(User.Identity.Name));
            }

            ActionModel actionModel = new ActionModel();
            actionModel.Tracks = new TrackModel();
            actionModel.Tracks.qrDoc = model;
            {
                //
                // нулевое действие
                if (model.ActionId == 0)
                {
                    actionModel.Result = resultsService.GetResultText(Constants.ResultTypes.SucessDecode);
                }
                else
                {
                    WorkerState state = ImportWorker.State;
                    if (state== WorkerState.Working)
                        actionModel.Result = resultsService.GetResultText(Constants.ResultTypes.ImportNow);
                    // проверяем, разрешено ли делать то, что они хотят
                    else
                    if (!rightService.HasChance(model))
                    {
                        actionModel.Result = resultsService.GetResultText(Constants.ResultTypes.HasNoChance);
                    }
                        // проверяем, разрешено ли это данному пользователю
                    else if (!rightService.HasRight(model))
                    {
                        actionModel.Result = resultsService.GetResultText(Constants.ResultTypes.HasNoRight);
                    }

                        // проверяем существует ли документ
                    else
                    {
                        if (!documentService.DocExist(model))
                        {
                            documentService.AddDocument(model);
                        }

                        // проверяем, нет ли уже данной записаи
                        if (documentService.ExistTrack(model))
                        {
                            actionModel.Result = resultsService.GetResultText(Constants.ResultTypes.AlreadyExist);
                        }
                        else
                            // выполняем экшн
                            try
                            {
                                documentService.CreateTrack(model);
                                actionModel.Result = resultsService.GetResultText(Constants.ResultTypes.SuccessAction);
                            }
                            catch (Exception)
                            {

                                actionModel.Result = resultsService.GetResultText("какая то проблема при работе с базой");
                            }

                    }

                }
            }
            return PartialView(actionModel);
        }
Example #3
0
        public ActionResult DeleteTrack(int trackId)
        {
            if (Request.IsAjaxRequest())
            {
                ActionModel actionModel = new ActionModel();

                int docId = documentService.GetDocumentIdByTrackId(trackId);
                if (docId == -1)
                {
                    actionModel.Result = resultsService.GetResultText(Constants.ResultTypes.UnknownError);

                    // документ не найден... редирект с неизвестной ошибкой
                }
                else
                {

                    // получить ид владельца трека
                    int trackOwnerId = documentService.GetTrackOwnerId(trackId);

                    User currentUser;
                    using (UserService userService = new UserService())
                    {
                        // получить ид текущего пользователя
                        currentUser = userService.GetUser(OtherFunctions.StripDomain(User.Identity.Name));
                    }
                    actionModel.Tracks = new TrackModel();
                    actionModel.Tracks.qrDoc = new QrDoc(docId, currentUser);

                    actionModel.Tracks.qrDoc.ActionUser = currentUser;
                    bool isManager = false;
                    using (UserService userService = new UserService())
                    {
                        isManager = userService.IsManager(currentUser.id);
                    }
                    if ((trackOwnerId != currentUser.id) && (!isManager))
                    {
                        actionModel.Result = resultsService.GetResultText(Constants.ResultTypes.RightsError);
                    }
                    else
                    {
                        if (ImportWorker.State == WorkerState.Working)
                        {
                            actionModel.Result = resultsService.GetResultText(Constants.ResultTypes.ImportNow);
                        }
                        else
                            // удалить трек
                            if (documentService.DeleteTrackById(trackId))
                            {
                                actionModel.Result = resultsService.GetResultText(Constants.ResultTypes.SuccessAction);
                            }
                            else
                            {
                                actionModel.Result = resultsService.GetResultText(Constants.ResultTypes.UnknownError);
                            }
                    }

                }

            return PartialView("Index", actionModel);
            }
            else
            {
                return null;
            }
            // новая трек модел с результатом, а так же ид текущего юзера и полуинициализированным qrdoc
        }
Example #4
0
        /// <summary>
        /// Получает массив qrExtenden
        /// </summary>
        /// <param name="doc"></param>
        /// <returns></returns>
        public List<TrackExtend> GetTracksByQrDoc(BaseQrDoc doc)
        {
            Document document = Entities.Documents.FirstOrDefault(docu => docu.hash == doc.Hash);
            if (document == null)
            {
               int id = AddDocument(doc);
               document = Entities.Documents.FirstOrDefault(docu => docu.id == id);
            }

            bool isManager = new UserService().IsManager(doc.ActionUser.id);
            var tracks = Entities.Tracks.Where(tr => tr.docId == document.id).Select(trac => new TrackExtend() {Track = trac,AllowAction = (doc.ActionUser.id == trac.userId) || isManager }).ToList();
            return tracks;
        }
Example #5
0
        public TrackModel GetTracks(BaseQrDoc doc)
        {
            TrackModel tracks = new TrackModel();
            tracks.qrDoc = doc;
            int docId = GetDocumentId(doc);
            bool isManager = new UserService().IsManager(doc.ActionUser.id);
            tracks.Tracks = Entities.Tracks.Where(tr => tr.docId == docId).OrderBy(doct => doct.statDate).Select(tra => new TrackExtend { Track = tra, AllowAction = (doc.ActionUser.id == tra.userId) || isManager }).ToList();

            return tracks;
        }