module IntercomApp::SessionsConcern

Public Instance Methods

callback() click to toggle source
# File lib/intercom-app/sessions_concern.rb, line 13
def callback
  if response = request.env['omniauth.auth']
    app = {
      intercom_token: response['credentials']['token'],
      intercom_app_id: response['extra']['raw_info']['app']['id_code'],
      name: response['extra']['raw_info']['name'],
      email: response['extra']['raw_info']['email']
    }
    app = app.merge(callback_hash.call(session, response)) if callback_hash
    session[:intercom] = IntercomApp::SessionRepository.store(app)
    session[:intercom_app_id] = app[:intercom_app_id]
    IntercomApp::WebhooksManager.new(intercom_token: app[:intercom_token]).create_webhooks_subscriptions if IntercomApp.configuration.webhooks.present?
    redirect_to return_address unless IntercomApp.configuration.oauth_modal
  else
    redirect_to login_url
  end
end
destroy() click to toggle source
# File lib/intercom-app/sessions_concern.rb, line 31
def destroy
  session[:intercom] = nil
  session[:intercom_app_id] = nil
  session[:intercom_token] = nil
  redirect_to login_url
end
login() click to toggle source
# File lib/intercom-app/sessions_concern.rb, line 9
def login
  store_in_session_before_login.call(session, params) if store_in_session_before_login
end

Private Instance Methods

callback_hash() click to toggle source
# File lib/intercom-app/sessions_concern.rb, line 43
def callback_hash
  IntercomApp.configuration.callback_hash
end
return_address() click to toggle source
# File lib/intercom-app/sessions_concern.rb, line 39
def return_address
  session.delete(:return_to) || '/'
end
store_in_session_before_login() click to toggle source
# File lib/intercom-app/sessions_concern.rb, line 47
def store_in_session_before_login
  IntercomApp.configuration.store_in_session_before_login
end