• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Получение Роли Для Члена Группы В Acl

seoman2

Green Team
17.02.2010
504
1
BIT
46
Как получить роль пользователя, если юзер не указан явно в ацл, а входит в какую-то группу, к примеру Vasia в группу User?
Set entery = acl.GetEntry(session.UserName) не найдет роль юзера, который не указан явно в ацл.
В хелпе советуют db.QueryAccess
но
level% = db.QueryAccess(session.UserName)
возвращает уровень доступа юзера, а не его роль.
 
S

susinmn

QueryAccessRoles method

Returns the roles of a person, group, or server in a database.
Note This method is new with Release 6.

Syntax
roles = notesDatabase.QueryAccessRoles( name$ )

Parameters
name$
String. The name of the person, group, or server.
Return value
roles
String array.
If the name has roles, each element of the array contains one role. Each role name is surrounded by square brackets, for example, "[Supervisor]."
If the name has no roles, the array has one element that contains an empty string.
Usage
If the name you specify is listed explicitly in the ACL, then QueryAccessRoles returns the roles for that ACL entry and does not check groups.
If the name you specify is not listed explicitly in the ACL, QueryAccess checks to see if the name is a member of a group in the primary address book where the program is running: on a workstation the Personal Address Book; on a server the Domino Directory.

или

Evaluate({@UserNamesList })

Note This @Function is new with Release 5.
Syntax
@UserNamesList
Return value
names
Text list. Each list item is a name or role as specified above. Returns an empty string ("") if the current database is local and "Enforce a consistent Access Control List across all replicas" is not in effect, and the database is not replicated with the server database at least once.
 
L

lionk

если в лотус скрипте и для контроля доступа пользуйся макросом:

Dim ret As Variant
ret=Evaluate(|@IsMember("[Admin]" ; @UserRoles)|)

If ret(0)="1" Then
ну тут ты понял
end if
 
O

Omh

Ну зачем использовать порнушный Evaluate, когда есть прекрасные
QueryAccess
QueryAccessRoles
QueryAccessPrivileges
?
 
O

Omh

lionk
Ну как бы сама конструкция порнушная :)
Результат возвращается в вариант, тем более зависит от команды поданной в эвалуейт.
Хотя да, работает :)

Ну, и, собственно, порнушный - не значит плохой :)
Скорее, даже, наоборот. :lol:
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
181
:)
Скорее, даже, наоборот. laugh.gif
Только хардкор :lol:

а если по теме:
Код:
Rol = db.QueryAccessRoles (session.UserName)
Так же вернет String array, что бы найти нужную роль (если не одна) в массиве его надо будет перебрать.
Код:
Evaluate(|@IsMember("[Admin]"; @UserRoles)|)
Вернет результат наличия роли.
С другой стороны, если верить Help, QueryAccessRoles вернет роли на основе групп, если User не прописан явно, а вот @UserRoles не вернет.
Так что вопрос даже не вкуса, а области/места применения, ну и задачи.
 
O

Omh

savl
Бро!!!
Если писать спагетти кодом (как я не люблю), то можно преверить одной строкой:
Код:
HasRole = Not IsNull(ArrayGetIndex(db.QueryAccessRoles(session.Username); "[DESIRED_ROLE]"))
И не надо порнушных эвалуэйтов @IsMember
 
L

lionk

С другой стороны, если верить Help, QueryAccessRoles вернет роли на основе групп, если User не прописан явно, а вот @UserRoles не вернет.

@UserRoles вернёт все роли, если пользователь в АЦЛ нет явно прописан, а есть только группа в которой он прописан.
но если он прописан явно, то вернёт те роли которые навешены на пользователе, а роли на групах, где он есть, не будут отображены.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!