Как настроить разрешения списка SharePoint Online только для добавления и просмотра, но не для редактирования?
У меня есть список SharePoint в SharePoint Online (на основе SharePoint Server 2013), и я хочу позволить пользователям добавлять элементы в список, но не редактировать какие-либо элементы. После того, как они отправили элемент, я хочу, чтобы он был просмотрен, и чтобы другие вещи зависели от него, поэтому я не могу позволить пользователю вносить изменения. Я могу видеть только разрешение Contribute, которому я могу назначить пользователей, и это позволяет создавать, просматривать и редактировать. Кто-нибудь знает, как я могу назначить пользователям разрешения только для создания и просмотра. Исключая Редактировать?
4 ответа
Вы можете создать собственный уровень разрешений, а затем назначить его пользователям / группам для вашей библиотеки.
Чтобы создать пользовательский уровень разрешений, перейдите в "Настройки сайта" -> "Разрешения сайта" -> "Уровни разрешений" -> "Добавить уровень разрешений".
Вы можете создать новый пользовательский уровень разрешений, скопировав разрешения "Contribute" и удалив из него "Редактировать". Настройки сайта-> Разрешения сайта -> Уровни разрешений -> нажмите "Внести вклад" -> "Уровень разрешений копирования" на следующей странице, снимите флажок "Изменить" и создайте. Также вы можете сделать то же самое программно, используя функцию приемника.
SPRoleDefinition roleDefinition = new SPRoleDefinition();
roleDefinition.Name = "School user custom permission";
roleDefinition.Description = "This Permission level has rights to add and view items.";
roleDefinition.BasePermissions = SPBasePermissions.AddListItems | SPBasePermissions.ViewListItems |SPBasePermissions.DeleteListItems|
SPBasePermissions.ViewPages | SPBasePermissions.ViewFormPages | SPBasePermissions.OpenItems | SPBasePermissions.ViewVersions | SPBasePermissions.DeleteVersions
| SPBasePermissions.CreateAlerts | SPBasePermissions.BrowseDirectories | SPBasePermissions.BrowseUserInfo | SPBasePermissions.UseRemoteAPIs | SPBasePermissions.Open
| SPBasePermissions.EditMyUserInfo | SPBasePermissions.ManagePersonalViews | SPBasePermissions.UpdatePersonalWebParts;
web.RoleDefinitions.Add(roleDefinition);
MSFT говорит, что вы можете сделать это через их настройки Siet, но я следовал приведенным ниже инструкциям и все еще не мог оштрафовать уровень разрешения на добавление.
Создание уровня разрешений Чтобы создать уровень разрешений, выполните следующие действия.
На сайте верхнего уровня семейства веб-сайтов, нажмите "Настройки" "Маленькие настройки", который заменил "Настройки сайта", а затем нажмите "Настройки сайта". На странице "Параметры сайта" в разделе "Пользователи и разрешения" щелкните Разрешения для сайта. На вкладке Разрешения щелкните Уровни разрешений. На странице Уровни разрешений нажмите Добавить уровень разрешений. На странице "Добавить уровень разрешений" в полях Имя и Описание введите имя и описание уровня разрешений. В области Разрешения установите флажки рядом со списком, сайтом и личными разрешениями, которые вы хотите связать с этим уровнем разрешений. Нажмите Создать.
Я тоже боролся с этим. По-видимому, внешние пользователи по умолчанию не имеют доступа к разрешениям UseRemoteAPIs. Это демонстрируется методом проб и ошибок. У меня были проблемы с поиском какой-либо документации.
Тем не менее, будучи администратором на сайте Office365 SharePoint, вы можете отключить требование разрешения UseRemoteAPIs, чтобы позволить клиентскому JavaScript работать должным образом для внешних или анонимных пользователей.
Этот блоггер имеет аналогичную проблему, и хотя его контекст относится к сайтам O365 Public SharePoint ( https://yieldreturnpost.wordpress.com/2014/08/28/anonymous-api-access-for-office-365-public-sites/) то же самое относится к обычным сайтам O365 SharePoint:
<script type="text/javascript">
ExecuteOrDelayUntilScriptLoaded(function() {
var ctx = new SP.ClientContext();
var site = ctx.get_site();
site.updateClientObjectModelUseRemoteAPIsPermissionSetting(false);
ctx.executeQueryAsync(
function() { alert('success') },
function() { alert('error') }
);
}, 'sp.js');
</script>
Обратите внимание, что вам нужно сделать вышеуказанный звонок только один раз на сайте.