devise_cas_authenticatable 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ # Changelog for devise\_cas\_authenticatable
2
+
3
+ ## Version 1.1.0 - March 5, 2012
4
+
5
+ * Add configurable destination and follow URL support (thanks [Dyson Simmons](https://github.com/dyson)!)
6
+ * Allow applications deployed at sub-URIs to work (thanks [Tod Detre](https://github.com/tod)!)
7
+ * Only add trailing slash to base URI if it's not already present (thanks [joe81](https://github.com/joe81)!)
8
+ * Some documentation updates.
data/Gemfile.lock CHANGED
@@ -14,7 +14,7 @@ GIT
14
14
  PATH
15
15
  remote: .
16
16
  specs:
17
- devise_cas_authenticatable (1.0.1)
17
+ devise_cas_authenticatable (1.1.0)
18
18
  devise (>= 1.0.6)
19
19
  rubycas-client (>= 2.2.1)
20
20
 
@@ -64,10 +64,11 @@ GEM
64
64
  ffi (~> 1.0.6)
65
65
  coderay (0.9.8)
66
66
  crypt-isaac (0.9.1)
67
- devise (1.5.3)
67
+ devise (2.0.4)
68
68
  bcrypt-ruby (~> 3.0)
69
69
  orm_adapter (~> 0.0.3)
70
- warden (~> 1.1)
70
+ railties (~> 3.1)
71
+ warden (~> 1.1.1)
71
72
  diff-lcs (1.1.3)
72
73
  erubis (2.7.0)
73
74
  ffi (1.0.11)
@@ -89,7 +90,7 @@ GEM
89
90
  metaclass (~> 0.0.1)
90
91
  multi_json (1.0.4)
91
92
  nokogiri (1.5.0)
92
- orm_adapter (0.0.5)
93
+ orm_adapter (0.0.6)
93
94
  polyglot (0.3.3)
94
95
  pry (0.9.7.3)
95
96
  coderay (~> 0.9.8)
@@ -140,7 +141,7 @@ GEM
140
141
  rspec (~> 2.7.0)
141
142
  ruby_parser (2.3.1)
142
143
  sexp_processor (~> 3.0)
143
- rubycas-client (2.3.9)
144
+ rubycas-client (2.3.8)
144
145
  activesupport
145
146
  rubyzip (0.9.4)
146
147
  selenium-webdriver (2.13.0)
@@ -170,7 +171,7 @@ GEM
170
171
  polyglot
171
172
  polyglot (>= 0.3.1)
172
173
  tzinfo (0.3.31)
173
- warden (1.1.0)
174
+ warden (1.1.1)
174
175
  rack (>= 1.0)
175
176
  xpath (0.1.4)
176
177
  nokogiri (~> 1.3)
data/README.md CHANGED
@@ -13,7 +13,7 @@ using [rubycas-server](http://github.com/gunark/rubycas-server)).
13
13
  Requirements
14
14
  ------------
15
15
 
16
- - Rails 2.3 or 3.0
16
+ - Rails 2.3 or greater (works with 3.x versions as well)
17
17
  - Devise 1.0 or greater
18
18
  - rubycas-client
19
19
 
@@ -27,17 +27,11 @@ and in your config/environment.rb (on Rails 2.3):
27
27
  config.gem 'devise', :version => '~> 1.0.6'
28
28
  config.gem 'devise_cas_authenticatable'
29
29
 
30
- or Gemfile (Rails 3.0):
30
+ or Gemfile (Rails 3.x):
31
31
 
32
32
  gem 'devise'
33
33
  gem 'devise_cas_authenticatable'
34
34
 
35
- Example
36
- -------
37
-
38
- I've modified the devise_example application to work with this gem. You can find the results
39
- [here](http://github.com/nbudin/devise_cas_example).
40
-
41
35
  Setup
42
36
  -----
43
37
 
@@ -70,6 +64,15 @@ to tell your app how to talk to your CAS server:
70
64
  # config.cas_logout_url = "https://cas.myorganization.com/logout"
71
65
  # config.cas_validate_url = "https://cas.myorganization.com/serviceValidate"
72
66
 
67
+ # The CAS specification allows for the passing of a follow URL to be displayed when
68
+ # a user logs out on the CAS server. RubyCAS-Server also supports redirecting to a
69
+ # URL via the destination param. Set either of these urls and specify either nil,
70
+ # 'destination' or 'follow' as the logout_url_param. If the urls are blank but
71
+ # logout_url_param is set, a default will be detected for the service.
72
+ # config.cas_destination_url = 'https://cas.myorganization.com'
73
+ # config.cas_follow_url = 'https://cas.myorganization.com'
74
+ # config.cas_logout_url_param = nil
75
+
73
76
  # By default, devise_cas_authenticatable will create users. If you would rather
74
77
  # require user records to already exist locally before they can authenticate via
75
78
  # CAS, uncomment the following line.
@@ -16,11 +16,14 @@ class Devise::CasSessionsController < Devise::SessionsController
16
16
  end
17
17
 
18
18
  def destroy
19
+ follow_url = nil
20
+ destination_url = nil
21
+
19
22
  # Delete the ticket->session ID mapping if one exists for this session
20
23
  if ticket = session['cas_last_valid_ticket']
21
24
  ::DeviseCasAuthenticatable::SingleSignOut::Strategies.current_strategy.delete_session_index(ticket)
22
25
  end
23
-
26
+
24
27
  # if :cas_create_user is false a CAS session might be open but not signed_in
25
28
  # in such case we destroy the session here
26
29
  if signed_in?(resource_name)
@@ -29,7 +32,29 @@ class Devise::CasSessionsController < Devise::SessionsController
29
32
  reset_session
30
33
  end
31
34
 
32
- redirect_to(logout_url)
35
+ if ::Devise.cas_logout_url_param == 'destination'
36
+ if !::Devise.cas_destination_url.blank?
37
+ destination_url = Devise.cas_destination_url
38
+ else
39
+ destination_url = request.protocol
40
+ destination_url << request.host
41
+ destination_url << ":#{request.port.to_s}" unless request.port == 80
42
+ destination_url << after_sign_out_path_for(resource_name)
43
+ end
44
+ end
45
+
46
+ if ::Devise.cas_logout_url_param == 'follow'
47
+ if !::Devise.cas_follow_url.blank?
48
+ follow_url = Devise.cas_follow_url
49
+ else
50
+ follow_url = request.protocol
51
+ follow_url << request.host
52
+ follow_url << ":#{request.port.to_s}" unless request.port == 80
53
+ follow_url << after_sign_out_path_for(resource_name)
54
+ end
55
+ end
56
+
57
+ redirect_to(::Devise.cas_client.logout_url(destination_url, follow_url))
33
58
  end
34
59
 
35
60
  def single_sign_out
@@ -90,45 +115,4 @@ class Devise::CasSessionsController < Devise::SessionsController
90
115
  ::Devise.cas_client.add_service_to_login_url(::Devise.cas_service_url(request.url, devise_mapping))
91
116
  end
92
117
  helper_method :cas_login_url
93
-
94
- def request_url
95
- return @request_url if @request_url
96
- @request_url = request.protocol.dup
97
- @request_url << request.host
98
- @request_url << ":#{request.port.to_s}" unless request.port == 80
99
- @request_url
100
- end
101
-
102
- def destination_url
103
- return unless ::Devise.cas_logout_url_param == 'destination'
104
- if !::Devise.cas_destination_url.blank?
105
- url = Devise.cas_destination_url
106
- else
107
- url = request_url.dup
108
- url << after_sign_out_path_for(resource_name)
109
- end
110
- end
111
-
112
- def follow_url
113
- return unless ::Devise.cas_logout_url_param == 'follow'
114
- if !::Devise.cas_follow_url.blank?
115
- url = Devise.cas_follow_url
116
- else
117
- url = request_url.dup
118
- url << after_sign_out_path_for(resource_name)
119
- end
120
- end
121
-
122
- def service_url
123
- ::Devise.cas_service_url(request_url.dup, devise_mapping)
124
- end
125
-
126
- def logout_url
127
- begin
128
- ::Devise.cas_client.logout_url(destination_url, follow_url, service_url)
129
- rescue ArgumentError
130
- # Older rubycas-clients don't accept a service_url
131
- ::Devise.cas_client.logout_url(destination_url, follow_url)
132
- end
133
- end
134
118
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{devise_cas_authenticatable}
5
- s.version = "1.0.1"
5
+ s.version = "1.1.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Nat Budin", "Jeremy Haile"]
@@ -41,7 +41,7 @@ module Devise
41
41
 
42
42
  # The login URL of the CAS server. If undefined, will default based on cas_base_url.
43
43
  @@cas_validate_url = nil
44
-
44
+
45
45
  # The destination url for logout.
46
46
  @@cas_destination_url = nil
47
47
 
@@ -70,7 +70,7 @@ module Devise
70
70
 
71
71
  # Name of the parameter passed in the logout query
72
72
  @@cas_destination_logout_param_name = nil
73
-
73
+
74
74
  mattr_accessor :cas_base_url, :cas_login_url, :cas_logout_url, :cas_validate_url, :cas_destination_url, :cas_follow_url, :cas_logout_url_param, :cas_create_user, :cas_destination_logout_param_name, :cas_username_column, :cas_enable_single_sign_out, :cas_single_sign_out_mapping_strategy
75
75
 
76
76
  def self.cas_create_user?
@@ -102,11 +102,19 @@ module Devise
102
102
  u = URI.parse(base_url)
103
103
  u.query = nil
104
104
  u.path = if mapping.respond_to?(:fullpath)
105
- mapping.fullpath
105
+ if ENV['RAILS_RELATIVE_URL_ROOT']
106
+ ENV['RAILS_RELATIVE_URL_ROOT'] + mapping.fullpath
107
+ else
108
+ mapping.fullpath
109
+ end
106
110
  else
107
- mapping.raw_path
111
+ if ENV['RAILS_RELATIVE_URL_ROOT']
112
+ ENV['RAILS_RELATIVE_URL_ROOT'] + mapping.raw_path
113
+ else
114
+ mapping.raw_path
115
+ end
108
116
  end
109
- u.path << "/"
117
+ u.path << "/" unless u.path =~ /\/$/
110
118
  u.path << action
111
119
  u.to_s
112
120
  end
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise_cas_authenticatable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Nat Budin
@@ -9,176 +10,140 @@ authors:
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2014-07-06 00:00:00.000000000 Z
13
+ date: 2012-03-05 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: devise
16
- requirement: !ruby/object:Gem::Requirement
17
+ requirement: &70212720533560 !ruby/object:Gem::Requirement
18
+ none: false
17
19
  requirements:
18
- - - ">="
20
+ - - ! '>='
19
21
  - !ruby/object:Gem::Version
20
22
  version: 1.0.6
21
23
  type: :runtime
22
24
  prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- version: 1.0.6
25
+ version_requirements: *70212720533560
28
26
  - !ruby/object:Gem::Dependency
29
27
  name: rubycas-client
30
- requirement: !ruby/object:Gem::Requirement
28
+ requirement: &70212720532860 !ruby/object:Gem::Requirement
29
+ none: false
31
30
  requirements:
32
- - - ">="
31
+ - - ! '>='
33
32
  - !ruby/object:Gem::Version
34
33
  version: 2.2.1
35
34
  type: :runtime
36
35
  prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- version: 2.2.1
36
+ version_requirements: *70212720532860
42
37
  - !ruby/object:Gem::Dependency
43
38
  name: rails
44
- requirement: !ruby/object:Gem::Requirement
39
+ requirement: &70212720532160 !ruby/object:Gem::Requirement
40
+ none: false
45
41
  requirements:
46
- - - ">="
42
+ - - ! '>='
47
43
  - !ruby/object:Gem::Version
48
44
  version: 3.0.7
49
45
  type: :development
50
46
  prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- version: 3.0.7
47
+ version_requirements: *70212720532160
56
48
  - !ruby/object:Gem::Dependency
57
49
  name: rspec-rails
58
- requirement: !ruby/object:Gem::Requirement
50
+ requirement: &70212720542700 !ruby/object:Gem::Requirement
51
+ none: false
59
52
  requirements:
60
- - - ">="
53
+ - - ! '>='
61
54
  - !ruby/object:Gem::Version
62
55
  version: 2.6.1
63
56
  type: :development
64
57
  prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- version: 2.6.1
58
+ version_requirements: *70212720542700
70
59
  - !ruby/object:Gem::Dependency
71
60
  name: mocha
72
- requirement: !ruby/object:Gem::Requirement
61
+ requirement: &70212720562620 !ruby/object:Gem::Requirement
62
+ none: false
73
63
  requirements:
74
- - - ">="
64
+ - - ! '>='
75
65
  - !ruby/object:Gem::Version
76
66
  version: '0'
77
67
  type: :development
78
68
  prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- version: '0'
69
+ version_requirements: *70212720562620
84
70
  - !ruby/object:Gem::Dependency
85
71
  name: shoulda
86
- requirement: !ruby/object:Gem::Requirement
72
+ requirement: &70212720561540 !ruby/object:Gem::Requirement
73
+ none: false
87
74
  requirements:
88
- - - ">="
75
+ - - ! '>='
89
76
  - !ruby/object:Gem::Version
90
77
  version: '0'
91
78
  type: :development
92
79
  prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - ">="
96
- - !ruby/object:Gem::Version
97
- version: '0'
80
+ version_requirements: *70212720561540
98
81
  - !ruby/object:Gem::Dependency
99
82
  name: sqlite3-ruby
100
- requirement: !ruby/object:Gem::Requirement
83
+ requirement: &70212720560820 !ruby/object:Gem::Requirement
84
+ none: false
101
85
  requirements:
102
- - - ">="
86
+ - - ! '>='
103
87
  - !ruby/object:Gem::Version
104
88
  version: '0'
105
89
  type: :development
106
90
  prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: '0'
91
+ version_requirements: *70212720560820
112
92
  - !ruby/object:Gem::Dependency
113
93
  name: sham_rack
114
- requirement: !ruby/object:Gem::Requirement
94
+ requirement: &70212720559860 !ruby/object:Gem::Requirement
95
+ none: false
115
96
  requirements:
116
- - - ">="
97
+ - - ! '>='
117
98
  - !ruby/object:Gem::Version
118
99
  version: '0'
119
100
  type: :development
120
101
  prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- version: '0'
102
+ version_requirements: *70212720559860
126
103
  - !ruby/object:Gem::Dependency
127
104
  name: capybara
128
- requirement: !ruby/object:Gem::Requirement
105
+ requirement: &70212720559040 !ruby/object:Gem::Requirement
106
+ none: false
129
107
  requirements:
130
- - - ">="
108
+ - - ! '>='
131
109
  - !ruby/object:Gem::Version
132
110
  version: '0'
133
111
  type: :development
134
112
  prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - ">="
138
- - !ruby/object:Gem::Version
139
- version: '0'
113
+ version_requirements: *70212720559040
140
114
  - !ruby/object:Gem::Dependency
141
115
  name: crypt-isaac
142
- requirement: !ruby/object:Gem::Requirement
116
+ requirement: &70212720557960 !ruby/object:Gem::Requirement
117
+ none: false
143
118
  requirements:
144
- - - ">="
119
+ - - ! '>='
145
120
  - !ruby/object:Gem::Version
146
121
  version: '0'
147
122
  type: :development
148
123
  prerelease: false
149
- version_requirements: !ruby/object:Gem::Requirement
150
- requirements:
151
- - - ">="
152
- - !ruby/object:Gem::Version
153
- version: '0'
124
+ version_requirements: *70212720557960
154
125
  - !ruby/object:Gem::Dependency
155
126
  name: launchy
156
- requirement: !ruby/object:Gem::Requirement
127
+ requirement: &70212720557100 !ruby/object:Gem::Requirement
128
+ none: false
157
129
  requirements:
158
- - - ">="
130
+ - - ! '>='
159
131
  - !ruby/object:Gem::Version
160
132
  version: '0'
161
133
  type: :development
162
134
  prerelease: false
163
- version_requirements: !ruby/object:Gem::Requirement
164
- requirements:
165
- - - ">="
166
- - !ruby/object:Gem::Version
167
- version: '0'
135
+ version_requirements: *70212720557100
168
136
  - !ruby/object:Gem::Dependency
169
137
  name: pry
170
- requirement: !ruby/object:Gem::Requirement
138
+ requirement: &70212720576340 !ruby/object:Gem::Requirement
139
+ none: false
171
140
  requirements:
172
- - - ">="
141
+ - - ! '>='
173
142
  - !ruby/object:Gem::Version
174
143
  version: '0'
175
144
  type: :development
176
145
  prerelease: false
177
- version_requirements: !ruby/object:Gem::Requirement
178
- requirements:
179
- - - ">="
180
- - !ruby/object:Gem::Version
181
- version: '0'
146
+ version_requirements: *70212720576340
182
147
  description: CAS authentication module for Devise
183
148
  email: natbudin@gmail.com
184
149
  executables: []
@@ -186,9 +151,10 @@ extensions: []
186
151
  extra_rdoc_files:
187
152
  - README.md
188
153
  files:
189
- - ".gitignore"
190
- - ".project"
191
- - ".travis.yml"
154
+ - .gitignore
155
+ - .project
156
+ - .travis.yml
157
+ - CHANGELOG.md
192
158
  - Gemfile
193
159
  - Gemfile.lock
194
160
  - README.md
@@ -244,26 +210,30 @@ files:
244
210
  - spec/support/migrations.rb
245
211
  homepage: http://github.com/nbudin/devise_cas_authenticatable
246
212
  licenses: []
247
- metadata: {}
248
213
  post_install_message:
249
214
  rdoc_options: []
250
215
  require_paths:
251
216
  - lib
252
217
  required_ruby_version: !ruby/object:Gem::Requirement
218
+ none: false
253
219
  requirements:
254
- - - ">="
220
+ - - ! '>='
255
221
  - !ruby/object:Gem::Version
256
222
  version: '0'
223
+ segments:
224
+ - 0
225
+ hash: -4204177157087710120
257
226
  required_rubygems_version: !ruby/object:Gem::Requirement
227
+ none: false
258
228
  requirements:
259
- - - ">"
229
+ - - ! '>'
260
230
  - !ruby/object:Gem::Version
261
231
  version: 1.3.1
262
232
  requirements: []
263
233
  rubyforge_project:
264
- rubygems_version: 2.2.0
234
+ rubygems_version: 1.8.11
265
235
  signing_key:
266
- specification_version: 4
236
+ specification_version: 3
267
237
  summary: CAS authentication module for Devise
268
238
  test_files:
269
239
  - spec/routes_spec.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 4802438427502187764340e8d56cf908ee07ab47
4
- data.tar.gz: 102f8c610d852576aeabcf993ccdcf5cfe1afe78
5
- SHA512:
6
- metadata.gz: 0c9e3d4c11c0db81b7a89ac49c31a0bcf817e64e0c2d4a0c23af07374ff15c23d6bd21f43883fb85dee7899afdb9535b23881e12ef751b24b63667ee90c358e6
7
- data.tar.gz: c5a8f955b0a8560a7ee7792307c91d412648e344112e569cab0927abc52782ca6d2b3400800fba1f16ee8e554e8d03815453b1205ec962f8e17448bbf9be754d