mirror of
https://github.com/System-End/theseus.git
synced 2026-04-19 16:38:18 +00:00
39 lines
1.2 KiB
Ruby
39 lines
1.2 KiB
Ruby
module Public
|
|
module API
|
|
module V1
|
|
class ApplicationController < ActionController::API
|
|
prepend_view_path "app/views/public/api/v1"
|
|
|
|
attr_reader :current_public_user
|
|
|
|
before_action :authenticate!
|
|
before_action :set_expand
|
|
|
|
include ActionController::HttpAuthentication::Token::ControllerMethods
|
|
|
|
rescue_from Pundit::NotAuthorizedError do |e|
|
|
render json: { error: "not_authorized" }, status: :forbidden
|
|
end
|
|
|
|
rescue_from ActiveRecord::RecordNotFound do |e|
|
|
render json: { error: "resource_not_found", message: ("Couldn't locate that #{e.model.constantize.model_name.human}." if e.model) }.compact_blank, status: :not_found
|
|
end
|
|
|
|
private
|
|
|
|
def set_expand
|
|
@expand = params[:expand].to_s.split(",").map { |e| e.strip.to_sym }
|
|
end
|
|
|
|
def authenticate!
|
|
@current_token = authenticate_with_http_token { |t, _options| Public::APIKey.find_by(token: t) }
|
|
unless @current_token&.active?
|
|
return render json: { error: "invalid_auth" }, status: :unauthorized
|
|
end
|
|
|
|
@current_public_user = @current_token.public_user
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|