2013-07-16 2 views
1

Я фактически кодирую в JAVA и получил некоторые проблемы, когда конкретный пользователь пытается обновить/удалить запись в календаре лотоса другого пользователя.Проверьте, прав ли у пользователя право на другой лотос. Календарь

Существует два пользователя userA и userB. userA имеет только права «читать» в календаре userB. В самом деле, когда ПользовательА пытается обновить календарь USERB, я следующее сообщение об ошибке, так как ПользовательА только права чтения:

NotesException: Notes error: You are not authorized to perform that operation 

То, что я хочу сделать в Java, чтобы проверить, является ли прочитал ПользовательА прав или прав редактирования, прежде чем приступать к обновлению календаря userB.

ответ

3

Используя метод queryAccess - класса Database, вы можете узнать текущий уровень доступа. Если этот уровень доступа -> ACL.LEVEL_AUTHOR, пользователь может точно записать в календарь.

Если доступ ниже, все становится немного сложнее.

Календарный документ является чем-то особенным. Они так называемые «публичные документы». Поэтому уровень доступа не является единственным индикатором для правильного доступа.

Есть две возможности, пользователь может получить «читать» - доступ к календарным документам:

уровня доступа> = ACL.LEVEL_READER ИЛИ пользователь «Read Публичных документов» включен в Acl.

Это может быть проверено с помощью метода queryAccessPrivileges - класса базы данных.

Чтобы иметь возможность записывать записи календаря, необходимо включить «Запись общедоступных документов».

Вот код, который уважает все эти аспекты:

import lotus.domino.*; 

public class JavaAgent extends AgentBase { 

    public void NotesMain() { 

     try { 
      Session session = getSession(); 
      AgentContext agentContext = session.getAgentContext(); 

      Database db = agentContext.getCurrentDatabase(); 
      String user = session.getUserName(); 
      int accLevel = db.queryAccess(user); 
      int accPriv = db.queryAccessPrivileges(user); 
      boolean blnCanWriteCalendar = false; 
      boolean blnCanReadCalendar = false; 
      blnCanWriteCalendar = ((accPriv & Database.DBACL_WRITE_PUBLIC_DOCS) > 0) 
       | accLevel > ACL.LEVEL_AUTHOR; 
      blnCanReadCalendar = ((accPriv & Database.DBACL_READ_PUBLIC_DOCS) > 0) 
       | accLevel >= ACL.LEVEL_READER; 

     } catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

Большое спасибо, сэр, я реализовали его, но это возвращает меня, имеет ли пользователь Автор/депонента/доступ .. права. \t dbMail = notesSession.getDatabase (doc.getItemValueString ("MailServer"), doc.getItemValueString ("MailFile")); int accLevelCal = dbMail.queryAccess (notesSession.getUserName()); \t \t \t \t \t \t Строка titleMail = dbMail.getTitle(); Я все еще не могу получить права чтения/редактирования/удаления в календаре пользователей. Любая помощь – user2002713

+0

посмотреть мои правки ... –

Смежные вопросы