Bike!Bike! Website!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

40 lines
1.1 KiB

class OauthsController < ApplicationController
skip_before_filter :require_login
# sends the user on a trip to the provider,
# and after authorizing there back to the callback url.
def oauth
set_callback
session[:oauth_last_url] = request.referer
login_at(auth_params[:provider])
end
def callback
set_callback
user_info = (sorcery_fetch_user_hash auth_params[:provider] || {})[:user_info]
user = User.find_by_email(user_info['email'])
# create the user if the email is not recognized
unless user
user = User.new(email: user_info['email'], firstname: user_info['name'])
user.save!
end
# log in the user
auto_login(user) if user
redirect_to (session[:oauth_last_url] || home_path)
end
private
def auth_params
params.permit(:code, :provider)
end
def set_callback
Sorcery::Controller::Config.send(params[:provider]).callback_url =
"#{request.protocol}#{request.env['HTTP_HOST']}/oauth/callback?provider=facebook"
end
end