Wednesday, 14 June 2017

CSS: How to add gradient/shade to the background color in IE?

Instead of 'linear-gradient'  try:

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#904087, endColorstr=lightpink,GradientType=1);

Use GradientType=0 for vertical.

Wednesday, 7 June 2017

How to get permissions of all SharePoint users using CSOM?

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.

SecureString securePassword = new SecureString();
            ClientContext context = new ClientContext(txtURL.Text);
            string decryptedPwdt = txtPassword.Text;
            foreach (char c in decryptedPwdt)
            {
                securePassword.AppendChar(c);
            }
            context.Credentials = new NetworkCredential(txtUser.Text, decryptedPwdt, "Domain");
            Web web = context.Web;
            context.Load(web);

            UserCollection userColl = web.SiteUsers;
            context.Load(userColl);

            var assignments = web.RoleAssignments;
            context.Load(assignments, ac => ac.Include(
                a => a.RoleDefinitionBindings, a => a.Member.LoginName));

            context.ExecuteQuery();
            context.RequestTimeout = 9999999;
            DataTable dt = new DataTable();
            dt.Columns.Add("User");
            dt.Columns.Add("Permission");

            foreach (User user in userColl)
            {
                try
                {
                    var permissions = web.GetUserEffectivePermissions(user.LoginName);
                    context.ExecuteQuery();

                    if (permissions != null)
                    {
                        if (permissions.Value.Has(PermissionKind.ManageWeb))
                        {
                            dt.Rows.Add(user.Email, "Full Controll");
                        }
                        else if (permissions.Value.Has(PermissionKind.ManageLists))
                        {
                            dt.Rows.Add(user.Email, "Edit");
                        }
                        else if (permissions.Value.Has(PermissionKind.DeleteListItems))
                        {
                            dt.Rows.Add(user.Email, "Contribute");
                        }
                        else if (permissions.Value.Has(PermissionKind.ViewListItems))
                        {
                            dt.Rows.Add(user.Email, "Read");
                        }
                    }
                }
                catch { }
            }
            dataGridPermissions.DataSource = dt;
            MessageBox.Show("Done!");

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());