From 3f9727dc558b3395bd0c76f83414b80cf813cb93 Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Tue, 30 Jun 2020 13:45:19 +0500 Subject: [PATCH 1/7] Add legaldoc_optout field to registrar --- ...81231_add_legal_doc_optout_to_registrar.rb | 5 + db/structure.sql | 1360 ++++++++++++++++- 2 files changed, 1364 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20200630081231_add_legal_doc_optout_to_registrar.rb diff --git a/db/migrate/20200630081231_add_legal_doc_optout_to_registrar.rb b/db/migrate/20200630081231_add_legal_doc_optout_to_registrar.rb new file mode 100644 index 000000000..377956672 --- /dev/null +++ b/db/migrate/20200630081231_add_legal_doc_optout_to_registrar.rb @@ -0,0 +1,5 @@ +class AddLegalDocOptoutToRegistrar < ActiveRecord::Migration[6.0] + def change + add_column :registrars, :legaldoc_optout, :boolean, null: false, default: false + end +end diff --git a/db/structure.sql b/db/structure.sql index 7e3cad412..56b3c8d97 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -2190,6 +2190,709 @@ CREATE TABLE public.users ( username character varying, plain_text_password character varying, created_at timestamp without time zone, +<<<<<<< HEAD +======= + session character varying, + children json, + uuid character varying +); + + +-- +-- Name: log_nameservers_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.log_nameservers_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: log_nameservers_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.log_nameservers_id_seq OWNED BY public.log_nameservers.id; + + +-- +-- Name: log_notifications; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.log_notifications ( + id integer NOT NULL, + item_type character varying NOT NULL, + item_id integer NOT NULL, + event character varying NOT NULL, + whodunnit character varying, + object json, + object_changes json, + created_at timestamp without time zone, + session character varying, + children json, + uuid character varying +); + + +-- +-- Name: log_notifications_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.log_notifications_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: log_notifications_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.log_notifications_id_seq OWNED BY public.log_notifications.id; + + +-- +-- Name: log_payment_orders; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.log_payment_orders ( + id integer NOT NULL, + item_type character varying NOT NULL, + item_id integer NOT NULL, + event character varying NOT NULL, + whodunnit character varying, + object jsonb, + object_changes jsonb, + created_at timestamp without time zone, + session character varying, + children jsonb, + uuid character varying +); + + +-- +-- Name: log_payment_orders_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.log_payment_orders_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: log_payment_orders_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.log_payment_orders_id_seq OWNED BY public.log_payment_orders.id; + + +-- +-- Name: log_registrant_verifications; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.log_registrant_verifications ( + id integer NOT NULL, + item_type character varying NOT NULL, + item_id integer NOT NULL, + event character varying NOT NULL, + whodunnit character varying, + object json, + object_changes json, + created_at timestamp without time zone, + session character varying, + uuid character varying +); + + +-- +-- Name: log_registrant_verifications_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.log_registrant_verifications_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: log_registrant_verifications_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.log_registrant_verifications_id_seq OWNED BY public.log_registrant_verifications.id; + + +-- +-- Name: log_registrars; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.log_registrars ( + id integer NOT NULL, + item_type character varying NOT NULL, + item_id integer NOT NULL, + event character varying NOT NULL, + whodunnit character varying, + object json, + object_changes json, + created_at timestamp without time zone, + session character varying, + children json, + uuid character varying +); + + +-- +-- Name: log_registrars_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.log_registrars_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: log_registrars_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.log_registrars_id_seq OWNED BY public.log_registrars.id; + + +-- +-- Name: log_reserved_domains; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.log_reserved_domains ( + id integer NOT NULL, + item_type character varying NOT NULL, + item_id integer NOT NULL, + event character varying NOT NULL, + whodunnit character varying, + object json, + object_changes json, + created_at timestamp without time zone, + session character varying, + children json, + uuid character varying +); + + +-- +-- Name: log_reserved_domains_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.log_reserved_domains_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: log_reserved_domains_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.log_reserved_domains_id_seq OWNED BY public.log_reserved_domains.id; + + +-- +-- Name: log_settings; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.log_settings ( + id integer NOT NULL, + item_type character varying NOT NULL, + item_id integer NOT NULL, + event character varying NOT NULL, + whodunnit character varying, + object json, + object_changes json, + created_at timestamp without time zone, + session character varying, + children json, + uuid character varying +); + + +-- +-- Name: log_settings_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.log_settings_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: log_settings_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.log_settings_id_seq OWNED BY public.log_settings.id; + + +-- +-- Name: log_users; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.log_users ( + id integer NOT NULL, + item_type character varying NOT NULL, + item_id integer NOT NULL, + event character varying NOT NULL, + whodunnit character varying, + object json, + object_changes json, + created_at timestamp without time zone, + session character varying, + children json, + uuid character varying +); + + +-- +-- Name: log_users_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.log_users_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: log_users_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.log_users_id_seq OWNED BY public.log_users.id; + + +-- +-- Name: log_white_ips; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.log_white_ips ( + id integer NOT NULL, + item_type character varying NOT NULL, + item_id integer NOT NULL, + event character varying NOT NULL, + whodunnit character varying, + object json, + object_changes json, + created_at timestamp without time zone, + session character varying, + children json, + uuid character varying +); + + +-- +-- Name: log_white_ips_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.log_white_ips_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: log_white_ips_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.log_white_ips_id_seq OWNED BY public.log_white_ips.id; + + +-- +-- Name: nameservers; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.nameservers ( + id integer NOT NULL, + hostname character varying NOT NULL, + ipv4 character varying[] DEFAULT '{}'::character varying[], + created_at timestamp without time zone, + updated_at timestamp without time zone, + ipv6 character varying[] DEFAULT '{}'::character varying[], + domain_id integer NOT NULL, + creator_str character varying, + updator_str character varying, + legacy_domain_id integer, + hostname_puny character varying +); + + +-- +-- Name: nameservers_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.nameservers_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: nameservers_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.nameservers_id_seq OWNED BY public.nameservers.id; + + +-- +-- Name: notifications; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.notifications ( + id integer NOT NULL, + registrar_id integer NOT NULL, + text character varying NOT NULL, + attached_obj_type character varying, + attached_obj_id integer, + read boolean NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + creator_str character varying, + updator_str character varying, + action_id integer +); + + +-- +-- Name: notifications_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.notifications_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: notifications_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.notifications_id_seq OWNED BY public.notifications.id; + + +-- +-- Name: payment_orders; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.payment_orders ( + id integer NOT NULL, + type character varying NOT NULL, + status character varying DEFAULT 'issued'::character varying NOT NULL, + invoice_id integer, + response jsonb, + notes character varying, + creator_str character varying, + updator_str character varying, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL +); + + +-- +-- Name: payment_orders_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.payment_orders_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: payment_orders_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.payment_orders_id_seq OWNED BY public.payment_orders.id; + + +-- +-- Name: prices; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.prices ( + id integer NOT NULL, + price_cents integer NOT NULL, + valid_from timestamp without time zone, + valid_to timestamp without time zone, + creator_str character varying, + updator_str character varying, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + duration interval, + operation_category character varying, + zone_id integer NOT NULL +); + + +-- +-- Name: prices_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.prices_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: prices_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.prices_id_seq OWNED BY public.prices.id; + + +-- +-- Name: que_jobs; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.que_jobs ( + priority smallint DEFAULT 100 NOT NULL, + run_at timestamp with time zone DEFAULT now() NOT NULL, + job_id bigint NOT NULL, + job_class text NOT NULL, + args json DEFAULT '[]'::json NOT NULL, + error_count integer DEFAULT 0 NOT NULL, + last_error text, + queue text DEFAULT ''::text NOT NULL +); + + +-- +-- Name: TABLE que_jobs; Type: COMMENT; Schema: public; Owner: - +-- + +COMMENT ON TABLE public.que_jobs IS '3'; + + +-- +-- Name: que_jobs_job_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.que_jobs_job_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: que_jobs_job_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.que_jobs_job_id_seq OWNED BY public.que_jobs.job_id; + + +-- +-- Name: registrant_verifications; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.registrant_verifications ( + id integer NOT NULL, + verification_token character varying NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + action character varying NOT NULL, + domain_id integer NOT NULL, + action_type character varying NOT NULL, + creator_id integer, + updater_id integer +); + + +-- +-- Name: registrant_verifications_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.registrant_verifications_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: registrant_verifications_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.registrant_verifications_id_seq OWNED BY public.registrant_verifications.id; + + +-- +-- Name: registrars; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.registrars ( + id integer NOT NULL, + name character varying NOT NULL, + reg_no character varying NOT NULL, + vat_no character varying, + created_at timestamp without time zone, + updated_at timestamp without time zone, + creator_str character varying, + updator_str character varying, + phone character varying, + email character varying NOT NULL, + billing_email character varying, + address_country_code character varying NOT NULL, + address_state character varying, + address_city character varying NOT NULL, + address_street character varying NOT NULL, + address_zip character varying, + code character varying NOT NULL, + website character varying, + accounting_customer_code character varying NOT NULL, + legacy_id integer, + reference_no character varying NOT NULL, + test_registrar boolean DEFAULT false, + language character varying NOT NULL, + vat_rate numeric(4,3), + iban character varying, + settings jsonb DEFAULT '{}'::jsonb NOT NULL, + legaldoc_optout boolean DEFAULT false NOT NULL +); + + +-- +-- Name: registrars_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.registrars_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: registrars_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.registrars_id_seq OWNED BY public.registrars.id; + + +-- +-- Name: reserved_domains; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.reserved_domains ( + id integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + creator_str character varying, + updator_str character varying, + legacy_id integer, + name character varying NOT NULL, + password character varying NOT NULL +); + + +-- +-- Name: reserved_domains_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.reserved_domains_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: reserved_domains_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.reserved_domains_id_seq OWNED BY public.reserved_domains.id; + + +-- +-- Name: schema_migrations; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.schema_migrations ( + version character varying NOT NULL +); + + +-- +-- Name: settings; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.settings ( + id integer NOT NULL, + var character varying NOT NULL, + value text, + thing_id integer, + thing_type character varying(30), + created_at timestamp without time zone, + updated_at timestamp without time zone, + creator_str character varying, + updator_str character varying +); + + +-- +-- Name: settings_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.settings_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: settings_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.settings_id_seq OWNED BY public.settings.id; + + +-- +-- Name: users; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.users ( + id integer NOT NULL, + username character varying, + plain_text_password character varying, + created_at timestamp without time zone, +>>>>>>> 8c6e4defa... Add legaldoc_optout field to registrar updated_at timestamp without time zone, email character varying, sign_in_count integer DEFAULT 0 NOT NULL, @@ -2212,6 +2915,660 @@ CREATE TABLE public.users ( locked_at timestamp without time zone, legacy_id integer ); +<<<<<<< HEAD +======= + + +-- +-- Name: users_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.users_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: users_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.users_id_seq OWNED BY public.users.id; + + +-- +-- Name: versions; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.versions ( + id integer NOT NULL, + item_type character varying NOT NULL, + item_id integer NOT NULL, + event character varying NOT NULL, + whodunnit character varying, + object text, + created_at timestamp without time zone, + object_changes jsonb +); + + +-- +-- Name: versions_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.versions_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: versions_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.versions_id_seq OWNED BY public.versions.id; + + +-- +-- Name: white_ips; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.white_ips ( + id integer NOT NULL, + registrar_id integer NOT NULL, + ipv4 character varying, + ipv6 character varying, + interfaces character varying[], + created_at timestamp without time zone, + updated_at timestamp without time zone, + creator_str character varying, + updator_str character varying +); + + +-- +-- Name: white_ips_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.white_ips_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: white_ips_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.white_ips_id_seq OWNED BY public.white_ips.id; + + +-- +-- Name: whois_records; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.whois_records ( + id integer NOT NULL, + domain_id integer, + name character varying, + body text, + json json, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + registrar_id integer +); + + +-- +-- Name: whois_records_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.whois_records_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: whois_records_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.whois_records_id_seq OWNED BY public.whois_records.id; + + +-- +-- Name: zones; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE public.zones ( + id integer NOT NULL, + origin character varying NOT NULL, + ttl integer NOT NULL, + refresh integer NOT NULL, + retry integer NOT NULL, + expire integer NOT NULL, + minimum_ttl integer NOT NULL, + email character varying NOT NULL, + master_nameserver character varying NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + creator_str character varying, + updator_str character varying, + ns_records text, + a_records text, + a4_records text +); + + +-- +-- Name: zones_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.zones_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: zones_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.zones_id_seq OWNED BY public.zones.id; + + +-- +-- Name: account_activities id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.account_activities ALTER COLUMN id SET DEFAULT nextval('audit.account_activities_id_seq'::regclass); + + +-- +-- Name: accounts id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.accounts ALTER COLUMN id SET DEFAULT nextval('audit.accounts_id_seq'::regclass); + + +-- +-- Name: actions id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.actions ALTER COLUMN id SET DEFAULT nextval('audit.actions_id_seq'::regclass); + + +-- +-- Name: bank_statements id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.bank_statements ALTER COLUMN id SET DEFAULT nextval('audit.bank_statements_id_seq'::regclass); + + +-- +-- Name: bank_transactions id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.bank_transactions ALTER COLUMN id SET DEFAULT nextval('audit.bank_transactions_id_seq'::regclass); + + +-- +-- Name: blocked_domains id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.blocked_domains ALTER COLUMN id SET DEFAULT nextval('audit.blocked_domains_id_seq'::regclass); + + +-- +-- Name: certificates id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.certificates ALTER COLUMN id SET DEFAULT nextval('audit.certificates_id_seq'::regclass); + + +-- +-- Name: contacts id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.contacts ALTER COLUMN id SET DEFAULT nextval('audit.contacts_id_seq'::regclass); + + +-- +-- Name: dnskeys id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.dnskeys ALTER COLUMN id SET DEFAULT nextval('audit.dnskeys_id_seq'::regclass); + + +-- +-- Name: domain_contacts id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.domain_contacts ALTER COLUMN id SET DEFAULT nextval('audit.domain_contacts_id_seq'::regclass); + + +-- +-- Name: domains id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.domains ALTER COLUMN id SET DEFAULT nextval('audit.domains_id_seq'::regclass); + + +-- +-- Name: invoice_items id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.invoice_items ALTER COLUMN id SET DEFAULT nextval('audit.invoice_items_id_seq'::regclass); + + +-- +-- Name: invoices id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.invoices ALTER COLUMN id SET DEFAULT nextval('audit.invoices_id_seq'::regclass); + + +-- +-- Name: nameservers id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.nameservers ALTER COLUMN id SET DEFAULT nextval('audit.nameservers_id_seq'::regclass); + + +-- +-- Name: notifications id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.notifications ALTER COLUMN id SET DEFAULT nextval('audit.notifications_id_seq'::regclass); + + +-- +-- Name: payment_orders id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.payment_orders ALTER COLUMN id SET DEFAULT nextval('audit.payment_orders_id_seq'::regclass); + + +-- +-- Name: registrant_verifications id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.registrant_verifications ALTER COLUMN id SET DEFAULT nextval('audit.registrant_verifications_id_seq'::regclass); + + +-- +-- Name: registrars id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.registrars ALTER COLUMN id SET DEFAULT nextval('audit.registrars_id_seq'::regclass); + + +-- +-- Name: reserved_domains id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.reserved_domains ALTER COLUMN id SET DEFAULT nextval('audit.reserved_domains_id_seq'::regclass); + + +-- +-- Name: settings id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.settings ALTER COLUMN id SET DEFAULT nextval('audit.settings_id_seq'::regclass); + + +-- +-- Name: users id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.users ALTER COLUMN id SET DEFAULT nextval('audit.users_id_seq'::regclass); + + +-- +-- Name: white_ips id; Type: DEFAULT; Schema: audit; Owner: - +-- + +ALTER TABLE ONLY audit.white_ips ALTER COLUMN id SET DEFAULT nextval('audit.white_ips_id_seq'::regclass); + + +-- +-- Name: account_activities id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.account_activities ALTER COLUMN id SET DEFAULT nextval('public.account_activities_id_seq'::regclass); + + +-- +-- Name: accounts id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.accounts ALTER COLUMN id SET DEFAULT nextval('public.accounts_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.actions ALTER COLUMN id SET DEFAULT nextval('public.actions_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.auctions ALTER COLUMN id SET DEFAULT nextval('public.auctions_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.bank_statements ALTER COLUMN id SET DEFAULT nextval('public.bank_statements_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.bank_transactions ALTER COLUMN id SET DEFAULT nextval('public.bank_transactions_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.blocked_domains ALTER COLUMN id SET DEFAULT nextval('public.blocked_domains_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.certificates ALTER COLUMN id SET DEFAULT nextval('public.certificates_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.contacts ALTER COLUMN id SET DEFAULT nextval('public.contacts_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.directos ALTER COLUMN id SET DEFAULT nextval('public.directos_id_seq'::regclass); + + +-- +-- Name: disputes id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.disputes ALTER COLUMN id SET DEFAULT nextval('public.disputes_id_seq'::regclass); + + +-- +-- Name: dnskeys id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.dnskeys ALTER COLUMN id SET DEFAULT nextval('public.dnskeys_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.domain_contacts ALTER COLUMN id SET DEFAULT nextval('public.domain_contacts_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.domain_transfers ALTER COLUMN id SET DEFAULT nextval('public.domain_transfers_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.domains ALTER COLUMN id SET DEFAULT nextval('public.domains_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.epp_sessions ALTER COLUMN id SET DEFAULT nextval('public.epp_sessions_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.invoice_items ALTER COLUMN id SET DEFAULT nextval('public.invoice_items_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.invoices ALTER COLUMN id SET DEFAULT nextval('public.invoices_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.legal_documents ALTER COLUMN id SET DEFAULT nextval('public.legal_documents_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_account_activities ALTER COLUMN id SET DEFAULT nextval('public.log_account_activities_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_accounts ALTER COLUMN id SET DEFAULT nextval('public.log_accounts_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_actions ALTER COLUMN id SET DEFAULT nextval('public.log_actions_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_bank_statements ALTER COLUMN id SET DEFAULT nextval('public.log_bank_statements_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_bank_transactions ALTER COLUMN id SET DEFAULT nextval('public.log_bank_transactions_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_blocked_domains ALTER COLUMN id SET DEFAULT nextval('public.log_blocked_domains_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_certificates ALTER COLUMN id SET DEFAULT nextval('public.log_certificates_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_contacts ALTER COLUMN id SET DEFAULT nextval('public.log_contacts_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_dnskeys ALTER COLUMN id SET DEFAULT nextval('public.log_dnskeys_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_domain_contacts ALTER COLUMN id SET DEFAULT nextval('public.log_domain_contacts_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_domains ALTER COLUMN id SET DEFAULT nextval('public.log_domains_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_invoice_items ALTER COLUMN id SET DEFAULT nextval('public.log_invoice_items_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_invoices ALTER COLUMN id SET DEFAULT nextval('public.log_invoices_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_nameservers ALTER COLUMN id SET DEFAULT nextval('public.log_nameservers_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_notifications ALTER COLUMN id SET DEFAULT nextval('public.log_notifications_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_payment_orders ALTER COLUMN id SET DEFAULT nextval('public.log_payment_orders_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_registrant_verifications ALTER COLUMN id SET DEFAULT nextval('public.log_registrant_verifications_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_registrars ALTER COLUMN id SET DEFAULT nextval('public.log_registrars_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_reserved_domains ALTER COLUMN id SET DEFAULT nextval('public.log_reserved_domains_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_settings ALTER COLUMN id SET DEFAULT nextval('public.log_settings_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_users ALTER COLUMN id SET DEFAULT nextval('public.log_users_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.log_white_ips ALTER COLUMN id SET DEFAULT nextval('public.log_white_ips_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.nameservers ALTER COLUMN id SET DEFAULT nextval('public.nameservers_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.notifications ALTER COLUMN id SET DEFAULT nextval('public.notifications_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.payment_orders ALTER COLUMN id SET DEFAULT nextval('public.payment_orders_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.prices ALTER COLUMN id SET DEFAULT nextval('public.prices_id_seq'::regclass); + + +-- +-- Name: job_id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.que_jobs ALTER COLUMN job_id SET DEFAULT nextval('public.que_jobs_job_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.registrant_verifications ALTER COLUMN id SET DEFAULT nextval('public.registrant_verifications_id_seq'::regclass); +>>>>>>> 8c6e4defa... Add legaldoc_optout field to registrar -- @@ -4523,6 +5880,7 @@ INSERT INTO "schema_migrations" (version) VALUES ('20200505103316'), ('20200505150413'), ('20200518104105'), -('20200529115011'); +('20200529115011'), +('20200630081231'); From 206704fee7d048e266c7312df520870260ba991d Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Tue, 30 Jun 2020 14:33:42 +0500 Subject: [PATCH 2/7] Add check if legal doc mandatory & tests --- app/controllers/epp/domains_controller.rb | 2 +- app/models/api_user.rb | 1 + app/models/concerns/registrar/legal_doc.rb | 11 +++ app/models/registrar.rb | 1 + app/views/registrar/domains/_form.haml | 3 +- .../epp/domain/create/base_test.rb | 67 +++++++++++++++++++ 6 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 app/models/concerns/registrar/legal_doc.rb diff --git a/app/controllers/epp/domains_controller.rb b/app/controllers/epp/domains_controller.rb index fa0003756..dbf61ed9d 100644 --- a/app/controllers/epp/domains_controller.rb +++ b/app/controllers/epp/domains_controller.rb @@ -237,7 +237,7 @@ module Epp mutually_exclusive 'keyData', 'dsData' @prefix = nil - requires 'extension > extdata > legalDocument' + requires 'extension > extdata > legalDocument' if current_user.legaldoc_mandatory? optional_attribute 'period', 'unit', values: %w(d m y) diff --git a/app/models/api_user.rb b/app/models/api_user.rb index b5efa7235..d7b264495 100644 --- a/app/models/api_user.rb +++ b/app/models/api_user.rb @@ -26,6 +26,7 @@ class ApiUser < User validates :username, uniqueness: true delegate :code, :name, to: :registrar, prefix: true + delegate :legaldoc_mandatory?, to: :registrar alias_attribute :login, :username diff --git a/app/models/concerns/registrar/legal_doc.rb b/app/models/concerns/registrar/legal_doc.rb new file mode 100644 index 000000000..e5d7b8941 --- /dev/null +++ b/app/models/concerns/registrar/legal_doc.rb @@ -0,0 +1,11 @@ +module Concerns + module Registrar + module LegalDoc + extend ActiveSupport::Concern + + def legaldoc_mandatory? + !legaldoc_optout + end + end + end +end diff --git a/app/models/registrar.rb b/app/models/registrar.rb index c3522859e..dbdd7e8d3 100644 --- a/app/models/registrar.rb +++ b/app/models/registrar.rb @@ -1,6 +1,7 @@ class Registrar < ApplicationRecord include Versions # version/registrar_version.rb include Concerns::Registrar::BookKeeping + include Concerns::Registrar::LegalDoc has_many :domains, dependent: :restrict_with_error has_many :contacts, dependent: :restrict_with_error diff --git a/app/views/registrar/domains/_form.haml b/app/views/registrar/domains/_form.haml index d6428233b..690d0ee06 100644 --- a/app/views/registrar/domains/_form.haml +++ b/app/views/registrar/domains/_form.haml @@ -1,4 +1,5 @@ - path = (params[:domain_name]) ? update_registrar_domains_path : registrar_domains_path +- legaldoc_mandatory = params[:domain_name].blank? && current_registrar_user.legaldoc_mandatory? = form_tag(path, class: 'form-horizontal', multipart: true) do .row .col-md-8 @@ -14,7 +15,7 @@ .panel-body .form-group .col-md-3.control-label - - c, fr = 'required', true if params[:domain_name].blank? + - c, fr = 'required', true if legaldoc_mandatory = label_tag 'domain[legal_document]', t(:legal_document), class: c %p.help-block= t(:legal_document_max_size) .col-md-7 diff --git a/test/integration/epp/domain/create/base_test.rb b/test/integration/epp/domain/create/base_test.rb index ffd56ffc5..c45693981 100644 --- a/test/integration/epp/domain/create/base_test.rb +++ b/test/integration/epp/domain/create/base_test.rb @@ -1,6 +1,36 @@ require 'test_helper' class EppDomainCreateBaseTest < EppTestCase + + def test_not_registers_domain_without_legaldoc + now = Time.zone.parse('2010-07-05') + travel_to now + name = "new.#{dns_zones(:one).origin}" + contact = contacts(:john) + registrant = contact.becomes(Registrant) + + request_xml = <<-XML + + + + + + #{name} + #{registrant.code} + + + + + XML + + assert_no_difference 'Domain.count' do + post epp_create_path, params: { frame: request_xml }, + headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } + end + + assert_epp_response :required_parameter_missing + end + def test_registers_new_domain_with_required_attributes now = Time.zone.parse('2010-07-05') travel_to now @@ -45,6 +75,43 @@ class EppDomainCreateBaseTest < EppTestCase assert_equal now + default_registration_period, domain.expire_time end + def test_registers_domain_without_legaldoc_if_optout + now = Time.zone.parse('2010-07-05') + travel_to now + name = "new.#{dns_zones(:one).origin}" + contact = contacts(:john) + registrant = contact.becomes(Registrant) + registrar = registrant.registrar + + registrar.legaldoc_optout = true + registrar.save(validate: false) + + request_xml = <<-XML + + + + + + #{name} + #{registrant.code} + + + + + XML + + assert_difference 'Domain.count' do + post epp_create_path, params: { frame: request_xml }, + headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } + end + + assert_epp_response :completed_successfully + + domain = Domain.find_by(name: name) + assert_equal name, domain.name + assert_equal registrant, domain.registrant + end + def test_registers_reserved_domain_with_registration_code reserved_domain = reserved_domains(:one) registration_code = reserved_domain.registration_code From 39030fc0dfcf9f9b8dd7f9bd1eb21734496f75b0 Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Tue, 30 Jun 2020 16:06:43 +0500 Subject: [PATCH 3/7] Add editing of opt-out flag in registrar --- app/views/admin/registrars/_form.html.erb | 9 +++++++++ config/locales/admin/registrars.en.yml | 1 + db/structure.sql | 2 -- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/views/admin/registrars/_form.html.erb b/app/views/admin/registrars/_form.html.erb index 5545adef1..fffcf7367 100644 --- a/app/views/admin/registrars/_form.html.erb +++ b/app/views/admin/registrars/_form.html.erb @@ -91,6 +91,15 @@ <%= f.check_box :test_registrar, class: 'form-control' %> + +
+
+ <%= f.label t('.legaldoc_optout') %> +
+
+ <%= f.check_box :legaldoc_optout, class: 'form-control' %> +
+
diff --git a/config/locales/admin/registrars.en.yml b/config/locales/admin/registrars.en.yml index 98aabbd95..1cb0b70b5 100644 --- a/config/locales/admin/registrars.en.yml +++ b/config/locales/admin/registrars.en.yml @@ -49,6 +49,7 @@ en: misc: Miscellaneous create_btn: Create registrar update_btn: Update registrar + legaldoc_optout: Opt-out from legal document requirement address: header: Address diff --git a/db/structure.sql b/db/structure.sql index 56b3c8d97..9cd4d7cd6 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -2190,8 +2190,6 @@ CREATE TABLE public.users ( username character varying, plain_text_password character varying, created_at timestamp without time zone, -<<<<<<< HEAD -======= session character varying, children json, uuid character varying From 3d734ff746291c9b6d65ab54f0c005804c14d888 Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Tue, 30 Jun 2020 19:16:33 +0500 Subject: [PATCH 4/7] Add opt-out commentary field to registrar --- .../admin/registrars_controller.rb | 2 + app/views/admin/registrars/_form.html.erb | 9 + config/locales/admin/registrars.en.yml | 1 + ...81231_add_legal_doc_optout_to_registrar.rb | 1 + db/structure.sql | 1368 +---------------- 5 files changed, 25 insertions(+), 1356 deletions(-) diff --git a/app/controllers/admin/registrars_controller.rb b/app/controllers/admin/registrars_controller.rb index b925a8156..27116d871 100644 --- a/app/controllers/admin/registrars_controller.rb +++ b/app/controllers/admin/registrars_controller.rb @@ -74,6 +74,8 @@ module Admin :vat_rate, :accounting_customer_code, :billing_email, + :legaldoc_optout, + :legaldoc_optout_comment, :iban, :language) end diff --git a/app/views/admin/registrars/_form.html.erb b/app/views/admin/registrars/_form.html.erb index fffcf7367..19866a31f 100644 --- a/app/views/admin/registrars/_form.html.erb +++ b/app/views/admin/registrars/_form.html.erb @@ -100,6 +100,15 @@ <%= f.check_box :legaldoc_optout, class: 'form-control' %> + +
+
+ <%= f.label t('.legaldoc_optout_comment') %> +
+
+ <%= f.text_area :legaldoc_optout_comment, class: 'form-control', rows: 3 %> +
+
diff --git a/config/locales/admin/registrars.en.yml b/config/locales/admin/registrars.en.yml index 1cb0b70b5..59a999bd2 100644 --- a/config/locales/admin/registrars.en.yml +++ b/config/locales/admin/registrars.en.yml @@ -50,6 +50,7 @@ en: create_btn: Create registrar update_btn: Update registrar legaldoc_optout: Opt-out from legal document requirement + legaldoc_optout_comment: Commentary on opt-out address: header: Address diff --git a/db/migrate/20200630081231_add_legal_doc_optout_to_registrar.rb b/db/migrate/20200630081231_add_legal_doc_optout_to_registrar.rb index 377956672..e5bc5a7f1 100644 --- a/db/migrate/20200630081231_add_legal_doc_optout_to_registrar.rb +++ b/db/migrate/20200630081231_add_legal_doc_optout_to_registrar.rb @@ -1,5 +1,6 @@ class AddLegalDocOptoutToRegistrar < ActiveRecord::Migration[6.0] def change add_column :registrars, :legaldoc_optout, :boolean, null: false, default: false + add_column :registrars, :legaldoc_optout_comment, :text end end diff --git a/db/structure.sql b/db/structure.sql index 9cd4d7cd6..960481c44 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -560,7 +560,16 @@ ALTER SEQUENCE public.contacts_id_seq OWNED BY public.contacts.id; -- --- Name: directos; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- Name: data_migrations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public.data_migrations ( + version character varying NOT NULL +); + + +-- +-- Name: directos; Type: TABLE; Schema: public; Owner: - -- CREATE TABLE public.directos ( @@ -2048,705 +2057,6 @@ CREATE SEQUENCE public.registrant_verifications_id_seq ALTER SEQUENCE public.registrant_verifications_id_seq OWNED BY public.registrant_verifications.id; --- --- Name: registrars; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.registrars ( - id integer NOT NULL, - name character varying NOT NULL, - reg_no character varying NOT NULL, - vat_no character varying, - created_at timestamp without time zone, - updated_at timestamp without time zone, - creator_str character varying, - updator_str character varying, - phone character varying, - email character varying NOT NULL, - billing_email character varying, - address_country_code character varying NOT NULL, - address_state character varying, - address_city character varying NOT NULL, - address_street character varying NOT NULL, - address_zip character varying, - code character varying NOT NULL, - website character varying, - accounting_customer_code character varying NOT NULL, - legacy_id integer, - reference_no character varying NOT NULL, - test_registrar boolean DEFAULT false, - language character varying NOT NULL, - vat_rate numeric(4,3), - iban character varying, - settings jsonb DEFAULT '{}'::jsonb NOT NULL -); - - --- --- Name: registrars_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.registrars_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: registrars_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.registrars_id_seq OWNED BY public.registrars.id; - - --- --- Name: reserved_domains; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.reserved_domains ( - id integer NOT NULL, - created_at timestamp without time zone, - updated_at timestamp without time zone, - creator_str character varying, - updator_str character varying, - legacy_id integer, - name character varying NOT NULL, - password character varying NOT NULL -); - - --- --- Name: reserved_domains_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.reserved_domains_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: reserved_domains_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.reserved_domains_id_seq OWNED BY public.reserved_domains.id; - - --- --- Name: schema_migrations; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.schema_migrations ( - version character varying NOT NULL -); - - --- --- Name: settings; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.settings ( - id integer NOT NULL, - var character varying NOT NULL, - value text, - thing_id integer, - thing_type character varying(30), - created_at timestamp without time zone, - updated_at timestamp without time zone, - creator_str character varying, - updator_str character varying -); - - --- --- Name: settings_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.settings_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: settings_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.settings_id_seq OWNED BY public.settings.id; - - --- --- Name: users; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.users ( - id integer NOT NULL, - username character varying, - plain_text_password character varying, - created_at timestamp without time zone, - session character varying, - children json, - uuid character varying -); - - --- --- Name: log_nameservers_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.log_nameservers_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: log_nameservers_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.log_nameservers_id_seq OWNED BY public.log_nameservers.id; - - --- --- Name: log_notifications; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.log_notifications ( - id integer NOT NULL, - item_type character varying NOT NULL, - item_id integer NOT NULL, - event character varying NOT NULL, - whodunnit character varying, - object json, - object_changes json, - created_at timestamp without time zone, - session character varying, - children json, - uuid character varying -); - - --- --- Name: log_notifications_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.log_notifications_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: log_notifications_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.log_notifications_id_seq OWNED BY public.log_notifications.id; - - --- --- Name: log_payment_orders; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.log_payment_orders ( - id integer NOT NULL, - item_type character varying NOT NULL, - item_id integer NOT NULL, - event character varying NOT NULL, - whodunnit character varying, - object jsonb, - object_changes jsonb, - created_at timestamp without time zone, - session character varying, - children jsonb, - uuid character varying -); - - --- --- Name: log_payment_orders_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.log_payment_orders_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: log_payment_orders_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.log_payment_orders_id_seq OWNED BY public.log_payment_orders.id; - - --- --- Name: log_registrant_verifications; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.log_registrant_verifications ( - id integer NOT NULL, - item_type character varying NOT NULL, - item_id integer NOT NULL, - event character varying NOT NULL, - whodunnit character varying, - object json, - object_changes json, - created_at timestamp without time zone, - session character varying, - uuid character varying -); - - --- --- Name: log_registrant_verifications_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.log_registrant_verifications_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: log_registrant_verifications_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.log_registrant_verifications_id_seq OWNED BY public.log_registrant_verifications.id; - - --- --- Name: log_registrars; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.log_registrars ( - id integer NOT NULL, - item_type character varying NOT NULL, - item_id integer NOT NULL, - event character varying NOT NULL, - whodunnit character varying, - object json, - object_changes json, - created_at timestamp without time zone, - session character varying, - children json, - uuid character varying -); - - --- --- Name: log_registrars_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.log_registrars_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: log_registrars_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.log_registrars_id_seq OWNED BY public.log_registrars.id; - - --- --- Name: log_reserved_domains; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.log_reserved_domains ( - id integer NOT NULL, - item_type character varying NOT NULL, - item_id integer NOT NULL, - event character varying NOT NULL, - whodunnit character varying, - object json, - object_changes json, - created_at timestamp without time zone, - session character varying, - children json, - uuid character varying -); - - --- --- Name: log_reserved_domains_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.log_reserved_domains_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: log_reserved_domains_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.log_reserved_domains_id_seq OWNED BY public.log_reserved_domains.id; - - --- --- Name: log_settings; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.log_settings ( - id integer NOT NULL, - item_type character varying NOT NULL, - item_id integer NOT NULL, - event character varying NOT NULL, - whodunnit character varying, - object json, - object_changes json, - created_at timestamp without time zone, - session character varying, - children json, - uuid character varying -); - - --- --- Name: log_settings_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.log_settings_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: log_settings_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.log_settings_id_seq OWNED BY public.log_settings.id; - - --- --- Name: log_users; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.log_users ( - id integer NOT NULL, - item_type character varying NOT NULL, - item_id integer NOT NULL, - event character varying NOT NULL, - whodunnit character varying, - object json, - object_changes json, - created_at timestamp without time zone, - session character varying, - children json, - uuid character varying -); - - --- --- Name: log_users_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.log_users_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: log_users_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.log_users_id_seq OWNED BY public.log_users.id; - - --- --- Name: log_white_ips; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.log_white_ips ( - id integer NOT NULL, - item_type character varying NOT NULL, - item_id integer NOT NULL, - event character varying NOT NULL, - whodunnit character varying, - object json, - object_changes json, - created_at timestamp without time zone, - session character varying, - children json, - uuid character varying -); - - --- --- Name: log_white_ips_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.log_white_ips_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: log_white_ips_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.log_white_ips_id_seq OWNED BY public.log_white_ips.id; - - --- --- Name: nameservers; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.nameservers ( - id integer NOT NULL, - hostname character varying NOT NULL, - ipv4 character varying[] DEFAULT '{}'::character varying[], - created_at timestamp without time zone, - updated_at timestamp without time zone, - ipv6 character varying[] DEFAULT '{}'::character varying[], - domain_id integer NOT NULL, - creator_str character varying, - updator_str character varying, - legacy_domain_id integer, - hostname_puny character varying -); - - --- --- Name: nameservers_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.nameservers_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: nameservers_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.nameservers_id_seq OWNED BY public.nameservers.id; - - --- --- Name: notifications; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.notifications ( - id integer NOT NULL, - registrar_id integer NOT NULL, - text character varying NOT NULL, - attached_obj_type character varying, - attached_obj_id integer, - read boolean NOT NULL, - created_at timestamp without time zone, - updated_at timestamp without time zone, - creator_str character varying, - updator_str character varying, - action_id integer -); - - --- --- Name: notifications_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.notifications_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: notifications_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.notifications_id_seq OWNED BY public.notifications.id; - - --- --- Name: payment_orders; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.payment_orders ( - id integer NOT NULL, - type character varying NOT NULL, - status character varying DEFAULT 'issued'::character varying NOT NULL, - invoice_id integer, - response jsonb, - notes character varying, - creator_str character varying, - updator_str character varying, - created_at timestamp without time zone NOT NULL, - updated_at timestamp without time zone NOT NULL -); - - --- --- Name: payment_orders_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.payment_orders_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: payment_orders_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.payment_orders_id_seq OWNED BY public.payment_orders.id; - - --- --- Name: prices; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.prices ( - id integer NOT NULL, - price_cents integer NOT NULL, - valid_from timestamp without time zone, - valid_to timestamp without time zone, - creator_str character varying, - updator_str character varying, - created_at timestamp without time zone NOT NULL, - updated_at timestamp without time zone NOT NULL, - duration interval, - operation_category character varying, - zone_id integer NOT NULL -); - - --- --- Name: prices_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.prices_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: prices_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.prices_id_seq OWNED BY public.prices.id; - - --- --- Name: que_jobs; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.que_jobs ( - priority smallint DEFAULT 100 NOT NULL, - run_at timestamp with time zone DEFAULT now() NOT NULL, - job_id bigint NOT NULL, - job_class text NOT NULL, - args json DEFAULT '[]'::json NOT NULL, - error_count integer DEFAULT 0 NOT NULL, - last_error text, - queue text DEFAULT ''::text NOT NULL -); - - --- --- Name: TABLE que_jobs; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.que_jobs IS '3'; - - --- --- Name: que_jobs_job_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.que_jobs_job_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: que_jobs_job_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.que_jobs_job_id_seq OWNED BY public.que_jobs.job_id; - - --- --- Name: registrant_verifications; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.registrant_verifications ( - id integer NOT NULL, - verification_token character varying NOT NULL, - created_at timestamp without time zone, - updated_at timestamp without time zone, - action character varying NOT NULL, - domain_id integer NOT NULL, - action_type character varying NOT NULL, - creator_id integer, - updater_id integer -); - - --- --- Name: registrant_verifications_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.registrant_verifications_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: registrant_verifications_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.registrant_verifications_id_seq OWNED BY public.registrant_verifications.id; - - -- -- Name: registrars; Type: TABLE; Schema: public; Owner: -; Tablespace: -- @@ -2778,7 +2088,8 @@ CREATE TABLE public.registrars ( vat_rate numeric(4,3), iban character varying, settings jsonb DEFAULT '{}'::jsonb NOT NULL, - legaldoc_optout boolean DEFAULT false NOT NULL + legaldoc_optout boolean DEFAULT false NOT NULL, + legaldoc_optout_comment text ); @@ -2890,7 +2201,6 @@ CREATE TABLE public.users ( username character varying, plain_text_password character varying, created_at timestamp without time zone, ->>>>>>> 8c6e4defa... Add legaldoc_optout field to registrar updated_at timestamp without time zone, email character varying, sign_in_count integer DEFAULT 0 NOT NULL, @@ -2913,660 +2223,6 @@ CREATE TABLE public.users ( locked_at timestamp without time zone, legacy_id integer ); -<<<<<<< HEAD -======= - - --- --- Name: users_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.users_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: users_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.users_id_seq OWNED BY public.users.id; - - --- --- Name: versions; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.versions ( - id integer NOT NULL, - item_type character varying NOT NULL, - item_id integer NOT NULL, - event character varying NOT NULL, - whodunnit character varying, - object text, - created_at timestamp without time zone, - object_changes jsonb -); - - --- --- Name: versions_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.versions_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: versions_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.versions_id_seq OWNED BY public.versions.id; - - --- --- Name: white_ips; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.white_ips ( - id integer NOT NULL, - registrar_id integer NOT NULL, - ipv4 character varying, - ipv6 character varying, - interfaces character varying[], - created_at timestamp without time zone, - updated_at timestamp without time zone, - creator_str character varying, - updator_str character varying -); - - --- --- Name: white_ips_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.white_ips_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: white_ips_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.white_ips_id_seq OWNED BY public.white_ips.id; - - --- --- Name: whois_records; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.whois_records ( - id integer NOT NULL, - domain_id integer, - name character varying, - body text, - json json, - created_at timestamp without time zone NOT NULL, - updated_at timestamp without time zone NOT NULL, - registrar_id integer -); - - --- --- Name: whois_records_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.whois_records_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: whois_records_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.whois_records_id_seq OWNED BY public.whois_records.id; - - --- --- Name: zones; Type: TABLE; Schema: public; Owner: -; Tablespace: --- - -CREATE TABLE public.zones ( - id integer NOT NULL, - origin character varying NOT NULL, - ttl integer NOT NULL, - refresh integer NOT NULL, - retry integer NOT NULL, - expire integer NOT NULL, - minimum_ttl integer NOT NULL, - email character varying NOT NULL, - master_nameserver character varying NOT NULL, - created_at timestamp without time zone, - updated_at timestamp without time zone, - creator_str character varying, - updator_str character varying, - ns_records text, - a_records text, - a4_records text -); - - --- --- Name: zones_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.zones_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: zones_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.zones_id_seq OWNED BY public.zones.id; - - --- --- Name: account_activities id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.account_activities ALTER COLUMN id SET DEFAULT nextval('audit.account_activities_id_seq'::regclass); - - --- --- Name: accounts id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.accounts ALTER COLUMN id SET DEFAULT nextval('audit.accounts_id_seq'::regclass); - - --- --- Name: actions id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.actions ALTER COLUMN id SET DEFAULT nextval('audit.actions_id_seq'::regclass); - - --- --- Name: bank_statements id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.bank_statements ALTER COLUMN id SET DEFAULT nextval('audit.bank_statements_id_seq'::regclass); - - --- --- Name: bank_transactions id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.bank_transactions ALTER COLUMN id SET DEFAULT nextval('audit.bank_transactions_id_seq'::regclass); - - --- --- Name: blocked_domains id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.blocked_domains ALTER COLUMN id SET DEFAULT nextval('audit.blocked_domains_id_seq'::regclass); - - --- --- Name: certificates id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.certificates ALTER COLUMN id SET DEFAULT nextval('audit.certificates_id_seq'::regclass); - - --- --- Name: contacts id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.contacts ALTER COLUMN id SET DEFAULT nextval('audit.contacts_id_seq'::regclass); - - --- --- Name: dnskeys id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.dnskeys ALTER COLUMN id SET DEFAULT nextval('audit.dnskeys_id_seq'::regclass); - - --- --- Name: domain_contacts id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.domain_contacts ALTER COLUMN id SET DEFAULT nextval('audit.domain_contacts_id_seq'::regclass); - - --- --- Name: domains id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.domains ALTER COLUMN id SET DEFAULT nextval('audit.domains_id_seq'::regclass); - - --- --- Name: invoice_items id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.invoice_items ALTER COLUMN id SET DEFAULT nextval('audit.invoice_items_id_seq'::regclass); - - --- --- Name: invoices id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.invoices ALTER COLUMN id SET DEFAULT nextval('audit.invoices_id_seq'::regclass); - - --- --- Name: nameservers id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.nameservers ALTER COLUMN id SET DEFAULT nextval('audit.nameservers_id_seq'::regclass); - - --- --- Name: notifications id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.notifications ALTER COLUMN id SET DEFAULT nextval('audit.notifications_id_seq'::regclass); - - --- --- Name: payment_orders id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.payment_orders ALTER COLUMN id SET DEFAULT nextval('audit.payment_orders_id_seq'::regclass); - - --- --- Name: registrant_verifications id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.registrant_verifications ALTER COLUMN id SET DEFAULT nextval('audit.registrant_verifications_id_seq'::regclass); - - --- --- Name: registrars id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.registrars ALTER COLUMN id SET DEFAULT nextval('audit.registrars_id_seq'::regclass); - - --- --- Name: reserved_domains id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.reserved_domains ALTER COLUMN id SET DEFAULT nextval('audit.reserved_domains_id_seq'::regclass); - - --- --- Name: settings id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.settings ALTER COLUMN id SET DEFAULT nextval('audit.settings_id_seq'::regclass); - - --- --- Name: users id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.users ALTER COLUMN id SET DEFAULT nextval('audit.users_id_seq'::regclass); - - --- --- Name: white_ips id; Type: DEFAULT; Schema: audit; Owner: - --- - -ALTER TABLE ONLY audit.white_ips ALTER COLUMN id SET DEFAULT nextval('audit.white_ips_id_seq'::regclass); - - --- --- Name: account_activities id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.account_activities ALTER COLUMN id SET DEFAULT nextval('public.account_activities_id_seq'::regclass); - - --- --- Name: accounts id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.accounts ALTER COLUMN id SET DEFAULT nextval('public.accounts_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.actions ALTER COLUMN id SET DEFAULT nextval('public.actions_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auctions ALTER COLUMN id SET DEFAULT nextval('public.auctions_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.bank_statements ALTER COLUMN id SET DEFAULT nextval('public.bank_statements_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.bank_transactions ALTER COLUMN id SET DEFAULT nextval('public.bank_transactions_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.blocked_domains ALTER COLUMN id SET DEFAULT nextval('public.blocked_domains_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.certificates ALTER COLUMN id SET DEFAULT nextval('public.certificates_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.contacts ALTER COLUMN id SET DEFAULT nextval('public.contacts_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.directos ALTER COLUMN id SET DEFAULT nextval('public.directos_id_seq'::regclass); - - --- --- Name: disputes id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.disputes ALTER COLUMN id SET DEFAULT nextval('public.disputes_id_seq'::regclass); - - --- --- Name: dnskeys id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.dnskeys ALTER COLUMN id SET DEFAULT nextval('public.dnskeys_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.domain_contacts ALTER COLUMN id SET DEFAULT nextval('public.domain_contacts_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.domain_transfers ALTER COLUMN id SET DEFAULT nextval('public.domain_transfers_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.domains ALTER COLUMN id SET DEFAULT nextval('public.domains_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.epp_sessions ALTER COLUMN id SET DEFAULT nextval('public.epp_sessions_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.invoice_items ALTER COLUMN id SET DEFAULT nextval('public.invoice_items_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.invoices ALTER COLUMN id SET DEFAULT nextval('public.invoices_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.legal_documents ALTER COLUMN id SET DEFAULT nextval('public.legal_documents_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_account_activities ALTER COLUMN id SET DEFAULT nextval('public.log_account_activities_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_accounts ALTER COLUMN id SET DEFAULT nextval('public.log_accounts_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_actions ALTER COLUMN id SET DEFAULT nextval('public.log_actions_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_bank_statements ALTER COLUMN id SET DEFAULT nextval('public.log_bank_statements_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_bank_transactions ALTER COLUMN id SET DEFAULT nextval('public.log_bank_transactions_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_blocked_domains ALTER COLUMN id SET DEFAULT nextval('public.log_blocked_domains_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_certificates ALTER COLUMN id SET DEFAULT nextval('public.log_certificates_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_contacts ALTER COLUMN id SET DEFAULT nextval('public.log_contacts_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_dnskeys ALTER COLUMN id SET DEFAULT nextval('public.log_dnskeys_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_domain_contacts ALTER COLUMN id SET DEFAULT nextval('public.log_domain_contacts_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_domains ALTER COLUMN id SET DEFAULT nextval('public.log_domains_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_invoice_items ALTER COLUMN id SET DEFAULT nextval('public.log_invoice_items_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_invoices ALTER COLUMN id SET DEFAULT nextval('public.log_invoices_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_nameservers ALTER COLUMN id SET DEFAULT nextval('public.log_nameservers_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_notifications ALTER COLUMN id SET DEFAULT nextval('public.log_notifications_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_payment_orders ALTER COLUMN id SET DEFAULT nextval('public.log_payment_orders_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_registrant_verifications ALTER COLUMN id SET DEFAULT nextval('public.log_registrant_verifications_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_registrars ALTER COLUMN id SET DEFAULT nextval('public.log_registrars_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_reserved_domains ALTER COLUMN id SET DEFAULT nextval('public.log_reserved_domains_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_settings ALTER COLUMN id SET DEFAULT nextval('public.log_settings_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_users ALTER COLUMN id SET DEFAULT nextval('public.log_users_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.log_white_ips ALTER COLUMN id SET DEFAULT nextval('public.log_white_ips_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.nameservers ALTER COLUMN id SET DEFAULT nextval('public.nameservers_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.notifications ALTER COLUMN id SET DEFAULT nextval('public.notifications_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.payment_orders ALTER COLUMN id SET DEFAULT nextval('public.payment_orders_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.prices ALTER COLUMN id SET DEFAULT nextval('public.prices_id_seq'::regclass); - - --- --- Name: job_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.que_jobs ALTER COLUMN job_id SET DEFAULT nextval('public.que_jobs_job_id_seq'::regclass); - - --- --- Name: id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.registrant_verifications ALTER COLUMN id SET DEFAULT nextval('public.registrant_verifications_id_seq'::regclass); ->>>>>>> 8c6e4defa... Add legaldoc_optout field to registrar -- From d29ef4174c36d86e29318c0cf4cbb0411f953fee Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Wed, 1 Jul 2020 12:49:05 +0500 Subject: [PATCH 5/7] Add test if legaldoc mandatory on domain delete --- test/integration/epp/domain/delete/base_test.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/integration/epp/domain/delete/base_test.rb b/test/integration/epp/domain/delete/base_test.rb index 59dfa4edb..4a0992f5b 100644 --- a/test/integration/epp/domain/delete/base_test.rb +++ b/test/integration/epp/domain/delete/base_test.rb @@ -162,6 +162,8 @@ class EppDomainDeleteBaseTest < EppTestCase def test_legal_document_is_required assert_equal 'shop.test', @domain.name + @domain.registrar.legaldoc_optout = true + @domain.registrar.save(validate: false) request_xml = <<-XML @@ -207,4 +209,4 @@ class EppDomainDeleteBaseTest < EppTestCase assert_epp_response :object_status_prohibits_operation end -end \ No newline at end of file +end From 60ad331903a603c20c6f41b5e53368808e7fd50c Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Wed, 1 Jul 2020 13:59:10 +0500 Subject: [PATCH 6/7] Add non-mandatory legal docs to domain transfer/delete --- app/controllers/epp/domains_controller.rb | 5 +- .../epp/domain/delete/base_test.rb | 33 +++++++++- .../epp/domain/update/base_test.rb | 62 +++++++++++++++++++ 3 files changed, 95 insertions(+), 5 deletions(-) diff --git a/app/controllers/epp/domains_controller.rb b/app/controllers/epp/domains_controller.rb index dbf61ed9d..4249c1db6 100644 --- a/app/controllers/epp/domains_controller.rb +++ b/app/controllers/epp/domains_controller.rb @@ -246,7 +246,7 @@ module Epp def validate_update if element_count('update > chg > registrant') > 0 - requires 'extension > extdata > legalDocument' + requires 'extension > extdata > legalDocument' if current_user.legaldoc_mandatory? end @prefix = 'update > update >' @@ -256,7 +256,8 @@ module Epp end def validate_delete - requires 'extension > extdata > legalDocument' + # binding.pry + requires 'extension > extdata > legalDocument' if current_user.legaldoc_mandatory? @prefix = 'delete > delete >' requires 'name' diff --git a/test/integration/epp/domain/delete/base_test.rb b/test/integration/epp/domain/delete/base_test.rb index 4a0992f5b..d71e9890f 100644 --- a/test/integration/epp/domain/delete/base_test.rb +++ b/test/integration/epp/domain/delete/base_test.rb @@ -160,10 +160,8 @@ class EppDomainDeleteBaseTest < EppTestCase assert_epp_response :completed_successfully end - def test_legal_document_is_required + def test_legal_document_is_required_if_mandatory assert_equal 'shop.test', @domain.name - @domain.registrar.legaldoc_optout = true - @domain.registrar.save(validate: false) request_xml = <<-XML @@ -183,6 +181,35 @@ class EppDomainDeleteBaseTest < EppTestCase assert_epp_response :required_parameter_missing end + def test_legal_document_is_not_required_if_not_mandatory + assert_equal 'shop.test', @domain.name + Setting.request_confirmation_on_domain_deletion_enabled = true + @domain.registrar.legaldoc_optout = true + @domain.registrar.save(validate: false) + @domain.registrar.reload + + request_xml = <<-XML + + + + + + shop.test + + + + + XML + + post epp_delete_path, params: { frame: request_xml }, headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } + @domain.reload + + assert_not @domain.registrant_verification_asked? + assert_not @domain.pending_delete_confirmation? + assert_no_emails + assert_epp_response :completed_successfully + end + def test_domain_cannot_be_deleted_when_explicitly_prohibited_by_registrar assert_equal 'shop.test', @domain.name @domain.update!(statuses: [DomainStatus::CLIENT_DELETE_PROHIBITED]) diff --git a/test/integration/epp/domain/update/base_test.rb b/test/integration/epp/domain/update/base_test.rb index 0e435030a..593d7951c 100644 --- a/test/integration/epp/domain/update/base_test.rb +++ b/test/integration/epp/domain/update/base_test.rb @@ -160,6 +160,68 @@ class EppDomainUpdateBaseTest < EppTestCase assert_verification_and_notification_emails end + def test_updates_registrant_when_legaldoc_is_not_mandatory + Setting.request_confrimation_on_registrant_change_enabled = true + new_registrant = contacts(:william) + assert_not_equal new_registrant, @domain.registrant + + @domain.registrar.legaldoc_optout = true + @domain.registrar.save(validate: false) + @domain.registrar.reload + + request_xml = <<-XML + + + + + + #{@domain.name} + + #{new_registrant.code} + + + + + + XML + + post epp_update_path, params: { frame: request_xml }, + headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } + @domain.reload + + assert_epp_response :completed_successfully_action_pending + assert_not_equal new_registrant, @domain.registrant + assert @domain.registrant_verification_asked? + assert_includes @domain.statuses, DomainStatus::PENDING_UPDATE + assert_verification_and_notification_emails + end + + def test_dows_not_update_registrant_when_legaldoc_is_mandatory + Setting.request_confrimation_on_registrant_change_enabled = true + new_registrant = contacts(:william) + assert_not_equal new_registrant, @domain.registrant + + request_xml = <<-XML + + + + + + #{@domain.name} + + #{new_registrant.code} + + + + + + XML + + post epp_update_path, params: { frame: request_xml }, + headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } + assert_epp_response :required_parameter_missing + end + def test_skips_verification_when_provided_registrant_is_the_same_as_current_one Setting.request_confrimation_on_registrant_change_enabled = true From 690368228a0a7a88463f84cbf098dab61e110007 Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Wed, 1 Jul 2020 14:35:20 +0500 Subject: [PATCH 7/7] Fix legaldoc requirement at delete view --- app/views/registrar/domains/delete.haml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/registrar/domains/delete.haml b/app/views/registrar/domains/delete.haml index ab1bdfa31..34b5af1f7 100644 --- a/app/views/registrar/domains/delete.haml +++ b/app/views/registrar/domains/delete.haml @@ -10,14 +10,14 @@ .col-md-4.control-label = label_tag 'domain[verified]', t(:verified) .col-md-6 - = check_box_tag 'domain[verified]', '1', params[:verified].eql?('1'), onclick: "return (confirm('#{t(:verified_confirm)}') ? true : false);" + = check_box_tag 'domain[verified]', '1', params[:verified].eql?('1'), onclick: ("return (confirm('#{t(:verified_confirm)}') ? true : false);" if current_registrar_user.legaldoc_mandatory?) .form-group .col-md-4.control-label - = label_tag 'domain[legal_document]', t(:legal_document), class: 'required' + = label_tag 'domain[legal_document]', t(:legal_document), class: ('required' if current_registrar_user.legaldoc_mandatory?) %p.help-block= t(:legal_document_max_size) .col-md-6 - = file_field_tag 'domain[legal_document]', required: true + = file_field_tag 'domain[legal_document]', required: current_registrar_user.legaldoc_mandatory? = hidden_field_tag 'domain[name]', params[:domain_name] %hr .row