source: main/trunk/src/main/webapps/ibisph-view/WEB-INF/config/spring/user.xml @ 3710

Last change on this file since 3710 was 3710, checked in by Garth Braithwaite, 10 years ago

java and view - email verification code working. updated systemid modelmaps to use verified file, then the new resource then classpath system id lookup. many of the modelmap objects were changed from "XML" to the more generic "file". Renamed the saxon*.jars to include the exact version number.

File size: 15.8 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2
3<!--
4        IBIS-PH View System's "user" related Spring properties. These
5        properties are all specific to the "user" type requests and include
6        user specific resources, controllers, and views.
7-->
8
9<beans default-lazy-init="false" default-autowire="no"
10        xmlns="http://www.springframework.org/schema/beans"
11        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
12        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"
13>
14
15        <!--  M O D E L S   /   C O N T R O L L E R   R E S O R U C E S -->
16        <bean id="User.UserProfile.ModelMapKey" class="java.lang.String">
17                <constructor-arg type="java.lang.String" value="UserProfile"/>
18        </bean>
19
20        <bean id="User.HTMLContent.XML.Path" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
21                <property name="targetObject" ref="Common.Context.Servlet"/>
22                <property name="targetMethod" value="getRealPath"/>
23                <property name="arguments"><list><value>xml/user/html_content</value></list></property>
24        </bean>
25
26        <bean id="User.XML.Path" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
27                <property name="targetObject" ref="Common.Context.Servlet"/>
28                <property name="targetMethod" value="getRealPath"/>
29                <property name="arguments"><list><value>xml/user</value></list></property>
30        </bean>
31
32        <bean id="User.RegistartionStatus.HTMLContent.XML.SystemID" class="org.ibisph.systemid.FileSystemID">
33                <constructor-arg ref="User.HTMLContent.XML.Path"/>
34                <constructor-arg value="Status.xml"/>
35        </bean>
36
37        <!-- MAIL NOTES:
38                http://wheelersoftware.com/articles/spring-javamail-2.html
39                http://static.springsource.org/spring/docs/3.1.x/reference/html/mail.html
40                http://forum.springsource.org/showthread.php?33167-How-to-use-Spring-Mail-to-send-mails-via-Gmail-s-SMTP-server
41                http://www.javacodegeeks.com/2010/07/java-mail-spring-gmail-smtp.html
42
43                if you're using JDK 1.5 or earlier, include the "activation.jar" file
44                that you obtained from downloading the JavaBeans Activation Framework,
45                in your CLASSPATH. 
46
47                Sun SMTP properties:
48                http://javamail.kenai.com/nonav/javadocs/com/sun/mail/smtp/package-summary.html
49               
50                GMAIL NOTES:
51                SSL (smtpS)
52                        <property name="protocol" value="smtps"/>
53                        <property name="port" value="465"/>  or port 25
54
55                TLS:
56                        <property name="protocol" value="smtp"/>
57                        <property name="port" value="587"/>
58                        <prop key="mail.smtp.starttls.enable">true</prop>
59
60                doesn't appear to matter:
61                <prop key="mail.smtp.auth">true</prop>
62                <prop key="mail.user">garth.braithwaite@stgutah.com</prop>
63                       
64                velocity template example:
65                http://www.javabeat.net/articles/83-email-integration-in-spring-framework-1.html
66
67        <bean id="User.MailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
68                <description>
69                        Local, internal webapp mail sender config that can be used for
70                        testing without having to have the app server setup with a JNDI
71                        mail session configuration.  If the app server is NOT setup for
72                        JNDI then this code and the refs within the web.xml (and any
73                        enterprise app server config file refs) should be commented out as
74                        leaving in will cause the app to not load/start.  Note also that if
75                        using this configuration the mail.jar and possibly the activation.jar
76                        will need to be put into the app's lib folder.  If/when the JNDI
77                        is used it is important to remove those jars from the webapp's lib.
78                </description>
79
80                <property name="protocol" value="smtps"/>
81                <property name="host" value="smtp.gmail.com"/>
82                <property name="port" value="465"/>
83                <property name="username" value=""/>
84                <property name="password" value=""/>
85                <property name="javaMailProperties">
86                        <props>
87                                <prop key="mail.smtp.connectiontimeout">200000</prop>
88                                <prop key="mail.smtp.timeout">10000</prop>
89                                <prop key="mail.debug">true</prop>
90                        </props>
91                </property>
92        </bean>
93        -->
94        <bean id="User.MailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
95                <description>
96                        Mail sender config that works when the app server is setup for JNDI.
97                        If the app server is NOT setup for JNDI then this code and the refs
98                        within the web.xml (and any enterprise app server config file refs)
99                        should be commented out as it will cause the app to not load/start.
100                        Note that for this to function properly the app server must be setup
101                        with the approp entries and jar file(s) (mail 1.4+, and the activation
102                        .jar if using jdk 1.5).  The app's context must also be configed to
103                        expose the resource.  The name must match the name in the web.xml
104                        resource-ref element which must match the jndiName property below.
105                        Also note that the complete JNDI name is not needed if the app is
106                        configed with the "resourceRef" set to true. 
107
108                        PASSWORD NOTE: In some instances when the app server does NOT provide
109                        a password entry and does not accept a mail.protocol.password or
110                        mail.password property value you will need to supply:
111                        [property name="password" value="xxxxxxx"] which defeats the purpose
112                        of a externally defined mail resource.
113                </description>
114            <property name="session">
115                        <bean class="org.springframework.jndi.JndiObjectFactoryBean">
116                                <property name="jndiName" value="mail/doh_ibisph"/>
117                                <property name="resourceRef" value="true"/>
118                        </bean>
119                </property>
120        </bean>
121
122
123
124        <!-- S E R V I C E S -->
125        <bean id="User.XML.Service" class="org.ibisph.user.service.UserProfileXML">
126                <property name="XMLPath"            ref="User.XML.Path"/>
127                <property name="documentDAO"        ref="Common.XML.DAO"/>
128        </bean>
129
130        <bean id="User.UserProfileFromHTTPRequestParameters.Service" class="org.ibisph.web.HTTPRequestParametersToContainerElementService">
131                <description>HTTP REQUEST PARAMS to USER - POSTED - SAVE USER PROFILE</description>
132                <property name="containerElementName" value="USER"/>
133                <property name="HTTPRequestParameterNameToXMLElementNameList">
134                        <list>
135                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="fullName"/>        <constructor-arg value="FULL_NAME"/></bean>
136                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="emailAddress"/>    <constructor-arg value="ID"/></bean>
137                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="emailAddress"/>    <constructor-arg value="EMAIL_ADDRESS"/></bean>
138                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="password"/>        <constructor-arg value="PASSWORD"/></bean>
139                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="telephoneNumber"/> <constructor-arg value="TELEPHONE_NUMBER"/></bean>
140                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="organization"/>    <constructor-arg value="ORGANIZATION"/></bean>
141                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="securityQuestion"/><constructor-arg value="SECURITY_QUESTION"/></bean>
142                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="securityAnswer"/>  <constructor-arg value="SECURITY_ANSWER"/></bean>
143                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="captcha"/>         <constructor-arg value="CAPTCHA"/></bean>
144                        </list>
145                </property>
146        </bean>
147
148        <bean id="User.EmailVerification.Service" class="org.ibisph.user.service.EmailVerification">
149                <property name="javaMailSender"  ref="User.MailSender"/>
150                <property name="mailMessageFrom" value="user.verification@ibisph.org"/>
151                <property name="mailSubject"     value="User Account Verification"/>
152                <property name="mailMessageVerificationRequestURLSearchReplaceSignature" value="[URL_SearchSignature]"/>
153                <property name="mailMessageHTML">
154                        <value><![CDATA[
155                                <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
156                                        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
157                                <html>
158                                        <head>
159                                                <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
160                                                <title>Verification Email</title>
161                                        </head>
162                                <body>
163                                                To complete your account registration you must verify your
164                                                email by clicking on the <a href="[URL_SearchSignature]">
165                                                Activate Your Account</a> link.
166                                        </body>
167                                </html>
168                        ]]></value>
169                </property>
170                <property name="verificationRequestURLPath" value="verify/user/registration"/>
171        </bean>
172
173
174
175        <!-- X M L   M O D E L S -->
176        <bean id="User.DefaultHTMLContent.ModelMap" class="org.ibisph.modelmap.DefaultModelIfNullModel" parent="Common.XMLModelMap.CommonProperties">
177        </bean>
178        <bean id="User.HTMLContent.ModelMap" class="org.ibisph.systemid.modelmap.SystemIDFromHTTPRequestEndOfPathInfo" parent="Common.XMLModelMap.CommonProperties">
179                <property name="FilePath" ref="User.HTMLContent.XML.Path"/>
180        </bean>
181
182        <bean id="User.UserRegistrationFromHTTPRequest.ModelMap" class="org.ibisph.web.modelmap.HTTPRequestParametersToXML">
183                <description>
184                        Loads the HTTP Request Parameters into a base USER XML container
185                        element which is placed into the model map.  This code is used to
186                        save a new user registration information.
187                </description>
188                <property name="HTTPRequestParametersToContainerElementService" ref="User.UserProfileFromHTTPRequestParameters.Service"/>
189                <property name="modelMapKey" ref="User.UserProfile.ModelMapKey"/>
190        </bean>
191
192        <bean id="User.ProcessUserRegistration.ModelMap" class="org.ibisph.user.modelmap.ProcessUserRegistration">
193                <property name="userProfileModelMapKey" ref="User.UserProfile.ModelMapKey"/>
194                <property name="userProfileService"     ref="User.XML.Service"/>
195                <property name="emailVerificationService" ref="User.EmailVerification.Service"/>
196        </bean>
197
198        <bean id="User.VerifyUserRegistration.ModelMap" class="org.ibisph.user.modelmap.VerifyUserRegistration">
199                <property name="userProfileModelMapKey" ref="User.UserProfile.ModelMapKey"/>
200                <property name="userProfileService"     ref="User.XML.Service"/>
201        </bean>
202
203        <bean id="User.StatusHTMLContent.ModelMap" class="org.ibisph.modelmap.SimpleModelMap" parent="Common.XMLModelMap.CommonProperties">
204                <property name="model" ref="User.RegistartionStatus.HTMLContent.XML.SystemID"/>
205        </bean>
206
207
208        <bean id="User.QueryDefinitionsXML.ModelMap" class="org.ibisph.querydefinition.modelmap.QueryDefinitionsFromHTTPRequest">
209                <property name="modelMapKey" value="QueryDefinitions"/>
210                <property name="queryDefinitionsService" ref="QueryDefinition.XML.Service"/>
211        </bean>
212        <bean id="User.UserAuthoritiesXML.ModelMap" class="org.ibisph.user.springsecurity.UserAuthoritiesXMLModelMap">
213                <property name="modelMapKey" value="UserAuthorities"/>
214        </bean>
215
216
217
218        <!--  C O N T R O L L E R S  -->
219        <bean id="User.HTMLContent.Controller" class="org.ibisph.web.springmvc.ModelMapListProcessingController">
220                <property name="modelMapList">
221                        <list>
222                                <ref bean="User.HTMLContent.ModelMap"/>
223                                <ref bean="User.DefaultHTMLContent.ModelMap"/>
224                                <ref bean="Common.ModifiedDateFromFileSystemID.ModelMap"/>
225                                <ref bean="Common.HTTPRequestParameters.ModelMap"/>
226                                <ref bean="Common.WebAppURLContextPrefixFromHTTPRequest.ModelMap"/>
227                        </list>
228                </property>
229                <property name="view" ref="Home.HTMLContent.View"/>
230        </bean>
231
232        <bean id="User.EmailPassword.Controller" class="org.ibisph.web.springmvc.ModelMapListProcessingController">
233                <property name="modelMapList">
234                        <list>
235                        </list>
236                </property>
237        </bean>
238
239        <bean id="User.NewRegistration.Controller" class="org.ibisph.web.springmvc.ModelMapListProcessingController">
240                <property name="modelMapList">
241                        <list>
242                        </list>
243                </property>
244        </bean>
245
246        <bean id="User.ProcessUserRegistration.Controller" class="org.ibisph.web.springmvc.ModelMapListProcessingController">
247                <description>
248                        /save/user/registration
249                        1) Get the http request params into a User XML doc.
250                        2) Check captcha - if not matches then add bad captcha message
251                        3) Check if user already exists - if so send already exists message
252                        4) Get the verification string
253                        5) Send the email with verification string
254                        6) If error sending then return message
255                        7) Else set the user's verification value in the XML and set
256                           message to verification email sent message.
257                        8) Save to disk
258                        9) Return message as the model to the message.xslt page.
259                </description>
260                <property name="modelMapList">
261                        <list>
262                                <ref bean="User.UserRegistrationFromHTTPRequest.ModelMap"/>
263                                <ref bean="User.ProcessUserRegistration.ModelMap"/>
264                                <ref bean="User.StatusHTMLContent.ModelMap"/>
265                                <ref bean="Common.ModifiedDateFromFileSystemID.ModelMap"/>
266                                <ref bean="Common.WebAppURLContextPrefixFromHTTPRequest.ModelMap"/>
267                        </list>
268                </property>
269                <property name="view" ref="User.Status.View"/>
270        </bean>
271
272<bean id="User.VerifyUserRegistration.Controller" class="org.ibisph.web.springmvc.ModelMapListProcessingController">
273                <description>
274                        verify/user/registration/email address/session id
275                        1) parse the username and verification code from the end of the request URL.
276                        2) If matches set the status to VERIFIED
277                        3)   and save.
278                        4) Else MESSAGE DOESN"T MATCH CONTACT SYS ADMIN.
279                        5) message page has a link with verify page.
280                </description>
281                <property name="modelMapList">
282                        <list>
283                                <ref bean="User.VerifyUserRegistration.ModelMap"/>
284                                <ref bean="User.StatusHTMLContent.ModelMap"/>
285                                <ref bean="Common.ModifiedDateFromFileSystemID.ModelMap"/>
286                                <ref bean="Common.WebAppURLContextPrefixFromHTTPRequest.ModelMap"/>
287                        </list>
288                </property>
289                <property name="view" ref="User.Status.View"/>
290        </bean>
291
292<bean id="User.EditProfile.Controller" class="org.ibisph.web.springmvc.ModelMapListProcessingController">
293        </bean>
294
295<bean id="User.SaveProfile.Controller" class="org.ibisph.web.springmvc.ModelMapListProcessingController">
296        </bean>
297
298
299
300
301
302
303
304
305        <bean id="User.QuerySelectionList.XSLT.SystemID" class="org.ibisph.systemid.FileSystemID">
306                <constructor-arg ref="Common.Webapp.RootPath"/>
307                <constructor-arg value="xslt/html/user/queryselections/SelectionPage.xslt"/>
308        </bean>
309
310
311<!-- MY QUERIES -->
312        <bean id="User.QuerySelectionList.Controller" class="org.ibisph.web.springmvc.ModelMapListProcessingController">
313                <description>    </description>
314                <property name="modelMapList">
315                        <list>
316                                <ref bean="Secure.DefaultSelection.ModelMap"/>
317                                <ref bean="User.QueryDefinitionsXML.ModelMap"/>
318                                <ref bean="User.UserAuthoritiesXML.ModelMap"/>
319                                <ref bean="Common.HTTPRequestParameters.ModelMap"/>
320                                <ref bean="Common.WebAppURLContextPrefixFromHTTPRequest.ModelMap"/>
321                        </list>
322                </property>
323                <property name="view" ref="User.QuerySelectionList.View"/>
324        </bean>
325
326        <bean id="User.QuerySelectionList.View" class="org.ibisph.xml.springmvc.XSLTXMLTransformationView">
327                <constructor-arg ref="User.QuerySelectionList.XSLT.SystemID"/>
328                <constructor-arg ref="Common.XSLT.Transformation"/>
329        </bean>
330
331
332        <!--  V I E W   R E S O U R C E S  -->
333        <bean id="User.HTMLContent.XSLT.SystemID" class="org.ibisph.systemid.FileSystemID">
334                <constructor-arg ref="Common.Webapp.RootPath"/>
335                <constructor-arg value="xslt/html/user/HTMLContentPage.xslt"/>
336        </bean>
337
338        <bean id="User.Status.XSLT.SystemID" class="org.ibisph.systemid.FileSystemID">
339                <constructor-arg ref="Common.Webapp.RootPath"/>
340                <constructor-arg value="xslt/html/user/status/StatusHTMLContentPage.xslt"/>
341        </bean>
342
343
344
345        <!--  V I E W S  -->
346        <bean id="User.HTMLContent.View" class="org.ibisph.xml.springmvc.XSLTXMLTransformationView">
347                <constructor-arg ref="User.HTMLContent.XSLT.SystemID"/>
348                <constructor-arg ref="Common.XSLT.Transformation"/>
349        </bean>
350
351        <bean id="User.Status.View" class="org.ibisph.xml.springmvc.XSLTXMLTransformationView">
352                <constructor-arg ref="User.Status.XSLT.SystemID"/>
353                <constructor-arg ref="Common.XSLT.Transformation"/>
354        </bean>
355</beans>
356
Note: See TracBrowser for help on using the repository browser.