• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Querydocumentdelete

  • Автор темы Автор темы yerke
  • Дата начала Дата начала
Y

yerke

Здравствуете, знатоки лотуса!
Обрабатываю событие QueryDocumentDelete.
Возник следующий вопрос: можно ли программно узнать , имеет ли юзер права на удаление документов, до того как об этом дать знать сама система(ну выдаст сообщение, если у юзера нету таких прав).
 
CanDeleteDocuments property

это свойство сидит у NotesACLEntry

This script creates an entry for Eben Klemm in the current database and gives him Author access. It gives him the right to create documents in the database and denies him the right to delete documents.
Код:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim acl As NotesACL
Dim entry As NotesACLEntry
Set db = session.CurrentDatabase
Set acl = db.ACL
Set entry = New NotesACLEntry _
( acl, "Eben Klemm/East/ACME", ACLLEVEL_AUTHOR )
entry.CanCreateDocuments = True
entry.CanDeleteDocuments = False
Call acl.Save
 
Для yerke:
Как альтернатива QueryAccessPrivileges у NotesDatabase.

Для: Morpheus
КМК, если юзер будет в группе, через NotesACL будет сложновато понять, что у него за права.
 
<!--QuoteBegin-Omh+11:10:2007, 15:48 -->
<span class="vbquote">(Omh @ 11:10:2007, 15:48 )</span><!--QuoteEBegin-->Как альтернатива QueryAccessPrivileges у NotesDatabase.
[snapback]81441" rel="nofollow" target="_blank[/snapback]​
[/quote]
Да , скорее это будет даже лучше
 
работаю на лотусе 5,0,8
там еще не появился метод QueryAccessPrivileges :)
так что наверное буду использовать notesaclentry
тем более у меня в акл нету юзеров которые сидят в группе

придется еще раз спросить
:D
1)как работает событие Querydocumentdelete точнее параметр Continue
если поставить Continue=false, то он запрещает удалят все документы, полученные с помощью UnprocessedDocuments?

или запрещает удалят определенный обрабатываемый циклом документ
например если так
Код:
		Dim curdb As notesdatabase
Set curdb=source.database
Dim udc As notesdocumentcollection
Set udc=CurDB.UnprocessedDocuments	
If udc.count=0 Then Exit Sub
Dim tdoc As notesdocument
Dim nxtdoc As notesdocument

Set tdoc=udc.getfirstdocument
Dim i As Integer
For i=1 To udc.count
Set nxtdoc=udc.getnextdocument(tdoc)
If i=3 Then 
Continue=True
Else
Continue=False
End If		
Set tdoc=nxtdoc
Next
то удаляется тока 3-ий по порядку документ или как?

2) допустим при удалении документа должен удалятся вместе связанные с этим доком(ну у них определенное поле содержит одинаковое значение) другие доки
отбираю эти доки с помощью search и вызываю Call notesDocumentCollection.RemoveAll(true)
объясните при вызове Call notesDocumentCollection.RemoveAll(true) что происходит?
опять поднимается событие Querydocumentdelete?
ведь Call notesDocumentCollection.RemoveAll(true) находится внутри Querydocumentdelete.

3) поднимается ли событие Querydocumentdelete при удалении дока программно?
 
1. Само событие не удаляет документ. Документы удаляются после обработки события. Поэтому Continue = False запретит удалить все документы.
2. Нет. События возникают только при работе пользователя в UI.
3. Если notesDocument.Remove, то нет. Если notesUIDocument.DeleteDocument, то да.
 
Для: Medevic
Для: Morpheus
Для: Omh
спасибо за подробные ответы ребята
:)

<!--QuoteBegin-Medevic+12:10:2007, 07:32 -->
<span class="vbquote">(Medevic @ 12:10:2007, 07:32 )</span><!--QuoteEBegin-->3. Если notesDocument.Remove, то нет. Если notesUIDocument.DeleteDocument, то да.
[snapback]81499" rel="nofollow" target="_blank[/snapback]​
[/quote]

но как тогда перехватить программное удаление доков
:D
 
<!--QuoteBegin-yerke+12:10:2007, 09:40 -->
<span class="vbquote">(yerke @ 12:10:2007, 09:40 )</span><!--QuoteEBegin-->но как тогда перехватить программное удаление доков
[snapback]81500" rel="nofollow" target="_blank[/snapback]​
[/quote]
Запретить всем удаление и удалять агентом.
 
Dim curdb As notesdatabase
Set curdb=source.database
Dim udc As notesdocumentcollection
Set udc=CurDB.UnprocessedDocuments
If udc.count=0 Then Exit Sub
Dim tdoc As notesdocument
Dim nxtdoc As notesdocument

Set tdoc=udc.getfirstdocument
Dim i As Integer
For i=1 To udc.count
Set nxtdoc=udc.getnextdocument(tdoc)
If i=3 Then
Continue=True
Else
Continue=False
End If
Set tdoc=nxtdoc
Next

Не Continue=True или Continue=False нужно ставить,а notesDocument.Remove...и не по коллекции бегать, а по юнидам и по условию... :D :D :D
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы