class Fragmentary::UserSession
Public Class Methods
new(user, &block)
click to toggle source
# File lib/fragmentary/user_session.rb, line 9 def initialize(user, &block) # app is from Rails::ConsoleMethods. It returns an object ActionDispatch::Integration::Session.new(Rails.application) # with some extensions. See https://github.com/rails/rails/blob/master/railties/lib/rails/console/app.rb # The session object has instance methods get, post etc. # See https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/testing/integration.rb @session = app sign_in if @credentials = session_credentials(user) instance_eval(&block) if block_given? end
Public Instance Methods
method_missing(method, *args)
click to toggle source
# File lib/fragmentary/user_session.rb, line 24 def method_missing(method, *args) @session.send(method, *args) end
session_credentials(user)
click to toggle source
# File lib/fragmentary/user_session.rb, line 19 def session_credentials(user) credentials = user.try(:credentials) credentials.is_a?(Proc) ? credentials.call : credentials end
sign_in()
click to toggle source
# File lib/fragmentary/user_session.rb, line 32 def sign_in get Fragmentary.config.get_sign_in_path # necessary in order to get the csrf token # NOTE: In Rails 5, params is changed to a named argument, i.e. :params => {...}. Will need to be changed. post Fragmentary.config.post_sign_in_path, @credentials.merge(:authenticity_token => request.session[:_csrf_token]) if @session.redirect? follow_redirect! else raise "Sign in failed with credentials #{@credentials.inspect}" end end
sign_out()
click to toggle source
# File lib/fragmentary/user_session.rb, line 28 def sign_out post Fragmentary.config.sign_out_path, {:_method => 'delete', :authenticity_token => request.session[:_csrf_token]} end