From 6b520b0a2b8692095c384797d901455e8493307b Mon Sep 17 00:00:00 2001 From: Mike Slemmer Date: Wed, 14 Nov 2012 22:18:37 -0800 Subject: [PATCH] facebook integration work --- app/controllers/sessions_controller.rb | 26 +++++++++++++++++++++++--- app/controllers/users_controller.rb | 4 +--- app/helpers/sessions_helper.rb | 4 ++++ app/models/.gitkeep | 0 app/views/users/new.html.erb | 8 +++++++- 5 files changed, 35 insertions(+), 7 deletions(-) delete mode 100644 app/models/.gitkeep diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index bf7d1f207..a3e5c2fb5 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -10,8 +10,7 @@ class SessionsController < ApplicationController def create user = User.find_by_email(params[:session][:email]) if user && user.authenticate(params[:session][:password]) - sign_in user - redirect_back_or music_sessions_url + complete_sign_in user else flash.now[:error] = 'Invalid email/password combination' render 'new' @@ -20,7 +19,28 @@ class SessionsController < ApplicationController def create_oauth auth_hash = request.env['omniauth.auth'] - render :text => auth_hash.inspect + authorization = UserAuthorization.find_by_provider_and_uid(auth_hash["provider"], auth_hash["uid"]) + if authorization + # Sign in for a user who has already registered. + complete_sign_in authorization.user + else + # Sign up for a completely new user. + # First/last name: auth_hash["info"]["first_name"] and auth_hash["info"]["last_name"] + # token: auth_hash["credentials"]["token"] -- "expires_at" + # + # For debugging - to see what all is there: + # render :text => auth_hash.to_yaml + user = User.new :name => auth_hash["info"]["name"], :email => auth_hash["info"]["email"] + user.authorizations.build :provider => auth_hash["provider"], :uid => auth_hash["uid"], + :token => auth_hash["credentials"]["token"], :token_expiration => auth_hash["credentials"]["expires_at"] + user.save + complete_sign_in user + end + end + + def complete_sign_in(user) + sign_in user + redirect_back_or music_sessions_url end def destroy diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 46988a7f2..d82a4a5f1 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -19,9 +19,7 @@ class UsersController < ApplicationController def create @user = User.new(params[:jam_ruby_user]) if @user.save - sign_in @user - flash[:success] = "Welcome to Jamkazam!" - redirect_to @user + sign_in @user, :new => true else render 'new' end diff --git a/app/helpers/sessions_helper.rb b/app/helpers/sessions_helper.rb index 3625479c7..11f8e7831 100644 --- a/app/helpers/sessions_helper.rb +++ b/app/helpers/sessions_helper.rb @@ -1,6 +1,10 @@ module SessionsHelper def sign_in(user) + if (:new was set to true) + flash[:success] = "Welcome to Jamkazam!" + redirect_to user + end cookies.permanent[:remember_token] = user.remember_token self.current_user = user end diff --git a/app/models/.gitkeep b/app/models/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/app/views/users/new.html.erb b/app/views/users/new.html.erb index 30f15fb1a..556ef44cc 100644 --- a/app/views/users/new.html.erb +++ b/app/views/users/new.html.erb @@ -1,6 +1,12 @@ <% provide(:title, 'Sign up') %>

Sign up

+
+
+ +
+
+
<%= form_for(@user) do |f| %> @@ -20,4 +26,4 @@ <%= f.submit "Create my account", class: "btn btn-large btn-primary" %> <% end %>
-
\ No newline at end of file +