Policies
Authorization relies on ActionPolicy. Trek provides Trek::ApplicationPolicy, Trek::ResourcePolicy and policies for its own models (PagePolicy, FragmentPolicy, UserPolicy).
Scaffolded policies inherit from Trek::ResourcePolicy and control access per role:
ruby
module Admin
class BookPolicy < Trek::ResourcePolicy
def index? = user.privileged?
def create? = user.privileged?
def manage? = user.privileged?
def destroy? = user.privileged?
def permitted_attributes
user.privileged? ? %i[title intro] : []
end
relation_scope do |relation|
next relation if user.privileged?
relation.none
end
end
endpermitted_attributesdoubles as strong parameters:Trek::ResourceControlleronly permits what the policy allows for the current user.relation_scopefilters index queries per role.user.privileged?is true for theadminandeditorroles.