diff --git a/app/assets/fonts/icons.eot b/app/assets/fonts/icons.eot index fed38cb4b..3046c50cc 100644 Binary files a/app/assets/fonts/icons.eot and b/app/assets/fonts/icons.eot differ diff --git a/app/assets/fonts/icons.svg b/app/assets/fonts/icons.svg index 602058baf..c107e740d 100644 --- a/app/assets/fonts/icons.svg +++ b/app/assets/fonts/icons.svg @@ -44,4 +44,5 @@ + diff --git a/app/assets/fonts/icons.ttf b/app/assets/fonts/icons.ttf index 96e944231..b933f1c3f 100644 Binary files a/app/assets/fonts/icons.ttf and b/app/assets/fonts/icons.ttf differ diff --git a/app/assets/fonts/icons.woff b/app/assets/fonts/icons.woff index fb76f3b26..feb047bd0 100644 Binary files a/app/assets/fonts/icons.woff and b/app/assets/fonts/icons.woff differ diff --git a/app/assets/stylesheets/icons.scss b/app/assets/stylesheets/icons.scss index 93f7ebcf3..eda8b979d 100644 --- a/app/assets/stylesheets/icons.scss +++ b/app/assets/stylesheets/icons.scss @@ -148,3 +148,6 @@ .icon-youtube:before { content: "K"; } +.icon-letter:before { + content: "L"; +} \ No newline at end of file diff --git a/app/assets/stylesheets/layout.scss b/app/assets/stylesheets/layout.scss index e947fcfd9..d7d9a239b 100644 --- a/app/assets/stylesheets/layout.scss +++ b/app/assets/stylesheets/layout.scss @@ -1761,6 +1761,38 @@ table { } } +.verify { + margin-bottom: rem-calc(48); + margin-top: rem-calc(24); + + h1 { + color: $check; + + .icon-check { + line-height: rem-calc(30); + vertical-align: middle; + } + } + + .letter-divider { + border-top: 1px solid #DDDDDD; + clear: both; + height: 0; + margin: rem-calc(24) 0; + position: relative; + + .icon-letter { + background: white; + color: $info-color; + font-size: rem-calc(24); + margin-left: rem-calc(-27); + padding: 0 rem-calc(12); + position: absolute; + top: rem-calc(-12); + } + } +} + // 18. Comments // - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index d5d351038..3ef1245e8 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -103,6 +103,8 @@ class ApplicationController < ActionController::Base end def verify_verified! - redirect_to(account_path, notice: t('verification.redirect_notices.already_verified')) if current_user.level_three_verified? + if current_user.level_three_verified? + redirect_to(account_path, notice: t('verification.redirect_notices.already_verified')) + end end end diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index daa90c7da..20093c33e 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -46,6 +46,9 @@ class PagesController < ApplicationController def participation_world end + def verify + end + def blog redirect_to "http://diario.madrid.es/participa/" end diff --git a/app/controllers/verification/letter_controller.rb b/app/controllers/verification/letter_controller.rb index 105eef0ad..bf5033b32 100644 --- a/app/controllers/verification/letter_controller.rb +++ b/app/controllers/verification/letter_controller.rb @@ -1,9 +1,12 @@ class Verification::LetterController < ApplicationController - before_action :authenticate_user! - before_action :verify_resident! - before_action :verify_phone! - before_action :verify_verified! - before_action :verify_lock + before_action :authenticate_user!, except: [:edit, :update] + before_action :login_via_form, only: :update + + before_action :verify_resident!, if: :signed_in? + before_action :verify_phone!, if: :signed_in? + before_action :verify_verified!, if: :signed_in? + before_action :verify_lock, if: :signed_in? + skip_authorization_check def new @@ -13,20 +16,23 @@ class Verification::LetterController < ApplicationController def create @letter = Verification::Letter.new(user: current_user) @letter.save - redirect_to edit_letter_path + redirect_to letter_path + end + + def show end def edit - @letter = Verification::Letter.new(user: current_user) + @letter = Verification::Letter.new end def update - @letter = Verification::Letter.new(letter_params.merge(user: current_user)) - if @letter.verified? + @letter = Verification::Letter.new(letter_params.merge(user: current_user, verify: true)) + if @letter.valid? current_user.update(verified_at: Time.now) redirect_to account_path, notice: t('verification.letter.update.flash.success') else - Lock.increase_tries(@letter.user) + Lock.increase_tries(@letter.user) if @letter.user render :edit end end @@ -34,7 +40,7 @@ class Verification::LetterController < ApplicationController private def letter_params - params.require(:letter).permit(:verification_code) + params.require(:verification_letter).permit(:verification_code, :email, :password) end def verify_phone! @@ -43,4 +49,12 @@ class Verification::LetterController < ApplicationController end end -end \ No newline at end of file + def login_via_form + user = User.find_by email: letter_params[:email] + if user && user.valid_password?(letter_params[:password]) + sign_in(user) + end + end + + +end diff --git a/app/models/verification/letter.rb b/app/models/verification/letter.rb index aa6fd6a4b..897960a72 100644 --- a/app/models/verification/letter.rb +++ b/app/models/verification/letter.rb @@ -1,9 +1,14 @@ class Verification::Letter include ActiveModel::Model - attr_accessor :user, :verification_code + attr_accessor :user, :verification_code, :email, :password, :verify - validates :user, presence: true + validates :email, presence: true + validates :password, presence: true + validates :verification_code, presence: true + + validate :validate_existing_user + validate :validate_correct_code, if: :verify? def save valid? && @@ -14,20 +19,21 @@ class Verification::Letter user.update(letter_requested_at: Time.now, letter_verification_code: generate_verification_code) end - def verified? - validate_letter_sent - validate_correct_code - errors.blank? - end - - def validate_letter_sent - errors.add(:verification_code, I18n.t('verification.letter.errors.letter_not_sent')) unless - user.letter_sent_at.present? + def validate_existing_user + unless user + errors.add(:email, I18n.t('devise.failure.invalid', authentication_keys: 'email')) + end end def validate_correct_code - errors.add(:verification_code, I18n.t('verification.letter.errors.incorect_code')) unless - user.letter_verification_code == verification_code + return if errors.include?(:verification_code) + if user.try(:letter_verification_code) != verification_code + errors.add(:verification_code, I18n.t('verification.letter.errors.incorrect_code')) + end + end + + def verify? + verify.present? end def increase_letter_verification_tries diff --git a/app/views/pages/verify.html.erb b/app/views/pages/verify.html.erb new file mode 100644 index 000000000..0a3110b29 --- /dev/null +++ b/app/views/pages/verify.html.erb @@ -0,0 +1,27 @@ +
+
+
+

+ + <%= t("pages.verify.title") %> +

+ +

<%= t("pages.verify.info") %>

+
+ +
+
+ + "> + + + "> + + + "> + + " class="button radius success expand"> +
+
+
+
diff --git a/app/views/verification/letter/edit.html.erb b/app/views/verification/letter/edit.html.erb index d5722f1fb..6768d9780 100644 --- a/app/views/verification/letter/edit.html.erb +++ b/app/views/verification/letter/edit.html.erb @@ -1,22 +1,31 @@ -