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