# frozen_string_literal: true require "savon" require "rails" require "decidim/core" require "decidim/consultations" require "deface" module Decidim module ActionDelegator # This is the engine that runs on the public interface of action_delegator. # Handles all the logic related to delegation except verifications class Engine < ::Rails::Engine isolate_namespace Decidim::ActionDelegator routes do # Add engine routes here authenticate(:user) do resources :user_delegations, controller: :user_delegations root to: "user_delegations#index" end end config.to_prepare do # override votes questions Decidim::Consultations::VoteQuestion.include(Decidim::ActionDelegator::Consultations::VoteQuestionOverride) Decidim::Consultations::MultipleVoteQuestion.include(Decidim::ActionDelegator::Consultations::MultipleVoteQuestionOverride) Decidim::Consultations::VoteForm.include(Decidim::ActionDelegator::Consultations::VoteFormOverride) Decidim::Consultations::MultiVoteForm.include(Decidim::ActionDelegator::Consultations::VoteFormOverride) Decidim::Consultations::Vote.include(Decidim::ActionDelegator::Consultations::VoteOverride) Decidim::Consultations::Permissions.include(Decidim::ActionDelegator::Consultations::PermissionsOverride) end initializer "decidim_action_delegator.overrides", after: "decidim.action_controller" do config.to_prepare do Decidim::Consultations::QuestionVotesController.include(Decidim::ActionDelegator::Consultations::QuestionVotesControllerOverride) Decidim::Consultations::QuestionsController.include(Decidim::ActionDelegator::Consultations::QuestionsControllerOverride) Decidim::Consultations::ConsultationsController.include(Decidim::ActionDelegator::Consultations::ConsultationsControllerOverride) Decidim::Consultations::QuestionMultipleVotesController.include(Decidim::ActionDelegator::Consultations::QuestionMultipleVotesControllerOverride) end end initializer "decidim_action_delegator.authorizations" do next unless Decidim::ActionDelegator.authorization_expiration_time.positive? Decidim::Verifications.register_workflow(:delegations_verifier) do |workflow| workflow.action_authorizer = "Decidim::ActionDelegator::Verifications::DelegationsAuthorizer" workflow.engine = Decidim::ActionDelegator::Verifications::DelegationsVerifier::Engine workflow.expires_in = Decidim::ActionDelegator.authorization_expiration_time workflow.time_between_renewals = 1.minute end end initializer "decidim_action_delegator.webpacker.assets_path" do |_app| Decidim.register_assets_path File.expand_path("app/packs", root) end initializer "decidim.user_menu" do Decidim.menu :user_menu do |menu| menu.add_item :vote_delegations, t("vote_delegations", scope: "layouts.decidim.user_profile"), decidim_action_delegator.user_delegations_path, position: 5.0, active: :exact end end end end end