class Locomotive::Steam::Middlewares::Auth

Process all the authentication actions:

It is also in charge to load the current authenticated resource from the session and put it in the liquid context.

Public Instance Methods

_call() click to toggle source
# File lib/locomotive/steam/middlewares/auth.rb, line 20
def _call
  load_authenticated_entry

  auth_options = AuthOptions.new(site, params)

  return unless auth_options.valid?

  send(:"#{auth_options.action}", auth_options)
end

Private Instance Methods

append_message(message) click to toggle source
# File lib/locomotive/steam/middlewares/auth.rb, line 103
def append_message(message)
  log "[Auth] status message = #{message.inspect}"

  message ||= 'error'
  liquid_assigns["auth_#{message}"] = "auth_#{message}"
end
forgot_password(options) click to toggle source
# File lib/locomotive/steam/middlewares/auth.rb, line 72
def forgot_password(options)
  return if authenticated?

  status = services.auth.forgot_password(options, default_liquid_context)

  append_message(status)
end
load_authenticated_entry() click to toggle source
# File lib/locomotive/steam/middlewares/auth.rb, line 93
def load_authenticated_entry
  entry_type = request.session[:authenticated_entry_type]
  entry_id   = request.session[:authenticated_entry_id]

  if entry = services.auth.find_authenticated_resource(entry_type, entry_id)
    env['steam.authenticated_entry'] = entry
    liquid_assigns["current_#{entry_type.singularize}"] = entry
  end
end
reset_password(options) click to toggle source
# File lib/locomotive/steam/middlewares/auth.rb, line 80
def reset_password(options)
  return if authenticated?

  status, entry = services.auth.reset_password(options, request)

  if status == :password_reset
    store_authenticated(entry)
    redirect_to options.callback || mounted_on
  end

  append_message(status)
end
sign_in(options) click to toggle source
# File lib/locomotive/steam/middlewares/auth.rb, line 47
def sign_in(options)
  return if authenticated?

  status, entry = services.auth.sign_in(options, request)

  if status == :signed_in
    store_authenticated(entry)
    redirect_to options.callback || mounted_on
  end

  append_message(status)
end
sign_out(options) click to toggle source
# File lib/locomotive/steam/middlewares/auth.rb, line 60
def sign_out(options)
  return unless authenticated?

  services.auth.sign_out(load_authenticated_entry, request)

  store_authenticated(nil)

  redirect_to options.callback || path

  append_message(:signed_out)
end
sign_up(options) click to toggle source
# File lib/locomotive/steam/middlewares/auth.rb, line 32
def sign_up(options)
  return if authenticated? || !is_recaptcha_valid?(options.type, options.recaptcha_response)

  status, entry = services.auth.sign_up(options, default_liquid_context, request)

  if status == :entry_created
    store_authenticated(entry)
    redirect_to options.callback || mounted_on
  else
    liquid_assigns['auth_entry'] = entry
  end

  append_message(status)
end