Adding authorization to your admin pages
After setting up authenication, you’ll need to define a Controls#initialize
that accepts an authenticated user. From there, you can customize Controls#scope
to have the required behavior.
If you make these changes in your generated AdminControls
, all of your Controls
will inherit your desired behavior.
class AdminController < AdminController
class AdminControls < Super::Controls
def initialize(current_user)
@current_user = current_user
end
def scope(action:)
# Example: admins can read and write; others can only read
if @current_user.admin?
return model.all
end
if action.read?
return model.all
end
raise Super::ClientError::Forbidden
end
end
private
def new_controls
Controls.new(current_user)
end
end