public virtual bool CurrentUserHasPermission() { bool result = false; string currentUserLoginName = SecurityContextManager.CurrentUser.CurrentSPUser.LoginName; SPSecurity.RunWithElevatedPrivileges(delegate() { using (SPSite site = new SPSite(SecurityContextManager.WebUrl)) { using (SPWeb web = site.OpenWeb()) { SPPermissionInfo info = web.GetUserEffectivePermissionInfo(currentUserLoginName); SPRoleDefinition roleDefinition = null; try { roleDefinition = web.RoleDefinitions[Name]; } catch (Exception) { //if unable to find the role definition it will throw an exception } SPRoleDefinition secondaryRoleDefinition = null; if (OldName != null) { try { secondaryRoleDefinition = web.RoleDefinitions[OldName]; } catch (Exception) { //if unable to find the role definition it will throw an exception } } if (roleDefinition != null && info != null) { foreach (SPRoleAssignment roleAssignment in info.RoleAssignments) { if (roleAssignment.RoleDefinitionBindings.Contains(roleDefinition)) { result = true; break; } if (secondaryRoleDefinition != null) { if (roleAssignment.RoleDefinitionBindings.Contains(secondaryRoleDefinition)) { result = true; break; } } } } } } }); return(result); }
public static bool IsUserInItemRole(this SPListItem item, SPPrincipal user, int roleId) { SPPermissionInfo userEffectivePermissions = item.GetUserEffectivePermissionInfo(user.LoginName); SPRoleDefinition roleDefinition = item.Web.RoleDefinitions.GetById(roleId); foreach (SPRoleAssignment roleAssignment in userEffectivePermissions.RoleAssignments) { if (roleAssignment.RoleDefinitionBindings.Contains(roleDefinition)) { return(true); } } return(false); }