backend/app/controllers/domains_controller.rb
class DomainsController < ApplicationController
before_action :authenticate_user, except: %i[index_outside]
# GET /domains
def index
@domains = Domain.filtered(query_params).all
@domains = [] if @domains.nil?
limit = params[:limit] == '-1' ? @domains.count : params[:limit]
@domains = @domains.page(params[:page]).per(limit)
render status: 200, template: 'domains/index'
end
# POST /domains/mesh
# Accessible from outside
def index_outside
mesh_infos = params.require(:meshs).permit(:url, :token, :type, :domain)
return unless Mesh.find_by(url: mesh_infos[:url], token: mesh_infos[:token])
domains = if mesh_infos[:type] == 'domain'
Domain.all&.pluck(:name)
else
Domain.find_by(name: mesh_infos[:domain])&.subdomains&.pluck(:url, :infos)
end
render json: { message: nil, data: domains }, status: 200
end
# DELETE /domains/:id
def destroy
domain = Domain.find_by(id: params[:id])
domain.subdomains.destroy_all
domain.destroy
return render json: { message: I18n.t('errors.controllers.domains.unknown'), data: nil }, status: 200 if domain.nil?
render json: { message: I18n.t('success.controllers.domains.deleted'), data: nil }, status: 200
end
private
def query_params
params[:domain] || ''
end
end