# frozen_string_literal: true # El controlador desde el que descienden todos los controladores class ApplicationController < ActionController::API # authenticate! obtiene la pirata a partir de los datos de # autenticacion y la pone en este atributo attr_reader :current_pirata # Vamos a usar HTTP Basic Auth include ActionController::HttpAuthentication::Basic::ControllerMethods private def todas_menos_yo Pirata.todas_menos(current_pirata) end def todas_menos_yo_ids todas_menos_yo.pluck(:id) end # Autenticar a la pirata usando HTTP Basic Auth # https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication def authenticate! @current_pirata ||= authenticate_with_http_basic do |email, password| pirata = Pirata.find_by_email(email) if pirata&.authenticate(password) session[:pirata_id] = pirata.id pirata end end # Si no la encuentra, no nos deja hacer nada render(json: {}, status: :forbidden) unless current_pirata end end