# 
# Copyright 2004-2006 The Apache Software Foundation.
# Licensed  under the  Apache License,  Version 2.0  (the "License");
# you may not use  this file  except in  compliance with the License.
# You may obtain a copy of the License at 
# 
#   http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed  under the  License is distributed on an "AS IS" BASIS,
# WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
# implied.
#  
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
#user-info-attributes.properties.template
#
#This a template of all user information attributes 
#defined in PLT.D of the JSR-168 specification. All
#attributes in this file are prefixed with the name
#of the authenticated user (returned from PortletRequest.getRemoteUser()).
#To use this file, search and replace the 'remoteUser' token with the
#name of a user you will use to log into the Pluto portal (The user must be 
#registered in tomcat-users.xml). Then copy all or a selection of the 
#attributes into the user-info-attributes.properties
#file and enter the values for each attribute. After restarting
#Tomcat, you should be able to access the Map of all attributes
#for your user by calling PortletRequest.getAttribute(PortletRequest.USER_INFO)
#as explained in PLT.17 of the JSR-168 specification.
#
#
#
#Please format the user.bdate attribute as mm/dd/yyyy.
#As noted in PLT.D of the JSR-168 spec, the user.bdate 
#value returned will be the time in milliseconds 
#since January 1, 1970, 00:00:00 GMT.
remoteUser.user.bdate=
remoteUser.user.gender=
remoteUser.user.employer=
remoteUser.user.department=
remoteUser.user.jobtitle=
remoteUser.user.name.prefix=
remoteUser.user.name.given=
remoteUser.user.name.family=
remoteUser.user.name.middle=
remoteUser.user.name.suffix=
remoteUser.user.name.nickName=
remoteUser.user.home-info.postal.name=
remoteUser.user.home-info.postal.street=
remoteUser.user.home-info.postal.city=
remoteUser.user.home-info.postal.stateprov=
remoteUser.user.home-info.postal.postalcode=
remoteUser.user.home-info.postal.country=
remoteUser.user.home-info.postal.organization=
remoteUser.user.home-info.telecom.telephone.intcode=
remoteUser.user.home-info.telecom.telephone.loccode=
remoteUser.user.home-info.telecom.telephone.number=
remoteUser.user.home-info.telecom.telephone.ext=
remoteUser.user.home-info.telecom.telephone.comment=
remoteUser.user.home-info.telecom.fax.intcode=
remoteUser.user.home-info.telecom.fax.loccode=
remoteUser.user.home-info.telecom.fax.number=
remoteUser.user.home-info.telecom.fax.ext=
remoteUser.user.home-info.telecom.fax.comment=
remoteUser.user.home-info.telecom.mobile.intcode=
remoteUser.user.home-info.telecom.mobile.loccode=
remoteUser.user.home-info.telecom.mobile.number=
remoteUser.user.home-info.telecom.mobile.ext=
remoteUser.user.home-info.telecom.mobile.comment=
remoteUser.user.home-info.telecom.pager.intcode=
remoteUser.user.home-info.telecom.pager.loccode=
remoteUser.user.home-info.telecom.pager.number=
remoteUser.user.home-info.telecom.pager.ext=
remoteUser.user.home-info.telecom.pager.comment=
remoteUser.user.home-info.online.email=
remoteUser.user.home-info.online.uri=
remoteUser.user.business-info.postal.name=
remoteUser.user.business-info.postal.street=
remoteUser.user.business-info.postal.city=
remoteUser.user.business-info.postal.stateprov=
remoteUser.user.business-info.postal.postalcode=
remoteUser.user.business-info.postal.country=
remoteUser.user.business-info.postal.organization=
remoteUser.user.business-info.telecom.telephone.intcode=
remoteUser.user.business-info.telecom.telephone.loccode=
remoteUser.user.business-info.telecom.telephone.number=
remoteUser.user.business-info.telecom.telephone.ext=
remoteUser.user.business-info.telecom.telephone.comment=
remoteUser.user.business-info.telecom.fax.intcode=
remoteUser.user.business-info.telecom.fax.loccode=
remoteUser.user.business-info.telecom.fax.number=
remoteUser.user.business-info.telecom.fax.ext=
remoteUser.user.business-info.telecom.fax.comment=
remoteUser.user.business-info.telecom.mobile.intcode=
remoteUser.user.business-info.telecom.mobile.loccode=
remoteUser.user.business-info.telecom.mobile.number=
remoteUser.user.business-info.telecom.mobile.ext=
remoteUser.user.business-info.telecom.mobile.comment=
remoteUser.user.business-info.telecom.pager.intcode=
remoteUser.user.business-info.telecom.pager.loccode=
remoteUser.user.business-info.telecom.pager.number=
remoteUser.user.business-info.telecom.pager.ext=
remoteUser.user.business-info.telecom.pager.comment=
remoteUser.user.business-info.online.email=
remoteUser.user.business-info.online.uri=