devise_koala_connectable 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Manifest +0 -1
- data/Rakefile +1 -1
- data/devise_koala_connectable.gemspec +3 -3
- data/lib/devise_koala_connectable.rb +2 -2
- data/lib/devise_koala_connectable/model.rb +1 -1
- data/lib/devise_koala_connectable/strategy.rb +21 -17
- data/lib/devise_koala_connectable/view_helpers.rb +25 -24
- metadata +5 -5
data/Manifest
CHANGED
data/Rakefile
CHANGED
@@ -2,7 +2,7 @@ require "rubygems"
|
|
2
2
|
require "rake"
|
3
3
|
require "echoe"
|
4
4
|
|
5
|
-
Echoe.new("devise_koala_connectable", "0.1.
|
5
|
+
Echoe.new("devise_koala_connectable", "0.1.4") do |p|
|
6
6
|
p.description = "Rails gem for adding Facebook authentification capabillity to devise using koala"
|
7
7
|
p.url = "http://github.com/webmatze/devise_koala_connectable"
|
8
8
|
p.author = "Mathias Karstädt"
|
@@ -2,15 +2,15 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{devise_koala_connectable}
|
5
|
-
s.version = "0.1.
|
5
|
+
s.version = "0.1.4"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Mathias Karst\303\244dt"]
|
9
|
-
s.date = %q{2011-
|
9
|
+
s.date = %q{2011-03-23}
|
10
10
|
s.description = %q{Rails gem for adding Facebook authentification capabillity to devise using koala}
|
11
11
|
s.email = %q{mathias.karstaedt@gmail.com}
|
12
12
|
s.extra_rdoc_files = ["CHANGELOG", "README.rdoc", "lib/devise_koala_connectable.rb", "lib/devise_koala_connectable/locales/de.yml", "lib/devise_koala_connectable/locales/en.yml", "lib/devise_koala_connectable/model.rb", "lib/devise_koala_connectable/schema.rb", "lib/devise_koala_connectable/strategy.rb", "lib/devise_koala_connectable/version.rb", "lib/devise_koala_connectable/view_helpers.rb"]
|
13
|
-
s.files = ["CHANGELOG", "README.rdoc", "Rakefile", "
|
13
|
+
s.files = ["CHANGELOG", "README.rdoc", "Rakefile", "lib/devise_koala_connectable.rb", "lib/devise_koala_connectable/locales/de.yml", "lib/devise_koala_connectable/locales/en.yml", "lib/devise_koala_connectable/model.rb", "lib/devise_koala_connectable/schema.rb", "lib/devise_koala_connectable/strategy.rb", "lib/devise_koala_connectable/version.rb", "lib/devise_koala_connectable/view_helpers.rb", "rails/init.rb", "Manifest", "devise_koala_connectable.gemspec"]
|
14
14
|
s.homepage = %q{http://github.com/webmatze/devise_koala_connectable}
|
15
15
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Devise_koala_connectable", "--main", "README.rdoc"]
|
16
16
|
s.require_paths = ["lib"]
|
@@ -14,7 +14,7 @@ require 'devise_koala_connectable/view_helpers'
|
|
14
14
|
module Devise
|
15
15
|
mattr_accessor :koala_identifier_field
|
16
16
|
@@koala_identifier_field = :koala_identifier
|
17
|
-
|
17
|
+
|
18
18
|
mattr_accessor :koala_auto_create_account
|
19
19
|
@@koala_auto_create_account = true
|
20
20
|
|
@@ -26,7 +26,7 @@ module Devise
|
|
26
26
|
|
27
27
|
mattr_accessor :koala_callback_url
|
28
28
|
@@koala_callback_url = nil
|
29
|
-
|
29
|
+
|
30
30
|
end
|
31
31
|
|
32
32
|
I18n.load_path.unshift File.expand_path(File.join(File.dirname(__FILE__), *%w[devise_koala_connectable locales en.yml]))
|
@@ -75,7 +75,7 @@ module Devise #:nodoc:
|
|
75
75
|
def on_before_koala_success(koala_user)
|
76
76
|
self.send(:before_koala_success, koala_user) if self.respond_to?(:before_koala_success)
|
77
77
|
end
|
78
|
-
|
78
|
+
|
79
79
|
# Hook that gets called before the auto creation of the user.
|
80
80
|
# Therefore, this hook is only called when koala_auto_create_account config option is enabled.
|
81
81
|
# Useful for fetching additional user info (etc.) from Facebook.
|
@@ -11,7 +11,7 @@ module Devise #:nodoc:
|
|
11
11
|
class KoalaConnectable < Base
|
12
12
|
|
13
13
|
def valid?
|
14
|
-
((valid_controller? && cookie_present?) || signed_request?) && mapping.to.respond_to?('authenticate_with_koala')
|
14
|
+
((valid_controller? && cookie_present? && koala_request?) || signed_request?) && mapping.to.respond_to?('authenticate_with_koala')
|
15
15
|
end
|
16
16
|
|
17
17
|
# Authenticate user with Koala.
|
@@ -22,7 +22,7 @@ module Devise #:nodoc:
|
|
22
22
|
raise StandardError, "No api_key or secret_key defined, please see the documentation of Koala gem to setup it." unless klass.koala_app_id.present? and klass.koala_secret_key.present?
|
23
23
|
begin
|
24
24
|
oauth = Koala::Facebook::OAuth.new(klass.koala_app_id, klass.koala_secret_key, klass.koala_callback_url)
|
25
|
-
|
25
|
+
|
26
26
|
if signed_request?
|
27
27
|
user_info = oauth.parse_signed_request params[:signed_request]
|
28
28
|
unless user_info.present? #if no valid signed facebook request found
|
@@ -40,61 +40,65 @@ module Devise #:nodoc:
|
|
40
40
|
user_id = user_info["uid"]
|
41
41
|
access_token = user_info["access_token"]
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
Rails.logger.debug "user_info: #{user_info.to_yaml}"
|
45
45
|
|
46
46
|
graph = Koala::Facebook::GraphAPI.new(access_token)
|
47
47
|
koala_user = graph.get_object(user_id)
|
48
|
-
|
48
|
+
|
49
49
|
Rails.logger.debug koala_user.to_yaml
|
50
50
|
|
51
51
|
unless koala_user
|
52
|
-
fail(:koala_invalid)
|
53
|
-
return
|
52
|
+
fail!(:koala_invalid)
|
53
|
+
return
|
54
54
|
end
|
55
|
-
|
55
|
+
|
56
56
|
if user = klass.authenticate_with_koala(koala_user)
|
57
57
|
user.on_before_koala_success(koala_user)
|
58
58
|
success!(user)
|
59
59
|
return
|
60
60
|
end
|
61
|
-
|
61
|
+
|
62
62
|
unless klass.koala_auto_create_account? or signed_request?
|
63
|
-
fail(:koala_invalid)
|
64
|
-
return
|
63
|
+
fail!(:koala_invalid)
|
64
|
+
return
|
65
65
|
end
|
66
|
-
|
66
|
+
|
67
67
|
user = klass.new
|
68
68
|
user.store_koala_credentials!(koala_user)
|
69
69
|
koala_user["registration"] = user_info if signed_request?
|
70
70
|
user.on_before_koala_auto_create(koala_user)
|
71
|
-
|
71
|
+
|
72
72
|
user.save(:validate => false)
|
73
73
|
user.on_before_koala_success(koala_user)
|
74
74
|
success!(user)
|
75
|
-
|
75
|
+
|
76
76
|
rescue Exception => e
|
77
77
|
Rails.logger.error e.to_yaml
|
78
|
-
fail(:koala_invalid)
|
78
|
+
fail!(:koala_invalid)
|
79
79
|
end
|
80
80
|
end
|
81
|
-
|
81
|
+
|
82
82
|
protected
|
83
83
|
def valid_controller?
|
84
84
|
params[:controller].to_s =~ /sessions/
|
85
85
|
end
|
86
|
-
|
86
|
+
|
87
87
|
def cookie_present?
|
88
88
|
klass = mapping.to
|
89
89
|
raise StandardError, "No api_key or secret_key defined, please see the documentation of Koala gem to setup it." unless klass.koala_app_id.present? and klass.koala_secret_key.present?
|
90
90
|
oauth = Koala::Facebook::OAuth.new(klass.koala_app_id, klass.koala_secret_key, klass.koala_callback_url)
|
91
91
|
oauth.get_user_info_from_cookies(request.cookies).present?
|
92
92
|
end
|
93
|
-
|
93
|
+
|
94
94
|
def signed_request?
|
95
95
|
params[:signed_request].present?
|
96
96
|
end
|
97
97
|
|
98
|
+
def koala_request?
|
99
|
+
params[:koala].present?
|
100
|
+
end
|
101
|
+
|
98
102
|
end
|
99
103
|
end
|
100
104
|
|
@@ -6,7 +6,7 @@ module Devise #:nodoc:
|
|
6
6
|
# Koala view helpers to easily add the link to the Facebook connection popup and also the necessary JS code.
|
7
7
|
#
|
8
8
|
module Helpers
|
9
|
-
|
9
|
+
|
10
10
|
# Creates the link to the Facebook connection popup.
|
11
11
|
# If you create a link without putting the JS code, the popup will load in a new page.
|
12
12
|
# The second parameter is the return URL, it must be absolute (***_url).
|
@@ -16,13 +16,13 @@ module Devise #:nodoc:
|
|
16
16
|
#
|
17
17
|
def link_to_koala(link_text, link_url, options={})
|
18
18
|
options = { :unobtrusive => true }.merge(options)
|
19
|
-
|
20
|
-
|
19
|
+
oauth = Koala::Facebook::OAuth.new(Devise::koala_app_id, Devise::koala_secret_key, Devise::koala_callback_url)
|
20
|
+
link_to link_text, oauth.url_for_oauth_code(:callback => link_url), options
|
21
21
|
end
|
22
22
|
|
23
23
|
# Returns the necessary JS code for the Facebook popup.
|
24
24
|
# It is recommended to put this code just before the </body> tag of your layout.
|
25
|
-
#
|
25
|
+
#
|
26
26
|
# For example :
|
27
27
|
# ...
|
28
28
|
# <%= javascript_include_koala %>
|
@@ -30,19 +30,19 @@ module Devise #:nodoc:
|
|
30
30
|
# </html>
|
31
31
|
#
|
32
32
|
def javascript_include_koala
|
33
|
-
|
33
|
+
"<div id=\"fb-root\"></div>
|
34
34
|
<script src=\"http://connect.facebook.net/en_US/all.js\"></script>
|
35
35
|
<script>
|
36
|
-
FB.init({
|
37
|
-
appId:'#{Devise::koala_app_id}', cookie:true,
|
38
|
-
status:true, xfbml:true
|
36
|
+
FB.init({
|
37
|
+
appId:'#{Devise::koala_app_id}', cookie:true,
|
38
|
+
status:true, xfbml:true
|
39
39
|
});
|
40
40
|
</script>"
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
# Renders the Facbook Registration Form (XFML).
|
44
44
|
# For more info: http://developers.facebook.com/docs/plugins/registration/
|
45
|
-
#
|
45
|
+
#
|
46
46
|
# For example :
|
47
47
|
# ...
|
48
48
|
# <%= koala_registration_form("/registration", [{:name => "name"}, {:name => "password", :view => "not_prefilled"}, {:name => "birthday", :description => "Geburtstag", :type => "date"}], "callback_function", "de_DE", 600) %>
|
@@ -51,18 +51,18 @@ module Devise #:nodoc:
|
|
51
51
|
def koala_registration_form(registration_url = "/", fields = [:name, :email, :password], on_validate = nil, locale = "en_EN", width = nil)
|
52
52
|
width = (width.present?) ? "width=\"#{width.to_s}\" " : ""
|
53
53
|
on_validate = (on_validate.present?) ? "onvalidate=\"#{on_validate}\" " : ""
|
54
|
-
"<fb:registration
|
55
|
-
fields='" + fields.to_json + "'
|
56
|
-
redirect-uri=\"#{registration_url}\"
|
57
|
-
locale=\"#{locale}\"
|
54
|
+
"<fb:registration
|
55
|
+
fields='" + fields.to_json + "'
|
56
|
+
redirect-uri=\"#{registration_url}\"
|
57
|
+
locale=\"#{locale}\"
|
58
58
|
#{on_validate}
|
59
59
|
#{width}>
|
60
60
|
</fb:registration>"
|
61
61
|
end
|
62
|
-
|
62
|
+
|
63
63
|
# Renders the Facbook Registration Form (Iframe).
|
64
64
|
# For more info: http://developers.facebook.com/docs/plugins/registration/
|
65
|
-
#
|
65
|
+
#
|
66
66
|
# For example :
|
67
67
|
# ...
|
68
68
|
# <%= koala_registration_iframe_form("/registration", [{:name => "name"}, {:name => "password", :view => "not_prefilled"}, {:name => "birthday", :description => "Geburtstag", :type => "date"}], "de_DE", 600, 400) %>
|
@@ -77,27 +77,28 @@ module Devise #:nodoc:
|
|
77
77
|
redirect_uri=#{CGI.escape(registration_url)}&
|
78
78
|
locale=#{locale}&
|
79
79
|
fields=" + fields.to_json + "'
|
80
|
-
scrolling=\"auto\"
|
81
|
-
frameborder=\"no\"
|
82
|
-
style=\"border:none\"
|
83
|
-
allowTransparency=\"true\"
|
80
|
+
scrolling=\"auto\"
|
81
|
+
frameborder=\"no\"
|
82
|
+
style=\"border:none\"
|
83
|
+
allowTransparency=\"true\"
|
84
84
|
#{width}
|
85
85
|
#{height}>
|
86
86
|
</iframe>"
|
87
87
|
end
|
88
|
-
|
88
|
+
|
89
89
|
|
90
90
|
# Returns the Login To Facebook button.
|
91
|
-
#
|
91
|
+
#
|
92
92
|
# For example :
|
93
93
|
# ...
|
94
94
|
# <%= koala_login_button("Login with Facebook", "/after_login") %>
|
95
95
|
#
|
96
96
|
def koala_login_button(button_text = "Login with Facebook", login_url = "/", registration_url = nil)
|
97
|
+
login_url += (login_url =~ /\?/ ? '&koala=true' : '?koala=true')
|
97
98
|
registration = (registration_url.present?) ? "registration-url=\"#{registration_url}\"" : ""
|
98
99
|
"<fb:login-button #{registration} on-login=\"window.location.href = '#{login_url}';\">#{button_text}</fb:login-button>"
|
99
100
|
end
|
100
|
-
|
101
|
+
|
101
102
|
|
102
103
|
# Returns the Logout button for Facebook.
|
103
104
|
# It calls the logout_url after logging out of Facbook Connect.
|
@@ -110,7 +111,7 @@ module Devise #:nodoc:
|
|
110
111
|
options = { :unobtrusive => true, :onclick => "FB.getLoginStatus(function(status){if(status.session){FB.logout(function(response){document.location.href='#{logout_url}'});}else{document.location.href='#{logout_url}'}})" }.merge(options)
|
111
112
|
link_to button_text, "#", options
|
112
113
|
end
|
113
|
-
|
114
|
+
|
114
115
|
end
|
115
116
|
end
|
116
117
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise_koala_connectable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 4
|
10
|
+
version: 0.1.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- "Mathias Karst\xC3\xA4dt"
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-03-23 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -99,7 +99,6 @@ files:
|
|
99
99
|
- CHANGELOG
|
100
100
|
- README.rdoc
|
101
101
|
- Rakefile
|
102
|
-
- devise_koala_connectable.gemspec
|
103
102
|
- lib/devise_koala_connectable.rb
|
104
103
|
- lib/devise_koala_connectable/locales/de.yml
|
105
104
|
- lib/devise_koala_connectable/locales/en.yml
|
@@ -110,6 +109,7 @@ files:
|
|
110
109
|
- lib/devise_koala_connectable/view_helpers.rb
|
111
110
|
- rails/init.rb
|
112
111
|
- Manifest
|
112
|
+
- devise_koala_connectable.gemspec
|
113
113
|
has_rdoc: true
|
114
114
|
homepage: http://github.com/webmatze/devise_koala_connectable
|
115
115
|
licenses: []
|