получение списка делегирования доступа пользователей всех пользователей - PullRequest
0 голосов
/ 26 марта 2019

Я работаю над Приложением, в котором мне нужно предоставить Список участников, для которых Текущий Пользователь имеет право делегирования доступа к почте, Календарю, Todo.

Здесь я ограничен в том, чтобы касаться ACL клиента, только Клиент может добавлять пользователей делегирования доступа из своего почтового ящика следующими способами.

Из почтового ящика-> Подробнее ...

  1. Перейдите в «Настройки»> «Делегирование».

  2. Нажмите Добавить человека или группу.

  3. Укажите, кто должен иметь доступ.

  4. Выберите, какой объем вашего почтового файла вы хотите, чтобы делегаты имели доступ к

  5. Выберите задачи, которые должен выполнять делегат.

Теперь у меня есть Value Picker, где я пытаюсь получить всех пользователей из "names.nsf", а затем получить имя файла "mail.nsf", выполняя идентификацию каждого пользователя.

Но при попытке пойти дальше, чтобы получить доступ к Почтовой базе данных пользователя, которого нет в ACL, но есть внутри Делегирования доступа. Выдает ошибку, которая не может получить доступ к Db почты этого пользователя,

Ниже приведен код:

try{
var allowed_by:java.util.Vector = new java.util.Vector();
var db = session.getCurrentDatabase();
var server_name  = db.getServer();
var name_db:NotesDatabase = session.getDatabase(server_name,"names.nsf",false);
var name_v:NotesView = name_db.getView("($VIMPeople)");
var all_view_entries:NotesViewEntryCollection = name_v.getAllEntries();
var loggedInUser = @Name('[CANONICALIZE]',@UserName());
var entry:NotesViewEntry = all_view_entries.getFirstEntry();


while (entry != null) 
{ 
   var person_doc:NotesDocument = entry.getDocument();
   var mail_db_info = person_doc.getItemValueString("mailFile");    
   var maildb:NotesDatabase = session.getDatabase(server_name, mail_db_info, false)

  if(maildb.isCurrentAccessPublicReader()){
     var profile_doc = maildb.getProfileDocument("calendarprofile","");
     var ReadCalendarItem:NotesItem = profile_doc.Getfirstitem("ReadCalendar");
     allowed_by.add(maildb.getFileName()); 
   }else{
     allowed_by.add("No Access");
   }
        var tmpentry = all_view_entries.getNextEntry();
        entry.recycle();
        entry = tmpentry;
}
return allowed_by;

}catch(err){
return err+"";
}

В приведенном выше коде я пытаюсь распечатать только имя почтового файла для тестирования, но это невозможно, поскольку текущий пользователь не указан во всех почтовых БД пользователя,

Но в каком-то пользовательском списке делегирования доступа к почте присутствует текущий пользователь.

Фактическая проблема с примером: Пользователь A зарегистрирован

Пользователь B имеет пользователя A в своем делегировании доступа, но не в списке контроля доступа B почтовой БД. Поэтому, когда A входит в систему и пытается получить пользователя B в списке средства выбора значений, к которому он / она имеет делегированный доступ (не в ACL), каков будет путь к добиться этого в списке?

Выше код преобразуется из скрипта Lotus в SSJS. Ссылка-ссылка введите описание ссылки здесь

Было бы очень полезно, как знание, узнать вышеизложенное понятие о том, как оно работает, и теперь, как мне выполнить это требование.

Ответы [ 3 ]

1 голос
/ 27 марта 2019

Если вы можете прочитать содержимое каталога доменов, вы можете выполнить поиск по имени, которое вы ищете, а затем проверить уровень доступа на основе ManagerList, DesignerList и т. Д.

0 голосов
/ 27 марта 2019

Вы можете ответить на вопрос "У кого есть доступ к этому почтовому ящику?"читая записи в ACL почтового ящика и решая (рекурсивно) найденные группы.Отвечая на вопрос "К каким почтовым ящикам у меня есть доступ?"может быть сделано только методом проб и ошибок;например, при попытке открыть каждую почтовую базу

0 голосов
/ 27 марта 2019

В вашем предположении есть общая ошибка: вы думаете, что ACL и Делегирование в профиле Календаря существуют независимо друг от друга.Это чисто неправильно.Делегирование календаря - это просто пользовательский интерфейс для ACL.Все права, которые вы даете кому-либо через делегирование, затем затеняются в ACL базы данных, либо напрямую (если пользователь имеет доступ администратора к своему почтовому файлу), либо через процесс администратора на сервере.

Итак: нетнужно изучить профиль календаря.Просто спросите «isopen» свойство базы данных.Если он не открыт, значит, у вас нет доступа к базе данных.

...