Правильно настройте модель Loopback 3 для конкретного варианта использования c - PullRequest
0 голосов
/ 28 января 2020

У нас есть приложение Loopback 3, которое имеет два расширения пользовательской модели. Описание существующей модели Модель VenueUser расширяет User (и я думаю, что другое расширение пользователя не должно иметь значения в этом случае, просто хочу отметить, что оно есть).

  • отношение: VenueUser hasMany Venue
  • acls: нет

  • отношение: Venue относится к VenueUser

  • acls:
{
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "venueUser",
      "permission": "ALLOW"
}

Кроме того, существует Event Модель с:

  • отношение: Venue hasMany Event
  • acls: нет

  • отношение: VenueUser hasMany Event через Venue

  • acls: нет

  • отношение: Event принадлежит к Venue

  • acls: нет

  • отношение: Event принадлежит к VenueUser

  • acls:
{
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "venueUser",
      "permission": "ALLOW"
}

Цель Теперь мне нужен своего рода Cohost of the Venue User / Venue: Это означает, что пользователь места (id = 1) может добавить адрес электронной почты для определенного места c. Это электронное письмо соответствует другому пользователю места проведения (id = 2). Выбранный пользователь места (id = 2) должен иметь

  • доступ к этому конкретному месту, но иметь возможность только ЧИТАТЬ место встречи
  • доступ, чтобы ЧИТАТЬ все события, связанные с местом
  • доступ к созданию собственных событий для этого места

С другой стороны, владелец места должен прочесть те события, которые были созданы cohost, и отредактировать все события для своего места (включая те, что созданный cohost).

  • доступ ко всему CRUD ко всем событиям его места (независимо от того, создан ли пользователь места = id или 1 = 2)

В общем, у кого-нибудь есть идея, как смоделировать это (петлевым) прямым способом (возможно, до прочтения моего полностью не петлевого подхода; P)? Моя идея Я начал с создания подмодели CoHost с:

  • параметр:
    "mail": {
          "type": "string",
          "required": true,
          "index": true
        }
  • отношение:
  "venues": {
      "type": "hasAndBelongsToMany",
      "model": "Venue",
      "foreignKey": ""
    }

и это отношение наоборот (то есть Venue hasAndBelongsToMany Cohost).

Теперь единственным способом, которым мне удалось, как предоставить пользователю с идентификатором места = 2 доступ к объекту (принадлежащего идентификатору пользователя объекта) = 1), позволяя Cohost быть доступным $everyone. Я знаю, что это далеко не идеально, и, кроме того, я не могу получить доступ к событиям приятным способом ... Моя проблема в том, что я понятия не имею, как пользователь места проведения id = 1 может передавать права доступа (определенного типа, как READ) для объектов И события для другого пользователя объекта, который определяется моделью cohost ... Я предполагаю, что связь между VenueUser и Cohost отсутствует, но я действительно не знаю, как правильно установить этот объект ... Любая помощь будет высоко оценена! С наилучшими пожеланиями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...