devise_oauth2_canvas_facebook 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- resource = resource_class.find_with_facebook_user(fb_user, token, client)
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
- redirect_to Devise.facebook_canvas_url
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: 21
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 5
10
- version: 0.0.5
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-25 00:00:00 +02:00
18
+ date: 2010-10-28 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency