wmernagh-rubycas-server 0.6.99.336 → 0.7.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,7 +1,12 @@
1
- === 0.7.0 :: In Progress
1
+ === 0.7.1 :: 2008-11-10
2
2
 
3
- * New features:
4
- * Implemented single-sign-out functionality as specified in CAS 3.1. See
3
+ * Fixed dependency loading problems introduced by upstream changes in RubyGems
4
+ 1.3.1.
5
+
6
+ === 0.7.0 :: 2008-11-04
7
+
8
+ * New functionality:
9
+ * Implemented single-sign-out functionality as specified in CAS 3.3. See
5
10
  http://www.ja-sig.org/wiki/display/CASUM/Single+Sign+Out.
6
11
  * It is now possible to configure Authenticators to return extra attributes
7
12
  to CAS clients alongside the username. For an example of how to do this see
@@ -56,6 +61,8 @@
56
61
  expected -- however currently this only works when the server is running
57
62
  in the foregaround. When daemonized, USR2 will shut down the server without
58
63
  restarting (see issue #58).
64
+ * Fixed activerecord/activesupport gem load problems, hopefully once and for all
65
+ (however picnic-0.7.0 is now required).
59
66
 
60
67
  === 0.6.0 :: 2008-03-28
61
68
 
data/Manifest.txt CHANGED
@@ -7,9 +7,6 @@ README.txt
7
7
  Rakefile
8
8
  bin/rubycas-server
9
9
  bin/rubycas-server-ctl
10
- casserver.db
11
- casserver.log
12
- casserver_db.log
13
10
  config.example.yml
14
11
  config/hoe.rb
15
12
  config/requirements.rb
@@ -18,6 +15,7 @@ lib/casserver.rb
18
15
  lib/casserver/authenticators/active_directory_ldap.rb
19
16
  lib/casserver/authenticators/base.rb
20
17
  lib/casserver/authenticators/client_certificate.rb
18
+ lib/casserver/authenticators/google.rb
21
19
  lib/casserver/authenticators/ldap.rb
22
20
  lib/casserver/authenticators/ntlm.rb
23
21
  lib/casserver/authenticators/open_id.rb
data/README.txt CHANGED
@@ -1,7 +1,7 @@
1
1
  = RubyCAS-Server
2
2
 
3
3
  *Copyright*:: 2008 Urbacon Ltd.
4
- *Authors*:: Matt Zukowski <matt at roughest dot net>, Jason Zylks
4
+ *Authors*:: See http://github.com/gunark/rubycas-server/commits/
5
5
  *Homepage*:: http://rubycas-server.googlecode.com
6
6
 
7
7
  For info and installation instructions please see http://code.google.com/p/rubycas-server
data/bin/rubycas-server CHANGED
@@ -8,10 +8,11 @@ else
8
8
  require 'rubygems'
9
9
 
10
10
  # make things backwards-compatible for rubygems < 0.9.0
11
- unless Object.method_defined? :gem
11
+ if respond_to?(:require_gem)
12
+ puts "WARNING: aliasing gem to require_gem in #{__FILE__} -- you should update your RubyGems system!"
12
13
  alias gem require_gem
13
14
  end
14
-
15
+
15
16
  gem 'picnic'
16
17
  end
17
18
 
@@ -19,7 +20,6 @@ require 'picnic/cli'
19
20
 
20
21
  cli = Picnic::Cli.new(
21
22
  'rubycas-server',
22
- :app_path => File.expand_path(File.dirname(File.expand_path(__FILE__))),
23
23
  :app_module => 'CASServer'
24
24
  )
25
25
 
@@ -8,10 +8,11 @@ else
8
8
  require 'rubygems'
9
9
 
10
10
  # make things backwards-compatible for rubygems < 0.9.0
11
- unless Object.method_defined? :gem
11
+ if respond_to?(:require_gem)
12
+ puts "WARNING: aliasing gem to require_gem in #{__FILE__} -- you should update your RubyGems system!"
12
13
  alias gem require_gem
13
14
  end
14
-
15
+
15
16
  gem 'picnic'
16
17
  end
17
18
 
data/config.example.yml CHANGED
@@ -132,7 +132,7 @@ database:
132
132
  # database: some_database_with_users_table
133
133
  # username: root
134
134
  # password:
135
- # server: localhost
135
+ # host: localhost
136
136
  # user_table: users
137
137
  # username_column: username
138
138
  # password_column: password
@@ -187,7 +187,7 @@ database:
187
187
  # database: some_database_with_users_table
188
188
  # user: root
189
189
  # password:
190
- # server: localhost
190
+ # host: localhost
191
191
  # user_table: user
192
192
  # username_column: username
193
193
  # password_column: password
@@ -212,7 +212,7 @@ database:
212
212
  #authenticator:
213
213
  # class: CASServer::Authenticators::ActiveDirectoryLDAP
214
214
  # ldap:
215
- # server: ad.example.net
215
+ # host: ad.example.net
216
216
  # port: 389
217
217
  # base: dc=example,dc=net
218
218
  # filter: (objectClass=person)
@@ -226,7 +226,7 @@ database:
226
226
  #authenticator:
227
227
  # class: CASServer::Authenticators::ActiveDirectoryLDAP
228
228
  # ldap:
229
- # server: ad.example.net
229
+ # host: ad.example.net
230
230
  # port: 636
231
231
  # base: dc=example,dc=net
232
232
  # filter: (objectClass=person) & !(msExchHideFromAddressLists=TRUE)
@@ -253,7 +253,7 @@ database:
253
253
  #authenticator:
254
254
  # class: CASServer::Authenticators::LDAP
255
255
  # ldap:
256
- # server: ldap.example.net
256
+ # host: ldap.example.net
257
257
  # port: 389
258
258
  # base: dc=example,dc=net
259
259
  # filter: (objectClass=person)
@@ -264,7 +264,7 @@ database:
264
264
  #authenticator:
265
265
  # class: CASServer::Authenticators::LDAP
266
266
  # ldap:
267
- # server: ldap.example.net
267
+ # host: ldap.example.net
268
268
  # port: 636
269
269
  # base: dc=example,dc=net
270
270
  # filter: (objectClass=person)
@@ -277,7 +277,7 @@ database:
277
277
  #authenticator:
278
278
  # class: CASServer::Authenticators::LDAP
279
279
  # ldap:
280
- # server: ldap.example.net
280
+ # host: ldap.example.net
281
281
  # port: 389
282
282
  # base: dc=example,dc=net
283
283
  # filter: (objectClass=person)
@@ -321,7 +321,7 @@ database:
321
321
  # -
322
322
  # class: CASServer::Authenticators::ActiveDirectoryLDAP
323
323
  # ldap:
324
- # server: ad.example.net
324
+ # host: ad.example.net
325
325
  # port: 389
326
326
  # base: dc=example,dc=net
327
327
  # filter: (objectClass=person)
@@ -332,7 +332,7 @@ database:
332
332
  # database: some_database_with_users_table
333
333
  # user: root
334
334
  # password:
335
- # server: localhost
335
+ # host: localhost
336
336
  # user_table: user
337
337
  # username_column: username
338
338
  # password_column: password
data/config/hoe.rb CHANGED
@@ -8,9 +8,10 @@ RUBYFORGE_PROJECT = 'rubycas-server' # The unix name for your project
8
8
  HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
9
9
  DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
10
10
  EXTRA_DEPENDENCIES = [
11
- ['activesupport', '>= 2.0.2'],
12
- ['activerecord', '>= 2.0.2'],
13
- ['picnic', '>= 0.6.5']
11
+ 'activesupport',
12
+ 'activerecord',
13
+ 'ruby-gettext',
14
+ ['picnic', '>= 0.7.0']
14
15
  ] # An array of rubygem dependencies [name, version]
15
16
 
16
17
  @config_file = "~/.rubyforge/user-config.yml"
@@ -34,9 +35,9 @@ end
34
35
 
35
36
  ENV['NODOT'] = '1'
36
37
 
37
- #REV = nil
38
+ REV = nil
38
39
  # UNCOMMENT IF REQUIRED:
39
- REV = YAML.load(`svn info`)['Revision']
40
+ #REV = YAML.load(`svn info`)['Revision']
40
41
  VERS = CASServer::VERSION::STRING + (REV ? ".#{REV}" : "")
41
42
  RDOC_OPTS = ['--quiet', '--title', 'rubycas-server documentation',
42
43
  "--opname", "index.html",
@@ -73,4 +74,4 @@ CHANGES = $hoe.paragraphs_of('History.txt', 0..1).join("\\n\\n")
73
74
  PATH = (RUBYFORGE_PROJECT == GEM_NAME) ? RUBYFORGE_PROJECT : "#{RUBYFORGE_PROJECT}"
74
75
  $hoe.remote_rdoc_dir = File.join(PATH.gsub(/^#{RUBYFORGE_PROJECT}\/?/,''), 'rdoc')
75
76
  $hoe.rsync_args = '-av --delete --ignore-errors'
76
- $hoe.spec.post_install_message = File.open(File.dirname(__FILE__) + "/../PostInstall.txt").read rescue ""
77
+ $hoe.spec.post_install_message = File.open(File.dirname(__FILE__) + "/../PostInstall.txt").read rescue ""
data/lib/casserver.rb CHANGED
@@ -1,12 +1,14 @@
1
- $: << File.dirname(File.expand_path(__FILE__))
2
- require 'casserver/environment'
1
+ unless $APP_PATH
2
+ $APP_PATH = File.dirname(File.expand_path(__FILE__))
3
+ $: << $APP_PATH
4
+ end
3
5
 
4
- $APP_PATH ||= File.dirname(File.expand_path(__FILE__))
6
+ load "#{$APP_PATH}/lib/casserver/environment.rb"
5
7
 
6
8
  # change to current directory when invoked on its own
7
9
  Dir.chdir($APP_PATH) if __FILE__ == $0
8
10
 
9
- $: << $APP_PATH + "/../vendor/isaac_0.9.1"
11
+ $: << $APP_PATH + "/vendor/isaac_0.9.1"
10
12
  require 'crypt/ISAAC'
11
13
 
12
14
 
@@ -44,11 +46,12 @@ unless $CONF[:authenticator]
44
46
  exit 1
45
47
  end
46
48
 
47
- require 'casserver/utils'
48
- require 'casserver/models'
49
- require 'casserver/cas'
50
- require 'casserver/views'
51
- require 'casserver/controllers'
49
+ require "casserver/utils.rb"
50
+ require "casserver/models.rb"
51
+ require "casserver/cas.rb"
52
+ require "casserver/views.rb"
53
+ require "casserver/controllers.rb"
54
+ require "casserver/localization.rb"
52
55
 
53
56
  if $CONF[:authenticator].instance_of? Array
54
57
  $CONF[:authenticator].each_index do |auth_index|
@@ -73,6 +76,7 @@ rescue NameError
73
76
  else
74
77
  # the authenticator class hasn't yet been loaded, so lets try to load it from the casserver/authenticators directory
75
78
  auth_rb = authenticator[:class].underscore.gsub('cas_server/', '')
79
+
76
80
  require 'casserver/'+auth_rb
77
81
  end
78
82
  $AUTH << authenticator[:class].constantize.new
data/lib/casserver/cas.rb CHANGED
@@ -234,28 +234,31 @@ module CASServer::CAS
234
234
  # See http://www.ja-sig.org/wiki/display/CASUM/Single+Sign+Out
235
235
  def send_logout_notification_for_service_ticket(st)
236
236
  uri = URI.parse(st.service)
237
- http = Net::HTTP.new(uri.host,uri.port)
237
+ http = Net::HTTP.new(uri.host, uri.port)
238
238
  #http.use_ssl = true if uri.scheme = 'https'
239
239
 
240
- http.start do |conn|
241
- path = uri.path
242
- path = '/' if path.empty?
243
-
244
- time = Time.now
245
- rand = CASServer::Utils.random_string
246
-
247
- data = %{<samlp:LogoutRequest ID="#{rand}" Version="2.0" IssueInstant="#{time.rfc2822}">
240
+ time = Time.now
241
+ rand = CASServer::Utils.random_string
242
+
243
+ path = uri.path
244
+ path = '/' if path.empty?
245
+
246
+ req = Net::HTTP::Post.new(path)
247
+ req.set_form_data(
248
+ 'logoutRequest' => %{<samlp:LogoutRequest ID="#{rand}" Version="2.0" IssueInstant="#{time.rfc2822}">
248
249
  <saml:NameID></saml:NameID>
249
250
  <samlp:SessionIndex>#{st.ticket}</samlp:SessionIndex>
250
251
  </samlp:LogoutRequest>}
251
-
252
- response = conn.request_post(path, data)
253
-
254
- if response.code.to_i == 200
252
+ )
253
+
254
+ http.start do |conn|
255
+ response = conn.request(req)
256
+
257
+ if response.kind_of? Net::HTTPSuccess
255
258
  $LOG.info "Logout notification successfully posted to #{st.service.inspect}."
256
259
  return true
257
260
  else
258
- $LOG.error "Service #{st.service.inspect} responed to logout notification with code '#{response.code}'."
261
+ $LOG.error "Service #{st.service.inspect} responed to logout notification with code '#{response.code}'!"
259
262
  return false
260
263
  end
261
264
  end
@@ -283,7 +286,7 @@ module CASServer::CAS
283
286
  end
284
287
 
285
288
  # Strips CAS-related parameters from a service URL and normalizes it,
286
- # removing trailing / and ?.
289
+ # removing trailing / and ?. Also converts any spaces to +.
287
290
  #
288
291
  # For example, "http://google.com?ticket=12345" will be returned as
289
292
  # "http://google.com". Also, "http://google.com/" would be returned as
@@ -300,7 +303,11 @@ module CASServer::CAS
300
303
  end
301
304
 
302
305
  clean_service.gsub!(/[\/\?]$/, '')
306
+ clean_service.gsub!(' ', '+')
303
307
 
308
+ $LOG.debug("Cleaned dirty service URL #{dirty_service.inspect} to #{clean_service.inspect}") if
309
+ dirty_service != clean_service
310
+
304
311
  return clean_service
305
312
  end
306
313
  module_function :clean_service_url
@@ -1,12 +1,14 @@
1
1
  # The #.#.# comments (e.g. "2.1.3") refer to section numbers in the CAS protocol spec
2
2
  # under http://www.ja-sig.org/products/cas/overview/protocol/index.html
3
3
 
4
+ require 'cas'
5
+
4
6
  module CASServer::Controllers
5
7
 
6
8
  # 2.1
7
9
  class Login < R '/', '/login'
8
10
  include CASServer::CAS
9
-
11
+
10
12
  # 2.1.1
11
13
  def get
12
14
  CASServer::Utils::log_controller_action(self.class, @input)
@@ -27,12 +29,12 @@ module CASServer::Controllers
27
29
 
28
30
  if tgt and !tgt_error
29
31
  @message = {:type => 'notice',
30
- :message => %{You are currently logged in as "#{tgt.username}". If this is not you, please log in below.}}
32
+ :message => _("You are currently logged in as '%s'. If this is not you, please log in below.") % tgt.username }
31
33
  end
32
34
 
33
35
  if @input['redirection_loop_intercepted']
34
36
  @message = {:type => 'mistake',
35
- :message => %{The client and server are unable to negotiate authentication. Please try logging in again later.}}
37
+ :message => _("The client and server are unable to negotiate authentication. Please try logging in again later.")}
36
38
  end
37
39
 
38
40
  begin
@@ -49,12 +51,12 @@ module CASServer::Controllers
49
51
  elsif @gateway
50
52
  $LOG.error("This is a gateway request but no service parameter was given!")
51
53
  @message = {:type => 'mistake',
52
- :message => "The server cannot fulfill this gateway request because no service parameter was given."}
54
+ :message => _("The server cannot fulfill this gateway request because no service parameter was given.")}
53
55
  end
54
56
  rescue URI::InvalidURIError
55
57
  $LOG.error("The service '#{@service}' is not a valid URI!")
56
58
  @message = {:type => 'mistake',
57
- :message => "The target service your browser supplied appears to be invalid. Please contact your system administrator for help."}
59
+ :message => _("The target service your browser supplied appears to be invalid. Please contact your system administrator for help.")}
58
60
  end
59
61
 
60
62
  lt = generate_login_ticket
@@ -83,7 +85,7 @@ module CASServer::Controllers
83
85
  render :login_form
84
86
  else
85
87
  @status = 500
86
- "Could not guess the CAS login URI. Please supply a submitToURI parameter with your request."
88
+ _("Could not guess the CAS login URI. Please supply a submitToURI parameter with your request.")
87
89
  end
88
90
  else
89
91
  render :login
@@ -179,7 +181,7 @@ module CASServer::Controllers
179
181
 
180
182
  if @service.blank?
181
183
  $LOG.info("Successfully authenticated user '#{@username}' at '#{tgt.client_hostname}'. No service param was given, so we will not redirect.")
182
- @message = {:type => 'confirmation', :message => "You have successfully logged in."}
184
+ @message = {:type => 'confirmation', :message => _("You have successfully logged in.")}
183
185
  else
184
186
  @st = generate_service_ticket(@service, @username, tgt)
185
187
  begin
@@ -189,12 +191,13 @@ module CASServer::Controllers
189
191
  return redirect(service_with_ticket, :status => 303) # response code 303 means "See Other" (see Appendix B in CAS Protocol spec)
190
192
  rescue URI::InvalidURIError
191
193
  $LOG.error("The service '#{@service}' is not a valid URI!")
192
- @message = {:type => 'mistake', :message => "The target service your browser supplied appears to be invalid. Please contact your system administrator for help."}
194
+ @message = {:type => 'mistake',
195
+ :message => _("The target service your browser supplied appears to be invalid. Please contact your system administrator for help.")}
193
196
  end
194
197
  end
195
198
  else
196
199
  $LOG.warn("Invalid credentials given for user '#{@username}'")
197
- @message = {:type => 'mistake', :message => "Incorrect username or password."}
200
+ @message = {:type => 'mistake', :message => _("Incorrect username or password.")}
198
201
  @status = 401
199
202
  end
200
203
 
@@ -238,13 +241,13 @@ module CASServer::Controllers
238
241
  tgt.service_tickets.each do |st|
239
242
  send_logout_notification_for_service_ticket(st)
240
243
  # TODO: Maybe we should do some special handling if send_logout_notification_for_service_ticket fails?
241
- # Note that the method returns false if the POST results in a non-200 HTTP response.
242
- $LOG.debug "Deleting #{st.class} #{st.ticket.inspect}."
244
+ # (the above method returns false if the POST results in a non-200 HTTP response).
245
+ $LOG.debug "Deleting #{st.class.name.demodulize} #{st.ticket.inspect}."
243
246
  st.destroy
244
247
  end
245
248
  end
246
249
 
247
- $LOG.debug("Deleting Ticket-Granting Ticket '#{tgt}' for user '#{tgt.username}'")
250
+ $LOG.debug("Deleting #{tgt.class.name.demodulize} '#{tgt}' for user '#{tgt.username}'")
248
251
  tgt.destroy
249
252
  end
250
253
 
@@ -253,10 +256,10 @@ module CASServer::Controllers
253
256
  $LOG.warn("User tried to log out without a valid ticket-granting ticket.")
254
257
  end
255
258
 
256
- @message = {:type => 'confirmation', :message => "You have successfully logged out."}
259
+ @message = {:type => 'confirmation', :message => _("You have successfully logged out.")}
257
260
 
258
261
  @message[:message] <<
259
- " Please click on the following link to continue:" if @continue_url
262
+ _(" Please click on the following link to continue:") if @continue_url
260
263
 
261
264
  @lt = generate_login_ticket
262
265
 
@@ -363,7 +366,7 @@ module CASServer::Controllers
363
366
 
364
367
  @extra_attributes = t.ticket_granting_ticket.extra_attributes || {}
365
368
  end
366
- $LOG.error @error
369
+
367
370
  @status = response_status_from_error(@error) if @error
368
371
 
369
372
  render :proxy_validate
@@ -406,7 +409,7 @@ module CASServer::Controllers
406
409
  CASServer::Utils::log_controller_action(self.class, @input)
407
410
  $LOG.error("Tried to use login ticket dispenser with get method!")
408
411
  @status = 422
409
- "To generate a login ticket, you must make a POST request."
412
+ _("To generate a login ticket, you must make a POST request.")
410
413
  end
411
414
 
412
415
  # Renders a page with a login ticket (and only the login ticket)
@@ -1,26 +1,31 @@
1
1
  $: << File.dirname(File.expand_path(__FILE__))
2
2
 
3
3
  # Try to load local version of Picnic if possible (for development purposes)
4
- $: << File.dirname(File.expand_path(__FILE__))+"/../../../picnic/lib"
5
- $: << File.dirname(File.expand_path(__FILE__))+"/../../vendor/picnic/lib"
4
+ alt_picic_paths = []
5
+ alt_picic_paths << File.dirname(File.expand_path(__FILE__))+"/../../../picnic/lib"
6
+ alt_picic_paths << File.dirname(File.expand_path(__FILE__))+"/../../vendor/picnic/lib"
6
7
 
7
8
  begin
9
+ require 'active_record'
10
+ rescue LoadError
11
+ require 'rubygems'
12
+ require 'active_record'
13
+ end
14
+
15
+ if alt_picic_paths.any?{|path| File.exists? "#{path}/picnic.rb" }
16
+ alt_picic_paths.each{|path| $: << path}
8
17
  require 'picnic'
9
- rescue LoadError => e
10
- # make sure that the LoadError was about picnic and not something else
11
- raise e unless e.to_s =~ /picnic/
12
-
18
+ else
13
19
  require 'rubygems'
14
20
 
15
21
  # make things backwards-compatible for rubygems < 0.9.0
16
- unless Object.method_defined? :gem
22
+ if respond_to?(:require_gem)
23
+ puts "WARNING: aliasing gem to require_gem in #{__FILE__} -- you should update your RubyGems system!"
17
24
  alias gem require_gem
18
25
  end
19
-
20
- gem 'picnic'
21
-
26
+
22
27
  require 'picnic'
23
28
  end
24
29
 
25
30
  # used for serializing user extra_attributes (see #service_validate in views.rb)
26
- require 'yaml'
31
+ require 'yaml'
@@ -1,8 +1,8 @@
1
1
  module CASServer
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
- MINOR = 6
5
- TINY = 99
4
+ MINOR = 7
5
+ TINY = 1
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -14,7 +14,7 @@ module CASServer::Views
14
14
  if @use_layout
15
15
  xhtml_strict do
16
16
  head do
17
- title { "#{organization} Central Login" }
17
+ title { "#{organization} #{_(' Central Login')}" }
18
18
  link(:rel => "stylesheet", :type => "text/css", :href => "/themes/cas.css")
19
19
  link(:rel => "stylesheet", :type => "text/css", :href => "/themes/#{current_theme}/theme.css")
20
20
  end
@@ -38,7 +38,7 @@ module CASServer::Views
38
38
  td(:colspan => 2) do
39
39
  div(:id => "headline-container") do
40
40
  strong organization
41
- text " Central Login"
41
+ text _(" Central Login")
42
42
  end
43
43
  end
44
44
  end
@@ -64,11 +64,11 @@ module CASServer::Views
64
64
  # Just the login form.
65
65
  def login_form
66
66
  form(:method => "post", :action => @form_action || '/login', :id => "login-form",
67
- :onsubmit => "submitbutton = document.getElementById('login-submit'); submitbutton.value='Please wait...'; submitbutton.disabled=true; return true;") do
67
+ :onsubmit => "submitbutton = document.getElementById('login-submit'); submitbutton.value='#{ _("Please wait...") }'; submitbutton.disabled=true; return true;") do
68
68
  table(:id => "form-layout") do
69
69
  tr do
70
70
  td(:id => "username-label-container") do
71
- label(:id => "username-label", :for => "username") { "Username" }
71
+ label(:id => "username-label", :for => "username") { _( "Username" ) }
72
72
  end
73
73
  td(:id => "username-container") do
74
74
  input(:type => "text", :id => "username", :name => "username",
@@ -77,7 +77,7 @@ module CASServer::Views
77
77
  end
78
78
  tr do
79
79
  td(:id => "password-label-container") do
80
- label(:id => "password-label", :for => "password") { "Password" }
80
+ label(:id => "password-label", :for => "password") { _( "Password" ) }
81
81
  end
82
82
  td(:id => "password-container") do
83
83
  input(:type => "password", :id => "password", :name => "password",
@@ -89,7 +89,7 @@ module CASServer::Views
89
89
  td(:id => "submit-container") do
90
90
  input(:type => "hidden", :id => "lt", :name => "lt", :value => @lt)
91
91
  input(:type => "hidden", :id => "service", :name => "service", :value => @service)
92
- input(:type => "submit", :class => "button", :accesskey => "l", :value => "LOGIN", :tabindex => "4", :id => "login-submit")
92
+ input(:type => "submit", :class => "button", :accesskey => "l", :value => _("LOGIN"), :tabindex => "4", :id => "login-submit")
93
93
  end
94
94
  end
95
95
  tr do
@@ -108,7 +108,7 @@ module CASServer::Views
108
108
  td(:colspan => 2) do
109
109
  div(:id => "headline-container") do
110
110
  strong organization
111
- text " Central Login"
111
+ text _(" Central Login")
112
112
  end
113
113
  end
114
114
  end
@@ -1 +1 @@
1
- require 'lib/casserver'
1
+ require 'casserver'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wmernagh-rubycas-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.99.336
4
+ version: 0.7.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Zukowski