Advertisement
Guest User

Untitled

a guest
Nov 9th, 2016
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.14 KB | None | 0 0
  1. identity = Identity.find_for_oauth(auth)
  2.  
  3. class User
  4. include Neo4j::ActiveNode
  5.  
  6. has_one :both, :identity, model_class: 'Identity', type: :has
  7. has_many :both, :friends, model_class: 'User', type: :friends
  8.  
  9. property :username, type: String
  10. property :facebook_token, type: String
  11. index :facebook_token
  12. property :created_at, type: DateTime
  13. property :updated_at, type: DateTime
  14. property :logged_out, type: DateTime
  15.  
  16. ## Database authenticatable
  17. property :email, type: String, null: false, default: ""
  18. index :email
  19.  
  20. property :encrypted_password
  21.  
  22. ## If you include devise modules, uncomment the properties below.
  23.  
  24. ## Rememberable
  25. property :remember_created_at, type: DateTime
  26. property :remember_token
  27. index :remember_token
  28.  
  29.  
  30. ## Recoverable
  31. property :reset_password_token
  32. index :reset_password_token
  33. property :reset_password_sent_at, type: DateTime
  34.  
  35. ## Trackable
  36. property :sign_in_count, type: Integer, default: 0
  37. property :current_sign_in_at, type: DateTime
  38. property :last_sign_in_at, type: DateTime
  39. property :current_sign_in_ip, type: String
  40. property :last_sign_in_ip, type: String
  41.  
  42. devise :database_authenticatable, :registerable,
  43. :recoverable, :rememberable, :trackable, :validatable, :omniauthable
  44.  
  45. property :name, type: String
  46. property :email, type: String
  47. property :username, type: String
  48.  
  49. def self.find_for_oauth(auth, signed_in_resource = nil)
  50.  
  51. identity = Identity.find_for_oauth(auth)
  52.  
  53. user = signed_in_resource ? signed_in_resource : identity.user
  54.  
  55. if user.nil?
  56.  
  57. email_is_verified = auth.info.email && (auth.info.verified || auth.info.verified_email)
  58. email = auth.info.email if email_is_verified
  59. user = User.where(:email => email).first if email
  60.  
  61. # Create the user if it's a new registration
  62. if user.nil?
  63. user = User.new(
  64. name: auth.extra.raw_info.name,
  65. #username: auth.info.nickname || auth.uid,
  66. email: email ? email : "#{TEMP_EMAIL_PREFIX}-#{auth.uid}-#{auth.provider}.com",
  67. password: Devise.friendly_token[0,20]
  68. )
  69. user.skip_confirmation!
  70. user.save!
  71. end
  72. end
  73.  
  74. # Associate the identity with the user if needed
  75. if identity.user != user
  76. identity.user = user
  77. identity.save!
  78. end
  79. user
  80. end
  81. end
  82.  
  83. class Identity
  84. include Neo4j::ActiveNode
  85. property :provider, type: String
  86. property :uid, type: String
  87.  
  88. has_one :in_or_out_or_both, :user, type: :owner
  89.  
  90. validates_presence_of :uid, :provider
  91. validates_uniqueness_of :uid, :scope => :provider
  92.  
  93. def self.find_for_oauth(auth)
  94. find_or_create_by(uid: auth.uid, provider: auth.provider)
  95. end
  96.  
  97. end
  98.  
  99. devise_for :users, :skip => [:sessions], controllers: { omniauth_callbacks: 'omniauth_callbacks' }
  100. as :user do
  101. get 'signin' => 'devise/sessions#new', :as => :new_user_session
  102. post 'signin' => 'devise/sessions#create', :as => :user_session
  103. match 'signout' => 'devise/sessions#destroy', :as => :destroy_user_session,
  104. :via => Devise.mappings[:user].sign_out_via
  105. end
  106.  
  107. flash: {"discard"=>[], "flashes"=>{"alert"=>"Could not authenticate you from Facebook because "Invalid credentials"."}}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement