mirror of
https://github.com/Evolix/chexpire.git
synced 2024-05-02 08:50:49 +02:00
83 lines
1.7 KiB
Ruby
83 lines
1.7 KiB
Ruby
class ChecksController < ApplicationController
|
|
before_action :authenticate_user!
|
|
before_action :set_check, except: [:index, :new, :create]
|
|
after_action :verify_authorized, except: :index
|
|
after_action :verify_policy_scoped, only: :index
|
|
|
|
def index
|
|
@checks = policy_scope(Check).order(:domain_expires_at).page(params[:page])
|
|
end
|
|
|
|
def new
|
|
@check = Check.new
|
|
authorize @check
|
|
|
|
if params[:kind].present?
|
|
return not_found unless Check.kinds.key?(params[:kind])
|
|
@check.kind = params[:kind]
|
|
end
|
|
|
|
build_empty_notification
|
|
end
|
|
|
|
def create
|
|
@check = Check.new(new_check_params)
|
|
@check.user = current_user
|
|
authorize @check
|
|
|
|
if @check.save
|
|
flash[:notice] = t(".saved")
|
|
redirect_to checks_path
|
|
else
|
|
flash.now[:alert] = t(".invalid")
|
|
render :new
|
|
end
|
|
end
|
|
|
|
def edit
|
|
build_empty_notification
|
|
end
|
|
|
|
def update
|
|
if @check.update(update_check_params)
|
|
flash[:notice] = "Your check has been updated."
|
|
redirect_to checks_path
|
|
else
|
|
flash.now[:alert] = "An error occured."
|
|
build_empty_notification
|
|
render :edit
|
|
end
|
|
end
|
|
|
|
def destroy
|
|
@check.destroy!
|
|
|
|
flash[:notice] = "Your check has been destroyed."
|
|
redirect_to checks_path
|
|
end
|
|
|
|
private
|
|
|
|
def set_check
|
|
@check = Check.find(params[:id])
|
|
authorize @check
|
|
end
|
|
|
|
def new_check_params
|
|
check_params(:kind)
|
|
end
|
|
|
|
def update_check_params
|
|
check_params(:active)
|
|
end
|
|
|
|
def check_params(*others)
|
|
params.require(:check).permit(:domain, :domain_created_at, :comment, :vendor, *others,
|
|
notifications_attributes: [:id, :channel, :recipient, :interval])
|
|
end
|
|
|
|
def build_empty_notification
|
|
@check.notifications.build
|
|
end
|
|
end
|