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

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

  1. solomonec

    solomonec Active Member

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

    savl Lotus team
    Lotus team

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

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

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

    solomonec Active Member

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

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

    savl Lotus team
    Lotus team

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

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

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

    solomonec Active Member

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

    savl Lotus team
    Lotus team

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

    afest Well-Known Member

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

    solomonec Active Member

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

    solomonec Active Member

    Регистрация:
    14 апр 2013
    Сообщения:
    36
    Симпатии:
    0
    Посмотрел что пользователи базы в других группах не состоят, галочки с удалением у группы убраны....Посмотрел в Querydocumentdelete и там вот такой код
    Код (LotusScript):
    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 Lotus team
    Lotus team

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

    Если форма "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

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

    savl Lotus team
    Lotus team

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

    afest Well-Known Member

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

    lmike нет, пердело совершенство
    Команда форума Lotus team

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

    savl Lotus team
    Lotus team

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

    lmike нет, пердело совершенство
    Команда форума Lotus team

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

    solomonec Active Member

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

    savl Lotus team
    Lotus team

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

    solomonec Active Member

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

    afest Well-Known Member

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

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

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