Guest User

Untitled

a guest
Jun 18th, 2018
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. class User
  2. module OmniauthCallbacks
  3. ["slack"].each do |provider|
  4. define_method "find_or_create_for_#{provider}" do |response|
  5. uid = response["uid"]
  6. data = response["info"]
  7.  
  8. if identity = Authorization.where("provider" => provider, "uid" => uid).first
  9. user = identity.user
  10. elsif user = User.find_by_email(data["email"])
  11. user.bind_service(response)
  12. user
  13. else
  14. user = User.new_from_provider_data(provider, uid, data)
  15. if user.save(validate: false)
  16. user.authorizations << Authorization.new(provider: provider, uid: uid)
  17. if response["credentials"]["token"].present?
  18. Rails.logger.warn response["credentials"]["token"]
  19. user.update(:slack_token => response["credentials"]["token"] )
  20. end
  21.  
  22. team = Team.find_or_create_by(:slack_id => response["extra"]["raw_info"]["team_info"]["team"]["id"])
  23. user.teams << team
  24. team.update(:name => response["extra"]["raw_info"]["team_info"]["team"]["name"])
  25.  
  26. return user
  27. else
  28. Rails.logger.warn("User.create_from_hash 失败,#{user.errors.inspect}")
  29. return nil
  30. end
  31. end
  32. end
  33. end
  34.  
  35. def new_from_provider_data(provider, uid, data)
  36. User.new do |user|
  37. user.email = data["email"]
  38. user.name = data["name"]
  39. user.slack_id = uid
  40. user.password = Devise.friendly_token[0, 20]
  41. end
  42. end
  43.  
  44. end
  45. end
Add Comment
Please, Sign In to add comment