diff --git a/app/controllers/invitadxs_controller.rb b/app/controllers/invitadxs_controller.rb index 404130d6..19d0e335 100644 --- a/app/controllers/invitadxs_controller.rb +++ b/app/controllers/invitadxs_controller.rb @@ -52,6 +52,7 @@ class InvitadxsController < ApplicationController private def invitadx_params - params.require(:invitadx).permit(:email, :password, :password_confirmation) + params.require(:invitadx).permit(:email, :password, + :password_confirmation, :acepta_politicas_de_privacidad) end end diff --git a/app/models/invitadx.rb b/app/models/invitadx.rb index 714df737..3d440637 100644 --- a/app/models/invitadx.rb +++ b/app/models/invitadx.rb @@ -1,6 +1,7 @@ class Invitadx < ApplicationRecord has_secure_password validates_uniqueness_of :email + validate :acepto_politicas_de_privacidad after_create :create_invitadx_directory! after_save :add_sites! @@ -28,6 +29,13 @@ class Invitadx < ApplicationRecord private + def acepto_politicas_de_privacidad + unless acepta_politicas_de_privacidad? + errors.add(:acepta_politicas_de_privacidad, + :no_acepta_politicas_de_privacidad) + end + end + # Crea el directorio en _sites def create_invitadx_directory! FileUtils.mkdir_p(path) diff --git a/app/views/invitadxs/new.haml b/app/views/invitadxs/new.haml index c907218a..bff7e4c3 100644 --- a/app/views/invitadxs/new.haml +++ b/app/views/invitadxs/new.haml @@ -10,7 +10,7 @@ - else .alert.alert-dismissible.alert-info.fade.show{role: 'alert'} %ul - - @invitadx.errors.full_messages.each do |message| + - @invitadx.errors.messages.each do |_, message| %li= message %button.close{type: 'button', data: { dismiss: 'alert' }, @@ -25,6 +25,14 @@ = f.password_field :password, class: 'form-control', placeholder: t('.password') .form-group = f.password_field :password_confirmation, class: 'form-control', placeholder: t('.password_confirmation') + - if @site.config.dig('privacy_policy') + .form-check + = f.check_box :acepta_politicas_de_privacidad, + class: 'form-check-input' + = f.label :acepta_politicas_de_privacidad, + raw(t('.acepta_politicas_de_privacidad', + privacy_policy: @site.config['privacy_policy'])), + class: 'form-check-label' .form-group - button = @site.config.dig('welcome', 'button') diff --git a/config/locales/en.yml b/config/locales/en.yml index f4f5cbb7..e13ba5b8 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -8,6 +8,8 @@ en: taken: 'This e-mail address is already taken, please choose another' password_confirmation: confirmation: "The passwords don't match" + acepta_politicas_de_privacidad: + no_acepta_politicas_de_privacidad: "Please read and accept the privacy policy" errors: argument_error: 'Argument `%{argument}` must be an instance of %{class}' unknown_locale: 'Unknown %{locale} locale' @@ -28,6 +30,7 @@ en: password: 'Password' password_confirmation: 'Repeat password' submit: 'Register' + acepta_politicas_de_privacidad: 'I accept the Privacy policy.' confirmation: confirmed: 'Your account is confirmed, please log in to continue' show: diff --git a/config/locales/es.yml b/config/locales/es.yml index 41018b9b..119dcb41 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -8,6 +8,8 @@ es: taken: 'Esa cuenta ya está tomada, por favor elige otra.' password_confirmation: confirmation: Las contraseñas no coinciden + acepta_politicas_de_privacidad: + no_acepta_politicas_de_privacidad: "Por favor lee y acepta la política de privacidad" errors: argument_error: 'El argumento `%{argument}` debe ser una instancia de %{class}' unknown_locale: 'El idioma %{locale} es desconocido' @@ -28,6 +30,7 @@ es: password: Contraseña password_confirmation: Repite la contraseña submit: Registrarme + acepta_politicas_de_privacidad: 'Acepto las Políticas de privacidad.' confirmation: confirmed: 'Tu cuenta está confirmada, ahora puedes ingresar' show: diff --git a/db/migrate/20190211184815_add_acepta_politicas_de_privacidad_to_invitadx.rb b/db/migrate/20190211184815_add_acepta_politicas_de_privacidad_to_invitadx.rb new file mode 100644 index 00000000..d2cec557 --- /dev/null +++ b/db/migrate/20190211184815_add_acepta_politicas_de_privacidad_to_invitadx.rb @@ -0,0 +1,5 @@ +class AddAceptaPoliticasDePrivacidadToInvitadx < ActiveRecord::Migration[5.1] + def change + add_column :invitadxs, :acepta_politicas_de_privacidad, :boolean, default: false + end +end