godfat-rubycas-server 0.8.0.20090918

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. data/CHANGELOG.txt +1 -0
  2. data/History.txt +273 -0
  3. data/LICENSE.txt +504 -0
  4. data/Manifest.txt +83 -0
  5. data/PostInstall.txt +3 -0
  6. data/README.rdoc +26 -0
  7. data/Rakefile +115 -0
  8. data/bin/rubycas-server +13 -0
  9. data/bin/rubycas-server-ctl +9 -0
  10. data/config.example.yml +555 -0
  11. data/config.ru +38 -0
  12. data/config/hoe.rb +78 -0
  13. data/config/requirements.rb +15 -0
  14. data/custom_views.example.rb +11 -0
  15. data/lib/casserver.rb +58 -0
  16. data/lib/casserver/authenticators/active_directory_ldap.rb +11 -0
  17. data/lib/casserver/authenticators/authlogic_crypto_providers/aes256.rb +43 -0
  18. data/lib/casserver/authenticators/authlogic_crypto_providers/bcrypt.rb +92 -0
  19. data/lib/casserver/authenticators/authlogic_crypto_providers/md5.rb +34 -0
  20. data/lib/casserver/authenticators/authlogic_crypto_providers/sha1.rb +35 -0
  21. data/lib/casserver/authenticators/authlogic_crypto_providers/sha512.rb +50 -0
  22. data/lib/casserver/authenticators/base.rb +48 -0
  23. data/lib/casserver/authenticators/client_certificate.rb +46 -0
  24. data/lib/casserver/authenticators/google.rb +54 -0
  25. data/lib/casserver/authenticators/ldap.rb +147 -0
  26. data/lib/casserver/authenticators/ntlm.rb +88 -0
  27. data/lib/casserver/authenticators/open_id.rb +22 -0
  28. data/lib/casserver/authenticators/sql.rb +119 -0
  29. data/lib/casserver/authenticators/sql_authlogic.rb +92 -0
  30. data/lib/casserver/authenticators/sql_encrypted.rb +92 -0
  31. data/lib/casserver/authenticators/sql_md5.rb +19 -0
  32. data/lib/casserver/authenticators/sql_rest_auth.rb +71 -0
  33. data/lib/casserver/authenticators/test.rb +19 -0
  34. data/lib/casserver/cas.rb +322 -0
  35. data/lib/casserver/conf.rb +75 -0
  36. data/lib/casserver/controllers.rb +463 -0
  37. data/lib/casserver/load_picnic.rb +19 -0
  38. data/lib/casserver/localization.rb +82 -0
  39. data/lib/casserver/models.rb +265 -0
  40. data/lib/casserver/postambles.rb +174 -0
  41. data/lib/casserver/utils.rb +30 -0
  42. data/lib/casserver/version.rb +9 -0
  43. data/lib/casserver/views.rb +249 -0
  44. data/lib/rubycas-server.rb +1 -0
  45. data/lib/rubycas-server/version.rb +1 -0
  46. data/po/de_DE/rubycas-server.po +119 -0
  47. data/po/es_ES/rubycas-server.po +115 -0
  48. data/po/fr_FR/rubycas-server.po +116 -0
  49. data/po/ja_JP/rubycas-server.po +118 -0
  50. data/po/pl_PL/rubycas-server.po +115 -0
  51. data/po/pt_BR/rubycas-server.po +115 -0
  52. data/po/ru_RU/rubycas-server.po +110 -0
  53. data/po/rubycas-server.pot +104 -0
  54. data/public/themes/cas.css +121 -0
  55. data/public/themes/notice.png +0 -0
  56. data/public/themes/ok.png +0 -0
  57. data/public/themes/simple/bg.png +0 -0
  58. data/public/themes/simple/login_box_bg.png +0 -0
  59. data/public/themes/simple/logo.png +0 -0
  60. data/public/themes/simple/theme.css +28 -0
  61. data/public/themes/urbacon/bg.png +0 -0
  62. data/public/themes/urbacon/login_box_bg.png +0 -0
  63. data/public/themes/urbacon/logo.png +0 -0
  64. data/public/themes/urbacon/theme.css +33 -0
  65. data/public/themes/warning.png +0 -0
  66. data/resources/init.d.sh +58 -0
  67. data/script/console +10 -0
  68. data/script/destroy +14 -0
  69. data/script/generate +14 -0
  70. data/script/txt2html +82 -0
  71. data/setup.rb +1585 -0
  72. data/tasks/deployment.rake +34 -0
  73. data/tasks/environment.rake +7 -0
  74. data/tasks/localization.rake +11 -0
  75. data/tasks/website.rake +17 -0
  76. data/vendor/isaac_0.9.1/LICENSE +26 -0
  77. data/vendor/isaac_0.9.1/README +78 -0
  78. data/vendor/isaac_0.9.1/TODO +3 -0
  79. data/vendor/isaac_0.9.1/VERSIONS +3 -0
  80. data/vendor/isaac_0.9.1/crypt/ISAAC.rb +171 -0
  81. data/vendor/isaac_0.9.1/isaac.gemspec +39 -0
  82. data/vendor/isaac_0.9.1/setup.rb +596 -0
  83. data/vendor/isaac_0.9.1/test/TC_ISAAC.rb +76 -0
  84. metadata +200 -0
@@ -0,0 +1,30 @@
1
+ # Misc utility function used throughout by the RubyCAS-server.
2
+ module CASServer
3
+ module Utils
4
+ def random_string(max_length = 29)
5
+ rg = Crypt::ISAAC.new
6
+ max = 4294619050
7
+ r = "#{Time.now.to_i}r%X%X%X%X%X%X%X%X" %
8
+ [rg.rand(max), rg.rand(max), rg.rand(max), rg.rand(max),
9
+ rg.rand(max), rg.rand(max), rg.rand(max), rg.rand(max)]
10
+ r[0..max_length-1]
11
+ end
12
+ module_function :random_string
13
+
14
+ def log_controller_action(controller, params)
15
+ $LOG << "\n"
16
+
17
+ /`(.*)'/.match(caller[1])
18
+ method = $~[1]
19
+
20
+ if params.respond_to? :dup
21
+ params2 = params.dup
22
+ params2['password'] = '******' if params2['password']
23
+ else
24
+ params2 = params
25
+ end
26
+ $LOG.debug("Processing #{controller}::#{method} #{params2.inspect}")
27
+ end
28
+ module_function :log_controller_action
29
+ end
30
+ end
@@ -0,0 +1,9 @@
1
+ module CASServer
2
+ module VERSION #:nodoc:
3
+ MAJOR = 0
4
+ MINOR = 7
5
+ TINY = 999999
6
+
7
+ STRING = [MAJOR, MINOR, TINY].join('.')
8
+ end
9
+ end
@@ -0,0 +1,249 @@
1
+ # The #.#.# comments (e.g. "2.1.3") refer to section numbers in the CAS protocol spec
2
+ # under http://www.ja-sig.org/products/cas/overview/protocol/index.html
3
+
4
+ # need auto_validation off to render CAS responses and to use the autocomplete='off' property on password field
5
+ Markaby::Builder.set(:auto_validation, false)
6
+
7
+ # disabled XML indentation because it was causing problems with mod_auth_cas
8
+ #Markaby::Builder.set(:indent, 2)
9
+
10
+ module CASServer::Views
11
+
12
+ def layout
13
+ # wrap as XHTML only when auto_validation is on, otherwise pass right through
14
+ if @use_layout
15
+ xhtml_strict do
16
+ head do
17
+ title { "#{organization} #{_(' Central Login')}" }
18
+ link(:rel => "stylesheet", :type => "text/css", :href => "/themes/cas.css")
19
+ link(:rel => "stylesheet", :type => "text/css", :href => "/themes/#{current_theme}/theme.css")
20
+ link(:rel => "icon", :type => "image/png", :href => "/themes/#{current_theme}/favicon.png") if
21
+ File.exists?("#{$APP_ROOT}/public/themes/#{current_theme}/favicon.png")
22
+ end
23
+ body(:onload => "if (document.getElementById('username')) document.getElementById('username').focus()") do
24
+ self << yield
25
+ end
26
+ end
27
+ else
28
+ self << yield
29
+ end
30
+ end
31
+
32
+
33
+ # 2.1.3
34
+ # The full login page.
35
+ def login
36
+ @use_layout = true
37
+
38
+ table(:id => "login-box") do
39
+ tr do
40
+ td(:colspan => 2) do
41
+ div(:id => "headline-container") do
42
+ strong organization
43
+ text _(" Central Login")
44
+ end
45
+ end
46
+ end
47
+ if @message
48
+ tr do
49
+ td(:colspan => 2, :id => "messagebox-container") do
50
+ div(:class => "messagebox #{@message[:type]}") { @message[:message] }
51
+ end
52
+ end
53
+ end
54
+ tr do
55
+ td(:id => "logo-container") do
56
+ img(:id => "logo", :src => "/themes/#{current_theme}/logo.png")
57
+ end
58
+ td(:id => "login-form-container") do
59
+ @include_infoline = true
60
+ login_form
61
+ end
62
+ end
63
+ end
64
+ end
65
+
66
+ # Just the login form.
67
+ def login_form
68
+ form(:method => "post", :action => @form_action || '/login', :id => "login-form",
69
+ :onsubmit => "submitbutton = document.getElementById('login-submit'); submitbutton.value='#{ _("Please wait...") }'; submitbutton.disabled=true; return true;") do
70
+ table(:id => "form-layout") do
71
+ tr do
72
+ td(:id => "username-label-container") do
73
+ label(:id => "username-label", :for => "username") { _( "Username" ) }
74
+ end
75
+ td(:id => "username-container") do
76
+ input(:type => "text", :id => "username", :name => "username",
77
+ :size => "32", :tabindex => "1", :accesskey => "u")
78
+ end
79
+ end
80
+ tr do
81
+ td(:id => "password-label-container") do
82
+ label(:id => "password-label", :for => "password") { _( "Password" ) }
83
+ end
84
+ td(:id => "password-container") do
85
+ input(:type => "password", :id => "password", :name => "password",
86
+ :size => "32", :tabindex => "2", :accesskey => "p", :autocomplete => "off")
87
+ end
88
+ end
89
+ tr do
90
+ td{}
91
+ td(:id => "submit-container") do
92
+ input(:type => "hidden", :id => "lt", :name => "lt", :value => @lt)
93
+ input(:type => "hidden", :id => "service", :name => "service", :value => @service)
94
+ input(:type => "submit", :class => "button", :accesskey => "l", :value => _("LOGIN"), :tabindex => "4", :id => "login-submit")
95
+ end
96
+ end
97
+ tr do
98
+ td(:colspan => 2, :id => "infoline") { infoline }
99
+ end if @include_infoline
100
+ end
101
+ end
102
+ end
103
+
104
+ # 2.3.2
105
+ def logout
106
+ @use_layout = true
107
+
108
+ table(:id => "login-box") do
109
+ tr do
110
+ td(:colspan => 2) do
111
+ div(:id => "headline-container") do
112
+ strong organization
113
+ text _(" Central Login")
114
+ end
115
+ end
116
+ end
117
+ if @message
118
+ tr do
119
+ td(:colspan => 2, :id => "messagebox-container") do
120
+ div(:class => "messagebox #{@message[:type]}") { @message[:message] }
121
+ if @continue_url
122
+ p do
123
+ a(:href => @continue_url) { @continue_url }
124
+ end
125
+ end
126
+ end
127
+ end
128
+ end
129
+ end
130
+ end
131
+
132
+ # 2.4.2
133
+ # CAS 1.0 validate response.
134
+ def validate
135
+ if @success
136
+ text "yes\n#{@username}\n"
137
+ else
138
+ text "no\n\n"
139
+ end
140
+ end
141
+
142
+ # 2.5.2
143
+ # CAS 2.0 service validate response.
144
+ def service_validate
145
+ if @success
146
+ tag!("cas:serviceResponse", 'xmlns:cas' => "http://www.yale.edu/tp/cas") do
147
+ tag!("cas:authenticationSuccess") do
148
+ tag!("cas:user") {@username.to_s.to_xs}
149
+ @extra_attributes.each do |key, value|
150
+ tag!(key) {serialize_extra_attribute(value)}
151
+ end
152
+ if @pgtiou
153
+ tag!("cas:proxyGrantingTicket") {@pgtiou.to_s.to_xs}
154
+ end
155
+ end
156
+ end
157
+ else
158
+ tag!("cas:serviceResponse", 'xmlns:cas' => "http://www.yale.edu/tp/cas") do
159
+ tag!("cas:authenticationFailure", :code => @error.code) {@error.to_s.to_xs}
160
+ end
161
+ end
162
+ end
163
+
164
+ # 2.6.2
165
+ # CAS 2.0 proxy validate response.
166
+ def proxy_validate
167
+ if @success
168
+ tag!("cas:serviceResponse", 'xmlns:cas' => "http://www.yale.edu/tp/cas") do
169
+ tag!("cas:authenticationSuccess") do
170
+ tag!("cas:user") {@username.to_s.to_xs}
171
+ @extra_attributes.each do |key, value|
172
+ tag!(key) {serialize_extra_attribute(value)}
173
+ end
174
+ if @pgtiou
175
+ tag!("cas:proxyGrantingTicket") {@pgtiou.to_s.to_xs}
176
+ end
177
+ if @proxies && !@proxies.empty?
178
+ tag!("cas:proxies") do
179
+ @proxies.each do |proxy_url|
180
+ tag!("cas:proxy") {proxy_url.to_s.to_xs}
181
+ end
182
+ end
183
+ end
184
+ end
185
+ end
186
+ else
187
+ tag!("cas:serviceResponse", 'xmlns:cas' => "http://www.yale.edu/tp/cas") do
188
+ tag!("cas:authenticationFailure", :code => @error.code) {@error.to_s.to_xs}
189
+ end
190
+ end
191
+ end
192
+
193
+ # 2.7.2
194
+ # CAS 2.0 proxy request response.
195
+ def proxy
196
+ if @success
197
+ tag!("cas:serviceResponse", 'xmlns:cas' => "http://www.yale.edu/tp/cas") do
198
+ tag!("cas:proxySuccess") do
199
+ tag!("cas:proxyTicket") {@pt.to_s.to_xs}
200
+ end
201
+ end
202
+ else
203
+ tag!("cas:serviceResponse", 'xmlns:cas' => "http://www.yale.edu/tp/cas") do
204
+ tag!("cas:proxyFailure", :code => @error.code) {@error.to_s.to_xs}
205
+ end
206
+ end
207
+ end
208
+
209
+ def configure
210
+ end
211
+
212
+ protected
213
+ def themes_dir
214
+ File.dirname(File.expand_path(__FILE__))+'../themes'
215
+ end
216
+ module_function :themes_dir
217
+
218
+ def current_theme
219
+ $CONF.theme || "simple"
220
+ end
221
+ module_function :current_theme
222
+
223
+ def organization
224
+ $CONF.organization || ""
225
+ end
226
+ module_function :organization
227
+
228
+ def infoline
229
+ $CONF.infoline || ""
230
+ end
231
+ module_function :infoline
232
+
233
+ def serialize_extra_attribute(value)
234
+ if value.kind_of?(String) || value.kind_of?(Numeric)
235
+ value
236
+ else
237
+ "<![CDATA[#{value.to_yaml}]]>"
238
+ end
239
+ end
240
+ module_function :serialize_extra_attribute
241
+ end
242
+
243
+ if $CONF.custom_views_file
244
+ require $CONF.custom_views_file
245
+
246
+ elsif $CONF.template_erb_dir
247
+ require 'casserver/erb'
248
+
249
+ end
@@ -0,0 +1 @@
1
+ require File.dirname(__FILE__)+'/casserver'
@@ -0,0 +1 @@
1
+ require File.dirname(__FILE__)+'/../casserver/version.rb'
@@ -0,0 +1,119 @@
1
+ # German translations for RubyCAS-Server package
2
+ # German messages for RubyCAS-Server.
3
+ # Copyright (C) 2008 THE RubyCAS-Server'S COPYRIGHT HOLDER
4
+ # This file is distributed under the same license as the RubyCAS-Server package.
5
+ # Matt Zukowski <mzukowski@urbacon.net>, 2008.
6
+ #
7
+ msgid ""
8
+ msgstr ""
9
+ "Project-Id-Version: rubycas-server \n"
10
+ "POT-Creation-Date: 2009-05-06 18:16-0400\n"
11
+ "PO-Revision-Date: 2008-11-12 12:49-0500\n"
12
+ "Last-Translator: Matt Zukowski <mzukowski@urbacon.net>\n"
13
+ "Language-Team: German\n"
14
+ "MIME-Version: 1.0\n"
15
+ "Content-Type: text/plain; charset=UTF-8\n"
16
+ "Content-Transfer-Encoding: 8bit\n"
17
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
+
19
+ #: lib/casserver/cas.rb:117
20
+ msgid ""
21
+ "Your login request did not include a login ticket. There may be a problem "
22
+ "with the authentication system."
23
+ msgstr ""
24
+
25
+ #: lib/casserver/cas.rb:121
26
+ msgid ""
27
+ "The login ticket you provided has already been used up. Please try logging "
28
+ "in again."
29
+ msgstr ""
30
+
31
+ #: lib/casserver/cas.rb:126
32
+ msgid "You took too long to enter your credentials. Please try again."
33
+ msgstr ""
34
+
35
+ #: lib/casserver/cas.rb:130
36
+ msgid ""
37
+ "The login ticket you provided is invalid. There may be a problem with the "
38
+ "authentication system."
39
+ msgstr ""
40
+
41
+ #: lib/casserver/controllers.rb:32
42
+ msgid ""
43
+ "You are currently logged in as '%s'. If this is not you, please log in below."
44
+ msgstr ""
45
+ "Sie sind derzeit angemeldet als '%s'. Sollten dies nicht Sie sein, melden "
46
+ "Sie sich bitte unten an."
47
+
48
+ #: lib/casserver/controllers.rb:37
49
+ msgid ""
50
+ "The client and server are unable to negotiate authentication. Please try "
51
+ "logging in again later."
52
+ msgstr ""
53
+ "Client und Server sind nicht in der Lage eine Authentifizierung "
54
+ "auszuhandeln. Bitte versuchen Sie, sich zu einem späteren Zeitpunkt erneut "
55
+ "anzumelden."
56
+
57
+ #: lib/casserver/controllers.rb:54
58
+ msgid ""
59
+ "The server cannot fulfill this gateway request because no service parameter "
60
+ "was given."
61
+ msgstr ""
62
+ "Der Server kann diese Gateway-Anfrage nicht erfüllen, da keine Service-"
63
+ "Parameter übergeben wurden."
64
+
65
+ #: lib/casserver/controllers.rb:59 lib/casserver/controllers.rb:195
66
+ msgid ""
67
+ "The target service your browser supplied appears to be invalid. Please "
68
+ "contact your system administrator for help."
69
+ msgstr ""
70
+ "Das Ziel-Service, welches Ihr Browsers geliefert hat, scheint ungültig zu "
71
+ "sein. Bitte wenden Sie sich an Ihren Systemadministrator, um Hilfe zu "
72
+ "erhalten."
73
+
74
+ #: lib/casserver/controllers.rb:88
75
+ msgid ""
76
+ "Could not guess the CAS login URI. Please supply a submitToURI parameter "
77
+ "with your request."
78
+ msgstr ""
79
+ "Der CAS-Login-URI konnte nicht erraten werden. Bitte ergänzen Sie Ihre "
80
+ "Anfrage um einen submitToURI Parameter."
81
+
82
+ #: lib/casserver/controllers.rb:184
83
+ msgid "You have successfully logged in."
84
+ msgstr ""
85
+ "Sie haben sich erfolgreich am Central Authentication Service angemeldet."
86
+
87
+ #: lib/casserver/controllers.rb:200
88
+ msgid "Incorrect username or password."
89
+ msgstr "Falscher Benutzername oder Passwort."
90
+
91
+ #: lib/casserver/controllers.rb:257
92
+ msgid "You have successfully logged out."
93
+ msgstr ""
94
+ "Sie haben sich erfolgreich vom Central Authentication Service abgemeldet."
95
+
96
+ #: lib/casserver/controllers.rb:260
97
+ msgid " Please click on the following link to continue:"
98
+ msgstr " Bitte klicken Sie auf den folgenden Link, um fortzufahren:"
99
+
100
+ #: lib/casserver/controllers.rb:410
101
+ msgid "To generate a login ticket, you must make a POST request."
102
+ msgstr ""
103
+ "Für die Generierung eines Login-Tickets, ist eine POST-Anfrage erforderlich."
104
+
105
+ #: lib/casserver/views.rb:43 lib/casserver/views.rb:113
106
+ msgid " Central Login"
107
+ msgstr " Zentrales Login"
108
+
109
+ #: lib/casserver/views.rb:73
110
+ msgid "Username"
111
+ msgstr "Benutzername"
112
+
113
+ #: lib/casserver/views.rb:82
114
+ msgid "Password"
115
+ msgstr "Passwort"
116
+
117
+ #: lib/casserver/views.rb:94
118
+ msgid "LOGIN"
119
+ msgstr "ANMELDEN"
@@ -0,0 +1,115 @@
1
+ # Spanish translations for RubyCAS-Server package
2
+ # Traducciones al espa ol para el paquete RubyCAS-Server.
3
+ # Copyright (C) 2008 THE RubyCAS-Server'S COPYRIGHT HOLDER
4
+ # This file is distributed under the same license as the RubyCAS-Server package.
5
+ # Matt Zukowski <mzukowski@urbacon.net>, 2008.
6
+ #
7
+ msgid ""
8
+ msgstr ""
9
+ "Project-Id-Version: rubycas-server \n"
10
+ "POT-Creation-Date: 2009-05-06 18:16-0400\n"
11
+ "PO-Revision-Date: 2008-11-12 12:30-0500\n"
12
+ "Last-Translator: Matt Zukowski <mzukowski@urbacon.net>\n"
13
+ "Language-Team: Spanish\n"
14
+ "MIME-Version: 1.0\n"
15
+ "Content-Type: text/plain; charset=UTF-8\n"
16
+ "Content-Transfer-Encoding: 8bit\n"
17
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
+
19
+ #: lib/casserver/cas.rb:117
20
+ msgid ""
21
+ "Your login request did not include a login ticket. There may be a problem "
22
+ "with the authentication system."
23
+ msgstr ""
24
+
25
+ #: lib/casserver/cas.rb:121
26
+ msgid ""
27
+ "The login ticket you provided has already been used up. Please try logging "
28
+ "in again."
29
+ msgstr ""
30
+
31
+ #: lib/casserver/cas.rb:126
32
+ msgid "You took too long to enter your credentials. Please try again."
33
+ msgstr ""
34
+
35
+ #: lib/casserver/cas.rb:130
36
+ msgid ""
37
+ "The login ticket you provided is invalid. There may be a problem with the "
38
+ "authentication system."
39
+ msgstr ""
40
+
41
+ #: lib/casserver/controllers.rb:32
42
+ msgid ""
43
+ "You are currently logged in as '%s'. If this is not you, please log in below."
44
+ msgstr ""
45
+ "Usted está conectado como '%s'. Si no lo es usted, por favor, acceda a "
46
+ "continuación."
47
+
48
+ #: lib/casserver/controllers.rb:37
49
+ msgid ""
50
+ "The client and server are unable to negotiate authentication. Please try "
51
+ "logging in again later."
52
+ msgstr ""
53
+ "El cliente y el servidor no están en condiciones de negociar la "
54
+ "autenticación. Por favor, intente acceder de nuevo más tarde."
55
+
56
+ #: lib/casserver/controllers.rb:54
57
+ msgid ""
58
+ "The server cannot fulfill this gateway request because no service parameter "
59
+ "was given."
60
+ msgstr ""
61
+ "El servidor no puede cumplir con esta petición, porque no fue parámetro de "
62
+ "servicio prestado."
63
+
64
+ #: lib/casserver/controllers.rb:59 lib/casserver/controllers.rb:195
65
+ msgid ""
66
+ "The target service your browser supplied appears to be invalid. Please "
67
+ "contact your system administrator for help."
68
+ msgstr ""
69
+ "El objetivo de su navegador de servicios ofrecidos parece ser nula. Por "
70
+ "favor, póngase en contacto con el administrador del sistema para obtener "
71
+ "ayuda."
72
+
73
+ #: lib/casserver/controllers.rb:88
74
+ msgid ""
75
+ "Could not guess the CAS login URI. Please supply a submitToURI parameter "
76
+ "with your request."
77
+ msgstr ""
78
+ "No podía adivinar el URI de acceso CAS. Suministro submitToURI un parámetro "
79
+ "con su solicitud."
80
+
81
+ #: lib/casserver/controllers.rb:184
82
+ msgid "You have successfully logged in."
83
+ msgstr "Inicio de sesión satisfactorio."
84
+
85
+ #: lib/casserver/controllers.rb:200
86
+ msgid "Incorrect username or password."
87
+ msgstr "Incorrecto nombre de usuario o contraseña."
88
+
89
+ #: lib/casserver/controllers.rb:257
90
+ msgid "You have successfully logged out."
91
+ msgstr "Cierre de sesión satisfactorio."
92
+
93
+ #: lib/casserver/controllers.rb:260
94
+ msgid " Please click on the following link to continue:"
95
+ msgstr " Por favor, haga clic en el vínculo siguiente para continuar:"
96
+
97
+ #: lib/casserver/controllers.rb:410
98
+ msgid "To generate a login ticket, you must make a POST request."
99
+ msgstr "Para generar un ticket de acceso, usted debe hacer una petición POST."
100
+
101
+ #: lib/casserver/views.rb:43 lib/casserver/views.rb:113
102
+ msgid " Central Login"
103
+ msgstr " Servicio de Autenticación Central"
104
+
105
+ #: lib/casserver/views.rb:73
106
+ msgid "Username"
107
+ msgstr "Usuario"
108
+
109
+ #: lib/casserver/views.rb:82
110
+ msgid "Password"
111
+ msgstr "Contraseña"
112
+
113
+ #: lib/casserver/views.rb:94
114
+ msgid "LOGIN"
115
+ msgstr "INICIAR SESIÓN"