Я создаю проект, который работает только через API JSON (Rails 4.0, PostgreSQL). Это большое приложение с разрешениями на базе базы данных. И у меня есть приложение AngularJS, которое работает с этим REST API.
Упрощенная структура:
employees >--- position ---< permission
Employee.rb
belongs_to :position
Position.rb
has_many :employees
has_many :permissions, dependent: :destroy
Permission.rb
belongs_to :position
## Columns
# action (:manage, :read, :update, :create, etc...)
# subject_class
# subject
У меня есть проблема с кнопками/ссылками действий на стороне клиента AngularJS.
Например, я не хочу показывать ссылку "Добавить заказ" где-то в приложении Angular, потому что разрешение позиции сотрудника позволяет читать только ресурс и не изменять его:
id action subject_class subject
1 :read Order
Как я попытался решить эту проблему
Я создаю ресурс GET api/v1/employees/me
, который возвращает current_employee со всеми его правами:
"employee": {
...
:position": {
...
"permissions": {
{"id": 1, "action": "read", "subject_class": "Order", "subject": ""},
{"id": 6, "action": "manage", "subject_class": "Waybill", "subject": ""}
}
}
}
Итак, у меня есть все разрешения на стороне клиента, но что является лучшим способом получения прекрасной интеграции, полученной разрешениями с пользовательским интерфейсом приложений AngularJS?