module AuthRocket::ControllerHelper

Private Instance Methods

ar_account_url(**params) click to toggle source
# File lib/authrocket/rails/controller_helper.rb, line 48
def ar_account_url(**params)
  if id = params.delete(:id) || current_org&.id
    loginrocket_url(path: "/accounts/#{id}", **params)
  else
    ar_accounts_url(**params)
  end
end
ar_accounts_url(**params) click to toggle source

force - if false/nil, does not add ?force; else does add it

# File lib/authrocket/rails/controller_helper.rb, line 57
def ar_accounts_url(**params)
  if params[:force] || !params.key?(:force)
    params[:force] = nil
  else
    params.delete(:force)
  end
  loginrocket_url(path: '/accounts', **params)
end
ar_login_url(**params) click to toggle source
# File lib/authrocket/rails/controller_helper.rb, line 66
def ar_login_url(**params)
  loginrocket_url(path: '/login', **params)
end
ar_logout_url(**params) click to toggle source
# File lib/authrocket/rails/controller_helper.rb, line 70
def ar_logout_url(**params)
  params[:session] = current_session.id if current_session
  loginrocket_url(path: '/logout', **params)
end
ar_profile_url(**params) click to toggle source
# File lib/authrocket/rails/controller_helper.rb, line 75
def ar_profile_url(**params)
  loginrocket_url(path: '/profile', **params)
end
ar_signup_url(**params) click to toggle source
# File lib/authrocket/rails/controller_helper.rb, line 79
def ar_signup_url(**params)
  loginrocket_url(path: '/signup', **params)
end
conditional_login() click to toggle source

returns: bool – whether session was updated/replaced

# File lib/authrocket/rails/controller_helper.rb, line 94
def conditional_login
  return unless params[:token]
  if s = AuthRocket::Session.from_token(params[:token])
    @_current_session = s
    session[:ar_token] = params[:token]
    true
  end
end
current_membership() click to toggle source
# File lib/authrocket/rails/controller_helper.rb, line 36
def current_membership
  # LR always sends a JWT with exactly one membership/org
  # other API generated JWTs may vary
  return unless current_user
  current_user.memberships.each{|m| return m if m.selected }.first
end
current_org() click to toggle source
# File lib/authrocket/rails/controller_helper.rb, line 43
def current_org
  current_membership&.org
end
current_session() click to toggle source
# File lib/authrocket/rails/controller_helper.rb, line 28
def current_session
  @_current_session ||= AuthRocket::Session.from_token(session[:ar_token])
end
current_user() click to toggle source
# File lib/authrocket/rails/controller_helper.rb, line 32
def current_user
  current_session&.user
end
loginrocket_url(path: nil, **params) click to toggle source
# File lib/authrocket/rails/controller_helper.rb, line 83
def loginrocket_url(path: nil, **params)
  raise "Missing env LOGINROCKET_URL or credentials[:loginrocket_url]" if AuthRocket::Api.credentials[:loginrocket_url].blank?
  uri = Addressable::URI.parse AuthRocket::Api.credentials[:loginrocket_url]
  uri.path = path if path
  uri.path = '/' if uri.path.blank?
  uri.query_values = (uri.query_values||{}).merge(params).stringify_keys if params.present?
  uri.to_s
end
process_authorization_header() click to toggle source
# File lib/authrocket/rails/controller_helper.rb, line 13
def process_authorization_header
  if request.headers['authorization'] =~ %r{Bearer (.+)$}i
    if s = AuthRocket::Session.from_token($1)
      @_current_session = s
    end
  end
end
process_inbound_token() click to toggle source
# File lib/authrocket/rails/controller_helper.rb, line 6
def process_inbound_token
  # if GET (the only method LR uses), redirect to remove ?token=
  if request.get? && conditional_login
    redirect_to safe_this_uri
  end
end
require_login() click to toggle source
# File lib/authrocket/rails/controller_helper.rb, line 21
def require_login
  unless current_session
    redirect_to ar_login_url(redirect_uri: safe_this_uri), allow_other_host: true
  end
end
safe_this_uri() click to toggle source
# File lib/authrocket/rails/controller_helper.rb, line 103
def safe_this_uri
  full_url_for(request.get? ? params.to_unsafe_h.except(:account, :session, :token) : {})
end