Wednesday, 7 June 2017

How to get permissions of all SharePoint users using Server Side code?

Below code fetches only site level permissions. Same can me modified to fetch all lists and/or list items and check permissions at that level as well.

string startedAt = System.DateTime.Now.ToShortTimeString();
            SPSite site = new SPSite(txtURL.Text);
            SPWeb web = site.OpenWeb();

            SPUserCollection users = web.SiteUsers;

            DataTable dt = new DataTable();
            dt.Columns.Add("User");
            dt.Columns.Add("Permission");

            foreach (SPUser user in users)
            {
                try
                {
                    SPBasePermissions permissions = web.GetUserEffectivePermissions(user.LoginName);
                    if (permissions != null)
                    {
                        if (permissions.HasFlag(SPBasePermissions.ManagePermissions))
                        {
                            dt.Rows.Add(user.Email, "Full Controll");
                        }
                        else if (permissions.HasFlag(SPBasePermissions.ManageLists))
                        {
                            dt.Rows.Add(user.Email, "Edit");
                        }
                        else if (permissions.HasFlag(SPBasePermissions.DeleteListItems))
                        {
                            dt.Rows.Add(user.Email, "Contribute");
                        }
                        else if (permissions.HasFlag(SPBasePermissions.ViewListItems))
                        {
                            dt.Rows.Add(user.Email, "Read");
                        }
                    }
                }
                catch { }
            }
            gridPermissions.DataSource = dt;
            MessageBox.Show("Done!\r\n\r\nStart Time: "
                + startedAt
                + "\r\n\r\nEnd Time: "
                + System.DateTime.Now.ToShortTimeString()); 

No comments:

Post a Comment