【问题标题】:Check whether user has edit right on another lotusCalendar检查用户是否在另一个 lotusCalendar 上有编辑权限
【发布时间】:2013-07-17 15:14:15
【问题描述】:

我实际上是在用 JAVA 编码,当特定用户尝试更新/删除另一个用户的 Lotus 日历条目时遇到了一些问题。

有两个用户 userA 和 userB。 userA 对 userB 的日历只有“读取”权限。事实上,当 userA 试图更新 userB 的日历时,我有以下错误,因为 userA 只有读取权限:

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

我想在java中做的是在继续更新userB的日历之前检查userA是否具有读取权限或编辑权限。

【问题讨论】:

    标签: java calendar lotus-notes


    【解决方案1】:

    使用“queryAccess” - Database- 类的方法,您可以找出当前的访问级别。如果此访问级别 > ACL.LEVEL_AUTHOR,那么用户肯定可以写入日历。

    如果访问权限较低,那么事情会变得有点复杂。

    日历文档很特别。它们被称为“公共文件”。因此,访问级别并不是正确访问的唯一指标。

    有两种可能性,用户可以获得“阅读”权限——访问日历文档:

    访问级别 >= ACL.LEVEL_READER 或用户在 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();
           }
       }
    }
    

    【讨论】:

    • 非常感谢先生,我已经实现了它,但这会返回我用户是否拥有作者/存储者/访问权限.. 权限。 dbMail = notesSession.getDatabase(doc.getItemValueString("MailServer"), doc.getItemValueString("MailFile")); int accLevelCal = dbMail.queryAccess(notesSession.getUserName()); String titleMail = dbMail.getTitle();我仍然无法检索用户日历上的读取/编辑/删除权限。任何帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 2013-12-09
    • 1970-01-01
    • 2013-12-27
    • 2016-04-23
    • 2020-11-23
    相关资源
    最近更新 更多