Я пытаюсь понять, как реализовать отношения пользователь / роль для приложения, которое я пишу. Слой персистентности - это хранилище данных Google App Engine, которое накладывает некоторые интересные (но в целом полезные) ограничения на то, что можно сделать. Любые мысли приветствуются.
Может быть полезно держать вещи очень конкретными. Я хотел бы, чтобы там были организации, пользователи, тестовый контент и тестовые администрации (записи тестов, которые были приняты) Пользователь может иметь роль участника (тестируемого), участника тестового материала или обоих. Пользователь также может быть членом нуля или более организаций. В роли участника пользователь может видеть предыдущие администрации тестов, которые он или она прошли. Пользователь также может видеть тестовую администрацию другого участника, если этот участник дал авторизацию пользователя. Пользователь может видеть тестовый материал, который был обнародован, и он или она может видеть ограниченный контент как участника во время конкретного администрирования теста, для которого этот пользователь был авторизован организацией. Как член организации пользователь может видеть ограниченный контент в роли участника, и он или она может или не может редактировать контент. В каждой организации должен быть один или несколько администраторов, которые могут определять, может ли участник просматривать и редактировать контент, а также определять, кто имеет права администратора. Также должен быть один или несколько суперпользователей всего приложения, которые могут устранять неполадки и решать проблемы. Члены организаций могут видеть администрации тестов, которые заинтересованные участники разрешили им видеть, и они могут видеть анонимные данные, если не было дано никакого разрешения. Пользователь не может видеть результаты теста другого пользователя ни при каких других обстоятельствах.
Поскольку в хранилище данных App Engine нет объединений, может потребоваться нормализовать вещи, как обычно, для типичной базы данных SQL, чтобы обеспечить быстрые запросы, которые проверяют разрешения (например, те, которые определяют, является ли ссылка должен отображаться).
Мои вопросы:
- Как мне двигаться дальше в этом? Должен ли я потратить много времени заранее, чтобы получить правильную модель, или я могу повторить несколько раз и постепенно добавить дополнительную сложность?
- У кого-нибудь есть общие идеи о том, как разбить вещи в этом случае?
- Существуют ли библиотеки GAE, которые обрабатывают роли способом, совместимым с этим устройством?