0 / 0 / 0
Регистрация: 16.02.2007
Сообщений: 403
|
|
1 | |
Acl и Lotusscript25.06.2007, 12:21. Показов 27161. Ответов 19
Метки нет Все метки)
(
Помогите выловить багу, досталась по наследству.
В общем суть такова, есть документ который может редактировать только юзер с ролью [Admin] Заколбашена функция проверки, которую я уже тупо упростил до безобразия. Т.е. просто проверяю выведит ли ф-ия список ролей юзера Код
Function isAdmin ............ Dim acl As NotesACL Dim aclentry As NotesACLEntry Set db = ns.CurrentDatabase Set acl = db.acl Set aclentry = acl.GetEntry(ns.UserName) Forall r In aclentryRoles Messagebox(r) End Forall End Function Но происходит Object Variable not Set Где копать уже ума не приложу.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
25.06.2007, 12:21 | |
Ответы с готовыми решениями:
19
Lotusscript Enumeration В Lotusscript Проблема с LotusScript Lotusscript Library |
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
25.06.2007, 12:27 | 2 |
Копай здесь:
<!--QuoteBegin-LIGHT+26:06:2007, 12:08 --> <span class="vbquote">(LIGHT @ 26:06:2007, 12:08 )</span><!--QuoteEBegin-->Forall r In aclentryRoles [snapback]70601" rel="nofollow" target="_blank[/snapback]?[/quote]
0
|
0 / 0 / 0
Регистрация: 16.02.2007
Сообщений: 403
|
|
25.06.2007, 12:30 | 3 |
Да, тут и копаю, только уже почти закопался
0
|
1 / 1 / 0
Регистрация: 23.04.2006
Сообщений: 226
|
|
25.06.2007, 12:36 | 4 |
aclentryRoles - точка пропущена Forall r In aclentry.Roles
0
|
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
25.06.2007, 12:39 | 5 |
<!--QuoteBegin-LIGHT+26:06:2007, 12:17 -->
<span class="vbquote">(LIGHT @ 26:06:2007, 12:17 )</span><!--QuoteEBegin-->Да, тут и копаю, только уже почти закопался [snapback]70604" rel="nofollow" target="_blank[/snapback]?[/quote] Точку поставить забыл в "aclentryRoles". Найдешь где? <!--QuoteBegin-LIGHT+26:06:2007, 12:08 --> <span class="vbquote">(LIGHT @ 26:06:2007, 12:08 )</span><!--QuoteEBegin-->В общем суть такова, есть документ который может редактировать только юзер с ролью [Admin] [snapback]70601" rel="nofollow" target="_blank[/snapback]?[/quote] Сделай по-нормальному через поле типа Authors. А так можно еще через Evaluate сделать: Код
Dim result As Variant result = Evaluate({@IsMember("[Admin]"; @UserRoles)}) if result(0) = 1 Then Админ
0
|
0 / 0 / 0
Регистрация: 16.02.2007
Сообщений: 403
|
|
25.06.2007, 13:59 | 6 |
А точку я тут забыл поставить, в бивал код кучками. В оригинале она есть.
Другие методы не подходят по ряду причин. Интересует именно почему не работает в такой конструкцие, причем в хелпе есть аналогичный пример.
0
|
0 / 0 / 0
Регистрация: 27.03.2006
Сообщений: 122
|
|
25.06.2007, 14:08 | 7 |
Для: LIGHT
опять же - может база локальная?
0
|
0 / 0 / 0
Регистрация: 16.02.2007
Сообщений: 403
|
|
25.06.2007, 14:14 | 8 |
Нет база разумеется на сервере
0
|
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
25.06.2007, 14:20 | 9 |
Для: LIGHT
В какой строке ошибка?
0
|
0 / 0 / 0
Регистрация: 27.03.2006
Сообщений: 122
|
|
25.06.2007, 14:22 | 10 |
..в каком месте останавливается хотя бы - так гадать трудно ... может у тебя например ns не инициализированно
0
|
1 / 1 / 0
Регистрация: 23.04.2006
Сообщений: 226
|
|
25.06.2007, 14:28 | 11 |
У меня получилось так
Код
Dim acl As NotesACL Dim aclentry As NotesACLEntry Dim session As New NotesSession Set db=session.CurrentDatabase Set acl = db.acl Set aclentry = acl.GetEntry(session.UserName) Forall r In aclentry.Roles Messagebox(r) End Forall
0
|
0 / 0 / 0
Регистрация: 16.02.2007
Сообщений: 403
|
|
25.06.2007, 14:38 | 12 |
<!--QuoteBegin-Medevic+26:06:2007, 12:26 -->
<span class="vbquote">(Medevic @ 26:06:2007, 12:26 )</span><!--QuoteEBegin-->Dim result As Variant result = Evaluate({@IsMember("[Admin]"; @UserRoles)}) if result(0) = 1 Then Админ [snapback]70606" rel="nofollow" target="_blank[/snapback]?[/quote] Взял этот пример, работает. Еще не изучил как повлияет на логику остального кода... Почему не рабоал мой пример фиг знает. Все переменные инициализированы.... в общем какая-то бяка, дебагер затыкался тут<!--QuoteBegin-LIGHT+26:06:2007, 12:08 --> <span class="vbquote">(LIGHT @ 26:06:2007, 12:08 )</span><!--QuoteEBegin-->Forall r In aclentry.Roles [snapback]70601" rel="nofollow" target="_blank[/snapback]?[/quote]
0
|
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
25.06.2007, 14:46 | 13 |
Для: LIGHT
<!--QuoteBegin-LIGHT+26:06:2007, 12:08 --> <span class="vbquote">(LIGHT @ 26:06:2007, 12:08 )</span><!--QuoteEBegin-->Set aclentry = acl.GetEntry(ns.UserName) [snapback]70601" rel="nofollow" target="_blank[/snapback]?[/quote] Пользователь ns.UserName в ACL точно есть?
0
|
0 / 0 / 0
Регистрация: 16.02.2007
Сообщений: 403
|
|
25.06.2007, 15:12 | 14 |
<!--QuoteBegin-Medevic+26:06:2007, 14:33 -->
<span class="vbquote">(Medevic @ 26:06:2007, 14:33 )</span><!--QuoteEBegin-->Пользователь ns.UserName в ACL точно есть? [snapback]70633" rel="nofollow" target="_blank[/snapback]?[/quote] Конечно есть
0
|
0 / 0 / 2
Регистрация: 07.05.2005
Сообщений: 743
|
|
25.06.2007, 20:24 | 15 |
проверь
как написано aclentry.Roles или aсlentry.Roles Смотри в сторону русской "с"
0
|
poshosrush
|
|
06.07.2009, 13:52 | 16 |
![]() |
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
|
|
06.07.2009, 14:03 | 17 |
А
Код
db.QueryAccessRoles
0
|
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
|
|
06.07.2009, 15:41 | 18 |
Вот я себе такое писал. Функция проверяет права пользователя на документ. В моем случае нужна проверка минимум на чтение.
Функция берет роли пользователя, всех пользователей из необходимых Names-полей документа, далее берет всех пользователей из возможных груп и проверяет вхождение ролей пользователя или самого пользователя в полученном списке входной параметр UName - в каноническом виде на выходе True - есть доступ и False - соответственно нет. Код
Function CheckUserRoles( Doc As NotesDocument, UName As Variant ) As Boolean Dim Session As New NotesSession Dim DB As NotesDatabase Dim RolesArray As Variant Dim MembersArray As Variant Dim res Dim i As Integer Redym RolesArray(0) As Variant Set DB = Session.CurrentDatabase MembersArray = { authors := AuthorsID:AddAuthorsID:DefAuthorsID:ReadersID:AddReadersID; authors := @ExpandNameList(@Subset(@DbName; 1);authors); @Unique(@Trim(authors)); } MembersArray = Evaluate( MembersArray, Doc ) RolesArray = DB.QueryAccessRoles( Uname ) MembersArray = Arrayreplace( MembersArray, RolesArray, "^" ) res = Arraygetindex( MembersArray, "^" ) If Not Isnull( res ) Then CheckUserRoles = True Exit Function End If MembersArray = Arrayreplace( MembersArray, UName, "^" ) res = Arraygetindex( MembersArray, "^" ) If Not Isnull( res ) Then CheckUserRoles = True Exit Function End If For i = 0 To Ubound( MembersArray ) If Instr( MembersArray(i), "<тут я пишу начало названия группы. у меня оно одинаковое для всех групп>" ) = 0 Then MembersArray(i) = "" End If Next MembersArray = Fulltrim( MembersArray ) For i = 0 To Ubound( MembersArray ) RolesArray = Arrayappend( RolesArray, Split( GetGroupMembers( "", "", MembersArray(i), ";", False ), ";" ) ) Next MembersArray = Arrayreplace( RolesArray, UName, "^" ) res = Arraygetindex( MembersArray, "^" ) If Not Isnull( res ) Then CheckUserRoles = True End If End Function ее уже пиши сам или выкидывай если не надо
0
|
0 / 0 / 0
Регистрация: 18.07.2008
Сообщений: 242
|
|
07.07.2009, 09:06 | 19 |
aclentry.values - может такое проканает?
0
|
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
|
|
07.07.2009, 10:26 | 20 |
без понятия. да и разбираться не хочется. я поделился тем что у меня работает
0
|
07.07.2009, 10:26 | |
Помогаю со студенческими работами здесь
20
Lotusscript -> Javascript Lotusscript -> @-формулы Lotusscript *.lss Lotusscript And Word Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |