Guest User

Untitled

a guest
Oct 14th, 2018
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. require 'fb_graph'
  2. require 'httparty'
  3. require 'thin'
  4.  
  5. class Api::SessionsController < Api::BaseController
  6. before_filter :authenticate_user!, :except => [:create, :destroy]
  7. before_filter :ensure_params_exist, :only => [:create]
  8.  
  9. respond_to :json
  10.  
  11. def create
  12. Thin::Logging.log('Creating session')
  13. case params[:method]
  14. when 'livresco'
  15. Thin::Logging.log('Livresco')
  16. handle_livresco
  17. when 'facebook'
  18. Thin::Logging.log('Facebook')
  19. handle_facebook
  20. when 'google'
  21. Thin::Logging.log('Google')
  22. handle_google
  23. else
  24. render :json => {:success=>false, :message=>"No valid method specified"}, :status=>422
  25. end
  26. end
  27. def handle_facebook
  28. Thin::Logging.log("Handling facebook login")
  29. user = FbGraph::User.me(params[:user_login][:token]).fetch
  30.  
  31. if user.email.nil?
  32. render :json => {:success=>false, :message=>"Invalid token"}, :status=>422
  33. return
  34. end
  35.  
  36. Thin::Logging.log("fbgraph email: " + email)
  37. Thin::Logging.log("param email: " + params[:user_login][:email])
  38.  
  39. if user.email != params[:user_login][:email]
  40. render :json => {:success=>false, :message=>"email mismatch"}, :status=>422
  41. return
  42. end
  43.  
  44. resource = User.find_by_email(email)
  45.  
  46. if resource
  47. sign_in(:user, resource)
  48. resource.ensure_authentication_token!
  49. render :json=> {:success=>true, :auth_token=>resource.authentication_token, :email=>resource.email}
  50. return
  51. else
  52. # create user account
  53. user = User.new(:email => email, :password => Devise.friendly_token[0,20])
  54. if user.save
  55. render :json=> user.as_json(:auth_token=>user.authentication_token, :email=>user.email), :status=>201
  56. return
  57. else
  58. warden.custom_failure!
  59. render :json=> user.errors, :status=>422
  60. end
  61. end
  62. end
  63. end
Add Comment
Please, Sign In to add comment