module Truefactor::Controller::TruefactorizedMethods
Public Instance Methods
redirect_to_truefactor(args)
click to toggle source
# File lib/truefactor/controller.rb, line 99 def redirect_to_truefactor(args) origin = Truefactor.configuration.web_origin session[:truefactor_state] = SecureRandom.hex args[:state] = session[:truefactor_state] current_origin = "#{request.protocol}#{request.host_with_port}" args[:origin] = Truefactor.configuration.origin || current_origin args[:origin_name] = Truefactor.configuration.origin_name args[:icon] = Truefactor.configuration.icon redirect_to "#{origin}/#" + args.to_query end
truefactor()
click to toggle source
# File lib/truefactor/controller.rb, line 14 def truefactor tfid_type = Truefactor.configuration.tfid_type if cookies[:truefactor_state] && cookies.delete(:truefactor_state) == params[:state] cookies[:truefactor_response] = { value: params[:signs], expires: 1.hour.from_now } return render text: "Please close this window." elsif session[:truefactor_state] && session[:truefactor_state] == params[:state] session.delete :truefactor_state if params[:seeds] user = ::Truefactor._model_.find_by(tfid_type => params[:tfid]) if user flash[:alert] = "#{tfid_type} already exists" else user = ::Truefactor._model_.new puts tfid_type user.send "#{tfid_type}=", params[:tfid] user.truefactor = params[:seeds] user.save(validate: false) truefactor_sign_in user end return redirect_to '/' elsif params[:signs] if !session[:old_env] user = ::Truefactor._model_.find_by(tfid_type => params[:tfid]) v = if user && user.valid_truefactor?('login', params[:signs]) truefactor_sign_in user else flash[:alert] = "Invalid #{tfid_type} or signature" end return redirect_to '/' else session[:truefactor_signs] = params[:signs] return redirect_to session[:old_env]["path"]+'?'+session[:old_env]["params"].to_query end else raise "nothing" end else redirect_to_truefactor action: "register", tfid_type: Truefactor.configuration.tfid_type end end
truefactor_approve!(challenge)
click to toggle source
# File lib/truefactor/controller.rb, line 77 def truefactor_approve!(challenge) path = request.env['PATH_INFO'] #url_for(action: params[:action], controller: params[:controller]) if session[:old_env] && session[:old_env]["path"] == path && session[:truefactor_signs] # we are back session.delete :old_env if truefactor_current_user.valid_truefactor?(challenge, session.delete(:truefactor_signs)) return true end end params.delete :action params.delete :controller session[:old_env] = { path: path, params: params } redirect_to_truefactor action: "auth", challenge: challenge false end
truefactor_current_user()
click to toggle source
# File lib/truefactor/controller.rb, line 60 def truefactor_current_user if session[:user_id] @user ||= ::Truefactor._model_.find(session[:user_id]) else false end end
truefactor_sign_in(user)
click to toggle source
# File lib/truefactor/controller.rb, line 73 def truefactor_sign_in(user) session[:user_id] = user.id end
truefactor_sign_out()
click to toggle source
# File lib/truefactor/controller.rb, line 68 def truefactor_sign_out session.clear redirect_to '/' end