Many management actions only make sense if a user has been selected beforehand. We updated :check_verified_user method to be able to check actions that need to have a user selected in order to avoid exceptions. We need this control as :only_verified_user is not restrictive enough. The reason is that the :managed_user method used in the :only_verified_user if it does not find a user it does an initializce (find_or_initialize_by). This causes that when we have "skip_verification" to true, it returns this non-persisted user as "verified". These changes affect the actions of Account, Budgets and Proposals Controller when no user is selected.
65 lines
1.5 KiB
Ruby
65 lines
1.5 KiB
Ruby
class Management::BaseController < ActionController::Base
|
|
include GlobalizeFallbacks
|
|
layout "management"
|
|
default_form_builder ConsulFormBuilder
|
|
|
|
before_action :verify_manager
|
|
before_action :set_locale
|
|
|
|
helper_method :managed_user
|
|
helper_method :current_user
|
|
helper_method :manager_logged_in
|
|
|
|
private
|
|
|
|
def verify_manager
|
|
raise ActionController::RoutingError.new("Not Found") if current_manager.blank?
|
|
end
|
|
|
|
def current_manager
|
|
session[:manager]
|
|
end
|
|
|
|
def current_user
|
|
managed_user
|
|
end
|
|
|
|
def managed_user
|
|
@managed_user ||= Verification::Management::ManagedUser.find(
|
|
session[:document_type],
|
|
session[:document_number]
|
|
)
|
|
end
|
|
|
|
def check_verified_user(alert_msg)
|
|
return if managed_user.persisted? && managed_user.level_two_or_three_verified?
|
|
|
|
message = managed_user.persisted? ? alert_msg : t("management.sessions.need_managed_user")
|
|
redirect_to management_document_verifications_path, alert: message
|
|
end
|
|
|
|
def set_locale
|
|
if params[:locale] && I18n.available_locales.include?(params[:locale].to_sym)
|
|
session[:locale] = params[:locale]
|
|
end
|
|
|
|
session[:locale] ||= I18n.default_locale
|
|
|
|
I18n.locale = session[:locale]
|
|
end
|
|
|
|
def current_budget
|
|
Budget.current
|
|
end
|
|
|
|
def clear_password
|
|
session[:new_password] = nil
|
|
end
|
|
|
|
def manager_logged_in
|
|
if current_manager
|
|
@manager_logged_in = User.find_by_manager_login(session[:manager]["login"])
|
|
end
|
|
end
|
|
end
|