internetee/registry

View on GitHub
app/controllers/admin/dns/zones_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
93%
module Admin
  module DNS
    class ZonesController < BaseController
      authorize_resource(class: 'DNS::Zone')
      before_action :load_zone, only: %i[edit update destroy]

      def index
        @q = ::DNS::Zone.ransack(params[:q])
        @count = @q.result.count
        @zones = @q.result.page(params[:page]).per(params[:results_per_page])
      end

      def new
        @zone = ::DNS::Zone.new
      end

      def create
        @zone = ::DNS::Zone.new(zone_params)

        if @zone.save
          flash[:notice] = t('.created')
          redirect_to_index
        else
          render :new
        end
      end

      def edit
        @zone = ::DNS::Zone.find(params[:id])
      end

      def update
        if @zone.update(zone_params)
          flash[:notice] = t('.updated')
          redirect_to_index
        else
          render :edit
        end
      end

      private

      def load_zone
        @zone = ::DNS::Zone.find(params[:id])
      end

      def zone_params
        allowed_params = %i[
          origin
          ttl
          refresh
          retry
          expire
          minimum_ttl
          email
          master_nameserver
          ns_records
          a_records
          a4_records
        ]

        params.require(:zone).permit(*allowed_params)
      end

      def redirect_to_index
        redirect_to admin_zones_url
      end
    end
  end
end