Adding authorization to your admin pages
One simple way of setting up authorization (access control) is by updating the #base_scope method. Every default action that Super defines, like the index or update actions, calls the #base_scope action.
If you make these changes in your generated AdminController, all of your admin pages will inherit that behavior.
class AdminController < AdminController
private
def base_scope
# Example: admins can read and write; others can only read
if current_user.admin?
return model.all
end
if current_action.read?
return model.all
end
raise Super::ClientError::Forbidden
end
end
Note that the correct behavior is to raise an error, not to return model.none. If you use model.none, users will be able to create new records (but won’t be able to edit). Even if you do want this behavior, I recommend making it explicit and using raise.