Page Menu
Home
GRNET
Search
Configure Global Search
Log In
Files
F324373
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Nov 25, 7:34 PM
Size
4 KB
Mime Type
text/x-diff
Expires
Wed, Nov 27, 7:34 PM (1 d, 18 h)
Engine
blob
Format
Raw Data
Handle
156194
Attached To
rWEBDNS WebDNS (edet4)
View Options
diff --git a/app/controllers/records_controller.rb b/app/controllers/records_controller.rb
index 3a9fd47..bc9ed7a 100644
--- a/app/controllers/records_controller.rb
+++ b/app/controllers/records_controller.rb
@@ -1,143 +1,148 @@
class RecordsController < ApplicationController
before_action :authenticate_user!
before_action :domain, except: [:search]
before_action :editable_transform_params, only: [:editable]
before_action :record, only: [:edit, :update, :editable, :destroy]
# GET /records/new
def new
@record = domain.records.build
end
# GET /records/1/edit
def edit
+ session[:edit_record_redirect_to] = request.referrer
end
# POST /records
def create
@record = domain.records.new(new_record_params)
if @record.save
notify_record(@record, :create)
redirect_to domain, notice: 'Record was successfully created.'
else
flash[:alert] = 'There were some errors creating the record!'
render :new
end
end
# PATCH/PUT /records/1
def update
if @record.update(edit_record_params)
notify_record(@record, :update)
- redirect_to domain, notice: 'Record was successfully updated.'
+
+ ret = session[:edit_record_redirect_to] ? session.delete(:edit_record_redirect_to) : domain
+
+ redirect_to ret, notice: 'Record was successfully updated.'
else
render :edit
end
end
def valid
@record = domain.records.new(new_record_params)
if @record.valid?
response = {
record: @record.as_bulky_json,
errors: false
}
render json: response
else
render json: { errors: @record.errors.full_messages.join(', ') }
end
end
def bulk
ops, err = @domain.bulk(params)
if err.empty?
notify_record_bulk(@domain, ops)
render json: { ok: true }
else
render json: { errors: err }
end
end
def editable
@record.assign_attributes(edit_record_params)
if @record.valid?
if @save
@record.save!
notify_record(@record, :update)
end
response = {
attribute: @attr,
value: @record.read_attribute(@attr),
serial: @domain.soa(true).serial,
record: @record.as_bulky_json,
saved: @save
}
render json: response
else
render text: @record.errors[@attr].join(', '), status: 400
end
end
# DELETE /records/1
def destroy
+ ret = request.referrer
if @record.type == 'SOA'
- redirect_to domain, alert: 'SOA records cannot be deleted!'
+ redirect_to ret, alert: 'SOA records cannot be deleted!'
return
end
@record.destroy
notify_record(@record, :destroy)
- redirect_to domain, notice: 'Record was successfully destroyed.'
+ redirect_to ret, notice: 'Record was successfully destroyed.'
end
# GET /search
def search
@records = Record
.where(domain: show_domain_scope)
.includes(:domain)
.search(params[:q]) # scope by domain
@records = Record.smart_order(@records)
end
private
# Modify params to use standard Rails patterns
def editable_transform_params
@attr = params[:name]
@save = params[:save] != 'false'
params[:record] = { params[:name] => params[:value] }
end
def edit_record_params
if @record.type == 'SOA'
permitted = [:contact, :serial, :refresh, :retry, :expire, :nx]
else
permitted = [:name, :content, :ttl, :prio, :disabled]
end
params.require(:record).permit(*permitted).tap { |r|
r[:drop_privileges] = true if not admin?
}
end
def new_record_params
params.require(:record).permit(:name, :content, :ttl, :type, :prio).tap { |r|
r[:drop_privileges] = true if not admin?
}
end
def notify_record(*args)
notification.notify_record(current_user, *args) if WebDNS.settings[:notifications]
end
def notify_record_bulk(*args)
notification.notify_record_bulk(current_user, *args) if WebDNS.settings[:notifications]
end
end
Event Timeline
Log In to Comment