2010-07-22 84 views
1

我正在开发一个只允许Farm管理员删除Sitecollection的共享点功能。在SiteDeleting事件中,如果用户删除farmadmin,我需要切磋。我应该怎么做?我有一个属性来检查用户是webadmin(properties.Web.UserIsWebAdmin)还是siteadmin(properties.Web.UserIsSiteAdmin),但是如何检查用户是农场管理员?WSS 3.0功能 - 检查用户是否为农场管理员

任何帮助深表感谢..

回答

1
SPFarm farm = SPFarm.Local; 
farm.CurrentUserIsAdministrator(); 

这些类位于Microsoft.SharePoint.Administration命名空间。有关CurrentUserIsAdministratorSPFarm MSDN上的更多信息。

+0

是否有对此处获得当前的农场说明我会给予好评 - 这是一个非静态方法... – 2013-10-15 14:29:25

+0

@CodeJockey肯定。编辑答案。顺便说一下,第二个答案由user2086490有你在找什么:) – 2013-10-16 06:55:57

+0

hmmmmm ...好吧,不完全,因为我不想重新发明轮子 - 如果有一个API函数使用,而不是定义一个自定义函数与一个委托和一个循环来调用,那么我更喜欢API函数 - 除非存在显着差异。另外 - 你前一天在这里,而user2086490自5月2日14:47以来一直没有回来。当然,有些人可能真的能够使用循环或函数,或者能够对Farm Admin组或其一个或多个成员做些事情,而你的回答并不提供这些东西,所以......他们'两者都有用 – 2013-10-16 16:54:26

0
public static bool IsFarmAdmin(string loginName) 
      { 
       //For Currently Logged in users 
       //SPFarm.Local.CurrentUserIsAdministrator(); 

     bool isFarmAdmin = false; 

     SPSecurity.RunWithElevatedPrivileges(delegate() 
     { 
      SPGroup adminGroup = SPAdministrationWebApplication.Local.Sites[0].AllWebs[0].SiteGroups["Farm Administrators"]; 

      foreach (SPUser user in adminGroup.Users) 
      { 
       if (user.LoginName == loginName) 
       { 
        isFarmAdmin = true; 
       } 
      } 

     }); 

     return isFarmAdmin; 
    } 
相关问题