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("Пользователю не разрешено использование данного действия"); } }
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); }
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 }
/// <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; }
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; }