Не осуждаемый код для определения того, имеет ли пользователь SharePoint определенный уровень разрешений - PullRequest
0 голосов
/ 07 июня 2010

В нашем приложении есть несколько форм, которые должны показывать некоторые данные, особенно если текущий пользователь имеет определенный уровень разрешений. Эти пользователи принадлежат к группе SPGroup, в которую входят пользователи, которые не должны видеть эти данные, поэтому в данном конкретном случае я не могу фильтровать на основе членства в группе.

Мое текущее решение состояло в том, чтобы использовать web.CurrentUser.Roles и использовать простую проверку того, содержит ли он уровень разрешения правильного имени. Роли относятся к устаревшему классу SPRole, поэтому я засыпан предупреждающими сообщениями, несмотря на то, что это технически работает. Он предполагает, что я использую SPRoleAssignment или SPRoleDefinition (рекомендация кажется произвольной, поскольку некоторые строки рекомендуют одну, в то время как другие рекомендуют другую, даже если она используется для одной и той же вещи).

Однако я не могу найти какой-либо метод для непосредственного получения объекта SPRoleAssignment или SPRoleDefinition из объекта SPUser или SPPrincipal, а также не могу получить ни один объект, соответствующий конкретно текущему пользователю SPWeb объект.

Как я могу обновить эти методы, чтобы использовать устаревший код? Я обнаружил другие случаи определения пользовательских разрешений, но я не нашел ни одного, который бы работал с начальной точки текущего веб-сайта или текущего пользователя. Это не срочно, но, безусловно, полезно избегать просеивания всех этих предупреждений только для того, чтобы достичь более важных предупреждений.

1 Ответ

3 голосов
/ 07 июня 2010

На фактическом объекте, например и SPList, вы можете вызвать метод DoesUserHavePermission, например,

someList.DoesUserHavePermissions(SPBasePermissions.ViewUsageData);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...