diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index faf56d5..8053f18 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -135,3 +135,16 @@ footer { footer ul, footer h3 , footer li { margin:10px; } + +a, a:visited { + color:blue; + text-decoration:none; +} + +a:hover { + color:red; + background-color:yellow; + text-decoration:underline; +} + + diff --git a/app/controllers/domains_controller.rb b/app/controllers/domains_controller.rb index 7ce2ea7..e872502 100644 --- a/app/controllers/domains_controller.rb +++ b/app/controllers/domains_controller.rb @@ -36,8 +36,21 @@ class DomainsController < ApplicationController # PATCH/PUT /domains/1 or /domains/1.json def update + pre_domain_name = @domain.domain respond_to do |format| if @domain.update(domain_params) + # now we need to update the credentials and virtuals + + @domain.credentials.each do |credential| + credential.email.sub! pre_domain_name, @domain.domain + credential.save + end + + @domain.virtuals.each do |virtual| + virtual.email.sub! pre_domain_name, @domain.domain + virtual.save + end + format.html { redirect_to domain_url(@domain), notice: "Domain was successfully updated." } format.json { render :show, status: :ok, location: @domain } else diff --git a/app/models/domain.rb b/app/models/domain.rb index fd47f47..7480315 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -5,6 +5,7 @@ class Domain < ApplicationRecord has_many :virtuals, dependent: :destroy validates :domain, presence: true validates :domain, uniqueness: true + validates :domain, format: { with: /\A(((?!-))(xn--|_)?[a-z0-9-]{0,61}[a-z0-9]{1,1}\.)*(xn--)?([a-z0-9][a-z0-9\-]{0,60}|[a-z0-9-]{1,30}\.[a-z]{2,})\z/, message: "domain not valid" } private def create_abuse_postmaster diff --git a/app/views/domains/_form.html.erb b/app/views/domains/_form.html.erb index 4dd9f60..85b516f 100644 --- a/app/views/domains/_form.html.erb +++ b/app/views/domains/_form.html.erb @@ -12,11 +12,13 @@ <% end %>
- <%= form.label :domain, style: "display: block" %> - <%= form.text_field :domain %> + <%= form.label :domain %>:<%= form.text_field :domain %>
<%= form.submit %>
<% end %> + + + diff --git a/app/views/domains/edit.html.erb b/app/views/domains/edit.html.erb index 4f9bd87..6d24e01 100644 --- a/app/views/domains/edit.html.erb +++ b/app/views/domains/edit.html.erb @@ -1,3 +1,5 @@ +
+

Editing domain

<%= render "form", domain: @domain %> @@ -5,6 +7,8 @@
- <%= link_to "Show this domain", @domain %> | - <%= link_to "Back to domains", domains_path %> + <%= link_to "Back", @domain %> | + <%= link_to "Home", domains_path %> +
+
diff --git a/app/views/domains/show.html.erb b/app/views/domains/show.html.erb index fe297c7..79d7a2e 100644 --- a/app/views/domains/show.html.erb +++ b/app/views/domains/show.html.erb @@ -1,6 +1,6 @@
-

<%= @domain.domain %> <%#= link_to "Edit", edit_domain_path(@domain) %> <%= link_to "Delete", @domain, data: { turbo_method: :delete, turbo_confirm: "Are you sure?"} %>

+

<%= @domain.domain %> <%= link_to "Edit", edit_domain_path(@domain) %> <%= link_to "Delete", @domain, data: { turbo_method: :delete, turbo_confirm: "Are you sure?"} %>

Credentials (<%= @domain.credentials.count %>) <%= link_to "Add #{@domain.domain} email address", new_domain_credential_path(@domain) %>

diff --git a/test/models/domain_test.rb b/test/models/domain_test.rb index 207a022..edd1f3c 100644 --- a/test/models/domain_test.rb +++ b/test/models/domain_test.rb @@ -22,4 +22,16 @@ class DomainTest < ActiveSupport::TestCase assert_equal(@d.virtuals.count,2) end + + test "valid domain names only" do + @d = Domain.new(domain: "Spaces Spaces.co.uk") + assert_not @d.save + + @d.domain = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789.com" + assert_not @d.save + end + + + + end