Skip to content

Commit

Permalink
Merge branch 'master' into flag-cache
Browse files Browse the repository at this point in the history
  • Loading branch information
kikito committed Aug 31, 2015
2 parents c622847 + f6294a6 commit 3ab5cd6
Show file tree
Hide file tree
Showing 29 changed files with 199 additions and 73 deletions.
2 changes: 1 addition & 1 deletion app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ def authenticate_beta_tester!
end

def beta_testers
File.readlines('config/beta-testers.txt').map {|email| email }
File.readlines('config/beta-testers.txt').map {|email| email.strip }
end

def beta_site?
Expand Down
5 changes: 4 additions & 1 deletion app/controllers/pages_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ def privacy
def legal
end

def terms
def general_terms
end

def census_terms
end

def transparency
Expand Down
8 changes: 6 additions & 2 deletions app/controllers/verification/email_controller.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
class Verification::EmailController < ApplicationController
before_action :authenticate_user!
before_action :set_verified_user
before_action :set_verified_user, only: :create
skip_authorization_check

def show
Expand All @@ -26,6 +26,10 @@ def create
private

def set_verified_user
@verified_user = VerifiedUser.by_user(current_user).by_email(params[:recipient]).first
@verified_user = VerifiedUser.by_user(current_user).where(id: verified_user_params[:id]).first
end

def verified_user_params
params.require(:verified_user).permit(:id)
end
end
2 changes: 1 addition & 1 deletion app/controllers/verification/residence_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ def create
private

def residence_params
params.require(:residence).permit(:document_number, :document_type, :date_of_birth, :postal_code)
params.require(:residence).permit(:document_number, :document_type, :date_of_birth, :postal_code, :terms_of_service)
end

def verify_attemps_left!
Expand Down
16 changes: 15 additions & 1 deletion app/controllers/verification/sms_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ class Verification::SmsController < ApplicationController
before_action :authenticate_user!
before_action :verify_resident!
before_action :verify_attemps_left!, only: [:new, :create]
before_action :set_phone, only: :create

skip_authorization_check

Expand All @@ -10,7 +11,7 @@ def new
end

def create
@sms = Verification::Sms.new(sms_params.merge(user: current_user))
@sms = Verification::Sms.new(phone: @phone, user: current_user)
if @sms.save
redirect_to edit_sms_path, notice: t('verification.sms.create.flash.success')
else
Expand Down Expand Up @@ -44,6 +45,19 @@ def sms_params
params.require(:sms).permit(:phone, :confirmation_code)
end

def set_phone
if verified_user
@phone = @verified_user.phone
else
@phone = sms_params[:phone]
end
end

def verified_user
return false unless params[:verified_user]
@verified_user = VerifiedUser.by_user(current_user).where(id: params[:verified_user][:id]).first
end

def redirect_to_next_path
current_user.reload
if current_user.level_three_verified?
Expand Down
15 changes: 15 additions & 0 deletions app/helpers/verification_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,19 @@ def document_types
[t('verification.residence.new.document_type.residence_card'), 3]]
end

def mask_phone(number)
match = number.match /\d{3}$/
"******#{match}"
end

def mask_email(string)
match = string.match /^(\w{1,3})(.*)@(.*)/

data_to_display = match[1]
data_to_mask = match[2]
email_provider = match[3]

data_to_display + "*"*data_to_mask.size + "@" + email_provider
end

end
3 changes: 2 additions & 1 deletion app/models/verification/residence.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@ class Verification::Residence
include ActiveModel::Model
include ActiveModel::Dates

attr_accessor :user, :document_number, :document_type, :date_of_birth, :postal_code
attr_accessor :user, :document_number, :document_type, :date_of_birth, :postal_code, :terms_of_service

validates_presence_of :document_number
validates_presence_of :document_type
validates_presence_of :date_of_birth
validates_presence_of :postal_code
validates :terms_of_service, acceptance: { allow_nil: false }

validates :postal_code, length: { is: 5 }

Expand Down
1 change: 1 addition & 0 deletions app/views/pages/census_terms.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<%= simple_format t('pages.census_terms') %>
1 change: 1 addition & 0 deletions app/views/pages/general_terms.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<%= t('pages.general_terms') %>
1 change: 0 additions & 1 deletion app/views/pages/terms.html.erb

This file was deleted.

4 changes: 0 additions & 4 deletions app/views/verification/email/_form.html.erb

This file was deleted.

9 changes: 9 additions & 0 deletions app/views/verification/residence/new.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,15 @@
start_year: 1900, end_year: 16.years.ago.year %>
<%= f.text_field :postal_code %>

<div class="small-12 column">
<span class="left">
<%= f.check_box :terms_of_service, label: t("verification.residence.new.accept_terms_text") %>
</span>
<span class="left" style="padding-left: 20px">
<%= link_to t("verification.residence.new.accept_terms_link"), '/census_terms', target: "_blank" %>
</span>
</div>

<%= f.submit "Verify" %>
<% end %>
</div>
Expand Down
5 changes: 0 additions & 5 deletions app/views/verification/sms/_form.html.erb

This file was deleted.

4 changes: 4 additions & 0 deletions app/views/verification/verified_user/_form.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<%= form_for verified_user, url: url, method: :post do |f| %>
<%= f.hidden_field :id %>
<%= f.submit t('verification.verified_user.form.submit_button') %>
<% end %>
8 changes: 4 additions & 4 deletions app/views/verification/verified_user/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@
<% if verified_user.email.present? %>
<li id="<%= dom_id(verified_user) %>_email" style="float:left">
<span style="float:left">
<%= verified_user.email %>
<%= mask_email(verified_user.email) %>
</span>
<span style="float:left;padding-left:30px">
<%= render '/verification/email/form', verified_user: verified_user %>
<%= render 'form', url: email_path, verified_user: verified_user %>
</span>
</li>
<br/><br/><br/>
Expand All @@ -29,10 +29,10 @@
<% if verified_user.phone.present? %>
<li id="<%= dom_id(verified_user) %>_phone" style="float:left">
<span style="float:left">
<%= verified_user.phone %>
<%= mask_phone(verified_user.phone) %>
</span>
<span style="float:left;padding-left:30px">
<%= render '/verification/sms/form', sms: Verification::Sms.new(phone: verified_user.phone) %>
<%= render 'form', url: sms_path, verified_user: verified_user %>
</span>
</li>
<br/><br/><br/>
Expand Down
4 changes: 3 additions & 1 deletion config/locales/pages.en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@ en:
"Legal"
privacy:
"Privacy"
terms:
general_terms:
"Terms and Conditions"
census_terms:
"Census Terms"
transparency:
"Transparency"
opendata:
Expand Down
66 changes: 64 additions & 2 deletions config/locales/pages.es.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,71 @@ es:
legal:
"Legal"
privacy:
"Privacidad"
terms:
"Privacidad"
general_terms:
"Términos y Condiciones"
census_terms:
"Ley Orgánica 15/1999 (LOPD):
1º).- En el tratamiento y comprobación de datos de los usuarios que se den de alta en la Web, va a existir una recogida y comunicación de sus datos entre varias Direcciones Generales del Ayuntamiento, responsable cada una de sus propios ficheros de datos, que son los que van a dar cobertura jurídica LOPD al proyecto:
Fichero: “Gestión de procesos participativos” cuyo responsable es la Dirección General de Participación Ciudadana y es donde se van a recoger y tratar los datos de todos los usuarios de la web.
Fichero: “Padrón Municipal de Habitantes” cuyo responsable es la Dirección General de Estadística y donde constan todos los ciudadanos empadronados en Madrid
Fichero: “Servicios Atención al Ciudadano” cuyo responsable es la Dirección General de Calidad y Atención al Ciudadano y donde se trata la información entre otras de los datos registrados en el CRM en el que figura información detallada de las personas que han realizado alguna gestión en el Ayuntamiento a través de Línea Madrid.
2º).- El tratamiento de los usuarios que se den de alta en la Web va a tener varios niveles de acceso y en cada uno de ellos se van a tratar y recoger diversos datos, en función de que se precise autenticar o no el usuario, y que le van a habilitar a su vez para realizar una serie de acciones (que tenéis que definir).
a) El usuario se da de alta inicial en la Web aportando únicamente un correo electrónico. Este nivel 1 le permitirá........(lo tenéis que definir e informar al usuario).
La edad mínima para darse de alta es 16 años, de lo que habrá que informar, aunque en este nivel no se va a contrastar este dato.
La leyenda informativa de protección de datos que tendría que aparecer aquí sería la siguiente:
Los usuarios serán mayores de 16 años y los datos aportados serán incorporados y tratados por el Ayuntamiento de Madrid de acuerdo con la descripción del fichero que figura al final de esta información. Con carácter general los datos recogidos no podrán ser cedidos a terceros salvo en los supuestos previstos en el artículo 11 de la Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de carácter Personal. El interesado podrá ejercer los derechos de acceso, rectificación, cancelación y oposición, ante el órgano responsable que aparece al final de la información, todo lo cual se informa en el cumplimiento del artículo 5 de la Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal.
Nombre del fichero/tratamiento: GESTIÓN DE PROCESOS PARTICIPATIVOS
Finalidad del fichero/tratamiento: Gestionar los procesos participativos para el control de la habilitación de las personas que participan en los mismos y recuento meramente numérico y estadístico de los resultados derivados de los procesos de participación ciudadana
Órgano responsable: DIRECCIÓN GENERAL DE PARTICIPACIÓN CIUDADANA (c/ Alcalá 45, 28014-Madrid)
b) Desde el nivel 1, se le dará la posibilidad al usuario de que pueda acceder a un nivel superior (nivel 3) que le permitirá......... (lo tenéis que definir e informar al usuario).
Para acceder a este nivel 3, sería necesario estar empadronado en Madrid, ser mayor de edad y disponer de un código de verificación que le será facilitado por el Ayuntamiento (DG de Participación Ciudadana).
Para ello el usuario deberá aportar los siguientes datos:
Nombre y apellidos; DNI-pasaporte o tarjeta residencia; fecha de nacimiento. (No he incluido el domicilio pues con el campo DNI, tanto padrón como CRM os chequea la información).
Estos datos se contrastarán (con el consentimiento del usuario) con Padrón y con CRM, con el objeto de autenticar el empadronamiento y comprobar si ya disponemos de teléfonos móviles o correos electrónicos que el usuario nos haya aportado previamente y que se le mostrarán en pantalla, al objeto de que confirme en cual de ellos quiere recibir el código de verificación que le acreditará en el nivel 3.
En el caso de que no exista información previa de correo electrónico o móvil del usuario, o existiendo y mostrada al usuario, este no confirme dicho canal para recibir el código de verificación, se le dará la posibilidad de recibirlo en el domicilio que figure en el padrón municipal o pasarse por una OAC de Línea Madrid para que se lo faciliten (tenéis que definir como se le informa de ambas posibilidades)
La leyenda informativa de protección de datos que tendría que aparecer aquí sería la siguiente:
Para disponer del código de verificación hay que ser mayor de edad y estar empadronado en Madrid aportando los datos indicados anteriormente, los cuales serán contrastados por la Dirección General de Participación Ciudadana con los ficheros “Padrón Municipal de Habitantes” cuyo responsable es la Dirección General de Estadística y “Servicios Atención al Ciudadano” cuyo responsable es la Dirección General de Calidad y Atención al Ciudadano.
Para contrastar esta información se precisa su consentimiento marcando esta casilla □
Los datos aportados serán incorporados y tratados por la Dirección General de Participación Ciudadana en el fichero “Gestión de Procesos Participativos” indicado anteriormente.
Nota sobre la mayoría de edad para el nivel 3.
He diferenciado entre nivel 1 (mayor de 16 años), del nivel 3 (mayoría de edad), teniendo en consideración que por la información que me habéis pasado y dado que en el nivel 3 se va a poder presentar iniciativas normativas, he tomado como referencia, creo, que la única ley que se podría aplicar por analogía y es la Ley Orgánica 3/1984 reguladora de la iniciativa legislativa popular, en cuyo artículo 1 establece la necesidad de ser mayor de edad. (No obstante el tema de la edad lo tendréis que valorar y decidir).
c) Por último, también existirá la posibilidad para aquellos usuarios que no sean mayores de edad, o siéndolo, no estén empadronados en Madrid, de que puedan disponer de un nivel superior (nivel 2) que no precisará autenticación de datos por el Ayuntamiento.
Para ello desde el nivel 1, se informará que en el caso de no ser mayor de edad, o siendolo, no se este empadronado en Madrid se podrá disponer de un código de acceso que se le enviará al número de móvil que nos facilite y que le permitirá.....( lo tenéis que definir e informar al usuario).
La leyenda informativa de protección de datos que tendría que aparecer aquí sería la siguiente:
Los datos aportados serán incorporados y tratados por la Dirección General de Participación Ciudadana en el fichero “Gestión de Procesos Participativos” indicado anteriormente.
3º) Teniendo en cuenta lo anterior, cumpliremos con las obligaciones de información y consentimiento previstas en la LOPD.
No obstante y teniendo en consideración que en un primer momento vais a disponer, tratar y contrastar una gran cantidad de datos de los usuarios en los diferentes perfiles de acceso, es necesario que seáis especialmente cuidadosos con el principio de calidad de los datos, todo ello a los efectos de evitar errores en la recogida y tratamiento de los datos, teniendo especial importancia el disponer siempre de la prueba del consentimiento de los usuarios en el nivel 3, para la comprobación de sus datos en los dos ficheros.
4º) Para terminar tenemos que trabajar conjuntamente con la DG de Participación Ciudadana en las medidas de seguridad LOPD a aplicar a la Web y en como se documentan dichas medidas."
transparency:
"Transparencia"
opendata:
Expand Down
9 changes: 4 additions & 5 deletions config/locales/verification.en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ en:
spanish_id: 'Spanish ID'
passport: 'Passport'
residence_card: 'Residence card'
accept_terms_text: "I accept the terms to access the city Census"
accept_terms_link: "Read terms"
form_errors: 'prevented your residence verification'
error_verifying_census: 'The census of the city of Madrid could not verify your information. Pero revise de information and try again or get in touch with us.'
create:
Expand Down Expand Up @@ -34,8 +36,6 @@ en:
success: 'Correct code. You are now a verified user'
level_two:
success: 'Correct code'
form:
submit_button: Send
alert:
verify_attemps_left: 'You have reached the maximum number of sms verification tries'
email:
Expand All @@ -49,8 +49,6 @@ en:
success: "We have send you a confirmation email to your email account: %{email}"
alert:
failure: "There was a problem sending you an email to your account"
form:
submit_button: Send
letter:
new:
title: Final Verification
Expand All @@ -69,4 +67,5 @@ en:
email_title: Emails
phone_title: Phones
use_another_phone: Use another phone

form:
submit_button: Send
8 changes: 4 additions & 4 deletions config/locales/verification.es.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ es:
spanish_id: 'DNI'
passport: 'Pasaporte'
residence_card: 'Tarjeta de residencia'
accept_terms_text: "Acepto los terminos de acceso al Padrón"
accept_terms_link: "Leer términos"
form_errors: 'evitaron verificar tu residencia'
error_verifying_census: 'El Padrón de Madrid no pudo verificar tu información. Revisa la información ó ponte en contacto con nosotros.'
create:
Expand Down Expand Up @@ -34,8 +36,6 @@ es:
success: 'Código correcto. Ya eres un usuario verificado'
level_two:
success: 'Código incorrecto'
form:
submit_button: Enviar
alert:
verify_attemps_left: 'Has llegado al máximo número de intentos de verificar tu teléfono.'
email:
Expand All @@ -49,8 +49,6 @@ es:
success: "Te hemos enviado un email de confirmación a tu cuenta: %{email}"
alert:
failure: "Hubo un problema enviándote un email a tu cuenta"
form:
submit_button: Enviar
letter:
new:
title: Final Verification
Expand All @@ -69,3 +67,5 @@ es:
email_title: Emails
phone_title: Teléfonos
use_another_phone: Utilizar otro teléfono
form:
submit_button: Enviar
7 changes: 6 additions & 1 deletion spec/controllers/pages_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,13 @@
expect(response).to be_ok
end

it 'should include a general terms page' do
get :general_terms
expect(response).to be_ok
end

it 'should include a terms page' do
get :terms
get :census_terms
expect(response).to be_ok
end
end
Expand Down
1 change: 1 addition & 0 deletions spec/factories.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
document_type 1
date_of_birth Date.new(1980, 12, 31)
postal_code "28013"
terms_of_service '1'
end

factory :verification_sms, class: Verification::Sms do
Expand Down
2 changes: 1 addition & 1 deletion spec/features/verification/email_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
visit verified_user_path

within("#verified_user_#{verified_user.id}_email") do
expect(page).to have_content 'rock@example.com'
expect(page).to have_content 'roc*@example.com'
click_button "Send"
end

Expand Down
Loading

0 comments on commit 3ab5cd6

Please sign in to comment.