using System;
using System.ComponentModel;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
namespace ZY.VisualWebPart1
{
[ToolboxItemAttribute(false)]
public partial class VisualWebPart1 : WebPart
{
System.Web.HttpResponse Response = null;
// Uncomment the following SecurityPermission attribute only when doing Performance Profiling on a farm solution
// using the Instrumentation method, and then remove the SecurityPermission attribute when the code is ready
// for production. Because the SecurityPermission attribute bypasses the security check for callers of
// your constructor, it's not recommended for production purposes.
// [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Assert, UnmanagedCode = true)]
public VisualWebPart1()
{
Response = System.Web.HttpContext.Current.Response;
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
InitializeControl();
}
protected void Page_Load(object sender, EventArgs e)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
if (!SPContext.Current.Site.RootWeb.CurrentUser.IsSiteAdmin)
{
//Response.Write("Permission deny!");
sb.AppendLine("Permission deny!");
Label1.Text = sb.ToString();
return;
}
SPSecurity.CatchAccessDeniedException = false;
SPWeb Web = SPContext.Current.Site.RootWeb;
SPUser currentUser = Web.CurrentUser;
sb.AppendLine("<b>CurrentUser:" + currentUser.Name + "</b><br />===================begin====================<br />");
Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(delegate()
{
System.Collections.Generic.List<SPDocumentLibrary> documentList = new System.Collections.Generic.List<SPDocumentLibrary>();
using (SPSite site1 = new SPSite("https://www.abc.net.cn:8899/"))
{
SPListCollection collLists = site1.RootWeb.Lists;
foreach (SPList oList in collLists)
{
if (oList.BaseType == SPBaseType.DocumentLibrary)
{
SPDocumentLibrary oDocumentLibrary = (SPDocumentLibrary)oList;
//var permissions=oDocumentLibrary.Permissions.GetEnumerator();
var roles = oDocumentLibrary.AllRolesForCurrentUser;
SPUser user = Web.CurrentUser;
//SPMember member = Web.AllUsers[userPrefix + "sk\\zy"];
if (!oDocumentLibrary.IsCatalog && oList.BaseTemplate != SPListTemplateType.XMLForm)
{
documentList.Add(oDocumentLibrary);
/*
SPListItemCollection collListItems = oDocumentLibrary.Items;
Response.Write("<b> Document Library Name:" +oDocumentLibrary.Title + "</b><br>");
SPRoleDefinitionBindingCollection roles0 = oDocumentLibrary.AllRolesForCurrentUser;
Response.Write("DocumentLibrary.AllRolesForCurrentUser.Count:" + roles0.Count + "<br>");
foreach (SPRoleDefinition role in roles0)
{
Response.Write("++++" + role.Name + "<br>");
}
Response.Write("-------------------<br />");
Response.Write("SPRoleAssignment.Member.Name:<br />");
try
{
SPRoleAssignmentCollection roleAssigments = oDocumentLibrary.RoleAssignments;
foreach (SPRoleAssignment item in roleAssigments)
{
Response.Write(item.Member.Name + "<br>");
}
}
catch (Exception ex)
{
Response.Write(ex.GetType().ToString());
}
Response.Write(currentUser.Name + "<br />==============<br/>");
*/
}
}
}
}
sb.AppendLine("Permission list for all users:");
SPUserCollection users = Web.AllUsers;
foreach (SPUser u in users)
{
sb.AppendLine("<br />" + u.Name + "<br />");
foreach (SPGroup item in u.Groups)
{
sb.AppendLine("++" + item.Name);
sb.AppendLine("<br />");
}
//u.UserToken
//documentList[0].Items[0].Title;
using (SPSite site = new SPSite("https://www.abc.net.cn:8899/", u.UserToken))
{
foreach(SPDocumentLibrary docLib in documentList)
{
sb.AppendLine(docLib.Title);
try
{
//var o = site.RootWeb.Lists[docLib.ID].GetView(site.RootWeb.Lists[docLib.ID].DefaultView.ID);
if (site.RootWeb.Lists[docLib.ID].DoesUserHavePermissions(SPBasePermissions.ViewFormPages
| SPBasePermissions.ViewListItems
| SPBasePermissions.Open
| SPBasePermissions.ViewPages))
{
//Response.Write("<font color='green'>" +site.RootWeb.Lists[docLib.ID].Items.Count.ToString() + "</font>");
sb.AppendLine(" <font color='green'>Read</font>");
}
else
{
sb.AppendLine("<font color='blue'>Deny</font>");
}
if (site.RootWeb.Lists[docLib.ID].DoesUserHavePermissions(SPBasePermissions.ViewPages |
SPBasePermissions.Open |
SPBasePermissions.AddListItems |
SPBasePermissions.EditListItems |
SPBasePermissions.ViewListItems |
SPBasePermissions.OpenItems |
SPBasePermissions.ViewVersions |
SPBasePermissions.CreateAlerts |
SPBasePermissions.ViewFormPages |
SPBasePermissions.UseClientIntegration |
SPBasePermissions.ManagePersonalViews |
SPBasePermissions.ManagePersonalViews |
SPBasePermissions.UpdatePersonalWebParts |
SPBasePermissions.ViewPages))
{
//Response.Write("<font color='green'>" +site.RootWeb.Lists[docLib.ID].Items.Count.ToString() + "</font>");
sb.AppendLine(" <font color='green'>Contribute</font>");
}
else
{
sb.AppendLine("<font color='blue'>Contribute Deny</font>");
}
}
catch (Exception ex)
{
//Response.Write("<font color='red'>" + ex.Message + "</font>");
sb.AppendLine("<font color='red'>Deny</font>");
}
sb.AppendLine("<br />");
}
}
}
sb.AppendLine("===================end====================<br />");
//The groups that the user has management privilege
/*
Response.Write("<br />");
Response.Write("<b>SPUser.OwnedGroups</b>");
Response.Write("<br />");
SPGroupCollection groups_u = currentUser.OwnedGroups;
foreach (SPGroup item in groups_u)
{
Response.Write(item.Name);
Response.Write("<br />");
}
Response.Write("=======================================<br />");
*/
/*
Response.Write("<br />");
Response.Write("<b>SPGroupCollection.Groups</b>");
Response.Write("<br />");
SPGroupCollection u_Groups = currentUser.Groups;
foreach (SPGroup item in u_Groups)
{
Response.Write(item.Name);
Response.Write("<br />");
}
Response.Write("=======================================<br />");
*/
});
Label1.Text = sb.ToString();
//Response.End();
}//end of pageload
}
}