Advertisement
Guest User

Untitled

a guest
Aug 16th, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. module Users
  2. # Create new user
  3. class SignInOrCreateWithLinkedin
  4. include UseCase
  5.  
  6. attr_reader :listener, :klass, :auth
  7.  
  8. def initialize(listener, klass, auth)
  9. @listener = listener
  10. @klass = klass
  11. @auth = auth
  12. end
  13.  
  14. def perform
  15. user = sign_in_or_create_user_with_linked_in
  16.  
  17. if user.save
  18. listener.on_linkedin_success user
  19. else
  20. listener.on_linkedin_fail user
  21. end
  22. end
  23.  
  24. private
  25.  
  26. def sign_in_or_create_user_with_linked_in
  27. klass
  28. .where(provider: auth.provider, uid: auth.uid)
  29. .first_or_create { |user| create_user(user) }
  30. end
  31.  
  32. def create_user(user)
  33. user.role = 'user'
  34. user.name = auth.info.name
  35. user.email = auth.info.email
  36. user.password = Devise.friendly_token[0, 20]
  37. user.authentication_token = Devise.friendly_token[0, 30]
  38. end
  39. end
  40. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement