devise_oauth2_canvas_facebook 0.0.5 → 0.0.6
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.
@@ -8,8 +8,15 @@ class Devise::FacebookConsumerController < ApplicationController
|
|
8
8
|
else
|
9
9
|
scope = Devise.facebook_permissions
|
10
10
|
end
|
11
|
-
|
12
11
|
url = send("#{resource_name}_fb_callback_url".to_sym)
|
12
|
+
if params[:permission] && params[:go_back]
|
13
|
+
url = url + "?permission=#{params[:permission]}&go_back=#{params[:go_back]}"
|
14
|
+
elsif params[:permission]
|
15
|
+
url = url + "?permission=#{params[:permission]}"
|
16
|
+
elsif params[:go_back]
|
17
|
+
url = url + "?go_back=#{params[:go_back]}"
|
18
|
+
end
|
19
|
+
|
13
20
|
uri = facebook_client.authorization.authorize_url(:redirect_uri => url, :scope => scope)
|
14
21
|
if Devise.facebook_canvas_app
|
15
22
|
render :layout => false, :inline => "<script type='text/javascript' charset='utf-8'>top.location.href='#{uri}';</script>"
|
@@ -20,16 +27,32 @@ class Devise::FacebookConsumerController < ApplicationController
|
|
20
27
|
|
21
28
|
def callback
|
22
29
|
url = send("#{resource_name}_fb_callback_url".to_sym)
|
23
|
-
|
30
|
+
if params[:permission] && params[:go_back]
|
31
|
+
url = url + "?permission=#{params[:permission]}&go_back=#{CGI::escape(params[:go_back])}"
|
32
|
+
elsif params[:permission]
|
33
|
+
url = url + "?permission=#{params[:permission]}"
|
34
|
+
elsif params[:go_back]
|
35
|
+
url = url + "?go_back=#{CGI::escape(params[:go_back])}"
|
36
|
+
end
|
37
|
+
|
24
38
|
client = facebook_client
|
25
39
|
client.authorization.process_callback(params[:code], :redirect_uri => url)
|
26
|
-
|
40
|
+
|
27
41
|
token = client.access_token
|
42
|
+
|
28
43
|
fb_user = client.selection.me.info!
|
29
|
-
|
30
|
-
|
44
|
+
|
45
|
+
if !!params[:permission]
|
46
|
+
permissions = Devise.facebook_permissions + ",#{params[:permission]}"
|
47
|
+
else
|
48
|
+
permissions = Devise.facebook_permissions
|
49
|
+
end
|
50
|
+
|
51
|
+
options = {:permissions => permissions}
|
52
|
+
|
53
|
+
resource = resource_class.find_with_facebook_user(fb_user, token, client, options)
|
31
54
|
unless resource
|
32
|
-
resource = resource_class.create_with_facebook_user(fb_user, token, client)
|
55
|
+
resource = resource_class.create_with_facebook_user(fb_user, token, client, options)
|
33
56
|
end
|
34
57
|
if resource_class.respond_to?(:serialize_into_cookie)
|
35
58
|
resource.remember_me!
|
@@ -43,7 +66,11 @@ class Devise::FacebookConsumerController < ApplicationController
|
|
43
66
|
|
44
67
|
if Devise.facebook_canvas_app
|
45
68
|
sign_in(resource_name, resource)
|
46
|
-
|
69
|
+
if params[:go_back]
|
70
|
+
redirect_to Devise.facebook_canvas_url + params[:go_back]
|
71
|
+
else
|
72
|
+
redirect_to Devise.facebook_canvas_url
|
73
|
+
end
|
47
74
|
else
|
48
75
|
sign_in_and_redirect(resource_name, resource)
|
49
76
|
end
|
@@ -4,11 +4,11 @@ module Devise
|
|
4
4
|
module DeviseOauth2CanvasFacebook
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
|
-
def do_update_facebook_user(fb_user, token, client)
|
7
|
+
def do_update_facebook_user(fb_user, token, client, options)
|
8
8
|
self.send("#{self.class.facebook_uid_field}=".to_sym, fb_user.id)
|
9
9
|
self.send("#{self.class.facebook_token_field}=".to_sym, token)
|
10
10
|
self.email = fb_user.email.to_s.downcase if fb_user.email.present?
|
11
|
-
update_facebook_user(fb_user, client)
|
11
|
+
update_facebook_user(fb_user, client, options)
|
12
12
|
self.save(:validate => false)
|
13
13
|
end
|
14
14
|
|
@@ -25,18 +25,18 @@ module Devise
|
|
25
25
|
module ClassMethods
|
26
26
|
Devise::Models.config(self, :facebook_uid_field, :facebook_token_field)
|
27
27
|
|
28
|
-
def find_with_facebook_user(fb_user, token,client)
|
28
|
+
def find_with_facebook_user(fb_user, token,client, options)
|
29
29
|
user = where(facebook_uid_field.to_sym => fb_user.id).first
|
30
30
|
if user
|
31
|
-
user.do_update_facebook_user(fb_user, token, client)
|
31
|
+
user.do_update_facebook_user(fb_user, token, client,options)
|
32
32
|
end
|
33
33
|
user
|
34
34
|
end
|
35
35
|
|
36
|
-
def create_with_facebook_user(fb_user, token,client)
|
36
|
+
def create_with_facebook_user(fb_user, token,client, options)
|
37
37
|
user = new(facebook_uid_field.to_sym => fb_user.id, :password => "fakepass", :password_confirmation => "fakepass")
|
38
38
|
user.skip_confirmation! if user.respond_to?(:skip_confirmation!)
|
39
|
-
user.do_update_facebook_user(fb_user, token, client)
|
39
|
+
user.do_update_facebook_user(fb_user, token, client, options)
|
40
40
|
user
|
41
41
|
end
|
42
42
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise_oauth2_canvas_facebook
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 6
|
10
|
+
version: 0.0.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Nina Jansen
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-10-
|
18
|
+
date: 2010-10-28 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|