VIVO-333 External-auth login button should be language-sensitive.

Don't specify the text in the runtime.properties. Instead, get it from all.properties. Show the button if externalAuth.netIdHeaderName is specified.
This commit is contained in:
j2blake 2013-10-09 16:38:14 -04:00
parent 2417555e1c
commit c9248b1f81
6 changed files with 207 additions and 209 deletions

View file

@ -397,7 +397,7 @@
<em>External authentication:</em> <em>External authentication:</em>
If you want to use an external If you want to use an external
authentication system like Shibboleth or CUWebAuth, you will need to authentication system like Shibboleth or CUWebAuth, you will need to
set two additional properties in this file. See the section below set an additional property in this file. See the section below
entitled <a href="#external_auth">Using an External Authentication System with Vitro</a>. entitled <a href="#external_auth">Using an External Authentication System with Vitro</a>.
</p> </p>
<table border='1' bordercolor="#CCCCCC" cellspacing="5"> <table border='1' bordercolor="#CCCCCC" cellspacing="5">
@ -647,21 +647,16 @@
<tr> <tr>
<td colspan="2"> <td colspan="2">
If an external authentication system like Shibboleth or CUWebAuth is to be If an external authentication system like Shibboleth or CUWebAuth is to be
used, these properties say how the login button should be labeled, and which used, this property says which HTTP header will contain the user ID from
HTTP header will contain the user ID from the authentication system. If such the authentication system. If such a system is not to be used,
a system is not to be used, leave these commented out. Consult the installation leave this commented out.
instructions for more details.
</td> </td>
</tr> </tr>
<tr class="odd_row"> <tr class="odd_row">
<td> <td>
externalAuth.buttonText
<br/>
externalAuth.netIdHeaderName externalAuth.netIdHeaderName
</td> </td>
<td> <td>
Log in using BearCat Shibboleth
<br/>
remote_userID remote_userID
</td> </td>
</tr> </tr>
@ -1081,14 +1076,19 @@
the Vitro login form. You need to tell Vitro what text should appear in the Vitro login form. You need to tell Vitro what text should appear in
that button. that button.
<p> <p>
Put a line like this in the runtime.properties file: In your theme, add a line to the <code>all.properties</code> file,
externalAuth.buttonText = [the text for your login button] For example: like this one:
</p> <pre>external_login_text = <em>[the text for your login button]</em></pre>
<pre>externalAuth.buttonText = Log in using BearCat Shibboleth</pre> For example:
<p> <pre>external_login_text = Log in using BearCat Shibboleth</pre>
The Vitro login form will display a button labelled "Log in The Vitro login form will display a button labelled "Log in
using BearCat Shibboleth". using BearCat Shibboleth".
</p> </p>
<p>
If your site supports additional languages, add lines to the corresponding files.
For example, <code>all_es.properties</code> might contain this line:
<pre>external_login_text = Entrar usando Shibboleth GatoOso</pre>
</p>
</li> </li>
<li> <li>
<h5>Associating a User with a profile page.</h5> <h5>Associating a User with a profile page.</h5>

View file

@ -1,186 +1,184 @@
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# #
# Vitro runtime properties # Vitro runtime properties
# #
# This file is provided as example.runtime.properties. # This file is provided as example.runtime.properties.
# #
# Save a copy of this file as runtime.properties in your Vitro home directory, # Save a copy of this file as runtime.properties in your Vitro home directory,
# and edit the properties as needed for your installation. # and edit the properties as needed for your installation.
# #
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# #
# This namespace will be used when generating URIs for objects created in the # This namespace will be used when generating URIs for objects created in the
# editor. In order to serve linked data, the default namespace must be composed # editor. In order to serve linked data, the default namespace must be composed
# as follows (optional elements in parentheses): # as follows (optional elements in parentheses):
# #
# scheme + server_name (+ port) (+ servlet_context) + "/individual/" # scheme + server_name (+ port) (+ servlet_context) + "/individual/"
# #
# For example, Cornell's default namespace is: # For example, Cornell's default namespace is:
# #
# http://vivo.cornell.edu/individual/ # http://vivo.cornell.edu/individual/
# #
Vitro.defaultNamespace = http://vivo.mydomain.edu/individual/ Vitro.defaultNamespace = http://vivo.mydomain.edu/individual/
# #
# URL of Solr context used in local Vitro search. This will usually consist of: # URL of Solr context used in local Vitro search. This will usually consist of:
# scheme + server_name + port + vitro_webapp_name + "solr" # scheme + server_name + port + vitro_webapp_name + "solr"
# In the standard installation, the Solr context will be on the same server as Vitro, # In the standard installation, the Solr context will be on the same server as Vitro,
# and in the same Tomcat instance. The path will be the Vitro webapp.name (specified # and in the same Tomcat instance. The path will be the Vitro webapp.name (specified
# above) + "solr" # above) + "solr"
# Example: # Example:
# vitro.local.solr.url = http://localhost:8080/vitrosolr # vitro.local.solr.url = http://localhost:8080/vitrosolr
vitro.local.solr.url = http://localhost:8080/vitrosolr vitro.local.solr.url = http://localhost:8080/vitrosolr
# #
# Email parameters which VIVO can use to send mail. If these are left empty, # Email parameters which VIVO can use to send mail. If these are left empty,
# the "Contact Us" form will be disabled and users will not be notified of # the "Contact Us" form will be disabled and users will not be notified of
# changes to their accounts. # changes to their accounts.
# #
email.smtpHost = smtp.my.domain.edu email.smtpHost = smtp.my.domain.edu
email.replyTo = vivoAdmin@my.domain.edu email.replyTo = vivoAdmin@my.domain.edu
# #
# The basic parameters for a MySQL database connection. Change the end of the # The basic parameters for a MySQL database connection. Change the end of the
# URL to reflect your database name (if it is not "vitro"). Change the username # URL to reflect your database name (if it is not "vitro"). Change the username
# and password to match the authorized user you created in MySQL. # and password to match the authorized user you created in MySQL.
# #
VitroConnection.DataSource.url = jdbc:mysql://localhost/vitro VitroConnection.DataSource.url = jdbc:mysql://localhost/vitro
VitroConnection.DataSource.username = vitroweb VitroConnection.DataSource.username = vitroweb
VitroConnection.DataSource.password = vitrovitro VitroConnection.DataSource.password = vitrovitro
# #
# The maximum number of active connections in the database connection pool. # The maximum number of active connections in the database connection pool.
# Increase this value to support a greater number of concurrent page requests. # Increase this value to support a greater number of concurrent page requests.
# #
VitroConnection.DataSource.pool.maxActive = 40 VitroConnection.DataSource.pool.maxActive = 40
# #
# The maximum number of database connections that will be allowed # The maximum number of database connections that will be allowed
# to remain idle in the connection pool. Default is 25% # to remain idle in the connection pool. Default is 25%
# of the maximum number of active connections. # of the maximum number of active connections.
# #
VitroConnection.DataSource.pool.maxIdle = 10 VitroConnection.DataSource.pool.maxIdle = 10
# #
# Parameters to change in order to use VIVO with a database other than # Parameters to change in order to use VIVO with a database other than
# MySQL. # MySQL.
# #
VitroConnection.DataSource.dbtype = MySQL VitroConnection.DataSource.dbtype = MySQL
VitroConnection.DataSource.driver = com.mysql.jdbc.Driver VitroConnection.DataSource.driver = com.mysql.jdbc.Driver
VitroConnection.DataSource.validationQuery = SELECT 1 VitroConnection.DataSource.validationQuery = SELECT 1
# #
# Optional URI of a SPARQL endpoint from which VIVO should display data. # Optional URI of a SPARQL endpoint from which VIVO should display data.
# If set, VIVO will use this endpoint as its triple store instead of the # If set, VIVO will use this endpoint as its triple store instead of the
# SDB database. # SDB database.
# #
#VitroConnection.DataSource.endpointURI = #VitroConnection.DataSource.endpointURI =
# #
# Optional URI to use for modifying the above endpoint via SPARQL UPDATE. # Optional URI to use for modifying the above endpoint via SPARQL UPDATE.
# This setting is only necessary if the endpoint does not support updates via # This setting is only necessary if the endpoint does not support updates via
# its main URI. (This may be done for access control purposes.) # its main URI. (This may be done for access control purposes.)
# If the endpointURI above is not set, this setting has no effect. # If the endpointURI above is not set, this setting has no effect.
# #
#VitroConnection.DataSource.updateEndpointURI = #VitroConnection.DataSource.updateEndpointURI =
# #
# The email address of the root user for the VIVO application. The password # The email address of the root user for the VIVO application. The password
# for this user is initially set to "rootPassword", but you will be asked to # for this user is initially set to "rootPassword", but you will be asked to
# change the password the first time you log in. # change the password the first time you log in.
# #
rootUser.emailAddress = root@myDomain.com rootUser.emailAddress = root@myDomain.com
# #
# How is a logged-in user associated with a particular Individual? One way is # How is a logged-in user associated with a particular Individual? One way is
# for the Individual to have a property whose value is the username of the user. # for the Individual to have a property whose value is the username of the user.
# This is the name of that property. # This is the name of that property.
# #
selfEditing.idMatchingProperty = http://vitro.mydomain.edu/ns#networkId selfEditing.idMatchingProperty = http://vitro.mydomain.edu/ns#networkId
# #
# If an external authentication system like Shibboleth or CUWebAuth is to be # If an external authentication system like Shibboleth or CUWebAuth is to be
# used, these properties say how the login button should be labeled, and which # used, this property says which HTTP header will contain the user ID from
# HTTP header will contain the user ID from the authentication system. If such # the authentication system. If such a system is not to be used, leave this
# as system is not to be used, leave these commented out. Consult the # commented out. Consult the installation instructions for more details.
# installation instructions for more details. #
# #externalAuth.netIdHeaderName = remote_userID
#externalAuth.buttonText = Log in using BearCat Shibboleth
#externalAuth.netIdHeaderName = remote_userID #
# Types of individual for which we can create proxy editors.
# # If this is omitted, defaults to http://www.w3.org/2002/07/owl#Thing
# Types of individual for which we can create proxy editors. proxy.eligibleTypeList = http://www.w3.org/2002/07/owl#Thing
# If this is omitted, defaults to http://www.w3.org/2002/07/owl#Thing
proxy.eligibleTypeList = http://www.w3.org/2002/07/owl#Thing #
# Show only the most appropriate data values based on the Accept-Language
# # header supplied by the browser. Default is true if not set.
# Show only the most appropriate data values based on the Accept-Language #
# header supplied by the browser. Default is true if not set. RDFService.languageFilter = true
#
RDFService.languageFilter = true #
# Tell VIVO to generate HTTP headers on its responses to facilitate caching the
# # profile pages that it creates.
# Tell VIVO to generate HTTP headers on its responses to facilitate caching the #
# profile pages that it creates. # For more information, see
# # https://wiki.duraspace.org/display/VIVO/Use+HTTP+caching+to+improve+performance
# For more information, see #
# https://wiki.duraspace.org/display/VIVO/Use+HTTP+caching+to+improve+performance # Developers will likely want to leave caching disabled, since a change to a
# # Freemarker template or to a Java class would not cause the page to be
# Developers will likely want to leave caching disabled, since a change to a # considered stale.
# Freemarker template or to a Java class would not cause the page to be #
# considered stale. # http.createCacheHeaders = true
#
# http.createCacheHeaders = true #
# Force VIVO to use a specific language or Locale instead of those
# # specified by the browser. This affects RDF data retrieved from the model,
# Force VIVO to use a specific language or Locale instead of those # if RDFService.languageFilter is true. This also affects the text of pages
# specified by the browser. This affects RDF data retrieved from the model, # that have been modified to support multiple languages.
# if RDFService.languageFilter is true. This also affects the text of pages #
# that have been modified to support multiple languages. # languages.forceLocale = en_US
#
# languages.forceLocale = en_US #
# A list of supported languages or Locales that the user may choose to
# # use instead of the one specified by the browser. Selection images must
# A list of supported languages or Locales that the user may choose to # be available in the i18n/images directory of the theme. This affects
# use instead of the one specified by the browser. Selection images must # RDF data retrieved from the model, if RDFService.languageFilter is true.
# be available in the i18n/images directory of the theme. This affects # This also affects the text of pages that have been modified to support
# RDF data retrieved from the model, if RDFService.languageFilter is true. # multiple languages.
# This also affects the text of pages that have been modified to support #
# multiple languages. # This should not be used with languages.forceLocale, which will override it.
# #
# This should not be used with languages.forceLocale, which will override it. # languages.selectableLocales = en, es, fr
#
# languages.selectableLocales = en, es, fr #
# For developers only: Setting this option to "true" slows down Vitro performance.
# #
# For developers only: Setting this option to "true" slows down Vitro performance. # Defeat the Freemarker template cache, so each template is read from disk
# # on each request. This permits developers to immediately see the effect of
# Defeat the Freemarker template cache, so each template is read from disk # changes to the template. The default is <code>false</code>, which means
# on each request. This permits developers to immediately see the effect of # that a cached copy of each template will be used for 60 seconds before
# changes to the template. The default is <code>false</code>, which means # the disk is checked for a new version.
# that a cached copy of each template will be used for 60 seconds before #
# the disk is checked for a new version. # developer.defeatFreemarkerCache = true
#
# developer.defeatFreemarkerCache = true #
# For developers only: Setting this option to "true" slows down Vitro performance.
# #
# For developers only: Setting this option to "true" slows down Vitro performance. # Defeat the cache of language-specific text strings, so the language file
# # is read from disk on each request. This permits developers to immediately
# Defeat the cache of language-specific text strings, so the language file # see the effect of changes to the text strings. The default is
# is read from disk on each request. This permits developers to immediately # <code>false</code>, which means that the language file is read when
# see the effect of changes to the text strings. The default is # VIVO starts up, or when a new theme is selected.
# <code>false</code>, which means that the language file is read when #
# VIVO starts up, or when a new theme is selected. # developer.defeatI18nCache = true
#
# developer.defeatI18nCache = true #
# For developers only: Setting this option to "true" slows down Vitro performance.
# #
# For developers only: Setting this option to "true" slows down Vitro performance. # Add starting and ending delimiters to each Freemarker template, so you can see
# # which template were invoked by viewing the generated HTML. The default is
# Add starting and ending delimiters to each Freemarker template, so you can see # <code>false</code>.
# which template were invoked by viewing the generated HTML. The default is #
# <code>false</code>. # developer.insertFreemarkerDelimiters = true
#
# developer.insertFreemarkerDelimiters = true

View file

@ -651,6 +651,7 @@ javascript_require_to_edit = Para editar el contenido, tendrá que activar JavaS
javascript_instructions = java script de instrucciones javascript_instructions = java script de instrucciones
to_enable_javascript = Aquí están las instrucciones para habilitar JavaScript en su navegador web to_enable_javascript = Aquí están las instrucciones para habilitar JavaScript en su navegador web
external_auth_name = Nombre de autenticación externo external_auth_name = Nombre de autenticación externo
external_login_text = Entrar usando Shibboleth GatoOso
account = cuenta account = cuenta
change_password_to_login = Cambiar contraseña para iniciar sesión en change_password_to_login = Cambiar contraseña para iniciar sesión en
new_password_capitalized = Nueva contraseña new_password_capitalized = Nueva contraseña

View file

@ -2,12 +2,12 @@
package edu.cornell.mannlib.vitro.webapp.web.widgets; package edu.cornell.mannlib.vitro.webapp.web.widgets;
import java.io.IOException;
import java.util.Map; import java.util.Map;
import javax.servlet.ServletContext; import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
@ -126,8 +126,7 @@ public class LoginWidget extends Widget {
/** /**
* User is starting the login process. Show them the login screen. * User is starting the login process. Show them the login screen.
*/ */
private WidgetTemplateValues showLoginScreen(HttpServletRequest request, String siteName) private WidgetTemplateValues showLoginScreen(HttpServletRequest request, String siteName) {
throws IOException {
LoginProcessBean bean = LoginProcessBean.getBean(request); LoginProcessBean bean = LoginProcessBean.getBean(request);
log.trace("Going to login screen: " + bean); log.trace("Going to login screen: " + bean);
@ -135,13 +134,12 @@ public class LoginWidget extends Widget {
values.put(TemplateVariable.FORM_ACTION.toString(), getAuthenticateUrl(request)); values.put(TemplateVariable.FORM_ACTION.toString(), getAuthenticateUrl(request));
values.put(TemplateVariable.LOGIN_NAME.toString(), bean.getUsername()); values.put(TemplateVariable.LOGIN_NAME.toString(), bean.getUsername());
String externalAuthDisplayName = ConfigurationProperties.getBean( boolean showExternalAuth = StringUtils.isNotBlank(
request).getProperty("externalAuth.buttonText"); ConfigurationProperties.getBean(request).getProperty(
if (externalAuthDisplayName != null) { "externalAuth.netIdHeaderName"));
if (showExternalAuth) {
values.put(TemplateVariable.EXTERNAL_AUTH_URL.toString(), values.put(TemplateVariable.EXTERNAL_AUTH_URL.toString(),
UrlBuilder.getUrl(EXTERNAL_AUTH_SETUP_URL)); UrlBuilder.getUrl(EXTERNAL_AUTH_SETUP_URL));
values.put(TemplateVariable.EXTERNAL_AUTH_NAME.toString(),
externalAuthDisplayName);
} }
String infoMessage = bean.getInfoMessageAndClear(); String infoMessage = bean.getInfoMessageAndClear();

View file

@ -661,6 +661,7 @@ javascript_require_to_edit = In order to edit content, you'll need to enable Jav
javascript_instructions = java script instructions javascript_instructions = java script instructions
to_enable_javascript = Here are the instructions for enabling JavaScript in your web browser to_enable_javascript = Here are the instructions for enabling JavaScript in your web browser
external_auth_name = external authentication name external_auth_name = external authentication name
external_login_text = Log in using BearCat Shibboleth
account = account account = account
change_password_to_login = Change Password to Log in change_password_to_login = Change Password to Log in
new_password_capitalized = New Password new_password_capitalized = New Password

View file

@ -47,7 +47,7 @@
<#if externalAuthUrl??> <#if externalAuthUrl??>
<#assign infoClassHide = 'class="vivoAccount"'/> <#assign infoClassHide = 'class="vivoAccount"'/>
<p class="external-auth"><a class="blue button" href="${externalAuthUrl}" title="${i18n().external_auth_name}">${externalAuthName}</a></p> <p class="external-auth"><a class="blue button" href="${externalAuthUrl}" title="${i18n().external_auth_name}">${i18n().external_login_text}</a></p>
<!--<p class="or-auth">or</p>--> <!--<p class="or-auth">or</p>-->
<h3 class="internal-auth"><!--Log in using your--> <b>${i18n().or}</b> ${siteName} ${i18n().account}</h3> <h3 class="internal-auth"><!--Log in using your--> <b>${i18n().or}</b> ${siteName} ${i18n().account}</h3>