mirror of
https://github.com/internetee/registry.git
synced 2025-06-12 15:44:45 +02:00
Merge pull request #1063 from internetee/require-reserved-domain-password
Require reserved domain password
This commit is contained in:
commit
012d53c9a4
10 changed files with 109 additions and 39 deletions
|
@ -10,10 +10,6 @@ class BlockedDomain < ActiveRecord::Base
|
||||||
def by_domain name
|
def by_domain name
|
||||||
where(name: name)
|
where(name: name)
|
||||||
end
|
end
|
||||||
|
|
||||||
def any_of_domains names
|
|
||||||
where(name: names)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def name= val
|
def name= val
|
||||||
|
|
|
@ -6,9 +6,6 @@ class ReservedDomain < ActiveRecord::Base
|
||||||
|
|
||||||
validates :name, domain_name: true, uniqueness: true
|
validates :name, domain_name: true, uniqueness: true
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def pw_for(domain_name)
|
def pw_for(domain_name)
|
||||||
name_in_ascii = SimpleIDN.to_ascii(domain_name)
|
name_in_ascii = SimpleIDN.to_ascii(domain_name)
|
||||||
|
@ -19,10 +16,6 @@ class ReservedDomain < ActiveRecord::Base
|
||||||
where(name: name)
|
where(name: name)
|
||||||
end
|
end
|
||||||
|
|
||||||
def any_of_domains names
|
|
||||||
where(name: names)
|
|
||||||
end
|
|
||||||
|
|
||||||
def new_password_for name
|
def new_password_for name
|
||||||
record = by_domain(name).first
|
record = by_domain(name).first
|
||||||
return unless record
|
return unless record
|
||||||
|
@ -32,8 +25,6 @@ class ReservedDomain < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def name= val
|
def name= val
|
||||||
super SimpleIDN.to_unicode(val)
|
super SimpleIDN.to_unicode(val)
|
||||||
end
|
end
|
||||||
|
@ -53,17 +44,17 @@ class ReservedDomain < ActiveRecord::Base
|
||||||
wr.json = @json = generate_json # we need @json to bind to class
|
wr.json = @json = generate_json # we need @json to bind to class
|
||||||
wr.save
|
wr.save
|
||||||
end
|
end
|
||||||
|
|
||||||
alias_method :update_whois_record, :generate_data
|
alias_method :update_whois_record, :generate_data
|
||||||
|
|
||||||
def generate_json
|
def generate_json
|
||||||
h = HashWithIndifferentAccess.new
|
h = HashWithIndifferentAccess.new
|
||||||
h[:name] = self.name
|
h[:name] = self.name
|
||||||
h[:status] = ['Reserved']
|
h[:status] = ['Reserved']
|
||||||
h
|
h
|
||||||
end
|
end
|
||||||
|
|
||||||
def remove_data
|
def remove_data
|
||||||
UpdateWhoisRecordJob.enqueue name, 'reserved'
|
UpdateWhoisRecordJob.enqueue name, 'reserved'
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
= form_for([:admin, @domain], html: {class: 'form-horizontal'}) do |f|
|
|
||||||
= render 'shared/full_errors', object: @domain
|
|
||||||
|
|
||||||
.row
|
|
||||||
.col-md-8
|
|
||||||
.panel.panel-default
|
|
||||||
.panel-heading.clearfix
|
|
||||||
.pull-left= t(:general)
|
|
||||||
.panel-body
|
|
||||||
.form-group
|
|
||||||
.col-md-4.control-label
|
|
||||||
= f.label :name
|
|
||||||
.col-md-7
|
|
||||||
= f.text_field(:name, class: 'form-control', disabled: !f.object.new_record?)
|
|
||||||
.form-group
|
|
||||||
.col-md-4.control-label
|
|
||||||
= f.label :password
|
|
||||||
.col-md-7
|
|
||||||
= f.text_field(:password, placeholder: t(:optional), class: 'form-control')
|
|
||||||
.row
|
|
||||||
.col-md-8.text-right
|
|
||||||
= button_tag(t(:save), class: 'btn btn-primary')
|
|
40
app/views/admin/reserved_domains/_form.html.erb
Normal file
40
app/views/admin/reserved_domains/_form.html.erb
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
<%= form_for([:admin, @domain], html: { class: 'form-horizontal' }) do |f| %>
|
||||||
|
<%= render 'shared/full_errors', object: @domain %>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading clearfix">
|
||||||
|
<div class="pull-left">
|
||||||
|
<%= t(:general) %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-md-4 control-label">
|
||||||
|
<%= f.label :name %>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-7">
|
||||||
|
<%= f.text_field(:name, class: 'form-control', disabled: !f.object.new_record?) %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-md-4 control-label">
|
||||||
|
<%= f.label :password %>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-7">
|
||||||
|
<%= f.text_field(:password, placeholder: t(:optional), class: 'form-control') %>
|
||||||
|
<span class="help-block"><%= t '.password_hint' %></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8 text-right">
|
||||||
|
<%= button_tag(t(:save), class: 'btn btn-primary') %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
|
@ -5,3 +5,6 @@ en:
|
||||||
title: Reserved domains
|
title: Reserved domains
|
||||||
new_btn: New reserved domain
|
new_btn: New reserved domain
|
||||||
reset_btn: Reset
|
reset_btn: Reset
|
||||||
|
|
||||||
|
form:
|
||||||
|
password_hint: Generated automatically if left blank
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
class ChangeReservedDomainsPasswordToNotNull < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
change_column_null :reserved_domains, :password, false
|
||||||
|
end
|
||||||
|
end
|
|
@ -2241,7 +2241,7 @@ CREATE TABLE public.reserved_domains (
|
||||||
updator_str character varying,
|
updator_str character varying,
|
||||||
legacy_id integer,
|
legacy_id integer,
|
||||||
name character varying,
|
name character varying,
|
||||||
password character varying
|
password character varying NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
@ -4864,3 +4864,5 @@ INSERT INTO schema_migrations (version) VALUES ('20181002090319');
|
||||||
|
|
||||||
INSERT INTO schema_migrations (version) VALUES ('20181108154921');
|
INSERT INTO schema_migrations (version) VALUES ('20181108154921');
|
||||||
|
|
||||||
|
INSERT INTO schema_migrations (version) VALUES ('20190102144032');
|
||||||
|
|
||||||
|
|
3
test/fixtures/reserved_domains.yml
vendored
Normal file
3
test/fixtures/reserved_domains.yml
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
one:
|
||||||
|
name: reserved.test
|
||||||
|
password: reserved-001
|
11
test/models/reserved_domain_test.rb
Normal file
11
test/models/reserved_domain_test.rb
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class ReservedDomainTest < ActiveSupport::TestCase
|
||||||
|
setup do
|
||||||
|
@reserved_domain = reserved_domains(:one)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_fixture_is_valid
|
||||||
|
assert @reserved_domain.valid?
|
||||||
|
end
|
||||||
|
end
|
41
test/system/admin_area/reserved_domains/new_test.rb
Normal file
41
test/system/admin_area/reserved_domains/new_test.rb
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class AdminAreaReservedDomainsNewTest < ApplicationSystemTestCase
|
||||||
|
setup do
|
||||||
|
sign_in users(:admin)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_creates_new_with_requires_attributes
|
||||||
|
visit admin_reserved_domains_url
|
||||||
|
click_on 'New reserved domain'
|
||||||
|
fill_in 'Name', with: 'reserved-new.test'
|
||||||
|
|
||||||
|
assert_difference 'ReservedDomain.count' do
|
||||||
|
click_link_or_button 'Save'
|
||||||
|
end
|
||||||
|
assert_equal 'reserved-new.test', ReservedDomain.last.name
|
||||||
|
assert_current_path admin_reserved_domains_url
|
||||||
|
assert_text 'Domain added!'
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_generates_password_automatically_when_left_blank
|
||||||
|
visit new_admin_reserved_domain_url
|
||||||
|
fill_in 'Name', with: 'some.test'
|
||||||
|
|
||||||
|
assert_difference 'ReservedDomain.count' do
|
||||||
|
click_link_or_button 'Save'
|
||||||
|
end
|
||||||
|
assert_not_empty ReservedDomain.last.password
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_honors_custom_password
|
||||||
|
visit new_admin_reserved_domain_url
|
||||||
|
fill_in 'Name', with: 'some.test'
|
||||||
|
fill_in 'Password', with: 'reserved-123'
|
||||||
|
|
||||||
|
assert_difference 'ReservedDomain.count' do
|
||||||
|
click_link_or_button 'Save'
|
||||||
|
end
|
||||||
|
assert_equal 'reserved-123', ReservedDomain.last.password
|
||||||
|
end
|
||||||
|
end
|
Loading…
Add table
Add a link
Reference in a new issue