module Vulgata::Controller extend ActiveSupport::Concern included do before_action :set_vulgata_user before_action :set_tranlsation_classes_if_admin before_action :set_tranlsation_count_if_translator layout :layout_by_role end def set_vulgata_user redirect_to not_logged_in_path if vulgata_current_user.blank? @vulgata_user = vulgata_current_user end def set_tranlsation_classes_if_admin @classes_translating = Vulgata::Helpers.classes_translating if vulgata_current_user.vulgata_admin? end def set_tranlsation_count_if_translator @translated_this_week = Vulgata::TranslationState.where(user: @vulgata_user, status: Vulgata::TranslationState.statuses[:done]).where('updated_at >= ?', 1.week.ago.midnight).count if vulgata_current_user.vulgata_translator? end def layout_by_role if vulgata_current_user.vulgata_admin? 'vulgata/admin' elsif vulgata_current_user.vulgata_proofreader? 'vulgata/proofreader' else 'vulgata/application' end end def root_redirect redirect_path = main_app.root_path redirect_path = vulgata_user_path(user_id: @vulgata_user.id, user_type: @vulgata_user.class.name) if vulgata_current_user.vulgata_translator? || vulgata_current_user.vulgata_proofreader? redirect_path = admin_dashboard_path if vulgata_current_user.vulgata_admin? redirect_to redirect_path end def authorize_admin redirect_to root_path unless vulgata_current_user.vulgata_admin? end def authorize_admin_or_proofreader redirect_to root_path unless (vulgata_current_user.vulgata_admin? || vulgata_current_user.vulgata_proofreader?) end def authorize_all_role_holders redirect_to root_path unless (vulgata_current_user.vulgata_admin? || vulgata_current_user.vulgata_proofreader? || vulgata_current_user.vulgata_translator?) end def authorize_admin_proofreader_or_assigned_translator translation_state redirect_to root_path unless (vulgata_current_user.vulgata_admin? || vulgata_current_user.vulgata_proofreader? || translation_state.user == vulgata_current_user) end def translation_queue_sort 'priority DESC, created_at DESC' end private def not_logged_in_path main_app.root_path end def set_translation_state_and_source_state @source_translation_state = @translation_state.source_translation_state @source_translation = @source_translation_state.preprocced_translation_data || {} @translation = @translation_state.preprocced_translation_data || {} @keys_to_translate = @translation_state.translated_attribute_names end end