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

solomonec

Active member
14.04.2013
39
0
#1
Здраствуйте уважаемые эксперты! У меня есть вопросы касающиеся использования ролей - Где можно посмотреть что запрещают и разрешают роли в дизайне бази....могут ли они запрещать удалять записи в базе...и где обычно их прописываю в коде при разработке бази...
 

savl

Lotus team
28.10.2011
2 135
104
#2
solomonec
Удалять, создавать, копировать, создавать папки, запускать агенты и так далее. Позволяет запись в ACL и галочки на разрешения.

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

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

solomonec

Active member
14.04.2013
39
0
#3
solomonec
Удалять, создавать, копировать, создавать папки, запускать агенты и так далее. Позволяет запись в ACL и галочки на разрешения.

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

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

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

savl

Lotus team
28.10.2011
2 135
104
#4
solomonec
У групп полбеды, если человек прописан на прямую - такая запись приоритетна.
Как именно удаляют? Del на клаве + F9(аналогично правая кнопка мыши - удалить) или через кнопку в форме/представлении?

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

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

solomonec

Active member
14.04.2013
39
0
#5
solomonec
У групп полбеды, если человек прописан на прямую - такая запись приоритетна.
Как именно удаляют? Del на клаве + F9(аналогично правая кнопка мыши - удалить) или через кнопку в форме/представлении?

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

Добавлено: А еще если человек входит только по группе, то свойства групп - складываются.
То есть он может быть в двух группах, одна прописана в базу с удалением, вторая без - пойдет сумма и будет удаление.
Удаляют через Del на клаве + F9(аналогично правая кнопка мыши - удалить)
 

savl

Lotus team
28.10.2011
2 135
104
#6
Тогда должна быть галочка, так или иначе она есть, либо все же скрипт от имени админа или сервера есть на Querydocumentdelete
 

afest

Well-known member
16.06.2009
78
0
#7
может в доступе по дефолту стоит птычко на удаление
 

solomonec

Active member
14.04.2013
39
0
#9
Тогда должна быть галочка, так или иначе она есть, либо все же скрипт от имени админа или сервера есть на Querydocumentdelete
Посмотрел что пользователи базы в других группах не состоят, галочки с удалением у группы убраны....Посмотрел в 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.....а у меня в ней никого и нету...
 

savl

Lotus team
28.10.2011
2 135
104
#10
Воооотт, по коду видно что:

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

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

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

solomonec

Active member
14.04.2013
39
0
#11
Воооотт, по коду видно что:

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

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

Если форма "eannexapproval" то:
1. можно удалять если поле Status не содержит в себе "0" или "1"
2. иначе если есть роль [eAppAdmin]
Да верно, однако у меня форма document не та которую удаляют через view, a удаляют document1, document2, document3.....а сработает ли финт если добавить код для трех документов...чтобы скажем если пользователи не являются представителями определенной роли то записи удалить нельзя...?
 

savl

Lotus team
28.10.2011
2 135
104
#12
solomonec
Сработает, если добавить в условие эти формы. Сейчас их нет, поэтому и можно удалить.
Как только внесете в код - необходимо чтобы пользователи прервали сессии с базой, тогда начнет действовать.
 

afest

Well-known member
16.06.2009
78
0
#13
Replace design поможет (если нет, то доки пройтись ComputeWithForm)... ну и сессии нужно будет перегрузить
бЗЫ: реплейс иль агент с ComputeWithForm делать только при полностью всех закрытых сессиях!!! иначе доки конфликтами станут иль вообще пропадут, всяко бывает
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#14
граблеходцам на заметку...
если делать роли в дизайне (в св-вах формы) - получим поля $Readers апдейт которых может проистекать не совсем гладко
можно добавить свои ридерс/авторс и в них нахрдкодить дефолтные роли, сделать их компутед (хотя это и не очень красиво)
тогда после апдейта дизайна - просто запустить @Command([ToolsRefreshSelectedDocs]) (вынести на смартайкон)
можно, попутно, снести редерс - если они перекрывают права
в любом случае, до всего процесса - бекап и вынос его за пределы компа, с пометкой времени и действия
 

savl

Lotus team
28.10.2011
2 135
104
#15
afest
lmike
При всем уважении, коллеги: Вопрос был в том: почему документы по формам "Document1", "Document2" удаляются, а под другим нет?
Ответ был в коде Querydocumentdelete, где жестко прописаны формы,роли и условия.
Как я понял, автор вставит туда условия для своих форм и решит проблему до появления новой формы.
Решение не очень, но видимо устраивает.
Сам предпочитаю ставить документам статус или флаг "Удален" и не сносить из базы некоторое время.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#16
savl да, я был невнимателен к постановке вопроса и отвечал на несколько др. тему :)
но вопрошающий может нарваться и на собственный код, кот. будет под юзером удалять доки (а правами не ограничен)
 

solomonec

Active member
14.04.2013
39
0
#17
afest
lmike
При всем уважении, коллеги: Вопрос был в том: почему документы по формам "Document1", "Document2" удаляются, а под другим нет?
Ответ был в коде Querydocumentdelete, где жестко прописаны формы,роли и условия.
Как я понял, автор вставит туда условия для своих форм и решит проблему до появления новой формы.
Решение не очень, но видимо устраивает.
Сам предпочитаю ставить документам статус или флаг "Удален" и не сносить из базы некоторое время.
Так у меня они сразу не удаляются а помичаются и видны в треше....чтобы потом можно было вручную удалить с концами...
 

savl

Lotus team
28.10.2011
2 135
104
#18
вьюха для удаленных $Trash?
Тогда по факту они удаляются, просто включено Soft Deletion, там же срок хранения еще выставляется 48 дней, кажется
 

afest

Well-known member
16.06.2009
78
0
#20
Soft Deletion выключена

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