diff --git a/app/controllers/records_controller.rb b/app/controllers/records_controller.rb index 6d525f8..4ff086b 100644 --- a/app/controllers/records_controller.rb +++ b/app/controllers/records_controller.rb @@ -1,55 +1,61 @@ class RecordsController < ApplicationController before_action :authenticate_user! before_action :domain before_action :record, only: [:edit, :update, :destroy] # GET /records/new def new @record = domain.records.build end # GET /records/1/edit def edit end # POST /records def create @record = domain.records.new(new_record_params) if @record.save redirect_to domain, notice: 'Record was successfully created.' else render :new end end # PATCH/PUT /records/1 def update if @record.update(edit_record_params) redirect_to domain, notice: 'Record was successfully updated.' else render :edit end end # DELETE /records/1 def destroy @record.destroy redirect_to domain, notice: 'Record was successfully destroyed.' end private def edit_record_params - params.require(:record).permit(:name, :content, :ttl, :prio, :disabled).tap { |r| + if @record.type == 'SOA' + permitted = [:contact, :serial, :refresh, :retry, :expire, :nx] + else + permitted = [:name, :content, :ttl, :prio, :disable] + 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 end diff --git a/app/views/records/_soa_form.html.erb b/app/views/records/_soa_form.html.erb new file mode 100644 index 0000000..4eb0e38 --- /dev/null +++ b/app/views/records/_soa_form.html.erb @@ -0,0 +1,12 @@ +<%= bootstrap_form_for([@domain, @record], layout: :horizontal, label_col: 'col-sm-2', control_col: 'col-sm-8') do |f| %> + + <%= f.static_control :type %> + <%= f.static_control :primary_ns %> + <%= f.email_field :contact %> + <%= f.text_field :refresh %> + <%= f.text_field :retry %> + <%= f.text_field :nx %> + + <%= f.submit 'Save', class: 'btn btn-primary col-sm-offset-2' %> + +<% end %> diff --git a/app/views/records/edit.html.erb b/app/views/records/edit.html.erb index fe2105a..30fe345 100644 --- a/app/views/records/edit.html.erb +++ b/app/views/records/edit.html.erb @@ -1,3 +1,3 @@