mirror of
https://github.com/internetee/registry.git
synced 2025-07-12 14:08:17 +02:00
Nameserver form validations
This commit is contained in:
parent
d9c750e7e2
commit
211964c296
8 changed files with 71 additions and 16 deletions
|
@ -1,9 +1,13 @@
|
||||||
Autocomplete.bindTypeahead
|
ready = ->
|
||||||
remote: '/admin/registrars/search'
|
Autocomplete.bindTypeahead
|
||||||
selector: '.js-registrar-typeahead'
|
remote: '/admin/registrars/search'
|
||||||
hiddenSelector: '.js-registrar-id'
|
selector: '.js-registrar-typeahead'
|
||||||
|
hiddenSelector: '.js-registrar-id'
|
||||||
|
|
||||||
Autocomplete.bindTypeahead
|
Autocomplete.bindTypeahead
|
||||||
remote: '/admin/contacts/search'
|
remote: '/admin/contacts/search'
|
||||||
selector: '.js-contact-typeahead'
|
selector: '.js-contact-typeahead'
|
||||||
hiddenSelector: '.js-contact-id'
|
hiddenSelector: '.js-contact-id'
|
||||||
|
|
||||||
|
$(document).ready(ready)
|
||||||
|
$(document).on('page:load', ready)
|
||||||
|
|
|
@ -9,11 +9,14 @@ class Admin::NameserversController < ApplicationController
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@domain = Domain.find(params[:domain_id])
|
@domain = Domain.find(params[:domain_id])
|
||||||
@nameserver = @domain.nameservers.build(nameserver_params)
|
|
||||||
|
|
||||||
if @domain.save
|
if @domain.can_add_nameserver?
|
||||||
redirect_to [:admin, @domain]
|
@domain.nameservers.build(nameserver_params)
|
||||||
|
flash[:notice] = I18n.t('shared.nameserver_added')
|
||||||
|
redirect_to [:admin, @domain] and return if @domain.save
|
||||||
else
|
else
|
||||||
|
@nameserver = @domain.nameservers.build(nameserver_params)
|
||||||
|
flash.now[:alert] = I18n.t('shared.failed_to_add_nameserver')
|
||||||
render 'new'
|
render 'new'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -32,7 +35,16 @@ class Admin::NameserversController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
@nameserver.destroy
|
if @domain.can_remove_nameserver?
|
||||||
|
if @nameserver.destroy
|
||||||
|
flash[:notice] = I18n.t('shared.nameserver_deleted')
|
||||||
|
else
|
||||||
|
flash[:alert] = I18n.t('shared.failed_to_delete_nameserver')
|
||||||
|
end
|
||||||
|
else
|
||||||
|
flash[:alert] = @domain.errors[:nameservers].first
|
||||||
|
end
|
||||||
|
|
||||||
redirect_to [:admin, @domain]
|
redirect_to [:admin, @domain]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,21 @@ class Domain < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
### VALIDATIONS ###
|
### VALIDATIONS ###
|
||||||
|
def can_remove_nameserver?
|
||||||
|
sg = SettingGroup.domain_validation
|
||||||
|
min = sg.setting(:ns_min_count).value.to_i
|
||||||
|
return true if nameservers.length > min
|
||||||
|
errors.add(:nameservers, :greater_than_or_equal_to, { count: min })
|
||||||
|
false
|
||||||
|
end
|
||||||
|
|
||||||
|
def can_add_nameserver?
|
||||||
|
sg = SettingGroup.domain_validation
|
||||||
|
max = sg.setting(:ns_max_count).value.to_i
|
||||||
|
return true if nameservers.length < max
|
||||||
|
errors.add(:nameservers, :less_than_or_equal_to, { count: max })
|
||||||
|
false
|
||||||
|
end
|
||||||
|
|
||||||
def validate_nameservers_count
|
def validate_nameservers_count
|
||||||
sg = SettingGroup.domain_validation
|
sg = SettingGroup.domain_validation
|
||||||
|
@ -75,6 +90,8 @@ class Domain < ActiveRecord::Base
|
||||||
def all_dependencies_valid?
|
def all_dependencies_valid?
|
||||||
validate_nameservers_count
|
validate_nameservers_count
|
||||||
validate_admin_contacts_count
|
validate_admin_contacts_count
|
||||||
|
|
||||||
|
errors.empty?
|
||||||
end
|
end
|
||||||
|
|
||||||
## SHARED
|
## SHARED
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
%h2= t('shared.edit_nameserver')
|
.row
|
||||||
|
.col-sm-6
|
||||||
|
%h2.text-center-xs
|
||||||
|
= "#{t('shared.edit_nameserver')}"
|
||||||
|
.col-sm-6
|
||||||
|
%h2.text-right.text-center-xs
|
||||||
|
= link_to(t('shared.back_to_domain'), [:admin, @domain], class: 'btn btn-default')
|
||||||
%hr
|
%hr
|
||||||
= render 'form'
|
= render 'form'
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
%h2= t('shared.new_nameserver')
|
.row
|
||||||
|
.col-sm-6
|
||||||
|
%h2.text-center-xs
|
||||||
|
= "#{t('shared.new_nameserver')}"
|
||||||
|
.col-sm-6
|
||||||
|
%h2.text-right.text-center-xs
|
||||||
|
= link_to(t('shared.back_to_domain'), [:admin, @domain], class: 'btn btn-default')
|
||||||
%hr
|
%hr
|
||||||
= render 'form'
|
= render 'form'
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
%meta{content: "Gitlab LTD", name: "author"}/
|
%meta{content: "Gitlab LTD", name: "author"}/
|
||||||
= csrf_meta_tags
|
= csrf_meta_tags
|
||||||
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true
|
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true
|
||||||
|
= javascript_include_tag 'application', 'data-turbolinks-track' => true
|
||||||
%link{href: "../../favicon.ico", rel: "icon"}/
|
%link{href: "../../favicon.ico", rel: "icon"}/
|
||||||
%title Eesti Interneti SA
|
%title Eesti Interneti SA
|
||||||
%body
|
%body
|
||||||
|
@ -48,7 +49,9 @@
|
||||||
%li= link_to t('shared.log_out'), '/logout'
|
%li= link_to t('shared.log_out'), '/logout'
|
||||||
/ /.nav-collapse
|
/ /.nav-collapse
|
||||||
.container
|
.container
|
||||||
|
- display = (flash.empty?) ? 'none' : 'block'
|
||||||
|
#flash{style: "display: #{display};"}
|
||||||
|
- type = (flash[:notice]) ? 'bg-success' : 'bg-danger'
|
||||||
|
.alert{class: type}= flash[:notice] || flash[:alert]
|
||||||
= yield
|
= yield
|
||||||
|
|
||||||
= javascript_include_tag 'application', 'data-turbolinks-track' => true
|
|
||||||
|
|
||||||
|
|
|
@ -85,6 +85,8 @@ en:
|
||||||
out_of_range: 'Nameservers count must be between %{min}-%{max}'
|
out_of_range: 'Nameservers count must be between %{min}-%{max}'
|
||||||
not_found: 'Nameserver was not found'
|
not_found: 'Nameserver was not found'
|
||||||
taken: 'Nameserver already exists on this domain'
|
taken: 'Nameserver already exists on this domain'
|
||||||
|
less_than_or_equal_to: 'Nameservers count must be less than or equal to %{count}'
|
||||||
|
greater_than_or_equal_to: 'Nameservers count must be greater than or equal to %{count}'
|
||||||
period:
|
period:
|
||||||
out_of_range: 'Period must add up to 1, 2 or 3 years'
|
out_of_range: 'Period must add up to 1, 2 or 3 years'
|
||||||
not_a_number: 'Period is not a number'
|
not_a_number: 'Period is not a number'
|
||||||
|
@ -198,3 +200,8 @@ en:
|
||||||
domain: 'Domain'
|
domain: 'Domain'
|
||||||
new_nameserver: 'New nameserver'
|
new_nameserver: 'New nameserver'
|
||||||
edit_nameserver: 'Edit nameserver'
|
edit_nameserver: 'Edit nameserver'
|
||||||
|
nameserver_deleted: 'Nameserver deleted!'
|
||||||
|
failed_to_delete_nameserver: 'Failed to delete nameserver!'
|
||||||
|
failed_to_add_nameserver: 'Failed to add nameserver!'
|
||||||
|
nameserver_added: 'Nameserver added!'
|
||||||
|
back_to_domain: 'Back to domain'
|
||||||
|
|
0
vendor/assets/javascripts/.keep
vendored
0
vendor/assets/javascripts/.keep
vendored
Loading…
Add table
Add a link
Reference in a new issue