authlogic_crowd 0.3.2 → 0.3.3

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.
@@ -10,6 +10,15 @@ module AuthlogicCrowd
10
10
  persist :persist_by_crowd, :if => :authenticating_with_crowd?
11
11
  validate :validate_by_crowd, :if => [:authenticating_with_crowd?, :needs_crowd_validation?]
12
12
  before_destroy :logout_of_crowd, :if => :authenticating_with_crowd?
13
+ before_persisting {|s| s.instance_variable_set('@persisted_by_crowd', false)}
14
+ after_persisting(:if => [:authenticating_with_crowd?, :persisted_by_crowd?, :explicit_login_from_crowd_token?], :unless => :new_registration?) do |s|
15
+ # The user was persisted via a crowd token (not an explicit login via username/password).
16
+ # Simulate explicit login by executing "save" callbacks.
17
+ s.before_save
18
+ s.new_session? ? s.before_create : s.before_update
19
+ s.new_session? ? s.after_create : s.after_update
20
+ s.after_save
21
+ end
13
22
  after_create(:if => :authenticating_with_crowd?, :unless => :new_registration?) do |s|
14
23
  synchronizer = s.crowd_synchronizer
15
24
  synchronizer.local_record = s.record
@@ -40,6 +49,16 @@ module AuthlogicCrowd
40
49
  rw_config(:auto_register,value,true)
41
50
  end
42
51
  alias_method :auto_register=, :auto_register
52
+
53
+ # Should login via a crowd token be treated as an explicit login?
54
+ # If true, explicit login callbacks ({before,after}_{create,update,save})
55
+ # will be triggered when a user is persisted. If false, the user is
56
+ # persisted but explicit login callbacks do not fire.
57
+ # Default false
58
+ def explicit_login_from_crowd_token(value=nil)
59
+ rw_config(:explicit_login_from_crowd_token, value, false)
60
+ end
61
+ alias_method :explicit_login_from_crowd_token=, :explicit_login_from_crowd_token
43
62
  end
44
63
 
45
64
  module InstanceMethods
@@ -63,6 +82,10 @@ module AuthlogicCrowd
63
82
  auto_register?
64
83
  end
65
84
 
85
+ def explicit_login_from_crowd_token?
86
+ !!self.class.explicit_login_from_crowd_token
87
+ end
88
+
66
89
  def crowd_record
67
90
  if @valid_crowd_user[:user_token] && !@valid_crowd_user.has_key?(:record)
68
91
  @valid_crowd_user[:record] = crowd_client.find_user_by_token(@valid_crowd_user[:user_token])
@@ -101,7 +124,9 @@ module AuthlogicCrowd
101
124
  clear_crowd_auth_cache
102
125
  return false unless has_crowd_user_token? && valid_crowd_user_token? && crowd_username
103
126
  self.unauthorized_record = find_or_create_record_from_crowd
104
- valid?
127
+ return false unless valid?
128
+ @persisted_by_crowd = true
129
+ true
105
130
  rescue SimpleCrowd::CrowdError => e
106
131
  Rails.logger.warn "CROWD[#{__method__}]: Unexpected error. #{e}"
107
132
  return false
@@ -339,6 +364,10 @@ module AuthlogicCrowd
339
364
  !!controller.session[:"crowd.last_user_token"]
340
365
  end
341
366
 
367
+ def persisted_by_crowd?
368
+ !!@persisted_by_crowd
369
+ end
370
+
342
371
  def has_crowd_user_token?
343
372
  !!crowd_user_token
344
373
  end
@@ -1,3 +1,3 @@
1
1
  module AuthlogicCrowd
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.3"
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authlogic_crowd
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 2
10
- version: 0.3.2
9
+ - 3
10
+ version: 0.3.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Paul Strong
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-07-24 00:00:00 Z
18
+ date: 2012-08-24 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  version_requirements: &id001 !ruby/object:Gem::Requirement