Add a rules controller

This commit is contained in:
Dan Milne
2025-11-04 09:47:11 +11:00
parent 5ff166613e
commit c72d83acda
14 changed files with 272 additions and 42 deletions

View File

@@ -0,0 +1,88 @@
# frozen_string_literal: true
class RulesController < ApplicationController
before_action :set_rule, only: [:show, :edit, :update, :disable, :enable]
before_action :authorize_rule
# GET /rules
def index
@rules = Rule.includes(:project).order(created_at: :desc)
@rule_types = Rule::RULE_TYPES
@actions = Rule::ACTIONS
end
# GET /rules/new
def new
@rule = Rule.new
@rule_types = Rule::RULE_TYPES
@actions = Rule::ACTIONS
end
# POST /rules
def create
@rule = Rule.new(rule_params)
@rule_types = Rule::RULE_TYPES
@actions = Rule::ACTIONS
if @rule.save
redirect_to @rule, notice: 'Rule was successfully created.'
else
render :new, status: :unprocessable_entity
end
end
# GET /rules/:id
def show
end
# GET /rules/:id/edit
def edit
@rule_types = Rule::RULE_TYPES
@actions = Rule::ACTIONS
end
# PATCH/PUT /rules/:id
def update
if @rule.update(rule_params)
redirect_to @rule, notice: 'Rule was successfully updated.'
else
render :edit, status: :unprocessable_entity
end
end
# POST /rules/:id/disable
def disable
reason = params[:reason] || "Disabled manually"
@rule.disable!(reason: reason)
redirect_to @rule, notice: 'Rule was successfully disabled.'
end
# POST /rules/:id/enable
def enable
@rule.enable!
redirect_to @rule, notice: 'Rule was successfully enabled.'
end
private
def set_rule
@rule = Rule.find(params[:id])
end
def authorize_rule
# Add authorization logic here if needed
# For now, allow all authenticated users
end
def rule_params
params.require(:rule).permit(
:rule_type,
:action,
:conditions,
:metadata,
:expires_at,
:enabled,
:source
)
end
end