コード例 #1
0
ファイル: GlymaPermission.cs プロジェクト: chris-tomich/Glyma
        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);
        }
コード例 #2
0
        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);
        }