warden 0.5.3 → 0.6.0

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.
Files changed (35) hide show
  1. data/History.rdoc +8 -5
  2. data/README.textile +1 -1
  3. data/lib/warden.rb +7 -4
  4. data/lib/warden/declarable.rb +43 -0
  5. data/lib/warden/hooks.rb +121 -0
  6. data/lib/warden/manager.rb +52 -21
  7. data/lib/warden/mixins/common.rb +11 -2
  8. data/lib/warden/proxy.rb +88 -32
  9. data/lib/warden/serializers.rb +20 -0
  10. data/lib/warden/serializers/base.rb +38 -0
  11. data/lib/warden/serializers/cookie.rb +34 -0
  12. data/lib/warden/serializers/session.rb +30 -0
  13. data/lib/warden/strategies.rb +18 -0
  14. data/lib/warden/{authentication/strategy_base.rb → strategies/base.rb} +27 -2
  15. data/lib/warden/version.rb +1 -1
  16. data/spec/helpers/request_helper.rb +14 -12
  17. data/spec/{warden → helpers}/strategies/failz.rb +0 -0
  18. data/spec/{warden → helpers}/strategies/invalid.rb +0 -0
  19. data/spec/{warden → helpers}/strategies/pass.rb +0 -0
  20. data/spec/{warden → helpers}/strategies/pass_without_user.rb +0 -0
  21. data/spec/{warden → helpers}/strategies/password.rb +0 -0
  22. data/spec/spec_helper.rb +1 -1
  23. data/spec/warden/authenticated_data_store_spec.rb +4 -4
  24. data/spec/warden/manager_spec.rb +0 -8
  25. data/spec/warden/proxy_spec.rb +61 -10
  26. data/spec/warden/serializers/cookie_spec.rb +60 -0
  27. data/spec/warden/serializers/session_spec.rb +47 -0
  28. data/spec/warden/serializers_spec.rb +96 -0
  29. data/spec/warden/{strategy_base_spec.rb → strategies/base_spec.rb} +1 -1
  30. data/spec/warden/strategies_spec.rb +19 -15
  31. data/warden.gemspec +28 -18
  32. metadata +28 -18
  33. data/VERSION +0 -1
  34. data/lib/warden/authentication/hooks.rb +0 -124
  35. data/lib/warden/authentication/strategies.rb +0 -59
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.5.3
@@ -1,124 +0,0 @@
1
- # encoding: utf-8
2
- module Warden
3
- class Manager
4
-
5
- class << self
6
- # A callback hook set to run every time after a user is set.
7
- # This will happen the first time the user is either authenticated, accessed or manually set
8
- # during a request. You can supply as many hooks as you like, and they will be run in order of decleration
9
- #
10
- # Parameters:
11
- # <block> A block where you can set arbitrary logic to run every time a user is set
12
- # Block Parameters: |user, auth, opts|
13
- # user - The user object that is being set
14
- # auth - The raw authentication proxy object.
15
- # opts - any options passed into the set_user call includeing :scope
16
- #
17
- # Example:
18
- # Warden::Manager.after_set_user do |user,auth,opts|
19
- # scope = opts[:scope]
20
- # if auth.session["#{scope}.last_access"].to_i > (Time.now - 5.minutes)
21
- # auth.logout(scope)
22
- # throw(:warden, :scope => scope, :reason => "Times Up")
23
- # end
24
- # auth.session["#{scope}.last_access"] = Time.now
25
- # end
26
- #
27
- # :api: public
28
- def after_set_user(&block)
29
- raise BlockNotGiven unless block_given?
30
- _after_set_user << block
31
- end
32
-
33
- # Provides access to the array of after_set_user blocks to run
34
- # :api: private
35
- def _after_set_user # :nodoc:
36
- @_after_set_user ||= []
37
- end
38
-
39
- # A callback hook set to run after the first authentiation of a session.
40
- # This will only happenwhen the session is first authenticated
41
- #
42
- # Parameters:
43
- # <block> A block to contain logic for the callback
44
- # Block Parameters: |user, auth, opts|
45
- # user - The user object that is being set
46
- # auth - The raw authentication proxy object.
47
- # opts - any options passed into the authenticate call includeing :scope
48
- #
49
- # Example:
50
- #
51
- # Warden::Manager.after_authentication do |user, auth, opts|
52
- # throw(:warden, opts) unless user.active?
53
- # end
54
- #
55
- # :api: public
56
- def after_authentication(&block)
57
- raise BlockNotGiven unless block_given?
58
- _after_authentication << block
59
- end
60
-
61
- # Provides access to the array of after_authentication blocks
62
- # :api: private
63
- def _after_authentication
64
- @_after_authentication ||= []
65
- end
66
-
67
- # A callback that runs just prior to the failur application being called.
68
- # This callback occurs after PATH_INFO has been modified for the failure (default /unauthenticated)
69
- # In this callback you can mutate the environment as required by the failure application
70
- # If a Rails controller were used for the failure_app for example, you would need to set request[:params][:action] = :unauthenticated
71
- #
72
- # Parameters:
73
- # <block> A block to contain logic for the callback
74
- # Block Parameters: |user, auth, opts|
75
- # env - The rack env hash
76
- # opts - any options passed into the authenticate call includeing :scope
77
- #
78
- # Example:
79
- # Warden::Manager.before_failure do |env, opts|
80
- # params = Rack::Request.new(env).params
81
- # params[:action] = :unauthenticated
82
- # params[:warden_failure] = opts
83
- # end
84
- #
85
- # :api: public
86
- def before_failure(&block)
87
- _before_failure << block
88
- end
89
-
90
- # Provides access to the callback array for before_failure
91
- # :api: private
92
- def _before_failure
93
- @_before_failure ||= []
94
- end
95
-
96
- # A callback that runs just prior to the logout of each scope.
97
- #
98
- # Parameters:
99
- # <block> A block to contain logic for the callback
100
- # Block Parameters: |user, auth, scope|
101
- # user - The authenticated user for the current scope
102
- # auth - The warden proxy object
103
- # scope - current logout scope
104
- #
105
- # Example:
106
- # Warden::Manager.before_logout do |user, auth, scope|
107
- # user.forget_me!
108
- # end
109
- #
110
- # :api: public
111
- def before_logout(&block)
112
- _before_logout << block
113
- end
114
-
115
- # Provides access to the callback array for before_logout
116
- # :api: private
117
- def _before_logout
118
- @_before_logout ||= []
119
- end
120
-
121
- end
122
-
123
- end # Manager
124
- end # Warden
@@ -1,59 +0,0 @@
1
- # encoding: utf-8
2
- module Warden
3
- module Strategies
4
- class << self
5
-
6
- # Adds a strategy to the grab-bag of strategies available to use.
7
- # A strategy is a place where you can put logic related to authentication.
8
- # A strategy inherits from Warden::Strategies::Base. The _add_ method provides a clean way
9
- # to declare your strategies.
10
- # You _must_ declare an @authenticate!@ method.
11
- # You _may_ provide a @valid?@ method.
12
- # The valid method should return true or false depending on if the strategy is a valid one for the request.
13
- #
14
- # Parameters:
15
- # <label: Symbol> The label is the name given to a strategy. Use the label to refer to the strategy when authenticating
16
- # <strategy: Class|nil> The optional stragtegy argument if set _must_ be a class that inherits from Warden::Strategies::Base and _must_
17
- # implement an @authenticate!@ method
18
- # <block> The block acts as a convinient way to declare your strategy. Inside is the class definition of a strategy.
19
- #
20
- # Examples:
21
- #
22
- # Block Declared Strategy:
23
- # Warden::Strategies.add(:foo) do
24
- # def authenticate!
25
- # # authentication logic
26
- # end
27
- # end
28
- #
29
- # Class Declared Strategy:
30
- # Warden::Strategies.add(:foo, MyStrategy)
31
- #
32
- # :api: public
33
- def add(label, strategy = nil, &blk)
34
- strategy = strategy.nil? ? Class.new(Warden::Strategies::Base, &blk) : strategy
35
- raise NoMethodError, "authenticate! is not declared in the #{label} strategy" if !strategy.method_defined?(:authenticate!)
36
- raise "#{label.inspect} is Not a Warden::Strategy::Base" if !strategy.ancestors.include?(Warden::Strategies::Base)
37
- _strategies[label] = strategy
38
- end
39
-
40
- # Provides access to declared strategies by label
41
- # :api: public
42
- def [](label)
43
- _strategies[label]
44
- end
45
-
46
- # Clears all declared middleware.
47
- # :api: public
48
- def clear!
49
- @strategies = {}
50
- end
51
-
52
- # :api: private
53
- def _strategies
54
- @strategies ||= {}
55
- end
56
- end # << self
57
-
58
- end # Strategies
59
- end # Warden