[英]How to check if a certain user has reader-access to a document
对于使用Java Bean的xpage应用程序,我需要检查某个用户(不是当前用户)是否具有读者对文档的访问权限。 上面的所有访问级别(数据库ACL,XPage ACL ...)都可以视为理所当然。 当前用户始终至少是作者。
每个文档都有一个读者字段“ readers”和三个authorfields“ creator”,“ authors”,“ AdminAuthor”,由于每个文档始终只包含“ [Admin]”,因此最后一个可以忽略
当前的想法是获得此处显示的用户组( 确定已定义用户的所有组 ),循环遍历并与“读者”和“作者”字段进行比较
为什么我不喜欢它:
有什么更好的办法吗? 尤其是考虑到嵌套组,因此$ ServerAccess视图并不是真正的选择。
当前代码:
public boolean isReader(String notesName, String documentID){
try {
Vector<String> readers= getAllReaderFieldsValues(documentID);
if(readers.contains(notesName)){
return true;
}
lotus.notes.addins.DominoServer server = new lotus.notes.addins.DominoServer(DominoUtils.getCurrentSession().getServerName());
for(String group:(Vector<String>)server.getNamesList(notesName)){
if (readers.contains(group)){
return true;
}
}
} catch (NotesException e) {
//ErrorHandling
}
return false;
}
谢谢你的帮助
有多种检查用户是否有权访问文档的方法,但是所有这些方法都没有文档记录(但十年以来仍然可用),因此它们不符合您的要求(即在不同的用户上下文或特殊视图中运行)带有“ $ C1 $”列,...)
如果您的名字不在列表中,则将其添加到阅读器字段中是一种“已记录”的操作方式,它只是将用户添加到阅读器字段中。 无需检查用户是否具有访问权限。
我仍然想知道您的情况,因为我不明白您要实现的目的:您正在检查用户是否在特定的组中,该组可以授予他对文档的访问权限。 如果用户属于这些组之一,则跳过其名称。 同时,该用户已从该组中删除,并且无法再访问该文档...
为什么不使用组或角色? 没有编码,只有管理。 您是否正在解决组织问题?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.