Как правильно использовать отношения Parse.Roles для нескольких объектов Parse.Objects и Users с течением времени?

Большая часть следующего выполняется с помощью parse-dashboard, поэтому она немного многословна, но я понимаю код, а не отношения.

Я устанавливаю Parse.Roles, и кажется, что для каждого отдельного Parse.Object должна быть установлена ​​роль, чтобы иметь доступ к данному Parse.Object. Например, объектный ACL должен содержать "Admin" и "Moderator" (с соответствующими разрешениями), чтобы администраторы или модераторы имели доступ.

Поскольку родительские и дочерние роли возможны, имеет смысл установить ACL Parse.Object с ролью "Organization", которая затем дополнительно модифицируется дочерней ролью. Таким образом, "Средство просмотра" в "Организации" не может писать, а "Администратор" в "Организации" может читать / писать. Я попробовал несколько способов сделать это - привязать одного пользователя к "Средству просмотра", а другого - к "Администратору" внутри "Организации", но это, похоже, не работает.

Мое текущее решение: вручную / программно настроить каждый ACL Parse.Object с несколькими предустановленными ролями. Например, Parse Class "Person" с ролями ACL "Viewer" и "Admin".

Вопрос: Если я хочу создать другую Роль в будущем для этой же Организации, нужно ли будет циклически проходить через каждый объект Parse.Object и вручную устанавливать новую Роль для каждого из прошлых Объектов?

Было бы разумно, чтобы этими отношениями управляла родительская организация, так что это не нужно делать вручную, но, похоже, это не работает.

Любые ответы, мысли или ссылки приветствуются.

1 ответ

Решение

Как вы упомянули, роли могут иметь роли и наследовать привилегии родительской роли.

Следовательно, если новая роль применяется ко всем объектам класса или группы из них, вам не нужно перебирать все объекты разбора.

Я приведу вам пример:

Допустим, у вас есть класс с именем Posts.

  • у вас есть роль viewerи у вас есть роль с именем editor,

  • когда вы создаете новый объект post, вы добавляете обе роли viewer а также editor как ACL почтового объекта. Например, роль зрителя может иметь только права на чтение, а редактор может иметь права как на чтение, так и на запись.

Для каждой организации:

  • Сначала вы создаете имя роли uniqueOrganizationName
  • Затем вы добавляете всех пользователей этой организации в uniqueOrganizationName пользователи (отношение).

Теперь, в будущем, если вы хотите добавить всех пользователей этой организации, например, editorRoleвместо добавления editorRole ко всем объектам пользователя вы можете добавить uniqueOrganizationName в editorRole роли. Теперь все пользователи этой организации могут изменять все сообщения. Если вы хотите, чтобы некоторые пользователи организации могли редактировать сообщение, вы добавляете этих пользователей в editorRole пользователи.

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

  • создать две уникальные роли для каждой организации viewUniqueOrganizationRole & editUniqueOrganizationRole,

Теперь, когда вы создаете новое сообщение, в зависимости от того, к какой организации принадлежит это сообщение, вы добавляете viewUniqueOrganizationRole && editUniqueOrganizationRole в ACL почтового объекта.

  • После этого вы можете добавлять пользователей в viewUniqueOrganizationRole чтобы иметь возможность просматривать сообщения, принадлежащие этой организации, или вы можете добавлять пользователей в editUniqueOrganizationRole чтобы они могли редактировать ваш пост.

Я надеюсь, что смогу ответить на ваш вопрос. Это сложный дизайн.

Другие вопросы по тегам