Невозможно обновить разрешения для сайта Sharepoint - PullRequest
0 голосов
/ 07 сентября 2018

Я придумал код CSOM для обновления разрешений, но по какой-то причине обновление не состоялось. Я обновляю сайт и настройки разрешений остаются прежними. Что-то не так с кодом?

        private static void UpdatePermissions(ClientContext clientContext)
    {

        try
        {
            clientContext.Load(clientContext.Web);
            clientContext.Load(clientContext.Web.RoleDefinitions);
            clientContext.ExecuteQuery();

            var roleDefinitions = clientContext.Web.RoleDefinitions;

            var ownerPermissions = roleDefinitions.GetByName("Owner");

            clientContext.Load(ownerPermissions);
            clientContext.ExecuteQuery();

            ownerPermissions.BasePermissions.Set(PermissionKind.DeleteVersions);
            ownerPermissions.BasePermissions.Set(PermissionKind.UseClientIntegration);
            ownerPermissions.BasePermissions.Set(PermissionKind.UseRemoteAPIs);

            //clientContext.Load(ownerPermissions);
            clientContext.Web.Update();
            clientContext.ExecuteQuery();
        }
        catch (Exception e)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("UpdatePermissions " + e.Message);
            WriteLog(fileName, "UpdatePermissions " + e.Message);
        }
        finally
        {
            Console.ForegroundColor = ConsoleColor.White;
        }
    }

1 Ответ

0 голосов
/ 10 сентября 2018

Нашли решение

        private static void UpdatePermissions(ClientContext clientContext)
    {

        try
        {
            clientContext.Load(clientContext.Web);
            clientContext.Load(clientContext.Web.RoleDefinitions);
            clientContext.ExecuteQuery();

            var roleDefinitions = clientContext.Web.RoleDefinitions;

            var ownerPermissions = roleDefinitions.GetByName("Owner");

            clientContext.Load(ownerPermissions);
            clientContext.ExecuteQuery();

            var basePermissions = CopyBasePermissionLevel(ownerPermissions.BasePermissions);

            basePermissions.Set(PermissionKind.DeleteVersions);
            basePermissions.Set(PermissionKind.UseClientIntegration);
            basePermissions.Set(PermissionKind.UseRemoteAPIs);

            ownerPermissions.BasePermissions = basePermissions;
            //clientContext.Load(ownerPermissions);
            ownerPermissions.Update();
            clientContext.ExecuteQuery();
        }
        catch (Exception e)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("UpdatePermissions " + e.Message);
            WriteLog(fileName, "UpdatePermissions " + e.Message);
        }
        finally
        {
            Console.ForegroundColor = ConsoleColor.White;
        }
    }

    private static BasePermissions CopyBasePermissionLevel(BasePermissions basePermission)
    {
        var copiedPermissions = new BasePermissions();
        foreach (var permission in Enum.GetValues(typeof(PermissionKind)))
        {
            if (basePermission.Has((PermissionKind) permission))
            {
                copiedPermissions.Set((PermissionKind)permission);
            }
        }
        return copiedPermissions;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...