mirror of
https://github.com/TracksApp/tracks.git
synced 2025-12-16 15:20:13 +01:00
47 lines
1.3 KiB
Ruby
47 lines
1.3 KiB
Ruby
class SessionBackdoorController < ::ApplicationController
|
|
skip_before_filter :login_required
|
|
|
|
def create
|
|
session['user_id'] = params[:user_id]
|
|
user = User.find(params[:user_id])
|
|
set_current_user(user)
|
|
user.remember_me
|
|
cookies[:auth_token] = { :value => user.remember_token, :expires => user.remember_token_expires_at }
|
|
redirect_to root_path
|
|
end
|
|
|
|
def expire_session
|
|
current_user.forget_me if logged_in?
|
|
cookies.delete :auth_token
|
|
session['user_id'] = nil
|
|
reset_session
|
|
session['expiry_time'] = Time.now
|
|
end
|
|
end
|
|
|
|
module TracksLoginHelper
|
|
begin
|
|
_routes = Rails.application.routes
|
|
_routes.disable_clear_and_finalize = true
|
|
_routes.clear!
|
|
Rails.application.routes_reloader.paths.each{ |path| load(path) }
|
|
_routes.draw do
|
|
# here you can add any route you want
|
|
match "/test_login_backdoor", to: "session_backdoor#create"
|
|
match "login/expire_session", to: "session_backdoor#expire_session"
|
|
end
|
|
ActiveSupport.on_load(:action_controller) { _routes.finalize! }
|
|
ensure
|
|
_routes.disable_clear_and_finalize = false
|
|
end
|
|
|
|
def request_signin_as(user)
|
|
visit "/test_login_backdoor?user_id=#{user.id}"
|
|
end
|
|
|
|
def signin_as(user)
|
|
session[:user_id] = user.id
|
|
@current_user = user
|
|
end
|
|
|
|
end
|