29 lines
660 B
Ruby
29 lines
660 B
Ruby
class Api::V1::ApiKeysController < Api::V1::BaseController
|
|
# Require API key authentication
|
|
prepend_before_action :authenticate_with_api_key!, only: %i[index destroy]
|
|
|
|
def index
|
|
render json: current_bearer.api_keys
|
|
end
|
|
|
|
def create
|
|
authenticate_with_http_basic do |email, password|
|
|
user = User.find_by email: email
|
|
|
|
if user&.authenticate(password)
|
|
api_key = user.api_keys.create! token: SecureRandom.hex
|
|
|
|
render json: api_key, status: :created and return
|
|
end
|
|
end
|
|
|
|
render status: :unauthorized
|
|
end
|
|
|
|
def destroy
|
|
api_key = current_bearer.api_keys.find(params[:id])
|
|
|
|
api_key.destroy
|
|
end
|
|
end
|