コード例 #1
0
ファイル: EventBlocker.cs プロジェクト: nzdev/MediaProtector
        private void MediaService_Deleting(IMediaService sender, DeleteEventArgs <IMedia> eventArgs)
        {
            try {
                EventModel deleteEvent = null;
                int        _currentUserId;

                using (var contextReference = _context.EnsureUmbracoContext()) {
                    _currentUserId = contextReference.UmbracoContext.Security.CurrentUser.Id;
                }

                using (var scope = _scopeProvider.CreateScope(autoComplete: true)) {
                    var sql = scope.SqlContext.Sql().Select("*").From <EventModel>()
                              .Where <EventModel>(x => x.id == 4);
                    deleteEvent = scope.Database.Fetch <EventModel>(sql).FirstOrDefault();
                }

                foreach (var mediaItem in eventArgs.DeletedEntities)
                {
                    if (deleteEvent != null)
                    {
                        if (deleteEvent.mediaNodes.Split(',').Contains(mediaItem.Id.ToString()) || deleteEvent.disableEvent)
                        {
                            if (!deleteEvent.userExceptions.Split(',').Contains(_currentUserId.ToString()))
                            {
                                eventArgs.CancelOperation(new EventMessage("Action rejected. Contact website admin", "You cannot delete " + mediaItem.Name, EventMessageType.Error));
                            }
                        }
                    }
                }
            }
            catch (Exception ex) {
                _logger.Error <EventModel>("Media Protector failed for delete action: " + ex.Message);
            }
        }
コード例 #2
0
        private void ContentService_Deleting(IContentService sender, DeleteEventArgs <IContent> eventArgs)
        {
            ActionModel delete = null;
            int         _currentUserId;

            using (var contextReference = _context.EnsureUmbracoContext()) {
                _currentUserId = contextReference.UmbracoContext.Security.CurrentUser.Id;
            }

            try {
                using (var scope = _scopeProvider.CreateScope(autoComplete: true)) {
                    var sql = scope.SqlContext.Sql().Select("*").From <ActionModel>()
                              .Where <ActionModel>(x => x.id == 4);
                    delete = scope.Database.Fetch <ActionModel>(sql).FirstOrDefault();
                }
            }
            catch (Exception ex) {
                _logger.Error <ActionModel>("Failed to get Content Protector setting for delete action: " + ex.Message);
            }

            foreach (var node in eventArgs.DeletedEntities)
            {
                if (delete != null)
                {
                    if (delete.nodes.Split(',').Contains(node.Id.ToString()) || delete.disableAction)
                    {
                        if (!delete.userExceptions.Split(',').Contains(_currentUserId.ToString()))
                        {
                            eventArgs.CancelOperation(new EventMessage("Action rejected. Contact website admin", "You cannot delete " + node.Name, EventMessageType.Error));
                        }
                    }
                }
            }
        }
コード例 #3
0
 private void MemberService_Deleting(IMemberService sender, DeleteEventArgs <IMember> e)
 {
     foreach (var member in e.DeletedEntities)
     {
         e.CancelOperation(new EventMessage("Blocked", $"Deleting the member {member} has been cancelled. Deleting all members is disabled until the side-effects are handled.", EventMessageType.Warning));
         _logger.Info <DisableMemberDeleteEventComponent>("Deleting the member {member} has been cancelled. Deleting all members is disabled until the side-effects are handled.", member.Name);
     }
 }
コード例 #4
0
 private void StopFormRteDelete(IDataTypeService sender, DeleteEventArgs <IDataType> e)
 {
     foreach (var dt in e.DeletedEntities)
     {
         if (dt.Name == FormRteName && e.CanCancel)
         {
             e.CancelOperation(new EventMessage("Error", "This data type is used by Umbraco Forms Rich Text field", EventMessageType.Error));
         }
     }
 }
コード例 #5
0
        public void LatchDictionaryItemDeleting(ILocalizationService sender, DeleteEventArgs <IDictionaryItem> e)
        {
            if (!LatchesShouldBeChecked)
            {
                return;
            }

            var user    = HttpContext.Current.GetCurrentBackofficeUser();
            var latches = latchOperationSvc.GetLatches(LatchOperationType.Dictionary, LatchOperationAction.Delete);

            if (latches.Any())
            {
                var latchesToApply    = GetLatchesApplyingToUser(latches, user.Id);
                var operationIsLocked = AnyLatchIsClosed(latchesToApply);
                if (operationIsLocked)
                {
                    var errorMessage = GetErrorMessage("dictionaryDelete");
                    var eventMessage = new EventMessage(LatchConstants.SectionName, errorMessage, EventMessageType.Error);
                    e.CancelOperation(eventMessage);
                }
            }
        }