...

Как менять права доступ к контрагенту скриптом?

Тема в разделе "Вопросы по функционалу", создана пользователем r.kiyamov, 15 май 2017.

  1. r.kiyamov

    r.kiyamov Member

    Хочу настроить распределение прав доступа скриптом но не пойму как работать с объектом ContractorPersonPermission?
    Такой код падает
    if (group != null)
    {
    var permission = new ContractorPersonPermission();
    permission.Group = group;
    foreach (var c in contractors)
    {
    permission.Contractor = c;
    c.Permission.Add(permission);
    }
    }

    подозреваю что проблема в том, что я не указываю какие хочу дать права чтение редактирование выдача прав или полный доступ
    При этом есть объект

    var permission = new ContractorPermission();
    permission.UserGroup = group;
    permission.CanEdit = true;
    permission.FullAccess = true;

    но в нём нет контрагента.
    и
    foreach (var c in contractors)
    {
    permission.Contractor = c;
    c.Permission.Add(permission);
    }
    c.Permission.Add(permission); требует тип ContractorPersonPermission.
    Как всё это подружить и менять доступы скриптом?!
     
  2. r.kiyamov

    r.kiyamov Member

    народ выручайте неможу въехать что за хитровыделанная логика.
     
  3. r.kiyamov

    r.kiyamov Member

    по всему выходит что разрабы забыли создать Enum для типов прав и в поле PermissionId выткается некий GUID возможные значения которого можно выдрать из базы на примере некоего контрагента где есть все возможные комбинации доступа. Но в надежеде что это пофиксили решил обновиться до 3.10.9
     
  4. r.kiyamov

    r.kiyamov Member

    продолжаю исследование))
    Выяснил что поле PermissionId принимает следующие значения
    /// 9219C9AB-7E68-47B1-8939-FF6FC4439DA0 - view only
    /// 44ED88D4-A466-4FED-B194-B8288560CB48 - add elements
    /// 8C932B94-2F9C-488E-A36F-949A11C9741E - edit contractor
    /// 1CD25727-7CE6-443C-84BD-7975822C79E6 - give rights
    /// E612615C-D5E2-4C4B-9DF0-B4D9EEB983A5 - full access
    возможно имеются другие
    следующий вопрос что такое PermissionRole.
     
  5. r.kiyamov

    r.kiyamov Member

    public virtual void yyy (Context context)
    {

    var contractor = ContractorManager.Instance.Load(1);
    var user = UserManager.Instance.Load(1);

    // полные права

    ContractorManager.Instance.AddPermission(contractor,user,CRMPermissionProvider.CRMContractorFullAccessPermission);

    // редактирование

    ContractorManager.Instance.AddPermission(contractor,user,CRMPermissionProvider.EditContractorPermission);

    // Выдача прав

    ContractorManager.Instance.AddPermission(contractor,user,CRMPermissionProvider.CRMContractorIssuanceElementPermission);

    // Создание элементов

    ContractorManager.Instance.AddPermission(contractor,user,CRMPermissionProvider.CRMContractorCreateElementPermission);
    // Просмотр
    ContractorManager.Instance.AddPermission(contractor,user,CRMPermissionProvider.CRMPermissionProvider.ViewContractorPermission);
    }
     
  6. r.kiyamov

    r.kiyamov Member

    Решение сапорт снизошёл) А доки то на это нет нифига. Блин придумали какие-то провайдеры.
     

Поделиться: