В настоящее время я создаю сложный внешний веб-сайт на основе AngularJS. Бэкенд работает на PHP и MySQL.
У меня есть 2 вопроса, оба относительно привилегий пользователя.
Как вы будете разрабатывать схему базы данных для хранения привилегий пользователя? В будущем я хочу добавить предопределенные привилегии (несколько наборов) и использовать их как типы бесплатных/премиум-аккаунтов.
Как вы будете управлять этими привилегиями во внешнем интерфейсе? Когда вы получите/повторно получите привилегии? Как вы будете проверять их на каждом методе, который требует привилегий?
Я ищу умное решение, которое не будет ограничивать меня в количестве привилегий, которые я могу определить, но также предоставит набор основных привилегий по умолчанию, если ничего не определено.
О реализации SQL
Права должны применяться ко всем пользователям в определенной компании.
схема БД примерно такая:
- компании (company_id и т. д.)
- пользователи (user_id, company_id и т. д.)
Насколько я понимаю, схема привилегий должна выглядеть так:
- привилегии (prev_id, prev_name)
- компании_привилегии (идентификатор_компании, предыдущий_идентификатор)
Обработка привилегий пользователя
когда пользователь входит в систему, привилегии компании сохраняются с помощью службы cookie/сеанса/внешнего интерфейса.
Для проверки на внешнем конце я использую директиву, которая сравнивает текущие привилегии пользователя с требуемой привилегией:
требуется привилегия данных = 1 пользователь = 1
Что касается серверной части, то в настоящее время я отправляю пользовательский токен с каждым запросом на сервер. Этот токен проверяется по базе данных. Я могу использовать это, чтобы получить пользовательские привилегии и сохранить их, а затем проверить, может ли пользователь получить доступ/использовать определенную функцию.
Помимо добавления привилегий true/false, мне нужна поддержка числовых привилегий,
например: ограничение количества отображаемых элементов в определенном списке.
Я правильно думаю? Я что-то упускаю?
Требования
– Неограниченные привилегии для каждой компании
– Привилегии по умолчанию должны применяться ко всем компаниям
auth
на github .... посмотрите, как они настроены, должно помочь. Проверьте также этот каталог ngmodules.org - person charlietfl   schedule 03.11.2013