IBM Domino 10 — Java XPage создает сеанс или сравнивает учетные данные другого пользователя

#xpages #lotus-notes #lotus-domino

#xpages #lotus-notes #lotus-domino

Вопрос:

Я пишу Java-код в службе XPage Rest на основеhttps://setza-projects.atlassian.net/wiki/spaces/RSD/pages/44007659/IBM Domino это служба REST, написанная на Java, используемая для обработки базы данных резервирования ресурсов. Однако, как это работает в настоящее время, это создает резервирования только для текущего пользователя сеанса:

 private JsonObject createIntanceAppointment(ResourceDefinition rd, Database reDatabase, Date dtStart, Date dtEnd, String subject) throws NotesException {
        Session session = reDatabase.getParent();
        Name nnOrganizier = session.createName(session.getEffectiveUserName());

        Name nnREsource = session.createName(rd.getFullName());
        DateTime dt_startDateUTC = session.createDateTime(dtStart);
        DateTime dt_endDateUTC = session.createDateTime(dtEnd);
        Document doc = reDatabase.createDocument();

        doc.replaceItemValue("form", "Reservation");
        doc.replaceItemValue("Purpose", subject);
        doc.replaceItemValue("ReservedFor", nnOrganizier.getCanonical());
        doc.replaceItemValue("ResourceName", nnREsource.getAbbreviated());
        doc.replaceItemValue("ResNameFormat", nnREsource.getAbbreviated());
  

Я делаю очень похожую интеграцию с Domino, хотя я бы предпочел, чтобы бронирования создавались для отдельных пользователей (они предоставляют свое имя пользователя и пароль в приложении бронирования номеров на сенсорном экране).
Я мог бы просто аутентифицироваться как пользователь в моем REST-клиенте, но если я правильно понимаю требования к установке для этого RoomZ api, «пользователь, управляющий api» должен быть подписан исключительно на базу данных, поэтому мне нужно было бы сделать это для каждого пользователя в Domino, который мог бы делать оговорки.

Я пытался использовать, NotesFactory.createSession("", "user", "password"); но это не работает, это выдает Cannot create a session from an agent ошибку, если я не могу создать другой сеанс, есть ли какой-либо способ, которым я мог бы проверить, что username и password , переданные API в полезной нагрузке, верны (чтобы проверить, может ли пользователь войти в систему)? Тогда я мог бы просто установить органайзер / зарезервированный для этого пользователя.

Кроме того, есть ли какой-либо способ сделать так, чтобы эти оговорки также отображались в календаре заметок организатора? В настоящее время они успешно созданы в базе данных резервирования и все такое, но организатор не знает о них, несмотря на то, что он назначен для резервирования.

Ответ №1:

Вам не нужно создавать сеанс для каждого пользователя. Важным является nnOrganizer = session.createName(» «), который должен содержать пользователя. Возможно, вам также потребуется задать дополнительные поля, такие как chair или from, для резервирования.

Если вы хотите иметь какие-то записи в календаре организаторов, отправьте им соответствующее приглашение или создайте запись календаря в их почтовом файле.

Комментарии:

1. Но с помощью nnOrganizer = session.createName("") я смог успешно создать резервирование для любого случайного имени пользователя, например, nnOrganizer = session.createName("CN=asdasdasd/O=Server") даже если пользователь не существовал на сервере Domino. Если идти этим путем, могу ли я как-то проверить, действительны ли некоторые учетные данные? Я бы отправил имя пользователя и пароль в полезной нагрузке json и подтвердил, что они действительны в Java XPage.

2. минимальной проверкой было бы убедиться, что пользователь существует в каталоге, и если пользователь находится в каталоге, существует функция session.verifyPassword….

3. Спасибо, я проверю это. Что касается приглашения организатора (чтобы он также увидел резервирование в своем календаре), как я мог этого добиться?

4. В качестве отправной точки вы могли бы использовать, например, itknowledgeexchange. techtarget.com/itanswers/… . Доступна схема календаря и планирования от IBM, которая пытается объяснить все поля. www-10. lotus.com/ldd/ddwiki.nsf/dx/cs_schema_toc