From 0a8acc72c92daa0251c0829456dd82a61e25f627 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Fri, 1 Jun 2018 14:43:44 +0300 Subject: [PATCH 01/25] Remove "spring" gem - Regenerate binstubs --- Gemfile | 2 -- Gemfile.lock | 8 +------ bin/rails | 7 +------ bin/rake | 5 ----- bin/rspec | 4 ---- bin/setup | 29 ++++++++++++++++++++++++++ bin/spring | 15 ------------- config/environments/test.rb | 2 +- config/initializers/001_paper_trail.rb | 2 +- config/spring.rb | 1 - 10 files changed, 33 insertions(+), 42 deletions(-) create mode 100644 bin/setup delete mode 100755 bin/spring delete mode 100644 config/spring.rb diff --git a/Gemfile b/Gemfile index 0af80fddf..a0efeacbc 100644 --- a/Gemfile +++ b/Gemfile @@ -101,8 +101,6 @@ gem 'jquery-ui-rails', '5.0.5' gem 'active_model-errors_details' # Backport from Rails 5, https://github.com/rails/rails/pull/18322 group :development do - gem 'spring' - gem 'spring-commands-rspec' gem 'rubocop' # deploy diff --git a/Gemfile.lock b/Gemfile.lock index b12b28a2d..fac725cfd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -423,10 +423,6 @@ GEM sixarm_ruby_unaccent (1.1.1) slop (3.6.0) socksify (1.7.1) - spring (2.0.2) - activesupport (>= 4.2) - spring-commands-rspec (1.0.4) - spring (>= 0.9.1) sprockets (3.7.1) concurrent-ruby (~> 1.0) rack (> 1, < 3) @@ -534,12 +530,10 @@ DEPENDENCIES selectize-rails (= 0.12.1) simplecov simpleidn (= 0.0.7) - spring - spring-commands-rspec uuidtools (= 2.1.5) validates_email_format_of (= 1.6.3) webmock whenever (= 0.9.4) BUNDLED WITH - 1.16.1 + 1.16.2 diff --git a/bin/rails b/bin/rails index 284b01d72..5191e6927 100755 --- a/bin/rails +++ b/bin/rails @@ -1,9 +1,4 @@ #!/usr/bin/env ruby -begin - load File.expand_path('../spring', __FILE__) -rescue LoadError - 'no spring' -end -APP_PATH = File.expand_path('../../config/application', __FILE__) +APP_PATH = File.expand_path('../../config/application', __FILE__) require_relative '../config/boot' require 'rails/commands' diff --git a/bin/rake b/bin/rake index 7b36ecbff..17240489f 100755 --- a/bin/rake +++ b/bin/rake @@ -1,9 +1,4 @@ #!/usr/bin/env ruby -begin - load File.expand_path('../spring', __FILE__) -rescue LoadError - 'no spring' -end require_relative '../config/boot' require 'rake' Rake.application.run diff --git a/bin/rspec b/bin/rspec index 534d2bb5f..8bc84617e 100755 --- a/bin/rspec +++ b/bin/rspec @@ -1,8 +1,4 @@ #!/usr/bin/env ruby -begin - load File.expand_path("../spring", __FILE__) -rescue LoadError -end # # This file was generated by Bundler. # diff --git a/bin/setup b/bin/setup new file mode 100644 index 000000000..acdb2c138 --- /dev/null +++ b/bin/setup @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +require 'pathname' + +# path to your application root. +APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) + +Dir.chdir APP_ROOT do + # This script is a starting point to setup your application. + # Add necessary setup steps to this file: + + puts "== Installing dependencies ==" + system "gem install bundler --conservative" + system "bundle check || bundle install" + + # puts "\n== Copying sample files ==" + # unless File.exist?("config/database.yml") + # system "cp config/database.yml.sample config/database.yml" + # end + + puts "\n== Preparing database ==" + system "bin/rake db:setup" + + puts "\n== Removing old logs and tempfiles ==" + system "rm -f log/*" + system "rm -rf tmp/cache" + + puts "\n== Restarting application server ==" + system "touch tmp/restart.txt" +end diff --git a/bin/spring b/bin/spring deleted file mode 100755 index 7b45d374f..000000000 --- a/bin/spring +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env ruby - -# This file loads spring without using Bundler, in order to be fast. -# It gets overwritten when you run the `spring binstub` command. - -unless defined?(Spring) - require "rubygems" - require "bundler" - - if match = Bundler.default_lockfile.read.match(/^GEM$.*?^ (?: )*spring \((.*?)\)$.*?^$/m) - Gem.paths = { "GEM_PATH" => [Bundler.bundle_path.to_s, *Gem.path].uniq } - gem "spring", match[1] - require "spring/binstub" - end -end diff --git a/config/environments/test.rb b/config/environments/test.rb index 9b22ad426..8e5d52a5b 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -10,7 +10,7 @@ Rails.application.configure do # Do not eager load code on boot. This avoids loading your whole application # just for the purpose of running a single test. If you are using a tool that # preloads Rails for running tests, you may have to set it to true. - config.eager_load = true + config.eager_load = false # Configure static asset server for tests with Cache-Control for performance. config.serve_static_files = true diff --git a/config/initializers/001_paper_trail.rb b/config/initializers/001_paper_trail.rb index 9dec5fb12..645e6535c 100644 --- a/config/initializers/001_paper_trail.rb +++ b/config/initializers/001_paper_trail.rb @@ -6,7 +6,7 @@ PaperTrail::Version.module_eval do end # Store console and rake changes in versions -if defined?(::Rails::Console) || File.basename($PROGRAM_NAME).split(' ').first == 'spring' +if defined?(::Rails::Console) PaperTrail.whodunnit = "console-#{`whoami`.strip}" elsif File.basename($PROGRAM_NAME) == "rake" # rake username does not work when spring enabled diff --git a/config/spring.rb b/config/spring.rb deleted file mode 100644 index 12c701147..000000000 --- a/config/spring.rb +++ /dev/null @@ -1 +0,0 @@ -Spring.watch 'config/application.yml' From af0415c94900ac37dacf6979d7eed64c75c63b9e Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 5 Jun 2018 05:09:25 +0300 Subject: [PATCH 02/25] Remove "bundler-audit" gem --- Gemfile | 1 - Gemfile.lock | 4 ---- 2 files changed, 5 deletions(-) diff --git a/Gemfile b/Gemfile index 0af80fddf..c77fc212e 100644 --- a/Gemfile +++ b/Gemfile @@ -120,7 +120,6 @@ group :development, :test do gem 'pry', '0.10.1' gem 'bullet', '4.14.7' # for finding database optimizations - gem 'bundler-audit' gem 'brakeman', '3.6.1', require: false # for security audit' # tmp, otherwise conflics with breakman # gem 'html2haml', github: 'haml/html2haml', ref: '6984f50bdbbd6291535027726a5697f28778ee8d' diff --git a/Gemfile.lock b/Gemfile.lock index b12b28a2d..ae8676ede 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -128,9 +128,6 @@ GEM bullet (4.14.7) activesupport (>= 3.0.0) uniform_notifier (~> 1.9.0) - bundler-audit (0.5.0) - bundler (~> 1.2) - thor (~> 0.18) cancancan (1.11.0) capybara (2.14.0) addressable @@ -482,7 +479,6 @@ DEPENDENCIES bootstrap-sass (= 3.3.5.1) brakeman (= 3.6.1) bullet (= 4.14.7) - bundler-audit cancancan (= 1.11.0) capybara coderay (= 1.1.0) From 5441424e456a212004fa0b3bec0fcd7f84f3d8df Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 5 Jun 2018 05:11:06 +0300 Subject: [PATCH 03/25] Remove "brakeman" gem --- Gemfile | 3 --- Gemfile.lock | 2 -- 2 files changed, 5 deletions(-) diff --git a/Gemfile b/Gemfile index c77fc212e..2d10b744d 100644 --- a/Gemfile +++ b/Gemfile @@ -120,9 +120,6 @@ group :development, :test do gem 'pry', '0.10.1' gem 'bullet', '4.14.7' # for finding database optimizations - gem 'brakeman', '3.6.1', require: false # for security audit' - # tmp, otherwise conflics with breakman - # gem 'html2haml', github: 'haml/html2haml', ref: '6984f50bdbbd6291535027726a5697f28778ee8d' gem 'html2haml', '2.1.0' gem 'sdoc', '0.4.1' # bundle exec rake doc:rails generates the API under doc/api. gem 'railroady', '1.3.0' # to generate database diagrams diff --git a/Gemfile.lock b/Gemfile.lock index ae8676ede..0782f93f6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -123,7 +123,6 @@ GEM bootstrap-sass (3.3.5.1) autoprefixer-rails (>= 5.0.0.1) sass (>= 3.3.0) - brakeman (3.6.1) builder (3.2.3) bullet (4.14.7) activesupport (>= 3.0.0) @@ -477,7 +476,6 @@ DEPENDENCIES airbrake autodoc bootstrap-sass (= 3.3.5.1) - brakeman (= 3.6.1) bullet (= 4.14.7) cancancan (= 1.11.0) capybara From 41cb23f22fe8b076328b62d8f8e2d74fccb73bda Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Sat, 9 Jun 2018 05:04:21 +0300 Subject: [PATCH 04/25] Backport Rails 5 API controller --- lib/action_controller/api.rb | 149 ++++++++++++++++++ lib/action_controller/api/api_rendering.rb | 16 ++ .../metal/basic_implicit_render.rb | 13 ++ lib/rails5_api_controller_backport.rb | 3 + 4 files changed, 181 insertions(+) create mode 100644 lib/action_controller/api.rb create mode 100644 lib/action_controller/api/api_rendering.rb create mode 100644 lib/action_controller/metal/basic_implicit_render.rb create mode 100644 lib/rails5_api_controller_backport.rb diff --git a/lib/action_controller/api.rb b/lib/action_controller/api.rb new file mode 100644 index 000000000..5a9fd4512 --- /dev/null +++ b/lib/action_controller/api.rb @@ -0,0 +1,149 @@ +# frozen_string_literal: true + +require "action_view" +require "action_controller" +require "action_controller/log_subscriber" + +module ActionController + # API Controller is a lightweight version of ActionController::Base, + # created for applications that don't require all functionalities that a complete + # \Rails controller provides, allowing you to create controllers with just the + # features that you need for API only applications. + # + # An API Controller is different from a normal controller in the sense that + # by default it doesn't include a number of features that are usually required + # by browser access only: layouts and templates rendering, cookies, sessions, + # flash, assets, and so on. This makes the entire controller stack thinner, + # suitable for API applications. It doesn't mean you won't have such + # features if you need them: they're all available for you to include in + # your application, they're just not part of the default API controller stack. + # + # Normally, +ApplicationController+ is the only controller that inherits from + # ActionController::API. All other controllers in turn inherit from + # +ApplicationController+. + # + # A sample controller could look like this: + # + # class PostsController < ApplicationController + # def index + # posts = Post.all + # render json: posts + # end + # end + # + # Request, response, and parameters objects all work the exact same way as + # ActionController::Base. + # + # == Renders + # + # The default API Controller stack includes all renderers, which means you + # can use render :json and brothers freely in your controllers. Keep + # in mind that templates are not going to be rendered, so you need to ensure + # your controller is calling either render or redirect_to in + # all actions, otherwise it will return 204 No Content. + # + # def show + # post = Post.find(params[:id]) + # render json: post + # end + # + # == Redirects + # + # Redirects are used to move from one action to another. You can use the + # redirect_to method in your controllers in the same way as in + # ActionController::Base. For example: + # + # def create + # redirect_to root_url and return if not_authorized? + # # do stuff here + # end + # + # == Adding New Behavior + # + # In some scenarios you may want to add back some functionality provided by + # ActionController::Base that is not present by default in + # ActionController::API, for instance MimeResponds. This + # module gives you the respond_to method. Adding it is quite simple, + # you just need to include the module in a specific controller or in + # +ApplicationController+ in case you want it available in your entire + # application: + # + # class ApplicationController < ActionController::API + # include ActionController::MimeResponds + # end + # + # class PostsController < ApplicationController + # def index + # posts = Post.all + # + # respond_to do |format| + # format.json { render json: posts } + # format.xml { render xml: posts } + # end + # end + # end + # + # Make sure to check the modules included in ActionController::Base + # if you want to use any other functionality that is not provided + # by ActionController::API out of the box. + class API < Metal + abstract! + + # Shortcut helper that returns all the ActionController::API modules except + # the ones passed as arguments: + # + # class MyAPIBaseController < ActionController::Metal + # ActionController::API.without_modules(:ForceSSL, :UrlFor).each do |left| + # include left + # end + # end + # + # This gives better control over what you want to exclude and makes it easier + # to create an API controller class, instead of listing the modules required + # manually. + def self.without_modules(*modules) + modules = modules.map do |m| + m.is_a?(Symbol) ? ActionController.const_get(m) : m + end + + MODULES - modules + end + + MODULES = [ + AbstractController::Rendering, + + UrlFor, + Redirecting, + ApiRendering, + Renderers::All, + ConditionalGet, + BasicImplicitRender, + StrongParameters, + + ForceSSL, + DataStreaming, + + # Before callbacks should also be executed as early as possible, so + # also include them at the bottom. + AbstractController::Callbacks, + + # Append rescue at the bottom to wrap as much as possible. + Rescue, + + # Add instrumentations hooks at the bottom, to ensure they instrument + # all the methods properly. + Instrumentation, + + # Params wrapper should come before instrumentation so they are + # properly showed in logs + ParamsWrapper + ] + + MODULES.each do |mod| + include mod + end + + ActiveSupport.run_load_hooks(:action_controller_api, self) + ActiveSupport.run_load_hooks(:action_controller, self) + end +end diff --git a/lib/action_controller/api/api_rendering.rb b/lib/action_controller/api/api_rendering.rb new file mode 100644 index 000000000..52e9f60fc --- /dev/null +++ b/lib/action_controller/api/api_rendering.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module ActionController + module ApiRendering + extend ActiveSupport::Concern + + included do + include Rendering + end + + def render_to_body(options = {}) + _process_options(options) + super + end + end +end \ No newline at end of file diff --git a/lib/action_controller/metal/basic_implicit_render.rb b/lib/action_controller/metal/basic_implicit_render.rb new file mode 100644 index 000000000..9030ea585 --- /dev/null +++ b/lib/action_controller/metal/basic_implicit_render.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +module ActionController + module BasicImplicitRender # :nodoc: + def send_action(method, *args) + super.tap { default_render unless performed? } + end + + def default_render(*args) + head :no_content + end + end +end \ No newline at end of file diff --git a/lib/rails5_api_controller_backport.rb b/lib/rails5_api_controller_backport.rb new file mode 100644 index 000000000..252332488 --- /dev/null +++ b/lib/rails5_api_controller_backport.rb @@ -0,0 +1,3 @@ +require_relative 'action_controller/metal/basic_implicit_render' +require_relative 'action_controller/api/api_rendering' +require_relative 'action_controller/api' \ No newline at end of file From cd107916bc6d20ce4107965429202de9c4cfe566 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Sat, 9 Jun 2018 05:23:55 +0300 Subject: [PATCH 05/25] Update CodeClimate config --- .codeclimate.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.codeclimate.yml b/.codeclimate.yml index 9df308022..be8f1df7a 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -23,6 +23,7 @@ exclude_patterns: - "bin/" - "config/" - "db/" + - "lib/" - "vendor/" - "test/" - "spec/" From 9b07db8fc96d2bbc67f957460164efceafcf72dd Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 11 Jun 2018 09:53:09 +0300 Subject: [PATCH 06/25] Remove `dev` rake task `db:fixtures:load` should be preferred instead --- lib/tasks/dev.rake | 183 --------------------------------------------- 1 file changed, 183 deletions(-) delete mode 100644 lib/tasks/dev.rake diff --git a/lib/tasks/dev.rake b/lib/tasks/dev.rake deleted file mode 100644 index e4c120a8d..000000000 --- a/lib/tasks/dev.rake +++ /dev/null @@ -1,183 +0,0 @@ -namespace :dev do - desc 'Generates dummy data in development environment' \ - ' (options: [random] for random data generation - slowest)' - - task :prime, [:random] => :environment do |t, args| - abort 'Production environment is not supported' if Rails.env.production? - - include FactoryBot::Syntax::Methods - - PaperTrail.enabled = false - Domain.paper_trail_on! - Contact.paper_trail_on! - - with_random_data = args[:random].present? - - def create_domain(name:, registrar:, registrant:, account:, price:, reg_time:) - duration = price.duration.sub('mons', 'months').split("\s") - period = duration.first.to_i - period_unit = duration.second[0] - - create(:domain, - name: name, - period: period, - period_unit: period_unit, - registered_at: reg_time, - expire_time: reg_time + period.send(duration.second.to_sym), - created_at: reg_time, - updated_at: reg_time, - registrar: registrar, - registrant: registrant) - - create(:account_activity, - account: account, - sum: -price.price.amount, - activity_type: AccountActivity::CREATE, - created_at: reg_time, - updated_at: reg_time, - price: price) - end - - def generate_default_data - create(:admin_user, username: 'test', password: 'testtest', password_confirmation: 'testtest') - - zone = create(:zone, origin: 'test') - registrar = create(:registrar, name: 'test') - registrant = create(:registrant, name: 'test', registrar: registrar) - - account = create(:account, registrar: registrar, balance: 1_000_000) - api_user = create(:api_user, username: 'test', password: 'testtest', registrar: registrar) - - epp_session = EppSession.new - epp_session.session_id = 'test' - epp_session.user = api_user - epp_session.save! - - domain_counter = 1.step - - Billing::Price.durations.each do |duration| - Billing::Price.operation_categories.each do |operation_category| - price = create(:price, - price: Money.from_amount(duration.to_i * 10), - valid_from: Time.zone.now - rand(1).months, - valid_to: Time.zone.now + rand(1).months, - duration: duration, - operation_category: operation_category, - zone: zone) - - next if operation_category == 'renew' - - (rand(3) + 1).times do - create_domain(name: "test#{domain_counter.next}.test", - registrar: registrar, - registrant: registrant, - account: account, - price: price, - reg_time: 1.month.ago) - end - - (rand(3) + 1).times do - create_domain(name: "test#{domain_counter.next}.test", - registrar: registrar, - registrant: registrant, - account: account, - price: price, - reg_time: Time.zone.now) - end - end - end - - create_domain(name: 'test.test', - registrar: registrar, - registrant: registrant, - account: account, - price: Billing::Price.first, - reg_time: Time.zone.now) - end - - def generate_random_data - zone_count = 10 - admin_user_count = 5 - registrar_count = 50 - api_user_count = 10 - registrant_count = 50 - domain_count = 50 - registrars = [] - registrants = [] - zones = [] - registrant_names = [ - 'John Doe', - 'John Roe', - 'Jane Doe', - 'Jane Roe', - 'John Smith', - ] - - zone_count.times do - origin = SecureRandom.hex[0..(rand(5) + 1)] - zones << create(:zone, origin: origin) - end - - zone_origins = zones.collect { |zone| zone.origin } - - admin_user_count.times do - uid = SecureRandom.hex[0..(rand(5) + 1)] - create(:admin_user, username: "test#{uid}", password: 'testtest', password_confirmation: 'testtest') - end - - registrar_count.times do - uid = SecureRandom.hex[0..(rand(5) + 1)] - registrars << create(:registrar, name: "Acme Ltd. #{uid}") - end - - registrars.each do |registrar| - create(:account, registrar: registrar, balance: rand(99999)) - - api_user_count.times do |i| - create(:api_user, username: "test#{registrar.id}#{i}", password: 'testtest', registrar: registrar) - end - - registrant_count.times do |i| - registrants << create(:registrant, name: registrant_names.sample, registrar: registrar) - end - - domain_count.times do |i| - name = "test#{registrar.id}#{i}#{rand(99999)}.#{zone_origins.sample}" - period = rand(3) + 1 - - create(:domain, - name: name, - period: period, - period_unit: 'y', - registered_at: Time.zone.now, - expire_time: Time.zone.now + period.years, - registrar: registrar, - registrant: registrants.sample) - end - end - - zones.each do |zone| - Billing::Price.durations.each do |duration| - Billing::Price.operation_categories.each do |operation_category| - create(:price, - price: Money.from_amount(rand(10) + 1), - valid_from: Time.zone.now.beginning_of_day, - valid_to: Time.zone.now + (rand(10) + 1).years, - duration: duration, - operation_category: operation_category, - zone: zone) - end - end - end - end - - Setting.api_ip_whitelist_enabled = false - Setting.address_processing = false - Setting.registrar_ip_whitelist_enabled = false - - ActiveRecord::Base.transaction do - generate_default_data - generate_random_data if with_random_data - end - end -end From 81f923ab01d581c7a3f988e0012f0281f5cbfdbb Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 11 Jun 2018 10:04:29 +0300 Subject: [PATCH 07/25] Update fixture --- test/fixtures/users.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml index b20bd8a83..494cadd24 100644 --- a/test/fixtures/users.yml +++ b/test/fixtures/users.yml @@ -18,6 +18,7 @@ api_goodnames: admin: username: test + encrypted_password: <%= Devise::Encryptor.digest(AdminUser, 'testtest') %> type: AdminUser country_code: US roles: From 4b977dc195d529078bf814e50a7ccda842c20cdd Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 12 Jun 2018 07:25:39 +0300 Subject: [PATCH 08/25] Enable "pgcrypto" postgres engine --- db/migrate/20180612042234_enable_pgcrypto_ext.rb | 5 +++++ db/structure.sql | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 db/migrate/20180612042234_enable_pgcrypto_ext.rb diff --git a/db/migrate/20180612042234_enable_pgcrypto_ext.rb b/db/migrate/20180612042234_enable_pgcrypto_ext.rb new file mode 100644 index 000000000..4e8df65bf --- /dev/null +++ b/db/migrate/20180612042234_enable_pgcrypto_ext.rb @@ -0,0 +1,5 @@ +class EnablePgcryptoExt < ActiveRecord::Migration + def change + enable_extension 'pgcrypto' + end +end diff --git a/db/structure.sql b/db/structure.sql index 744ea9e19..de3c10c61 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -51,6 +51,20 @@ CREATE EXTENSION IF NOT EXISTS hstore WITH SCHEMA public; COMMENT ON EXTENSION hstore IS 'data type for storing sets of (key, value) pairs'; +-- +-- Name: pgcrypto; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA public; + + +-- +-- Name: EXTENSION pgcrypto; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION pgcrypto IS 'cryptographic functions'; + + SET search_path = public, pg_catalog; -- @@ -4716,3 +4730,5 @@ INSERT INTO schema_migrations (version) VALUES ('20180327151906'); INSERT INTO schema_migrations (version) VALUES ('20180331200125'); +INSERT INTO schema_migrations (version) VALUES ('20180612042234'); + From 981c5642148c980aaee4ca6273e4a3abd548e016 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 12 Jun 2018 07:29:47 +0300 Subject: [PATCH 09/25] Add `contacts.uuid` DB column --- db/migrate/20180612042625_add_uuid_to_contacts.rb | 5 +++++ db/structure.sql | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20180612042625_add_uuid_to_contacts.rb diff --git a/db/migrate/20180612042625_add_uuid_to_contacts.rb b/db/migrate/20180612042625_add_uuid_to_contacts.rb new file mode 100644 index 000000000..c80d60e71 --- /dev/null +++ b/db/migrate/20180612042625_add_uuid_to_contacts.rb @@ -0,0 +1,5 @@ +class AddUuidToContacts < ActiveRecord::Migration + def change + add_column :contacts, :uuid, :uuid, default: 'gen_random_uuid()' + end +end diff --git a/db/structure.sql b/db/structure.sql index de3c10c61..1332bccfb 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -639,7 +639,8 @@ CREATE TABLE contacts ( original_id integer, ident_updated_at timestamp without time zone, upid integer, - up_date timestamp without time zone + up_date timestamp without time zone, + uuid uuid DEFAULT gen_random_uuid() ); @@ -4732,3 +4733,5 @@ INSERT INTO schema_migrations (version) VALUES ('20180331200125'); INSERT INTO schema_migrations (version) VALUES ('20180612042234'); +INSERT INTO schema_migrations (version) VALUES ('20180612042625'); + From 1eca44f32c0fcb175d446cedcae3e86a4873789c Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 12 Jun 2018 07:34:40 +0300 Subject: [PATCH 10/25] Add `domains.uuid` DB column --- db/migrate/20180612042953_add_uuid_to_domains.rb | 5 +++++ db/structure.sql | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20180612042953_add_uuid_to_domains.rb diff --git a/db/migrate/20180612042953_add_uuid_to_domains.rb b/db/migrate/20180612042953_add_uuid_to_domains.rb new file mode 100644 index 000000000..6ca609de3 --- /dev/null +++ b/db/migrate/20180612042953_add_uuid_to_domains.rb @@ -0,0 +1,5 @@ +class AddUuidToDomains < ActiveRecord::Migration + def change + add_column :domains, :uuid, :uuid, default: 'gen_random_uuid()' + end +end diff --git a/db/structure.sql b/db/structure.sql index 1332bccfb..cf2f858b4 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -912,7 +912,8 @@ CREATE TABLE domains ( status_notes hstore, statuses_backup character varying[] DEFAULT '{}'::character varying[], upid integer, - up_date timestamp without time zone + up_date timestamp without time zone, + uuid uuid DEFAULT gen_random_uuid() ); @@ -4735,3 +4736,5 @@ INSERT INTO schema_migrations (version) VALUES ('20180612042234'); INSERT INTO schema_migrations (version) VALUES ('20180612042625'); +INSERT INTO schema_migrations (version) VALUES ('20180612042953'); + From 76f8a46faaf5be30bd70f672feb5559c50e0bb0b Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 12 Jun 2018 08:31:41 +0300 Subject: [PATCH 11/25] Update fixtures --- test/fixtures/users.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml index 494cadd24..036f2183e 100644 --- a/test/fixtures/users.yml +++ b/test/fixtures/users.yml @@ -1,6 +1,7 @@ api_bestnames: username: test_bestnames password: testtest + encrypted_password: <%= Devise::Encryptor.digest(ApiUser, 'testtest') %> type: ApiUser registrar: bestnames active: true @@ -10,6 +11,7 @@ api_bestnames: api_goodnames: username: test_goodnames password: testtest + encrypted_password: <%= Devise::Encryptor.digest(ApiUser, 'testtest') %> type: ApiUser registrar: goodnames active: true From 5626c87e04c4fd1ac9ce4135ced23ba9dbbe5928 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 13 Jun 2018 07:27:29 +0300 Subject: [PATCH 12/25] Change `contacts.uuid` and `domains.uuid` to NOT NULL --- ...030330_change_contacts_and_domains_uuid_to_not_null.rb | 6 ++++++ db/structure.sql | 6 ++++-- test/fixtures/contacts.yml | 8 ++++++++ test/fixtures/domains.yml | 5 +++++ 4 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20180613030330_change_contacts_and_domains_uuid_to_not_null.rb diff --git a/db/migrate/20180613030330_change_contacts_and_domains_uuid_to_not_null.rb b/db/migrate/20180613030330_change_contacts_and_domains_uuid_to_not_null.rb new file mode 100644 index 000000000..9d7641082 --- /dev/null +++ b/db/migrate/20180613030330_change_contacts_and_domains_uuid_to_not_null.rb @@ -0,0 +1,6 @@ +class ChangeContactsAndDomainsUuidToNotNull < ActiveRecord::Migration + def change + change_column_null :contacts, :uuid, false + change_column_null :domains, :uuid, false + end +end diff --git a/db/structure.sql b/db/structure.sql index cf2f858b4..9b53ad323 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -640,7 +640,7 @@ CREATE TABLE contacts ( ident_updated_at timestamp without time zone, upid integer, up_date timestamp without time zone, - uuid uuid DEFAULT gen_random_uuid() + uuid uuid DEFAULT gen_random_uuid() NOT NULL ); @@ -913,7 +913,7 @@ CREATE TABLE domains ( statuses_backup character varying[] DEFAULT '{}'::character varying[], upid integer, up_date timestamp without time zone, - uuid uuid DEFAULT gen_random_uuid() + uuid uuid DEFAULT gen_random_uuid() NOT NULL ); @@ -4738,3 +4738,5 @@ INSERT INTO schema_migrations (version) VALUES ('20180612042625'); INSERT INTO schema_migrations (version) VALUES ('20180612042953'); +INSERT INTO schema_migrations (version) VALUES ('20180613030330'); + diff --git a/test/fixtures/contacts.yml b/test/fixtures/contacts.yml index b64dce039..1f2e4b8da 100644 --- a/test/fixtures/contacts.yml +++ b/test/fixtures/contacts.yml @@ -8,6 +8,7 @@ john: registrar: bestnames code: john-001 auth_info: cacb5b + uuid: eb2f2766-b44c-4e14-9f16-32ab1a7cb957 william: &william name: William @@ -27,6 +28,7 @@ william: &william country_code: US statuses: - ok + uuid: 0aa54704-d6f7-4ca9-b8ca-2827d9a4e4eb jane: name: Jane @@ -38,6 +40,7 @@ jane: registrar: bestnames code: jane-001 auth_info: 0aa09f + uuid: 9db3de62-2414-4487-bee2-d5c155567768 acme_ltd: name: Acme Ltd @@ -49,6 +52,7 @@ acme_ltd: ident_country_code: US code: acme-ltd-001 auth_info: 720b3c + uuid: f1dd365c-5be9-4b3d-a44e-3fa002465e4d jack: name: Jack @@ -60,12 +64,14 @@ jack: ident_country_code: US code: jack-001 auth_info: e2c440 + uuid: 28b65455-6f1a-49fd-961c-0758886dbd75 identical_to_william: <<: *william registrar: goodnames code: william-002 auth_info: 5ab865 + uuid: c0a191d5-3793-4f0b-8f85-491612d0293e not_in_use: name: Useless @@ -73,6 +79,7 @@ not_in_use: registrar: bestnames code: useless-001 auth_info: e75a2a + uuid: ca613cc5-a8dc-48c1-8d32-d3c6a0b6c952 invalid: name: any @@ -80,3 +87,4 @@ invalid: email: invalid@invalid.test auth_info: any registrar: bestnames + uuid: bd80c0f9-26ee-49e0-a2cb-2311d931c433 \ No newline at end of file diff --git a/test/fixtures/domains.yml b/test/fixtures/domains.yml index 53de2837b..59a1b8ea5 100644 --- a/test/fixtures/domains.yml +++ b/test/fixtures/domains.yml @@ -7,6 +7,7 @@ shop: valid_to: 2010-07-05 period: 1 period_unit: m + uuid: 1b3ee442-e8fe-4922-9492-8fcb9dccc69c airport: name: airport.test @@ -17,6 +18,7 @@ airport: valid_to: 2010-07-05 period: 1 period_unit: m + uuid: 2df2c1a1-8f6a-490a-81be-8bdf29866880 library: name: library.test @@ -27,6 +29,7 @@ library: valid_to: 2010-07-05 period: 1 period_unit: m + uuid: 647bcc48-8d5e-4a04-8ce5-2a3cd17b6eab metro: name: metro.test @@ -37,6 +40,7 @@ metro: valid_to: 2010-07-05 period: 1 period_unit: m + uuid: ef97cb80-333b-4893-b9df-163f2b452798 invalid: name: invalid.test @@ -44,3 +48,4 @@ invalid: valid_to: <%= Time.zone.parse('2010-07-05').utc.to_s(:db) %> registrar: bestnames registrant: invalid + uuid: 3c430ead-bb17-4b5b-aaa1-caa7dde7e138 \ No newline at end of file From 183eca884e5010233b9472d63c0809182d7af486 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 13 Jun 2018 08:03:19 +0300 Subject: [PATCH 13/25] Add `contacts.uuid` and `domains.uuid` uniq constraints --- ...ontacts_and_domains_uuid_uniq_constraint.rb | 15 +++++++++++++++ db/structure.sql | 18 ++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 db/migrate/20180613045614_add_contacts_and_domains_uuid_uniq_constraint.rb diff --git a/db/migrate/20180613045614_add_contacts_and_domains_uuid_uniq_constraint.rb b/db/migrate/20180613045614_add_contacts_and_domains_uuid_uniq_constraint.rb new file mode 100644 index 000000000..99e9b823d --- /dev/null +++ b/db/migrate/20180613045614_add_contacts_and_domains_uuid_uniq_constraint.rb @@ -0,0 +1,15 @@ +class AddContactsAndDomainsUuidUniqConstraint < ActiveRecord::Migration + def up + execute <<-SQL + ALTER TABLE contacts ADD CONSTRAINT uniq_contact_uuid UNIQUE (uuid); + ALTER TABLE domains ADD CONSTRAINT uniq_domain_uuid UNIQUE (uuid); + SQL + end + + def down + execute <<-SQL + ALTER TABLE contacts DROP CONSTRAINT uniq_contact_uuid; + ALTER TABLE domains DROP CONSTRAINT uniq_domain_uuid; + SQL + end +end diff --git a/db/structure.sql b/db/structure.sql index 9b53ad323..b491b6f5a 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -3258,6 +3258,22 @@ ALTER TABLE ONLY settings ADD CONSTRAINT settings_pkey PRIMARY KEY (id); +-- +-- Name: uniq_contact_uuid; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY contacts + ADD CONSTRAINT uniq_contact_uuid UNIQUE (uuid); + + +-- +-- Name: uniq_domain_uuid; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY domains + ADD CONSTRAINT uniq_domain_uuid UNIQUE (uuid); + + -- -- Name: unique_code; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: -- @@ -4740,3 +4756,5 @@ INSERT INTO schema_migrations (version) VALUES ('20180612042953'); INSERT INTO schema_migrations (version) VALUES ('20180613030330'); +INSERT INTO schema_migrations (version) VALUES ('20180613045614'); + From fc3c70c5ee14e2b92b4c5b5237a35d2be3779904 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 13 Jun 2018 08:08:14 +0300 Subject: [PATCH 14/25] Add clarifying comment --- ...180613045614_add_contacts_and_domains_uuid_uniq_constraint.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/db/migrate/20180613045614_add_contacts_and_domains_uuid_uniq_constraint.rb b/db/migrate/20180613045614_add_contacts_and_domains_uuid_uniq_constraint.rb index 99e9b823d..32b8fb090 100644 --- a/db/migrate/20180613045614_add_contacts_and_domains_uuid_uniq_constraint.rb +++ b/db/migrate/20180613045614_add_contacts_and_domains_uuid_uniq_constraint.rb @@ -1,3 +1,4 @@ +# Unique constraint is needed to prevent accidental duplicate values in fixtures to appear in DB class AddContactsAndDomainsUuidUniqConstraint < ActiveRecord::Migration def up execute <<-SQL From bf53ca5947774c9558d13d070bf493b9cf0d9c22 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 13 Jun 2018 10:35:18 +0300 Subject: [PATCH 15/25] Nullify contact's uuid when transferring It will be generated on DB level --- app/models/concerns/contact/transferable.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/concerns/contact/transferable.rb b/app/models/concerns/contact/transferable.rb index 14c1cac3c..3f151251a 100644 --- a/app/models/concerns/contact/transferable.rb +++ b/app/models/concerns/contact/transferable.rb @@ -16,6 +16,7 @@ module Concerns::Contact::Transferable new_contact.regenerate_code new_contact.regenerate_auth_info new_contact.remove_address unless self.class.address_processing? + new_contact.uuid = nil new_contact.save(validate: false) new_contact end From 2f44dac144382f11754b5dc4fb354819b4264c29 Mon Sep 17 00:00:00 2001 From: Maciej Szlosarczyk Date: Thu, 14 Jun 2018 09:52:04 +0300 Subject: [PATCH 16/25] Remove code climate issue count badge --- README.md | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index a8a85a3d8..5beca0a87 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ Domain Registry =============== [![Build Status](https://travis-ci.org/internetee/registry.svg?branch=master)](https://travis-ci.org/internetee/registry) [![Code Climate](https://codeclimate.com/github/internetee/registry/badges/gpa.svg)](https://codeclimate.com/github/internetee/registry) -[![Issue Count](https://codeclimate.com/github/internetee/registry/badges/issue_count.svg)](https://codeclimate.com/github/internetee/registry) [![Test Coverage](https://codeclimate.com/github/internetee/registry/badges/coverage.svg)](https://codeclimate.com/github/internetee/registry/coverage) [![Documentation Status](https://readthedocs.org/projects/eeregistry/badge/?version=latest)](http://docs.internet.ee/en/latest/?badge=latest) @@ -31,7 +30,7 @@ Documentation Installation ------------ -### Registry app +### Registry app Registry based on Rails 4 installation (rbenv install is under Debian build doc) @@ -57,7 +56,7 @@ Manual demo install and database setup: tar -xzvf mod_epp-1.10.tar.gz cd mod_epp-1.10 -Patch mod_epp for Rack. Beacause Rack multipart parser expects specifically +Patch mod_epp for Rack. Beacause Rack multipart parser expects specifically formatted content boundaries, the mod_epp needs to be modified before building: wget https://github.com/internetee/registry/raw/master/doc/patches/mod_epp_1.10-rack-friendly.patch @@ -136,7 +135,7 @@ For Apache, registry admin goes to port 443 in production, /etc/apache2/sites-en ``` -Registrar configuration (/etc/apache2/sites-enabled/registrar.conf) is as follows: +Registrar configuration (/etc/apache2/sites-enabled/registrar.conf) is as follows: ``` ServerName your-registrar-domain @@ -179,7 +178,7 @@ Registrar configuration (/etc/apache2/sites-enabled/registrar.conf) is as follow # for Apache verison 2.4 or newer # Require all granted - + Options -MultiViews @@ -220,7 +219,7 @@ Registrar configuration (/etc/apache2/sites-enabled/registrar.conf) is as follow ``` -Registrant configuration (/etc/apache2/sites-enabled/registrant.conf) is as follows: +Registrant configuration (/etc/apache2/sites-enabled/registrant.conf) is as follows: ``` ServerName your-registrant-domain @@ -263,7 +262,7 @@ Registrant configuration (/etc/apache2/sites-enabled/registrant.conf) is as foll # for Apache verison 2.4 or newer # Require all granted - + Options -MultiViews @@ -271,11 +270,11 @@ Registrant configuration (/etc/apache2/sites-enabled/registrant.conf) is as foll Allow from none Deny from all - + Allow from all - + Allow from all @@ -342,8 +341,8 @@ For Apache, REPP goes to port 443 in production, /etc/apache2/sites-enabled/repp ``` -For Apache, epp goes to port 700. -Be sure to update paths to match your system configuration. +For Apache, epp goes to port 700. +Be sure to update paths to match your system configuration. /etc/apache2/sites-enabled/epp.conf short example: ```apache @@ -405,7 +404,7 @@ Be sure to update paths to match your system configuration. EPPSessionRoot /proxy/session EPPErrorRoot /proxy/error EPPRawFrame raw_frame - + ProxyPass /proxy/ http://localhost:8080/epp/ EPPAuthURI implicit @@ -421,7 +420,7 @@ Enable epp_ssl and restart apache Now you should see registry admin at https://your-domain -All registry demo data can be found at: +All registry demo data can be found at: db/seeds.rb @@ -464,4 +463,3 @@ Please follow EPP web client readme: Please follow WHOIS server readme: https://github.com/internetee/whois - From 435147ca464042b1cdbe9b08dc7612f71c6e8848 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Thu, 14 Jun 2018 13:42:23 +0300 Subject: [PATCH 17/25] Fix country drop-down UI --- app/models/sorted_country.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/sorted_country.rb b/app/models/sorted_country.rb index 19ad5f4f3..7b27adacb 100644 --- a/app/models/sorted_country.rb +++ b/app/models/sorted_country.rb @@ -18,7 +18,7 @@ class SortedCountry def quick_list @quick_list ||= [ - %w[Estonia' EE], + %w[Estonia EE], %w[Finland FI], %w[Latvia LV], %w[Lithuania LT], From afa275c80512cf343e62760764f9d97cbcb4b957 Mon Sep 17 00:00:00 2001 From: Maciej Szlosarczyk Date: Fri, 15 Jun 2018 11:02:27 +0300 Subject: [PATCH 18/25] Move docker configuration to https://github.com/internetee/docker-images --- Dockerfile | 18 ++---------------- docker-compose.yml | 33 --------------------------------- docker/docker_dev.sh | 6 ------ docker/docker_test.sh | 8 -------- docker/nginx.template | 29 ----------------------------- 5 files changed, 2 insertions(+), 92 deletions(-) delete mode 100644 docker-compose.yml delete mode 100755 docker/docker_dev.sh delete mode 100755 docker/docker_test.sh delete mode 100644 docker/nginx.template diff --git a/Dockerfile b/Dockerfile index 480231fc2..bd0cbc07b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,23 +1,9 @@ -FROM ruby:2.3 +FROM internetee/ruby:2.3 MAINTAINER maciej.szlosarczyk@internet.ee -RUN apt-get update > /dev/null && apt-get install -y > /dev/null \ - build-essential \ - nodejs \ - imagemagick \ - postgresql-client - -RUN apt-get install -y > /dev/null \ - qt5-default \ - libqt5webkit5-dev \ - gstreamer1.0-plugins-base \ - gstreamer1.0-tools \ - qtdeclarative5-dev \ - gstreamer1.0-x - RUN mkdir -p /opt/webapps/app/tmp/pids WORKDIR /opt/webapps/app - COPY Gemfile Gemfile.lock ./ RUN gem install bundler && bundle install --jobs 20 --retry 5 + EXPOSE 3000 diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 5c5f523de..000000000 --- a/docker-compose.yml +++ /dev/null @@ -1,33 +0,0 @@ -version: "3.2" - -services: - app: - tty: true - stdin_open: true - build: - context: . - dockerfile: Dockerfile - links: - - db - environment: - - APP_DBHOST=db - volumes: - - .:/opt/webapps/app - ports: - - "3000:3000" - command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails server -p 3000 -b '0.0.0.0'" - - web: - image: nginx - volumes: - - ./docker/nginx.template:/etc/nginx/conf.d/nginx.template - ports: - - "80:80" - links: - - app - environment: - APP: 'app' - command: /bin/bash -c "envsubst '$$APP' < /etc/nginx/conf.d/nginx.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'" - - db: - image: postgres:9.4 diff --git a/docker/docker_dev.sh b/docker/docker_dev.sh deleted file mode 100755 index f5592517f..000000000 --- a/docker/docker_dev.sh +++ /dev/null @@ -1,6 +0,0 @@ -# /bin/sh -docker-compose down -docker-compose build -docker-compose run app rake db:setup:all -docker-compose run app rake db:migrate -docker-compose run app rake dev:prime diff --git a/docker/docker_test.sh b/docker/docker_test.sh deleted file mode 100755 index 7239f78a9..000000000 --- a/docker/docker_test.sh +++ /dev/null @@ -1,8 +0,0 @@ -# /bin/sh -docker-compose down -docker-compose build - -# Setup test database -docker-compose run app rake db:setup:all test -# Finally run tests to check if everything is in order -docker-compose run app rspec diff --git a/docker/nginx.template b/docker/nginx.template deleted file mode 100644 index 50f6e8548..000000000 --- a/docker/nginx.template +++ /dev/null @@ -1,29 +0,0 @@ -log_format le_json '{ "time": "$time_iso8601", ' - '"remote_addr": "$remote_addr", ' - '"remote_user": "$remote_user", ' - '"body_bytes_sent": "$body_bytes_sent", ' - '"request_time": "$request_time", ' - '"status": "$status", ' - '"request": "$request", ' - '"request_method": "$request_method", ' - '"http_referrer": "$http_referer", ' - '"http_user_agent": "$http_user_agent" }'; - -upstream app { - server ${APP}:3000; -} - -server { - listen 80; - - access_log /var/log/nginx/access.log le_json; - - location / { - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header Host $http_host; - proxy_redirect off; - proxy_pass http://app; - break; - } -} From 58effbb7c38a4311bff97cf76758980c2bb13180 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 18 Jun 2018 16:46:49 +0300 Subject: [PATCH 19/25] Pull up Devise module --- app/models/admin_user.rb | 2 +- app/models/user.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/admin_user.rb b/app/models/admin_user.rb index d76c42dec..c29375d38 100644 --- a/app/models/admin_user.rb +++ b/app/models/admin_user.rb @@ -9,7 +9,7 @@ class AdminUser < User ROLES = %w(user customer_service admin) # should not match to api_users roles - devise :database_authenticatable, :rememberable, :trackable, :validatable, :lockable + devise :rememberable, :validatable, :lockable def self.min_password_length Devise.password_length.min diff --git a/app/models/user.rb b/app/models/user.rb index b69e0250c..150311e90 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,6 +1,6 @@ class User < ActiveRecord::Base include Versions # version/user_version.rb - devise :trackable, :timeoutable + devise :database_authenticatable, :trackable, :timeoutable attr_accessor :phone From 3b996a5636598545495151626e1e784dd144d840 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 18 Jun 2018 16:49:51 +0300 Subject: [PATCH 20/25] Update CodeClimate config --- .codeclimate.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.codeclimate.yml b/.codeclimate.yml index be8f1df7a..f527cd0e3 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -20,6 +20,7 @@ plugins: rubocop: enabled: true exclude_patterns: + - "app/models/legacy/" - "bin/" - "config/" - "db/" From 70cc25e3a8ed5a6365cfba390c691a59956962d1 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 18 Jun 2018 17:08:59 +0300 Subject: [PATCH 21/25] Revert "Update CodeClimate config" This reverts commit 3b996a5636598545495151626e1e784dd144d840. --- .codeclimate.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.codeclimate.yml b/.codeclimate.yml index f527cd0e3..be8f1df7a 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -20,7 +20,6 @@ plugins: rubocop: enabled: true exclude_patterns: - - "app/models/legacy/" - "bin/" - "config/" - "db/" From 20c99bd53a4b4986c013e6e91942a5141000a41e Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 18 Jun 2018 17:44:36 +0300 Subject: [PATCH 22/25] Revert "Pull up Devise module" This reverts commit 58effbb --- app/models/admin_user.rb | 2 +- app/models/user.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/admin_user.rb b/app/models/admin_user.rb index c29375d38..d76c42dec 100644 --- a/app/models/admin_user.rb +++ b/app/models/admin_user.rb @@ -9,7 +9,7 @@ class AdminUser < User ROLES = %w(user customer_service admin) # should not match to api_users roles - devise :rememberable, :validatable, :lockable + devise :database_authenticatable, :rememberable, :trackable, :validatable, :lockable def self.min_password_length Devise.password_length.min diff --git a/app/models/user.rb b/app/models/user.rb index 150311e90..b69e0250c 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,6 +1,6 @@ class User < ActiveRecord::Base include Versions # version/user_version.rb - devise :database_authenticatable, :trackable, :timeoutable + devise :trackable, :timeoutable attr_accessor :phone From e418ec68258c0038e02d453aa7f7582e9b034bd4 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 18 Jun 2018 18:01:14 +0300 Subject: [PATCH 23/25] Revert "Update fixture" This reverts commit 81f923a --- test/fixtures/users.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml index 036f2183e..155197b58 100644 --- a/test/fixtures/users.yml +++ b/test/fixtures/users.yml @@ -20,7 +20,6 @@ api_goodnames: admin: username: test - encrypted_password: <%= Devise::Encryptor.digest(AdminUser, 'testtest') %> type: AdminUser country_code: US roles: From 3b3c8e6a2d1820ae77b24cea46921a0c2045ceaf Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 18 Jun 2018 18:01:29 +0300 Subject: [PATCH 24/25] Revert "Update fixtures" This reverts commit 76f8a46 --- test/fixtures/users.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml index 155197b58..b20bd8a83 100644 --- a/test/fixtures/users.yml +++ b/test/fixtures/users.yml @@ -1,7 +1,6 @@ api_bestnames: username: test_bestnames password: testtest - encrypted_password: <%= Devise::Encryptor.digest(ApiUser, 'testtest') %> type: ApiUser registrar: bestnames active: true @@ -11,7 +10,6 @@ api_bestnames: api_goodnames: username: test_goodnames password: testtest - encrypted_password: <%= Devise::Encryptor.digest(ApiUser, 'testtest') %> type: ApiUser registrar: goodnames active: true From 53796d091afdb5fecacc9572897796ef1f4c9854 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20V=C3=B5hmar?= Date: Wed, 20 Jun 2018 16:13:10 +0300 Subject: [PATCH 25/25] Changelog update 180620 --- CHANGELOG.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fe8f891a..4e75d8157 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,20 @@ +20.06.2018 +* Bulk change function for technical contact replacement [#662](https://github.com/internetee/registry/issues/662) +* Removed vatcode and totalvat elements from directo request in attempt to fix invoice sending issue [#844](https://github.com/internetee/registry/issues/844) +* Regsitrar: added credit card payment option - disabled at the moment due to contractual reaons [#419](https://github.com/internetee/registry/issues/419) +* Registrant: enabled WHOIS requests over RestWHOIS API [#852](https://github.com/internetee/registry/issues/852) +* Fixed rspec configuration that caused test failures [#858](https://github.com/internetee/registry/issues/858) +* Admin: refactored date selection in pricelist [#869](https://github.com/internetee/registry/issues/869) +* Added uglifier gem for es6 compression [#864](https://github.com/internetee/registry/issues/864) +* Removed lib folder from autoload path [#859](https://github.com/internetee/registry/issues/859) +* test environment config improvements [#860](https://github.com/internetee/registry/issues/860) +* translation fixes [#865](https://github.com/internetee/registry/issues/865) +* removed obsolete .agignore [#866](https://github.com/internetee/registry/issues/866) +* removed rubocop gem [#857](https://github.com/internetee/registry/issues/857) +* new invoice payment test fix [#863](https://github.com/internetee/registry/issues/863) +* get puma gem config from Rails 5 [#867](https://github.com/internetee/registry/issues/867) +* Rails5 API controller temporary backport [#868](https://github.com/internetee/registry/issues/868) + 25.05.2018 * GDPR: updated whois templates with configurable disclaimer [#795](https://github.com/internetee/registry/issues/795) * GDPR: email forwarding solution to contact private domain registrants without revealing their email addresses [#824](https://github.com/internetee/registry/issues/824)