devise_facebook_connectable 0.1.6 → 0.1.7
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.
@@ -9,6 +9,13 @@ module Devise #:nodoc:
|
|
9
9
|
#
|
10
10
|
module Filters
|
11
11
|
|
12
|
+
# == References
|
13
|
+
#
|
14
|
+
# For more info about the available Facebooker controller methods:
|
15
|
+
#
|
16
|
+
# * http://github.com/mmangino/facebooker/blob/master/lib/facebooker/rails/controller.rb
|
17
|
+
#
|
18
|
+
|
12
19
|
def self.included(base) #:nodoc:
|
13
20
|
base.class_eval do
|
14
21
|
before_filter :expired_session_hack
|
@@ -24,7 +31,12 @@ module Devise #:nodoc:
|
|
24
31
|
def expired_session_hack
|
25
32
|
clear_facebook_session_information
|
26
33
|
rescue
|
27
|
-
|
34
|
+
if RUBY_VERSION >= '1.9' && RAILS_GEM_VERSION == '2.3.4'
|
35
|
+
# Rails 2.3.4 on Ruby 1.9 issue. Should not happen in Rails 2.3.5+
|
36
|
+
# See: https://rails.lighthouseapp.com/projects/8994/tickets/3144
|
37
|
+
raise "Error caused by a known session handling bug in Rails 2.3.4 on Ruby 1.9." <<
|
38
|
+
" Please try to install Rails 2.3.5+ to be on the safe side."
|
39
|
+
end
|
28
40
|
end
|
29
41
|
|
30
42
|
# Handle expired Facebook sessions automatically.
|
@@ -16,7 +16,7 @@ module Devise #:nodoc:
|
|
16
16
|
# Without a Facebook session authentication cannot proceed.
|
17
17
|
#
|
18
18
|
def valid?
|
19
|
-
::Facebooker::Session.current.present?
|
19
|
+
super && ::Facebooker::Session.current.present?
|
20
20
|
end
|
21
21
|
|
22
22
|
# Authenticate user with Facebook Connect.
|
@@ -42,7 +42,7 @@ module Devise #:nodoc:
|
|
42
42
|
end
|
43
43
|
|
44
44
|
begin
|
45
|
-
user.
|
45
|
+
user.save(false)
|
46
46
|
user.on_after_facebook_connect(facebook_session)
|
47
47
|
success!(user)
|
48
48
|
rescue
|
@@ -32,28 +32,28 @@ module Devise #:nodoc:
|
|
32
32
|
|
33
33
|
# Convenient sign in/out (connect) method. See below.
|
34
34
|
#
|
35
|
-
def facebook_link(
|
36
|
-
scope = auto_detect_scope(
|
37
|
-
options.except!(:scope, :for)
|
38
|
-
|
35
|
+
def facebook_link(*args)
|
36
|
+
scope = auto_detect_scope(*args)
|
39
37
|
unless signed_in?(scope)
|
40
|
-
facebook_sign_in_link(
|
38
|
+
facebook_sign_in_link(*args)
|
41
39
|
else
|
42
|
-
facebook_sign_out_link(
|
40
|
+
facebook_sign_out_link(*args)
|
43
41
|
end
|
44
42
|
end
|
45
43
|
|
46
44
|
# Deprecated in favor for +facebook_sign_in_link+.
|
47
45
|
#
|
48
46
|
def facebook_login_link(options = {})
|
49
|
-
::ActiveSupport::Deprecation.warn("
|
47
|
+
::ActiveSupport::Deprecation.warn("DEPRECATION:" <<
|
48
|
+
" facebook_login_link is deprecated. Use: facebook_sign_in_link.")
|
50
49
|
facebook_sign_in_link(options)
|
51
50
|
end
|
52
51
|
|
53
52
|
# Deprecated in favor for +facebook_sign_in_link+.
|
54
53
|
#
|
55
54
|
def facebook_logout_link(options = {})
|
56
|
-
::ActiveSupport::Deprecation.warn("
|
55
|
+
::ActiveSupport::Deprecation.warn("DEPRECATION:" <<
|
56
|
+
" facebook_logout_link is deprecated. Use: facebook_sign_out_link.")
|
57
57
|
facebook_sign_out_link(options)
|
58
58
|
end
|
59
59
|
|
@@ -67,7 +67,8 @@ module Devise #:nodoc:
|
|
67
67
|
# then this is the same as a traditional "create account".
|
68
68
|
#
|
69
69
|
def facebook_sign_in_link(options = {})
|
70
|
-
scope = auto_detect_scope(
|
70
|
+
scope = auto_detect_scope(*args)
|
71
|
+
options = args.extract_options!
|
71
72
|
options.except!(:scope, :for)
|
72
73
|
options.reverse_merge!(
|
73
74
|
:label => ::I18n.t(:sign_in, :scope => [:devise, :sessions, :facebook_actions]),
|
@@ -93,8 +94,9 @@ module Devise #:nodoc:
|
|
93
94
|
# Agnostic Facebook Connect sign_out button/link. Logs out the current
|
94
95
|
# user from both the app/site and Facebook main site (for security reasons).
|
95
96
|
#
|
96
|
-
def facebook_sign_out_link(
|
97
|
-
scope = auto_detect_scope(
|
97
|
+
def facebook_sign_out_link(*args)
|
98
|
+
scope = auto_detect_scope(*args)
|
99
|
+
options = args.extract_options!
|
98
100
|
options.except!(:scope, :for)
|
99
101
|
options.reverse_merge!(
|
100
102
|
:label => ::I18n.t(:sign_out, :scope => [:devise, :sessions, :facebook_actions]),
|
@@ -114,7 +116,7 @@ module Devise #:nodoc:
|
|
114
116
|
end
|
115
117
|
end
|
116
118
|
|
117
|
-
# Agnostic Facebook Connect disconnect button/link.
|
119
|
+
# TODO: Agnostic Facebook Connect disconnect button/link.
|
118
120
|
# Disconnects, i.e. deletes, user account. Identical as "Delete my account",
|
119
121
|
# but for Facebook Connect (which "un-installs" the app/site for the current user).
|
120
122
|
#
|
@@ -139,16 +141,25 @@ module Devise #:nodoc:
|
|
139
141
|
# Used to make the link-helpers smart if - like in most cases -
|
140
142
|
# only one devise scope will be used, e.g. "user" or "account".
|
141
143
|
#
|
142
|
-
def auto_detect_scope(
|
143
|
-
|
144
|
+
def auto_detect_scope(*args)
|
145
|
+
options = args.extract_options!
|
146
|
+
|
147
|
+
if options.key?(:for)
|
148
|
+
options[:scope] = options[:for]
|
149
|
+
::ActiveSupport::Deprecation.warn("DEPRECATION: " <<
|
150
|
+
"Devise scope :for option is deprecated. " <<
|
151
|
+
"Use: facebook_*_link(:some_scope), or facebook_*_link(:scope => :some_scope)")
|
152
|
+
end
|
153
|
+
|
154
|
+
scope = args.detect { |arg| arg.is_a?(Symbol) } || options[:scope]
|
144
155
|
scope ||= ::Warden::Manager.default_scope
|
145
|
-
mapping = ::Devise
|
146
|
-
|
156
|
+
mapping = ::Devise.mappings[scope]
|
157
|
+
|
147
158
|
if mapping.for.include?(:facebook_connectable)
|
148
159
|
scope
|
149
160
|
else
|
150
161
|
error_message =
|
151
|
-
"
|
162
|
+
"%s" <<
|
152
163
|
" Did you forget to devise facebook_connect in your model? Like this: devise :facebook_connectable." <<
|
153
164
|
" You can also specify scope explicitly, e.g.: facebook_*link :for => :customer."
|
154
165
|
error_message %=
|
@@ -156,7 +167,7 @@ module Devise #:nodoc:
|
|
156
167
|
"#{scope.inspect} is not a valid facebook_connectable devise scope. " <<
|
157
168
|
"Loaded modules for this scope: #{mapping.for.inspect}."
|
158
169
|
else
|
159
|
-
"Could not auto-detect any facebook_connectable devise
|
170
|
+
"Could not auto-detect any facebook_connectable devise scope."
|
160
171
|
end
|
161
172
|
raise error_message
|
162
173
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise_facebook_connectable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonas Grimfelt
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-01-08 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|