Как программно установить разрешения указателя на CLP в Parse Server? - PullRequest
1 голос
/ 20 января 2020

Я бы хотел установить разрешения указателя для CLP, используя либо REST API, либо JS SDK, чтобы я мог автоматизировать процесс. Возможно ли это?

В документации обсуждаются разрешения указателя , но не показано, как их реализовать AFAIK. Из связанных документов:

Разрешения указателя - это особый тип разрешения уровня класса, который создает виртуальный ACL для каждого объекта в классе на основе пользователей, хранящихся в полях указателя на этих объектах. Например, учитывая класс с полем owner, установка разрешения указателя чтения на owner сделает каждый объект в классе доступным для чтения только пользователю в поле owner этого объекта.

Как мне достичь вышеуказанного программно? Например, если у меня есть объект со свойством owner, в котором хранится указатель User, как мне установить CLP, чтобы сделать этот объект доступным для чтения только для owner?

Ответы [ 3 ]

1 голос
/ 20 января 2020

Что-то вроде этого должно работать для вас:

const schema = new Parse.Schema("MyClass");

schema.setCLP({
  "find": {
    "requiresAuthentication": true,
    "role:admin": true
  },
  "get": {
    "requiresAuthentication": true,
    "role:admin": true
  },
  "create": { "role:admin": true },
  "update": { "role:admin": true },
  "delete": { "role:admin": true }
});

await schema.update();

Вам нужно будет использовать Node.js SDK и инициализировать его с помощью мастер-ключа.

1 голос
/ 22 января 2020

Мне удалось выяснить это путем поиска по источнику Parse Server. Этот набор тестов демонстрирует использование разрешения указателя.

При добавлении CLP в схему объекта вы можете установить разрешения указателя, включив имена указателей в свойства * readUserFields и writeUserFields CLP. Вот пример:

const exampleSchema = new Parse.Schema('Example')

exampleSchema
  .addString('content')
  .addPointer('owner', '_User')

const clp = {
  create: { '*': true },
  readUserFields: ['owner'],
  writeUserFields: ['owner']
}

exampleSchema.setCLP(clp)

await exampleSchema.save()

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

0 голосов
/ 20 января 2020

Его можно установить в панели анализа Parse, щелкнув по классу и выбрав «Безопасность» в меню справа.

найдено в сообществе разбора

...