Я пишу API интеграции в Java для IBM Domino 10, хочу выполнить резервирование ресурсов (комнаты), получить и обновить их из внешнего источника.До сих пор я успешно создал запись в календаре текущего пользователя (текущий сеанс), и резервирование также прошло успешно, однако я хочу создать резервирование в качестве определенных пользователей (персонификация), поскольку только один пользователь настроен на использование моей базы данных API.Таким образом, основной пользователь привык делать все, но я хотел бы передать ему учетные данные других пользователей, и он должен создать события и бронирования в их календарях.Я могу проверить, существует ли пользователь и правильный ли его пароль, но я не знаю, как я могу открыть его календарь, потому что он основан на сеансе.
Мой текущий код:
Database mdb = session.getDbDirectory(session.getServerName()).openMailDatabase();
NotesCalendar cal = session.getCalendar(mdb);
java.text.SimpleDateFormat datefmt = new java.text.SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'");
String dStart = datefmt.format(dtStart);
String dEnd = datefmt.format(dtEnd);
Name nnOrganizer = session.createName(session.getEffectiveUserName());
String iCalEntry = "BEGIN:VCALENDAR\n" +
"PRODID:-//Test//Reservation API//EN\n" +
"VERSION:2.0\n" +
"BEGIN:VEVENT\n" +
"DTSTART:" + dStart + "\n" +
"DTEND:" + dEnd + "\n" +
"SUMMARY:Sample Meeting\n" +
"DESCRIPTION:TEST\n" +
"ORGANIZER;CN=admin/O=Corp:mailto:test@test.test\n" +
"ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;" + nnOrganizer.getCanonical() + ";RSVP=false:mailto:test@test.test\n" +
"ATTENDEE;CUTYPE=ROOM;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;" + nnResource.getCanonical() + ";RSVP=true:mailto:room@test.test\n" +
"END:VEVENT\n" +
"END:VCALENDAR\n";
NotesCalendarEntry entry = cal.createEntry(iCalEntry);
System.out.println("calendar uid " + entry.getUID());
Как я могу заставить это работать с любым пользователем, которого я хочу?Так что он использует не session.getCalendar()
, а что-то еще, поэтому я могу создать запись в календаре другого пользователя.
Кроме того, как я могу программно получить адреса электронной почты организатора и комнаты?На данный момент они жестко закодированы.Я знаю, что могу выполнить поиск в каталоге, но иногда электронная почта (интернет-адрес) не настраивается, и lookupNames ничего не возвращает.Клиент Notes каким-то образом обходит это и создает электронное письмо типа Name_Surname/server@Corp
, достаточно ли этого?
Редактировать Я достиг того, чего хотел, используя службу REST (CustomServiceBean) и NotesCalendar для создания / обновления/ удаление бронирований в сочетании с прямым доступом к документу для проверки на конфликты и чтения подробных данных о номерах и бронировании.Пока все работает нормально, резервирование видно как в календаре пользователя, так и в базе данных.Однако, когда я переустановил сервер с нуля и добавил базу данных со службой отдыха, я не смог получить доступ к API с помощью моего администратора по умолчанию (403 запрещено, вам запрещено выполнять эту операцию) журналы сервера: HTTP JVM: CLFAD0229E: Security exception occurred servicing request for: /db.nsf/services.xsp/api - HTTP Code: 403. For more detailed information, please consult error-log-0.xml
Когда я добавил пользователя-администратора в Конфигурация-> Документ текущего сервера-> Безопасность-> Подписать или запустить неограниченные методы и операции, он начинает работать правильно, даже при доступе к API с новыми зарегистрированными пользователями (которые не были назначенылюбые группы, разрешения, вообще ничего, только интернет-пароль и адрес, и они были созданы учетной записью администратора) Будет ли это работать правильно?Мне нужно получить доступ к API из учетных записей обычных пользователей, потому что мне нужно создавать записи в пользовательских календарях.