janus 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. data/README.rdoc +65 -29
  2. data/lib/janus.rb +1 -13
  3. data/lib/janus/config.rb +9 -5
  4. data/lib/janus/controllers/confirmations_controller.rb +2 -0
  5. data/lib/janus/controllers/helpers.rb +17 -0
  6. data/lib/janus/controllers/internal_helpers.rb +12 -0
  7. data/lib/janus/controllers/passwords_controller.rb +3 -0
  8. data/lib/janus/controllers/sessions_controller.rb +58 -21
  9. data/lib/janus/manager.rb +7 -2
  10. data/lib/janus/models/database_authenticatable.rb +22 -6
  11. data/lib/janus/rails.rb +17 -0
  12. data/lib/janus/routes.rb +1 -2
  13. data/lib/janus/sinatra.rb +51 -0
  14. metadata +63 -169
  15. data/test/functional/home_controller_test.rb +0 -8
  16. data/test/functional/janus/mailer_test.rb +0 -14
  17. data/test/functional/janus/manager_test.rb +0 -94
  18. data/test/functional/users/confirmations_controller_test.rb +0 -59
  19. data/test/functional/users/passwords_controller_test.rb +0 -101
  20. data/test/functional/users/registrations_controller_test.rb +0 -112
  21. data/test/functional/users/sessions_controller_test.rb +0 -100
  22. data/test/functional/users_controller_test.rb +0 -22
  23. data/test/integration/users/rememberable_test.rb +0 -32
  24. data/test/integration/users/remote_test.rb +0 -72
  25. data/test/integration/users/sessions_test.rb +0 -18
  26. data/test/integration/users/trackable_test.rb +0 -22
  27. data/test/rails_app/app/controllers/application_controller.rb +0 -9
  28. data/test/rails_app/app/controllers/blogs_controller.rb +0 -6
  29. data/test/rails_app/app/controllers/home_controller.rb +0 -4
  30. data/test/rails_app/app/controllers/users/confirmations_controller.rb +0 -3
  31. data/test/rails_app/app/controllers/users/passwords_controller.rb +0 -3
  32. data/test/rails_app/app/controllers/users/registrations_controller.rb +0 -7
  33. data/test/rails_app/app/controllers/users/sessions_controller.rb +0 -11
  34. data/test/rails_app/app/controllers/users_controller.rb +0 -9
  35. data/test/rails_app/app/helpers/application_helper.rb +0 -2
  36. data/test/rails_app/app/mailers/janus_mailer.rb +0 -2
  37. data/test/rails_app/app/models/remote_token.rb +0 -6
  38. data/test/rails_app/app/models/user.rb +0 -8
  39. data/test/rails_app/config/application.rb +0 -42
  40. data/test/rails_app/config/boot.rb +0 -6
  41. data/test/rails_app/config/environment.rb +0 -5
  42. data/test/rails_app/config/environments/development.rb +0 -26
  43. data/test/rails_app/config/environments/production.rb +0 -49
  44. data/test/rails_app/config/environments/test.rb +0 -36
  45. data/test/rails_app/config/initializers/janus.rb +0 -11
  46. data/test/rails_app/config/initializers/secret_token.rb +0 -7
  47. data/test/rails_app/config/initializers/session_store.rb +0 -8
  48. data/test/rails_app/config/routes.rb +0 -12
  49. data/test/rails_app/db/migrate/20110323153820_create_users.rb +0 -34
  50. data/test/rails_app/db/migrate/20110331153546_create_remote_tokens.rb +0 -15
  51. data/test/rails_app/db/schema.rb +0 -45
  52. data/test/rails_app/db/seeds.rb +0 -7
  53. data/test/test_helper.rb +0 -103
  54. data/test/unit/confirmable_test.rb +0 -36
  55. data/test/unit/janus_test.rb +0 -27
  56. data/test/unit/rememberable_test.rb +0 -50
  57. data/test/unit/remote_authenticatable_test.rb +0 -37
  58. data/test/unit/remote_token_test.rb +0 -9
  59. data/test/unit/reset_password_test.rb +0 -45
  60. data/test/unit/trackable_test.rb +0 -21
  61. data/test/unit/user_test.rb +0 -60
@@ -0,0 +1,17 @@
1
+ require 'janus'
2
+ require 'janus/routes'
3
+
4
+ module Janus
5
+ autoload :Mailer, 'janus/mailer'
6
+ autoload :TestHelper, 'janus/test_helper'
7
+
8
+ autoload :Helpers, 'janus/controllers/helpers'
9
+ autoload :UrlHelpers, 'janus/controllers/url_helpers'
10
+ autoload :InternalHelpers, 'janus/controllers/internal_helpers'
11
+
12
+ autoload :SessionsController, 'janus/controllers/sessions_controller'
13
+ autoload :RegistrationsController, 'janus/controllers/registrations_controller'
14
+ autoload :ConfirmationsController, 'janus/controllers/confirmations_controller'
15
+ autoload :PasswordsController, 'janus/controllers/passwords_controller'
16
+ end
17
+
@@ -42,7 +42,6 @@ module ActionDispatch # :nodoc:
42
42
  # new_user_password GET /users/password/new(.:format) {:controller=>"users/passwords", :action=>"new"}
43
43
  # edit_user_password GET /users/password/edit(.:format) {:controller=>"users/passwords", :action=>"edit"}
44
44
  # PUT /users/password(.:format) {:controller=>"users/passwords", :action=>"update"}
45
- # DELETE /users/password(.:format) {:controller=>"users/passwords", :action=>"destroy"}
46
45
  #
47
46
  def janus(*resources)
48
47
  ActionController::Base.send(:include, Janus::Helpers) unless ActionController::Base.include?(Janus::Helpers)
@@ -67,7 +66,7 @@ module ActionDispatch # :nodoc:
67
66
  end
68
67
 
69
68
  resource :confirmation, :only => [:show, :new, :create] if options[:confirmation]
70
- resource :password, :except => [:index, :show] if options[:password]
69
+ resource :password, :except => [:index, :show, :destroy] if options[:password]
71
70
  end
72
71
 
73
72
  ActionController::Base.janus(singular)
@@ -0,0 +1,51 @@
1
+ require "janus"
2
+ require "sinatra/base"
3
+
4
+ module Sinatra
5
+ module Janus
6
+ module Helpers
7
+ def janus
8
+ @janus ||= ::Janus::Manager.new(request, request.cookies)
9
+ end
10
+
11
+ def authenticate!(scope)
12
+ janus.authenticate!(scope)
13
+ end
14
+
15
+ def signed_in?(scope)
16
+ janus.authenticate?(scope)
17
+ end
18
+ end
19
+
20
+ def self.registered(app)
21
+ app.helpers Helpers
22
+ end
23
+ end
24
+
25
+ def janus(*resources)
26
+ resources.each do |plural|
27
+ singular = plural.to_s.singularize
28
+ klass = singular.camelize.constantize
29
+
30
+ class_eval <<-EOV
31
+ def authenticate_#{singular}!
32
+ authenticate!(:#{singular})
33
+ end
34
+
35
+ def #{singular}_signed_in?
36
+ signed_in?(:#{singular})
37
+ end
38
+
39
+ def current_#{singular}
40
+ @current_#{singular} ||= janus.authenticate(:#{singular})
41
+ end
42
+
43
+ def #{singular}_session
44
+ janus.session(:#{singular}) if #{singular}_signed_in?
45
+ end
46
+ EOV
47
+ end
48
+ end
49
+
50
+ register Janus
51
+ end
metadata CHANGED
@@ -1,75 +1,71 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: janus
3
- version: !ruby/object:Gem::Version
4
- hash: 11
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 5
9
- - 0
10
- version: 0.5.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Julien Portalier
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-09-17 00:00:00 +02:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- name: rails
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
12
+ date: 2012-07-27 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bcrypt-ruby
16
+ requirement: !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- hash: 7
30
- segments:
31
- - 3
32
- - 0
33
- version: "3.0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
34
22
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: bcrypt-ruby
38
23
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
40
25
  none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 3
45
- segments:
46
- - 0
47
- version: "0"
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: scrypt
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
48
38
  type: :runtime
49
- version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
51
- name: addressable
52
39
  prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
54
41
  none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- hash: 3
59
- segments:
60
- - 0
61
- version: "0"
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: addressable
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
62
54
  type: :runtime
63
- version_requirements: *id003
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
64
62
  description: Authentication engine for Ruby on Rails.
65
63
  email: ysbaddaden@gmail.com
66
64
  executables: []
67
-
68
65
  extensions: []
69
-
70
- extra_rdoc_files:
66
+ extra_rdoc_files:
71
67
  - README.rdoc
72
- files:
68
+ files:
73
69
  - README.rdoc
74
70
  - lib/janus.rb
75
71
  - lib/janus/config.rb
@@ -94,139 +90,37 @@ files:
94
90
  - lib/janus/models/remote_authenticatable.rb
95
91
  - lib/janus/models/remote_token.rb
96
92
  - lib/janus/models/trackable.rb
93
+ - lib/janus/rails.rb
97
94
  - lib/janus/routes.rb
95
+ - lib/janus/sinatra.rb
98
96
  - lib/janus/strategies.rb
99
97
  - lib/janus/strategies/base.rb
100
98
  - lib/janus/strategies/database_authenticatable.rb
101
99
  - lib/janus/strategies/rememberable.rb
102
100
  - lib/janus/strategies/remote_authenticatable.rb
103
101
  - lib/janus/test_helper.rb
104
- - test/functional/home_controller_test.rb
105
- - test/functional/janus/mailer_test.rb
106
- - test/functional/janus/manager_test.rb
107
- - test/functional/users/confirmations_controller_test.rb
108
- - test/functional/users/passwords_controller_test.rb
109
- - test/functional/users/registrations_controller_test.rb
110
- - test/functional/users/sessions_controller_test.rb
111
- - test/functional/users_controller_test.rb
112
- - test/integration/users/rememberable_test.rb
113
- - test/integration/users/remote_test.rb
114
- - test/integration/users/sessions_test.rb
115
- - test/integration/users/trackable_test.rb
116
- - test/rails_app/app/controllers/application_controller.rb
117
- - test/rails_app/app/controllers/blogs_controller.rb
118
- - test/rails_app/app/controllers/home_controller.rb
119
- - test/rails_app/app/controllers/users/confirmations_controller.rb
120
- - test/rails_app/app/controllers/users/passwords_controller.rb
121
- - test/rails_app/app/controllers/users/registrations_controller.rb
122
- - test/rails_app/app/controllers/users/sessions_controller.rb
123
- - test/rails_app/app/controllers/users_controller.rb
124
- - test/rails_app/app/helpers/application_helper.rb
125
- - test/rails_app/app/mailers/janus_mailer.rb
126
- - test/rails_app/app/models/remote_token.rb
127
- - test/rails_app/app/models/user.rb
128
- - test/rails_app/config/application.rb
129
- - test/rails_app/config/boot.rb
130
- - test/rails_app/config/environment.rb
131
- - test/rails_app/config/environments/development.rb
132
- - test/rails_app/config/environments/production.rb
133
- - test/rails_app/config/environments/test.rb
134
- - test/rails_app/config/initializers/janus.rb
135
- - test/rails_app/config/initializers/secret_token.rb
136
- - test/rails_app/config/initializers/session_store.rb
137
- - test/rails_app/config/routes.rb
138
- - test/rails_app/db/migrate/20110323153820_create_users.rb
139
- - test/rails_app/db/migrate/20110331153546_create_remote_tokens.rb
140
- - test/rails_app/db/schema.rb
141
- - test/rails_app/db/seeds.rb
142
- - test/test_helper.rb
143
- - test/unit/confirmable_test.rb
144
- - test/unit/janus_test.rb
145
- - test/unit/rememberable_test.rb
146
- - test/unit/remote_authenticatable_test.rb
147
- - test/unit/remote_token_test.rb
148
- - test/unit/reset_password_test.rb
149
- - test/unit/trackable_test.rb
150
- - test/unit/user_test.rb
151
- has_rdoc: true
152
102
  homepage: http://github.com/ysbaddaden/janus
153
103
  licenses: []
154
-
155
104
  post_install_message:
156
105
  rdoc_options: []
157
-
158
- require_paths:
106
+ require_paths:
159
107
  - lib
160
- required_ruby_version: !ruby/object:Gem::Requirement
108
+ required_ruby_version: !ruby/object:Gem::Requirement
161
109
  none: false
162
- requirements:
163
- - - ">="
164
- - !ruby/object:Gem::Version
165
- hash: 3
166
- segments:
167
- - 0
168
- version: "0"
169
- required_rubygems_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ! '>='
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ required_rubygems_version: !ruby/object:Gem::Requirement
170
115
  none: false
171
- requirements:
172
- - - ">="
173
- - !ruby/object:Gem::Version
174
- hash: 3
175
- segments:
176
- - 0
177
- version: "0"
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
178
120
  requirements: []
179
-
180
121
  rubyforge_project:
181
- rubygems_version: 1.6.2
122
+ rubygems_version: 1.8.23
182
123
  signing_key:
183
124
  specification_version: 3
184
125
  summary: Authentication engine for Ruby on Rails.
185
- test_files:
186
- - test/functional/home_controller_test.rb
187
- - test/functional/janus/mailer_test.rb
188
- - test/functional/janus/manager_test.rb
189
- - test/functional/users/confirmations_controller_test.rb
190
- - test/functional/users/passwords_controller_test.rb
191
- - test/functional/users/registrations_controller_test.rb
192
- - test/functional/users/sessions_controller_test.rb
193
- - test/functional/users_controller_test.rb
194
- - test/integration/users/rememberable_test.rb
195
- - test/integration/users/remote_test.rb
196
- - test/integration/users/sessions_test.rb
197
- - test/integration/users/trackable_test.rb
198
- - test/rails_app/app/controllers/application_controller.rb
199
- - test/rails_app/app/controllers/blogs_controller.rb
200
- - test/rails_app/app/controllers/home_controller.rb
201
- - test/rails_app/app/controllers/users/confirmations_controller.rb
202
- - test/rails_app/app/controllers/users/passwords_controller.rb
203
- - test/rails_app/app/controllers/users/registrations_controller.rb
204
- - test/rails_app/app/controllers/users/sessions_controller.rb
205
- - test/rails_app/app/controllers/users_controller.rb
206
- - test/rails_app/app/helpers/application_helper.rb
207
- - test/rails_app/app/mailers/janus_mailer.rb
208
- - test/rails_app/app/models/remote_token.rb
209
- - test/rails_app/app/models/user.rb
210
- - test/rails_app/config/application.rb
211
- - test/rails_app/config/boot.rb
212
- - test/rails_app/config/environment.rb
213
- - test/rails_app/config/environments/development.rb
214
- - test/rails_app/config/environments/production.rb
215
- - test/rails_app/config/environments/test.rb
216
- - test/rails_app/config/initializers/janus.rb
217
- - test/rails_app/config/initializers/secret_token.rb
218
- - test/rails_app/config/initializers/session_store.rb
219
- - test/rails_app/config/routes.rb
220
- - test/rails_app/db/migrate/20110323153820_create_users.rb
221
- - test/rails_app/db/migrate/20110331153546_create_remote_tokens.rb
222
- - test/rails_app/db/schema.rb
223
- - test/rails_app/db/seeds.rb
224
- - test/test_helper.rb
225
- - test/unit/confirmable_test.rb
226
- - test/unit/janus_test.rb
227
- - test/unit/rememberable_test.rb
228
- - test/unit/remote_authenticatable_test.rb
229
- - test/unit/remote_token_test.rb
230
- - test/unit/reset_password_test.rb
231
- - test/unit/trackable_test.rb
232
- - test/unit/user_test.rb
126
+ test_files: []
@@ -1,8 +0,0 @@
1
- require 'test_helper'
2
-
3
- class HomeControllerTest < ActionController::TestCase
4
- test "should get index" do
5
- get :index
6
- assert_response :ok
7
- end
8
- end
@@ -1,14 +0,0 @@
1
- require 'test_helper'
2
-
3
- class Janus::MailerTest < ActionMailer::TestCase
4
- test "reset_password_instructions" do
5
- users(:julien).generate_reset_password_token!
6
-
7
- mail = JanusMailer.reset_password_instructions(users(:julien)).deliver
8
- assert_equal [users(:julien).email], mail.to
9
- assert !mail.subject.blank?
10
-
11
- url = edit_user_password_url(:token => users(:julien).reset_password_token)
12
- assert_match Regexp.new(Regexp.escape(url)), mail.encoded
13
- end
14
- end
@@ -1,94 +0,0 @@
1
- require 'test_helper'
2
-
3
- class Janus::ManagerTest < ActionController::TestCase
4
- test "should log user in and out" do
5
- @janus.login(users(:julien))
6
- assert @janus.authenticated?(:user), "Expected user to be authenticated."
7
- assert_equal users(:julien), @janus.user(:user)
8
-
9
- @janus.logout(:user)
10
- assert !@janus.authenticated?(:user), "Expected user to not be authenticated."
11
- assert_nil @janus.user(:user)
12
- end
13
-
14
- test "should log user in and out with custom scope" do
15
- @janus.login(users(:julien), :scope => :custom)
16
- assert @janus.authenticated?(:custom), "Expected user to be authenticated."
17
- assert_equal users(:julien), @janus.user(:custom)
18
-
19
- @janus.logout(:custom)
20
- assert !@janus.authenticated?(:custom), "Expected user to not be authenticated."
21
- assert_nil @janus.user(:custom)
22
- end
23
-
24
- test "should log users in different scopes" do
25
- @janus.login(users(:julien), :scope => :user)
26
- @janus.login(users(:martha), :scope => :admin)
27
- assert @janus.authenticated?(:user), "Expected user to be authenticated."
28
- assert @janus.authenticated?(:admin), "Expected admin to be authenticated."
29
- assert_equal users(:julien), @janus.user(:user)
30
- assert_equal users(:martha), @janus.user(:admin)
31
-
32
- @janus.logout(:admin)
33
- assert @janus.authenticated?(:user), "Expected user to still be authenticated."
34
- assert !@janus.authenticated?(:admin), "Expected admin to no longer be authenticated."
35
- assert_equal users(:julien), @janus.user(:user)
36
- assert_nil @janus.user(:admin)
37
- end
38
-
39
- test "should logout all scopes at once" do
40
- @janus.login(users(:julien), :scope => :user)
41
- @janus.login(users(:martha), :scope => :admin)
42
- assert @janus.authenticated?(:user), "Expected user to be authenticated."
43
- assert @janus.authenticated?(:admin), "Expected admin to be authenticated."
44
-
45
- @janus.logout
46
- assert !@janus.authenticated?(:user), "Expected user to no longer be authenticated."
47
- assert !@janus.authenticated?(:admin), "Expected admin to no longer be authenticated."
48
- end
49
-
50
- test "should reset session after logout from last scope" do
51
- @janus.login(users(:julien), :scope => :user)
52
- @janus.login(users(:martha), :scope => :admin)
53
-
54
- @janus.logout(:admin)
55
- assert_not_nil session['janus']
56
-
57
- @janus.logout(:user)
58
- assert_nil session['janus']
59
- end
60
-
61
- test "should set and unset the user manually" do
62
- @janus.set_user(users(:martha))
63
- assert @janus.authenticated?(:user), "Expected user to be authenticated."
64
- assert_equal users(:martha), @janus.user(:user)
65
-
66
- @janus.unset_user(:user)
67
- assert !@janus.authenticated?(:user), "Expected user to not be authenticated."
68
- assert_nil @janus.user(:user)
69
- end
70
-
71
- test "should set and unset the user manually in different scopes" do
72
- @janus.set_user(users(:martha), :scope => :user)
73
- @janus.set_user(users(:julien), :scope => :admin)
74
- assert @janus.authenticated?(:user), "Expected user to be authenticated."
75
- assert @janus.authenticated?(:admin), "Expected admin to be authenticated."
76
- assert_equal users(:martha), @janus.user(:user)
77
- assert_equal users(:julien), @janus.user(:admin)
78
-
79
- @janus.unset_user(:user)
80
- assert !@janus.authenticated?(:user), "Expected user to no longer be authenticated."
81
- assert @janus.authenticated?(:admin), "Expected admin to still be authenticated."
82
- assert_nil @janus.user(:user)
83
- assert_equal users(:julien), @janus.user(:admin)
84
-
85
- @janus.unset_user(:martha)
86
- end
87
-
88
- test "authenticate!" do
89
- assert_raise(Janus::NotAuthenticated) { @janus.authenticate!(:user) }
90
-
91
- @janus.set_user(users(:julien))
92
- assert_nothing_raised { @janus.authenticate!(:user) }
93
- end
94
- end