identity-vault/app/controllers/application_controller.rb
2025-09-02 13:53:47 -04:00

66 lines
1.7 KiB
Ruby

class ApplicationController < ActionController::Base
include PublicActivity::StoreController
include IsSneaky
helper_method :current_identity, :identity_signed_in?, :current_onboarding_step
before_action :invalidate_v1_sessions, :authenticate_identity!, :set_honeybadger_context
before_action :set_paper_trail_whodunnit
def current_identity
@current_identity ||= Identity.find_by(id: session[:identity_id]) if session[:identity_id]
end
alias_method :user_for_public_activity, :current_identity
def user_for_paper_trail = current_identity&.id
def identity_signed_in? = !!current_identity
def invalidate_v1_sessions
if cookies["_identity_vault_session"]
cookies.delete("_identity_vault_session",
path: "/",
secure: Rails.env.production?,
httponly: true)
end
end
def authenticate_identity!
unless identity_signed_in?
session[:oauth_return_to] = request.original_url unless request.xhr?
# JANK ALERT
hide_some_data_away
# EW
return if controller_name == "onboardings"
redirect_to welcome_onboarding_path
end
end
def set_honeybadger_context
Honeybadger.context({
identity_id: current_identity&.id
})
end
def current_onboarding_step
identity = current_identity
return :basic_info unless identity&.persisted?
return :document unless identity.verifications.where(status: [ "approved", "pending" ]).any?
:submitted
rescue => e
Rails.logger.error "Error determining onboarding step: #{e.message}"
:basic_info
end
rescue_from ActiveRecord::RecordNotFound do |e|
flash[:error] = "sorry, couldn't find that object... (404)"
redirect_to root_path
end
end