我必须以编程方式为未在站点用户中明确添加的用户创建任务。但是,他有权为任务列表做出贡献,因为他属于已被授予这些权限的AD组。我可以通过UI将任务分配给用户;我怎么通过代码来做呢?
向用户分配任务的可接受方法是将任务的AssignedTo
字段设置为指向该用户的SPFieldUserValue
。除了在这种情况下无法完成,因为在SharePoint中找不到用户,只有他的组!由于显而易见的原因,将任务分配给整个组是一个坏主意。我们的系统管理员断然拒绝将用户逐个添加到Sharepoint,因为这会复制他们在Active Directory中拥有的数据,并且通常很难管理。我该怎么办?
答案 0 :(得分:0)
当用户向SharePoint进行身份验证时,即使他们对该网站的权限来自AD组,也会在配置文件存储中为他们创建一个条目。
我通过向我的AD添加新用户(TGroupsUser)和组(SPtestPermissions)进行了快速测试,因此之前用户无法访问我的网站。我将用户添加到组中,并将组“成员”权限授予我的网站。然后,我使用这个新用户对SP进行了身份验证。
为了表明用户是这个SPWeb的一部分,我写了一个快速的webpart来枚举网络上的用户。请注意,SPWeb有三组用户。所有用户,站点用户和用户。有关这些属性的完整说明,请参阅此link。基本上,用户是网络上的用户。站点用户是网站集上的用户和组。所有用户都是该站点的所有用户,包括那些被授予直接权限或通过组授予的用户,然后访问该站点。以下是结果,减去系统帐户。
所有用户 SPSDEV \ rross SPSDEV \ sptestpermissions SPSDEV \ TGroupsUser
网站用户 SPSDEV \ rross SPSDEV \ sptestpermissions SPSDEV \ TGroupsUser
用户强> SPSDEV \ rross
由于此帐户(TgroupsUser)是Web用户集合的一部分,因此您可以像直接添加到站点的用户一样对待。为了完成测试,我使用以下代码为assignedTo字段创建了一个任务。
TaskItem[SPBuiltInFieldId.AssignedTo] = web.SiteUsers.GetByEmail("myemail@domain.com");
以下是分配给TGroupsUser的新任务的屏幕截图。
仅供参考 - 我需要在网络对象上使用AllowUnsafeUpdates。