mirror of
https://github.com/System-End/identity-vault.git
synced 2026-04-19 16:28:21 +00:00
66 lines
1.7 KiB
Ruby
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
|