1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

Использование Ролей Для Предоставление Доступа.

Тема в разделе "Lotus - Программирование", создана пользователем solomonec, 17 фев 2014.

  1. solomonec

    solomonec Active Member

    Репутация:
    0
    Регистрация:
    14 апр 2013
    Сообщения:
    39
    Симпатии:
    0
    Здраствуйте уважаемые эксперты! У меня есть вопросы касающиеся использования ролей - Где можно посмотреть что запрещают и разрешают роли в дизайне бази....могут ли они запрещать удалять записи в базе...и где обычно их прописываю в коде при разработке бази...
     
  2. savl

    savl Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    28 окт 2011
    Сообщения:
    2.116
    Симпатии:
    157
    solomonec
    Удалять, создавать, копировать, создавать папки, запускать агенты и так далее. Позволяет запись в ACL и галочки на разрешения.

    Роли можно прописывать в поля Authors, Readers. Что в свою очередь дает владельцу роли: редактировать(Authors), видеть(Readers)
    Через дизайнер можно запретить видимость отдельных элементов дизайна: формы, представления, агенты, пункты в навигаторе.
    Можно настроить видимость отдельных полей, кнопок.
    Можно использовать роли в коде, запрет того или иного действия.

    В целом лучше почитать Help Domino Designer, плюс ветку FAQ данного форума + дополнительный материал в интернете.
     
  3. solomonec

    solomonec Active Member

    Репутация:
    0
    Регистрация:
    14 апр 2013
    Сообщения:
    39
    Симпатии:
    0

    Просто проблема состоит в том что галочки у групы на удаление документов(записей) сняты, но удалять они все равно могут...вот я и пытаюсь выяснить что и где смотреть.....
     
  4. savl

    savl Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    28 окт 2011
    Сообщения:
    2.116
    Симпатии:
    157
    solomonec
    У групп полбеды, если человек прописан на прямую - такая запись приоритетна.
    Как именно удаляют? Del на клаве + F9(аналогично правая кнопка мыши - удалить) или через кнопку в форме/представлении?

    Если удаляют через кнопку "удалить" в базе, то скорее всего на ней агент или скрипт удаляющий документы.
    Посмотри еще Database script событие Querydocumentdelete, порою там пишут.

    Добавлено: А еще если человек входит только по группе, то свойства групп - складываются.
    То есть он может быть в двух группах, одна прописана в базу с удалением, вторая без - пойдет сумма и будет удаление.
     
  5. solomonec

    solomonec Active Member

    Репутация:
    0
    Регистрация:
    14 апр 2013
    Сообщения:
    39
    Симпатии:
    0
    Удаляют через Del на клаве + F9(аналогично правая кнопка мыши - удалить)
     
  6. savl

    savl Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    28 окт 2011
    Сообщения:
    2.116
    Симпатии:
    157
    Тогда должна быть галочка, так или иначе она есть, либо все же скрипт от имени админа или сервера есть на Querydocumentdelete
     
  7. afest

    afest Well-Known Member

    Репутация:
    0
    Регистрация:
    16 июн 2009
    Сообщения:
    78
    Симпатии:
    0
    может в доступе по дефолту стоит птычко на удаление
     
  8. solomonec

    solomonec Active Member

    Репутация:
    0
    Регистрация:
    14 апр 2013
    Сообщения:
    39
    Симпатии:
    0
    Да нет не стоит там галочка....
     
  9. solomonec

    solomonec Active Member

    Репутация:
    0
    Регистрация:
    14 апр 2013
    Сообщения:
    39
    Симпатии:
    0
    Посмотрел что пользователи базы в других группах не состоят, галочки с удалением у группы убраны....Посмотрел в Querydocumentdelete и там вот такой код
    Код:
    Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
    Dim doc As NotesDocument
    Dim y As Long
    Continue = True
    If( Source.Documents.Count > 0 ) Then
    For y = Source.Documents.Count To 1 Step -1
    Set doc = Source.Documents.GetNthDocument(y)
    If Not( doc.Hasitem("$Conflict") ) Then
    If( emsg Is Nothing ) Then Set emsg = New esamsg(Nothing)
    '---------------------------------------------------------------------------------------------
    'put here your specific code to control witch document can be deleted
    '---------------------------------------------------------------------------------------------				
    If( doc.Form(0) = "document" ) Then
    If( doc.Status(0) <> "1" ) Then
    vEval = Evaluate(|@IsNotMember("[eAppAdmin]";@UserRoles)|)
    If( vEval(0) ) Then
    Continue = False
    Messagebox emsg.getstring(eMSG_COMMON,eMSG_DELNOTAUTHORIZED,Null,Nothing), 16, emsg.getstring(eMSG_COMMON,eMSG_TITLE,Null,Nothing)
    Exit For
    End If
    End If
    Elseif( doc.Form(0) = "eannextask" ) Then
    If( doc.Status(0) = "1" Or doc.Status(0) = "2" ) Then
    vEval = Evaluate(|@IsNotMember("[eAppAdmin]";@UserRoles)|)
    If( vEval(0) ) Then
    Continue = False
    Messagebox emsg.getstring(eMSG_COMMON,eMSG_DELNOTAUTHORIZED,Null,Nothing), 16, emsg.getstring(eMSG_COMMON,eMSG_TITLE,Null,Nothing)
    Exit For
    End If
    End If
    Elseif( doc.Form(0) = "eannexapproval" ) Then
    If( doc.Status(0) = "0" Or doc.Status(0) = "1" ) Then
    vEval = Evaluate(|@IsNotMember("[eAppAdmin]";@UserRoles)|)
    If( vEval(0) ) Then
    Continue = False
    Messagebox emsg.getstring(eMSG_COMMON,eMSG_DELNOTAUTHORIZED,Null,Nothing), 16, emsg.getstring(eMSG_COMMON,eMSG_TITLE,Null,Nothing)
    Exit For
    End If
    End If
    End If
    '---------------------------------------------------------------------------------------------				
    'end of your specifi code
    '---------------------------------------------------------------------------------------------
    End If
    Next
    If( Continue ) Then
    Call eevents.Querydocumentdelete(Source,Continue)
    End If
    End If
    End Sub
    Но здесь я вижу разве что месседжбокс который срабатывает для всех кто не состоит в роли eAppAdmin.....а у меня в ней никого и нету...
     
  10. savl

    savl Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    28 окт 2011
    Сообщения:
    2.116
    Симпатии:
    157
    Воооотт, по коду видно что:

    Если форма "document", то:
    1. можно удалять если поле Status = "1"
    2. иначе если есть роль [eAppAdmin]

    Если форма "eannextask" то:
    1. можно удалять если поле Status не содержит в себе "1" или "2"
    2. иначе если есть роль [eAppAdmin]

    Если форма "eannexapproval" то:
    1. можно удалять если поле Status не содержит в себе "0" или "1"
    2. иначе если есть роль [eAppAdmin]
     
  11. solomonec

    solomonec Active Member

    Репутация:
    0
    Регистрация:
    14 апр 2013
    Сообщения:
    39
    Симпатии:
    0
    Да верно, однако у меня форма document не та которую удаляют через view, a удаляют document1, document2, document3.....а сработает ли финт если добавить код для трех документов...чтобы скажем если пользователи не являются представителями определенной роли то записи удалить нельзя...?
     
  12. savl

    savl Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    28 окт 2011
    Сообщения:
    2.116
    Симпатии:
    157
    solomonec
    Сработает, если добавить в условие эти формы. Сейчас их нет, поэтому и можно удалить.
    Как только внесете в код - необходимо чтобы пользователи прервали сессии с базой, тогда начнет действовать.
     
  13. afest

    afest Well-Known Member

    Репутация:
    0
    Регистрация:
    16 июн 2009
    Сообщения:
    78
    Симпатии:
    0
    Replace design поможет (если нет, то доки пройтись ComputeWithForm)... ну и сессии нужно будет перегрузить
    бЗЫ: реплейс иль агент с ComputeWithForm делать только при полностью всех закрытых сессиях!!! иначе доки конфликтами станут иль вообще пропадут, всяко бывает
     
  14. lmike

    lmike нет, пердело совершенство
    Lotus team

    Репутация:
    3
    Регистрация:
    27 авг 2008
    Сообщения:
    6.406
    Симпатии:
    346
    граблеходцам на заметку...
    если делать роли в дизайне (в св-вах формы) - получим поля $Readers апдейт которых может проистекать не совсем гладко
    можно добавить свои ридерс/авторс и в них нахрдкодить дефолтные роли, сделать их компутед (хотя это и не очень красиво)
    тогда после апдейта дизайна - просто запустить @Command([ToolsRefreshSelectedDocs]) (вынести на смартайкон)
    можно, попутно, снести редерс - если они перекрывают права
    в любом случае, до всего процесса - бекап и вынос его за пределы компа, с пометкой времени и действия
     
  15. savl

    savl Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    28 окт 2011
    Сообщения:
    2.116
    Симпатии:
    157
    afest
    lmike
    При всем уважении, коллеги: Вопрос был в том: почему документы по формам "Document1", "Document2" удаляются, а под другим нет?
    Ответ был в коде Querydocumentdelete, где жестко прописаны формы,роли и условия.
    Как я понял, автор вставит туда условия для своих форм и решит проблему до появления новой формы.
    Решение не очень, но видимо устраивает.
    Сам предпочитаю ставить документам статус или флаг "Удален" и не сносить из базы некоторое время.
     
  16. lmike

    lmike нет, пердело совершенство
    Lotus team

    Репутация:
    3
    Регистрация:
    27 авг 2008
    Сообщения:
    6.406
    Симпатии:
    346
    savl да, я был невнимателен к постановке вопроса и отвечал на несколько др. тему :)
    но вопрошающий может нарваться и на собственный код, кот. будет под юзером удалять доки (а правами не ограничен)
     
  17. solomonec

    solomonec Active Member

    Репутация:
    0
    Регистрация:
    14 апр 2013
    Сообщения:
    39
    Симпатии:
    0
    Так у меня они сразу не удаляются а помичаются и видны в треше....чтобы потом можно было вручную удалить с концами...
     
  18. savl

    savl Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    28 окт 2011
    Сообщения:
    2.116
    Симпатии:
    157
    вьюха для удаленных $Trash?
    Тогда по факту они удаляются, просто включено Soft Deletion, там же срок хранения еще выставляется 48 дней, кажется
     
  19. solomonec

    solomonec Active Member

    Репутация:
    0
    Регистрация:
    14 апр 2013
    Сообщения:
    39
    Симпатии:
    0
    Да именно $Trash, но интересно то что Soft Deletion выключена.
     
  20. afest

    afest Well-Known Member

    Репутация:
    0
    Регистрация:
    16 июн 2009
    Сообщения:
    78
    Симпатии:
    0
    Soft Deletion выключена

    может на серваке (домино) стоят хитрые настройки?
     
Загрузка...

Поделиться этой страницей