From c32cc8847340fa5309e62bf9c3ce21138f688e47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Bol=C3=ADvar?= Date: Mon, 4 Dec 2023 17:46:32 +0100 Subject: [PATCH] Add translations and skip first login if only center verification is configured --- ...iauth_registrations_controller_override.rb | 21 +++++++++++++++++++ .../devise/sessions_controller_override.rb | 21 +++++++++++++++++++ config/i18n-tasks.yml | 1 + config/locales/en.yml | 4 ++++ lib/decidim/centers/engine.rb | 7 +++++++ spec/lib/overrides_spec.rb | 2 ++ 6 files changed, 56 insertions(+) create mode 100644 app/controllers/concerns/decidim/centers/devise/omniauth_registrations_controller_override.rb create mode 100644 app/controllers/concerns/decidim/centers/devise/sessions_controller_override.rb diff --git a/app/controllers/concerns/decidim/centers/devise/omniauth_registrations_controller_override.rb b/app/controllers/concerns/decidim/centers/devise/omniauth_registrations_controller_override.rb new file mode 100644 index 0000000..bc83333 --- /dev/null +++ b/app/controllers/concerns/decidim/centers/devise/omniauth_registrations_controller_override.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require "active_support/concern" + +module Decidim + module Centers + module Devise + module OmniauthRegistrationsControllerOverride + extend ActiveSupport::Concern + + included do + alias_method :original_first_login_and_not_authorized?, :first_login_and_not_authorized? + + def first_login_and_not_authorized?(user) + original_first_login_and_not_authorized?(user) && Decidim::Verifications.workflows.any? { |manifest| manifest.name != "center" } + end + end + end + end + end +end diff --git a/app/controllers/concerns/decidim/centers/devise/sessions_controller_override.rb b/app/controllers/concerns/decidim/centers/devise/sessions_controller_override.rb new file mode 100644 index 0000000..62830fb --- /dev/null +++ b/app/controllers/concerns/decidim/centers/devise/sessions_controller_override.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require "active_support/concern" + +module Decidim + module Centers + module Devise + module SessionsControllerOverride + extend ActiveSupport::Concern + + included do + alias_method :original_first_login_and_not_authorized?, :first_login_and_not_authorized? + + def first_login_and_not_authorized?(user) + original_first_login_and_not_authorized?(user) && current_organization.available_authorizations.excluding("center").any? + end + end + end + end + end +end diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml index 4ec9b9c..c5ea8f8 100644 --- a/config/i18n-tasks.yml +++ b/config/i18n-tasks.yml @@ -8,3 +8,4 @@ ignore_missing: ignore_unused: - decidim.centers.admin_log.* + - decidim.authorization_handlers.* diff --git a/config/locales/en.yml b/config/locales/en.yml index b08e088..1366702 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1,6 +1,10 @@ --- en: decidim: + authorization_handlers: + center: + explanation: Get verified with the center of the user + name: Center centers: actions: confirm_destroy: Are you sure you want to delete this center? diff --git a/lib/decidim/centers/engine.rb b/lib/decidim/centers/engine.rb index de8dd3e..5495129 100644 --- a/lib/decidim/centers/engine.rb +++ b/lib/decidim/centers/engine.rb @@ -29,6 +29,13 @@ class Engine < ::Rails::Engine Decidim::User.include(Decidim::Centers::UserOverride) end + initializer "decidim_centers.overrides", after: "decidim.action_controller" do + config.to_prepare do + Decidim::Devise::SessionsController.include(Decidim::Centers::Devise::SessionsControllerOverride) + Decidim::Devise::OmniauthRegistrationsController.include(Decidim::Centers::Devise::OmniauthRegistrationsControllerOverride) + end + end + initializer "decidim_centers.sync" do ActiveSupport::Notifications.subscribe "decidim.centers.user.updated" do |_name, data| Decidim::Centers::SyncCenterUserJob.perform_now(data) diff --git a/spec/lib/overrides_spec.rb b/spec/lib/overrides_spec.rb index d72c564..060969b 100644 --- a/spec/lib/overrides_spec.rb +++ b/spec/lib/overrides_spec.rb @@ -12,6 +12,8 @@ "/app/commands/decidim/create_omniauth_registration.rb" => "586139f98ded0645eb83e480ef5dd6bd", "/app/commands/decidim/create_registration.rb" => "8bf3456d42c21036d08ccafe16e9105a", "/app/commands/decidim/update_account.rb" => "29d81617f5bf1af310d2777a916b4d8b", + "/app/controllers/decidim/devise/omniauth_registrations_controller.rb" => "05bc35af4b5f855736f14efbd22e439b", + "/app/controllers/decidim/devise/sessions_controller.rb" => "235cbe9844cdd39f65c72d3dc87f5f23", "/app/forms/decidim/account_form.rb" => "73a8150ed1620d515a1c96f680e98ec0", "/app/forms/decidim/omniauth_registration_form.rb" => "ee09e2b5675c9d1cb4dc955dded05393", "/app/forms/decidim/registration_form.rb" => "32b55eb5a1742b6b8ed7bbb4c7643dc0",