Запрет на редактирование и удаление документа

Работа с правами доступа к папкам и документам


Аватара пользователя
Andrew
Разработчики FossDoc
Сообщения: 875
Зарегистрирован: 26 дек 2008, 16:03

Re: Запрет на редактирование и удаление документа

Сообщение Andrew » 25 май 2012, 12:08

Вот скрипт без "хитрой кнопки":
Script_Default.zip
(1.57 КБ) 410 скачиваний

avkim
Пользователь
Сообщения: 186
Зарегистрирован: 03 апр 2012, 05:54
2 + 2 = ?: 4

Re: Запрет на редактирование и удаление документа

Сообщение avkim » 25 май 2012, 14:27

После "восстановления" скрипта происходит следующее:
Отправляю документ по маршруту Согласование1 - Согласование2 - Исполнение.
У первого согласующего при нажатии "Подписать ЭЦП" выходит окошко с ошибкой. Текст ошибки в конце.
У второго согласующего вообще карточка не отображается, а только согласование:
Согласование2.rar
(84.22 КБ) 409 скачиваний
На этапе исполнения тоже похожее, нет самой карточки документа:
Исполнение.rar
(81.28 КБ) 408 скачиваний
Что я сделал не так? Как все вернуть к прежнему состоянию до подключения скриптов с "хитрой кнопкой"(((((

Foss.FossDoc.ApplicationServer.AccessControl.AccessDenied: Вам запрещено добавлять подобъекты в объект с идентификатором 000000001F2424C57A404BC6A5AB9B1F0392655F по тегу контейнера 0x800F1F00

Server stack trace:
в Foss.FossDoc.ApplicationServer.ObjectDataManagment.AccessControl.Manager.ValidateCreateInObjects(ContextActionEnum action, OID[] objectOIDs, TPropertyTag[][] containerPropertyTags)
в Foss.FossDoc.ApplicationServer.ObjectDataManagment.ObjectDataManager.CreateObjectsWithOID(OID[] parentOIDs, TPropertyTag[] containerPropertyTags, OID[] objectOIDs, ObjectProperty[][] properties)
в Foss.FossDoc.ApplicationServer.ObjectDataManagment.ObjectDataManager.CreateObject(OID parentOID, TPropertyTag containerPropertyTag, ObjectProperty[] properties)
в Foss.FossDoc.ApplicationServer.ObjectDataManagment.DigitalSignature.Manager.WriteObjectSignature(OID signatureContainerObject, OID signatureAuthor, OID signedObject, String[] signedObjectAttributes, Byte[] signature, String displayName, String[] signedObjectDisplayAttributes)
в Foss.FossDoc.ApplicationServer.Cryptography.Microsoft.HashManager.WriteObjectSignature(OID signatureContainerObject, OID signatureAuthor, OID signedObject, String[] signedObjectAttributes, Byte[] signature, String signatureObjectDisplayName, String[] signableObjectAttributeDisplayNames)
в System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
в System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)

Exception rethrown at [0]:
в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
в Foss.FossDoc.ApplicationServer.ObjectDataManagment.DigitalSignature.IManager.WriteObjectSignature(OID signatureContainerObject, OID signatureAuthor, OID signedObject, String[] signedObjectAttributes, Byte[] signature, String signatureObjectDisplayName, String[] signableObjectAttributeDisplayNames)
в Foss.FossDoc.Cryptography.Inter.DigitalSignatureContext.SignObject(OID objectSignatureContainerOID, OID objectOIDToSign, String[] attributeNames)
в Foss.FossDoc.ObjectModel.DataRepresentation.View.BusinessLogic.DigitalSignature.Sign.SignatureHelper.Sign(SignatureInfoHolder signatureInfo)
в Foss.FossDoc.ObjectModel.DataRepresentation.View.BusinessLogic.DigitalSignature.Sign.Manager.Sign(IObjectHolder objectForSign, OID signatureType)

Аватара пользователя
Andrew
Разработчики FossDoc
Сообщения: 875
Зарегистрирован: 26 дек 2008, 16:03

Re: Запрет на редактирование и удаление документа

Сообщение Andrew » 25 май 2012, 15:11

Дело не в скрипте, эффект когда вы получаете поручение или согласование а "документ" не открывается - это значит у пользователя кто получатель нет права ЧИТАТЬ сам документ.

Второе - по поводу ЭЦП: это тоже результат "закручивания" прав, тут закрыты права до такой степени что даже в контейнере ЭЦП создать подпись нет доступа.

Давайте все это дело исправим:
1) через меню прав доступа проверьте всех участников (людей и группы), нет ли у кого явного "запрета" на чтение? если есть - снимите его.
2) находясь на вкладке "Доступ" нажмите кнопку "Применить стандартные права доступа" - она добавит вам много разных групп, но вы можете их всех исключить, но группу "ВСЕ" оставьте. После этого люди смогут подписывать ЭЦП.

avkim
Пользователь
Сообщения: 186
Зарегистрирован: 03 апр 2012, 05:54
2 + 2 = ?: 4

Re: Запрет на редактирование и удаление документа

Сообщение avkim » 28 май 2012, 05:14

Добрый день!
Спасибо за помощь!
Что-то я перемудрил с правами)))))

Vitaliy
Новичок
Сообщения: 7
Зарегистрирован: 29 дек 2011, 17:23
2 + 2 = ?: 4

Re: Запрет на редактирование и удаление документа

Сообщение Vitaliy » 26 дек 2013, 15:25

Скажите, пожалуйста, в существующей политике разрешения редактирования документов после согласования, утверждения и т.д. ничего не поменялось? Может есть более красивые\простые решения запрета ? (пробная версия: 5.3.84.17400)

Аватара пользователя
Andrew
Разработчики FossDoc
Сообщения: 875
Зарегистрирован: 26 дек 2008, 16:03

Re: Запрет на редактирование и удаление документа

Сообщение Andrew » 26 дек 2013, 17:12

В версии 5.4 которая вышла, новшеств в этом направлении нет. Права доступа работают как и прежде, и теория осталась такой же.
Выше в данной ветке шли обсуждения разных методов, но если кратко то у вас есть варианты:

1) если используются стандартные типы документов FossDoc (Приказ, Исходящее письмо) которые можно проектировать (создать в папке "Проекты документов"), то они автоматически блокируются от изменения сразу после регистрации. То есть такой документ запускают на согласование, затем на подпись , после на регистрацию - и вот когда он зарегистрирован, он публикуется куда нужно и блокируется.
Группа "Регистраторы" позже может его модифицировать, но не автор-сотрудник.

2) если используются не-стандартные типы (например такие, которые вы создаете сами с помощью библиотек документов) - то тут все работает без "автоматики". Какие права на папке где документ создан заданы, то и наследует документ, плюс автор-создатель идет в документе с правом "Полный доступ".
Но, существует возможность программно "забрать" права у автора-создателя. Это можно сделать вручную (это раз), и это можно сделать с помощью некоторого "скрипта" (триггера) который выполняется на стороне сервера. И то и другое по сути, программная надстройка.

Если у вас стоит вопрос "защиты документа", то нужно обдумать как именно на ваш взгляд это должно происходить, т.е.проработать "правила игры", а дальше можно будет точнее сказать как это будем решать.

Vitaliy
Новичок
Сообщения: 7
Зарегистрирован: 29 дек 2011, 17:23
2 + 2 = ?: 4

Re: Запрет на редактирование и удаление документа

Сообщение Vitaliy » 27 дек 2013, 11:58

Спасибо. Подскажите, насколько сложно организовать следующее: есть нестандартный документ с дочерним документом (аналог договор-акт выполненных работ из self-made-system.pdf). Пользователь создает документ и регистрирует его (стандартно добавлена роль регистратора), далее происходит согласование документа руководителем подразделения и в случае успеха документ ставится "на контроль" + полные права доступа переходят к администратору за исключением закладки "дочерний документ" (у остальных доступ "для чтения"), далее пользователь создает дочерний документ и после отметки руководителя (в случае успеха снимает документ с контроля) полные права доступа на дочерний документ также переходят к администратору. ? Т.е. первое событие передачи прав - успешное согласование, второе событие - снятие с контроля.

Аватара пользователя
Andrew
Разработчики FossDoc
Сообщения: 875
Зарегистрирован: 26 дек 2008, 16:03

Re: Запрет на редактирование и удаление документа

Сообщение Andrew » 27 дек 2013, 13:24

Итак, судя по задаче у нас есть две стадии защиты документа:

1) когда документ прошел согласование, он "закрыт" от модификации , но в одной вкладке (дочерние документы) еще разрешено создавать дочерний документ
2) вторая стадия - когда уже никому и нигде ничего не разрешено менять или создавать (или удалять)

Нам потребуется две папки:
1) одна будет называться "Согласованные документы" (например), и в ней будут права у группы "ВСЕ" чтение, а у некоторой группы (или у всех) право создавать дочерние документы строго в заданной вкладке. Это можно сделать средствами администратора.
2) вторая папка - это финальный "Архив документов", там у группы "ВСЕ" чтение и все. В нее должны попасть те документы которые прошли свой цикл (созданы дочерние, сняты с контроля и т.п.)

В системе FossDoc (FossLook) есть особая точка маршрута - "Копирования ссылки", которая позволяет поместить ссылку на документ в любую папку. И все было бы просто, но есть главный нюанс - документ наследует права от "родителя" , и если даже ссылка будет брошена - это не влияет на его права.

Для того, чтобы назначить "родителем" новую папку потребуется создать особый "триггер" (это по сути, программный скрипт на C#) который работает на стороне сервера и "ловит" событие когда в папку помещают документ. Такой триггер заберет права у документа и назначит "родителем" нужную папку.

В финале: у вас будет два шаблонных маршрута, один называется "Заблокировать документ но оставить право на дочерние" а второй "Окончательная блокировка". В каждом - по одной точке копирования ссылки, на разные папки. Некто (человек) должен будет запустить такие маршруты, а система заберет права.

Цена такого решения невысока (и стоит обычно в рамках несколько дней работы программиста), но есть "человеческий фактор" - участие пользователя все же требуется, кто-то должен решать что нужно отправить по маршруту например, но можно заложить теорию что "Если согласен - следующая точка это копия ссылки" - это сработает для случая "начальник согласен", но второй маршрут по факту создания дочернего документа уже придется вручную запустить.
Можно сделать и полностью автоматическое решение, но такой модуль будет стоить дороже.

Если вы находитесь на стадии "выбора системы", и это единственное, что вас удерживает от приобретения, то к договору (который вы будете согласовывать с нами) можно добавить тех.задание на этот процесс, оговорить сроки и "что должно получиться в итоге", и такое будет сделано.

Ответить

Вернуться в «Права доступа к папкам и документам»