Роль ParseUser на отдельном объекте - Parse.com
У меня есть 2 класса в Parse, класс User и класс Group. Идея проста. Зарегистрированный пользователь сможет создать новый объект группы, и между этим пользователем и этой вновь созданной группой будет сформирована связь с массивом. Теперь этот пользователь может пригласить других пользователей в эту группу с помощью приглашения с push-уведомлением. Второй пользователь также сформирует отношения с этим групповым объектом, как только он примет приглашение.
Пока это просто и работает нормально. Однако я хочу, чтобы создатель этого группового объекта имел полный контроль над созданной им группой.
1- Создатель может приглашать других пользователей, участники не могут.
2- Создатель может выгнать члена
3- Создатель может уничтожить / удалить объект группы.
Я не уверен, как правильно реализовать это с помощью ParseRole. Какие-либо предложения?
2 ответа
Вы можете применить требование 1 и требование 3 с помощью ACL на уровне строк, разрешающего запись / удаление в таблицу групп только пользователем-создателем. (чтобы применить это для приглашений, проверьте ACL группы в логике приглашения, чтобы увидеть, равен ли приглашающий пользователь создавшему пользователю).
Требование 3 сложнее и, я думаю, недостижимо, учитывая то, как вы описываете данные. Пользователь, который принимает приглашение, может добавить в свой массив группы, но никакой другой пользователь (включая создателя группы) не сможет обновить строку этого пользователя.
В качестве альтернативы вы можете (а) представлять членство в группе с помощью массива на объекте группы, или (б) создавать другой объект, по одному для каждого пользователя, где хранится массив членов групп. Думайте об этом объекте как о личности пользователя и сохраняйте связь указателя между ним и его пользователем.
Вы можете добавить столбец "автор" в класс группы с указателем пользователя. Когда вы получаете запрос, вы проверяете, равен ли автор запроса группе авторов.
Вы должны добавить токен пользователя в свой запрос и сравнить Parse.User.current() с автором группы.