У нас есть приложение Loopback 3, которое имеет два расширения пользовательской модели. Описание существующей модели Модель VenueUser
расширяет User
(и я думаю, что другое расширение пользователя не должно иметь значения в этом случае, просто хочу отметить, что оно есть).
{
"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 отсутствует, но я действительно не знаю, как правильно установить этот объект ... Любая помощь будет высоко оценена! С наилучшими пожеланиями