Changeset 3699 in main


Ignore:
Timestamp:
04/10/12 00:11:02 (10 years ago)
Author:
Garth Braithwaite
Message:

java and view - captcha, user status ui page, registration. Not 100% but getting close.

Location:
trunk/src/main
Files:
9 added
1 deleted
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/main/java/org/ibisph/xml/dao/Document.java

    r3535 r3699  
    7272//    return(null);
    7373    SAXReader xmlReader = new SAXReader();
    74     boolean b =xmlFile.exists();
     74    boolean b = xmlFile.exists();
    7575    if((xmlFile != null) && b) return( xmlReader.read(xmlFile) );
    7676/*
  • trunk/src/main/webapps/ibisph-view/WEB-INF/config/spring/user.xml

    r3687 r3699  
    1616
    1717        <!--  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 -->
     18        <bean id="User.UserProfile.ModelMapKey" class="java.lang.String">
     19                <constructor-arg type="java.lang.String" value="UserProfile"/>
     20        </bean>
     21
    1822        <bean id="User.HTMLContent.XML.Path" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    1923                <property name="targetObject" ref="Common.Context.Servlet"/>
     
    2731                <property name="arguments"><list><value>xml/user</value></list></property>
    2832        </bean>
     33
     34        <bean id="User.RegistartionStatus.HTMLContent.XML.SystemID" class="org.ibisph.systemid.FileSystemID">
     35                <constructor-arg ref="User.HTMLContent.XML.Path"/>
     36                <constructor-arg value="Status.xml"/>
     37        </bean>
    2938
    3039        <bean id="User.RegistrationValidationSerialNumber.DateFormat" class="java.text.SimpleDateFormat">
     
    149158                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="securityQuestion"/><constructor-arg value="SECURITY_QUESTION"/></bean>
    150159                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="securityAnswer"/>  <constructor-arg value="SECURITY_ANSWER"/></bean>
    151                         </list>
    152                 </property>
    153         </bean>
    154 
     160                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="captcha"/>         <constructor-arg value="CAPTCHA"/></bean>
     161                        </list>
     162                </property>
     163        </bean>
     164
     165        <bean id="User.NewRegistrationFromHTTPRequest.ModelMap" class="org.ibisph.web.modelmap.HTTPRequestParametersToXML">
     166                <description>
     167                        Loads the HTTP Request Parameters into a base USER XML container
     168                        element which is placed into the model map.  This code is used to
     169                        save a new user registration information.
     170                </description>
     171                <property name="HTTPRequestParametersToContainerElementService" ref="User.UserProfileFromHTTPRequestParameters.Service"/>
     172                <property name="modelMapKey" ref="User.UserProfile.ModelMapKey"/>
     173        </bean>
    155174
    156175
     
    162181        </bean>
    163182
    164 <bean id="User.SaveUserProfile.ModelMap" class="org.ibisph.user.service.SaveUserProfile">
     183        <bean id="User.StatusHTMLContent.ModelMap" class="org.ibisph.modelmap.SimpleModelMap" parent="Common.XMLModelMap.CommonProperties">
     184                <property name="model" ref="User.RegistartionStatus.HTMLContent.XML.SystemID"/>
     185        </bean>
     186
     187        <bean id="User.UserRegistrationFromHTTPRequest.ModelMap"
     188                class="org.ibisph.querydefinition.modelmap.QueryDefinitionFromHTTPRequest"
     189        >
     190                <description>
     191                        Used to get the qd name from the request (param or end of path) and
     192                        loads it from the XML based on the user details.  This is used  by
     193                        the CriteriaBuilder, DefinitionBuilder, and DefinitionResult type
     194                        requests.  A following modelmap call to load this definition to the
     195                        query module.
     196                </description>
     197                <property name="queryDefinitionNameHTTPRequestParameterName" ref="QueryDefinition.QueryDefinition.HTTPRequestParameterName"/>
     198                <property name="queryDefinitionsService" ref="QueryDefinition.XML.Service"/>
     199                <property name="modelMapKey" ref="QueryDefinition.QueryDefinition.ModelMapKey"/>
     200        </bean>
     201
     202<bean id="User.VerifyUserRegistration.ModelMap" class="org.ibisph.user.modelmap.VerifyUserProfile">
     203        <property name="userProfileModelMapKey" ref="User.UserProfile.ModelMapKey"/>
    165204        <property name="userProfileService" ref="User.XML.Service"/>
    166205        <property name="javaMailSender"     ref="User.MailSender"/>
    167206</bean>
     207
    168208
    169209        <bean id="User.QueryDefinitionsXML.ModelMap" class="org.ibisph.querydefinition.modelmap.QueryDefinitionsFromHTTPRequest">
     
    207247        <bean id="User.SaveRegistration.Controller" class="org.ibisph.web.springmvc.ModelMapListProcessingController">
    208248                <description>
    209                         /query/definition/save* -OR- /query/critera/save*
    210                         Get the POSTED HTTP request params and create a new USER
    211                 </description>
    212                 <property name="modelMapList">
    213                         <list>
    214 <!--
    215                                 <ref bean="User.UserProfileFromHTTPRequestParameters.Service"/>
    216 -->
    217                                 <ref bean="User.SaveUserProfile.ModelMap"/>
    218                         </list>
    219                 </property>
    220                 <property name="view" ref="User.PendingRegistration.View"/>
     249                        /save/user/registration
     250                        1) Get the http request params into a User XML doc.
     251                        2) Check captcha - if not matches then add bad captcha message
     252                        3) Check if user already exists - if so send already exists message
     253                        4) Get the verification string
     254                        5) Send the email with verification string
     255                        6) If error sending then return message
     256                        7) Else set the user's verification value in the XML and set
     257                           message to verification email sent message.
     258                        8) Save to disk
     259                        9) Return message as the model to the message.xslt page.
     260                </description>
     261                <property name="modelMapList">
     262                        <list>
     263                                <ref bean="User.NewRegistrationFromHTTPRequest.ModelMap"/>
     264                                <ref bean="User.VerifyUserRegistration.ModelMap"/>
     265                                <ref bean="User.StatusHTMLContent.ModelMap"/>
     266                        </list>
     267                </property>
     268                <property name="view" ref="User.Status.View"/>
    221269        </bean>
    222270
     
    270318        </bean>
    271319
    272         <bean id="User.PendingRegistration.XSLT.SystemID" class="org.ibisph.systemid.FileSystemID">
     320        <bean id="User.Status.XSLT.SystemID" class="org.ibisph.systemid.FileSystemID">
    273321                <constructor-arg ref="Common.Context.Servlet.RootPath"/>
    274                 <constructor-arg value="xslt/html/user/pending/PendingRegistrationPage.xslt"/>
     322                <constructor-arg value="xslt/html/user/status/StatusHTMLContentPage.xslt"/>
    275323        </bean>
    276324
     
    283331        </bean>
    284332
    285         <bean id="User.PendingRegistration.View" class="org.ibisph.xml.springmvc.XSLTXMLTransformationView">
    286                 <constructor-arg ref="User.PendingRegistration.XSLT.SystemID"/>
     333        <bean id="User.Status.View" class="org.ibisph.xml.springmvc.XSLTXMLTransformationView">
     334                <constructor-arg ref="User.Status.XSLT.SystemID"/>
    287335                <constructor-arg ref="Common.XSLT.Transformation"/>
    288336        </bean>
  • trunk/src/main/webapps/ibisph-view/WEB-INF/web.xml

    r3687 r3699  
    182182        </servlet>
    183183
     184        <servlet>
     185                <description>
     186                        AWT based captcha servler that generates a simple random AWT
     187                        generated text graphic (streams back) and puts the associated
     188                        random text into the user's sesssion for validation.
     189                </description>
     190                <servlet-name>Captcha.Servlet</servlet-name>
     191                <servlet-class>org.ibisph.web.servlet.AWTCaptchaServlet</servlet-class>
     192        </servlet>
     193
     194
    184195
    185196        <!-- ======================================= S E R V L E T   M A P P I N G S -->
     
    268279        </servlet-mapping>
    269280
     281        <servlet-mapping>
     282                <servlet-name>Captcha.Servlet</servlet-name>
     283                <url-pattern>/captcha/*</url-pattern>
     284        </servlet-mapping>
     285
    270286
    271287
  • trunk/src/main/webapps/ibisph-view/xml/user/html_content/Login.xml

    r3687 r3699  
    2222                and your password.  If you don't have an account and would like to be
    2323                able to save your query definitions you can self register for an account
    24                 by filling out a <a ibis:href="user/new/Registration.html">New User
     24                by filling out a <a ibis:href="user/Registration.html">New User
    2525                Registration</a> request.
    2626                <br/><br/>
     
    9090                </div>
    9191
    92                 <script type="text/javascript">
    93                         document.form.username.focus();
    94                
    95                         function newUserPage()
    96                         {
    97                                 location.href = "";
    98                         }
    99                 </script>
    10092        </CONTENT>
    10193</HTML_CONTENT>
  • trunk/src/main/webapps/ibisph-view/xml/user/html_content/Registration.xml

    r3687 r3699  
    2424                fields with an asterik "*" are required.  When you press the [Submit]
    2525                button the system will then send an email to the address you entered.
    26                 You will then need to respond to that email which verifies and will
    27                 activate your account.  You will then be able to login and save your
    28                 query definitions and maintain your account profile.
     26                You will then need to respond to that email which verifies that your
     27                email is valid (which also allows us to email you your password should
     28                you forget it).  Once you verify the email address your account will be
     29                activate which allows you to login and save your query definitions.
    2930                <br/><br/>
    3031
    3132                If the email address you entered already exists a message will be sent
    32                 to that email address.  If you have forgotten your password you can
    33                 retrieve it via the <a ibis:href="user/email/Password.html">forgot my
    34                 passowrd page</a>.
    35                 <br/><br/>
    36 
    37                 Please enter all the info...
     33                to that email address.  If you have forgotten your password or need
     34                to have your account verification email resent please use the
     35                <a ibis:href="user/AccountAccess.html">Account Access</a> page.
    3836                <br/><br/>
    3937
    4038                <h2>User Information</h2>
     39                <style>
     40                        input.Button
     41                        {
     42                                width:  80px;
     43                        }
     44                </style>
    4145                <form name="form" ibis:action="save/user/registration" method="POST">
    4246                        <table cellspacing="0" cellpadding="5" border="0">
     
    5458                                </tr>
    5559                                <tr>
     60                                        <td><label for="passwordVerification">Verify Password *</label></td>
     61                                        <td><input type="password" name="passwordVerification" id="passwordVerification" size="30" maxlength="100"/></td>
     62                                </tr>
     63                                <tr>
    5664                                        <td><label for="organization">Organization</label></td>
    5765                                        <td><input type="text" name="organization" id="organization" size="30" maxlength="100"/></td>
     
    6472                                        <td><label for="securityAnswer">Security Answer *</label></td>
    6573                                        <td><input type="text" name="securityAnswer" id="securityAnswer" size="30" maxlength="100"/></td>
     74                                </tr>
     75                                <tr>
     76                                        <td><label for="captcha">Captcha Code*</label></td>
     77                                        <td>
     78                                                <input type="text" name="captcha" id="captcha" size="30" maxlength="10"/><br/>
     79                                                <img ibis:src="captcha/code.png" alt="captcha image" title="Captcha - Non Machine Verification."/>
     80                                        </td>
    6681                                </tr>
    6782                                <tr>
     
    8297                        <br/><br/>
    8398
    84                         Youf information entered will not be used any outside
     99                        Your information entered will not be used any outside
    85100                        sources and is simply a convience mechanism that allow you to save
    86101                        your preferences and query definitions.  The login and this part of
     
    91106
    92107                <script type="text/javascript">
    93                         document.form.username.focus();
     108                        // <![CDATA[
     109                        document.form.fullName.focus();
     110
     111                        function submitRegistration()
     112                        {
     113                                if(document.form.fullName.value < " ")
     114                                {
     115                                        alert("Your Full Name MUST be populated.");
     116                                        document.form.fullName.focus();
     117                                        return(false);
     118                                }
     119                                else if(document.form.emailAddress.value < " ")
     120                                {
     121                                        alert("Email Address MUST be populated.  This value is the unique identifier that is used by the system to access your account.  You MUST also verify your account via the verification email that will be sent to this address.");
     122                                        document.form.emailAddress.focus();
     123                                        return(false);
     124                                }
     125                                else if(document.form.password.value < " ")
     126                                {
     127                                        alert("Password MUST be populated.");
     128                                        document.form.password.focus();
     129                                        return(false);
     130                                }
     131                                else if(document.form.password.value != document.form.passwordVerification.value)
     132                                {
     133                                        alert("Verification Password MUST match.");
     134                                        document.form.passwordVerification.focus();
     135                                        return(false);
     136                                }
     137                                else if(document.form.securityQuestion.value < " ")
     138                                {
     139                                        alert("Your Security Question MUST be populated.");
     140                                        document.form.securityQuestion.focus();
     141                                        return(false);
     142                                }
     143                                else if(document.form.securityAnswer.value < " ")
     144                                {
     145                                        alert("Your Security Answer MUST be populated.");
     146                                        document.form.securityAnswer.focus();
     147                                        return(false);
     148                                }
     149                                else if(document.form.captcha.value < " ")
     150                                {
     151                                        alert("The CAPTCHA must be populated and must match the exact string value shown below the CAPTCHA input field (value is case sensative).");
     152                                        document.form.captcha.focus();
     153                                        return(false);
     154                                }
     155                                document.form.submit();
     156                        }
     157                        // ]]>
    94158                </script>
    95159        </CONTENT>
  • trunk/src/main/webapps/ibisph-view/xslt/html/HTMLContentPage.xslt

    r3687 r3699  
    232232
    233233
     234        <xsl:template match="HTML_CONTENT/CONTENT//ibis:ContiditionalSection" mode="ibis.copy"
     235                ibis:doc="Provides ability include/exclude certain sections of HTML
     236                        CONTENT.  For this to work, an overriden callback type template
     237                        is used.  This template is passed the section's ID.  The template
     238                        must then determine if the section should be included.  The template
     239                        determines this by XML, the passed in ID, and any other parameters
     240                        that have been passed into the transformer process. 
     241                "
     242        >
     243                <xsl:param name="test">
     244                        <xsl:call-template name="HTMLContent.includeConditionalSection">
     245                                <xsl:with-param name="sectionID" select="@id"/>
     246                        </xsl:call-template>
     247                </xsl:param>
     248
     249                <xsl:if test="ibis:isFirstLetter_T_or_Y_or_X($test)">
     250                        <xsl:apply-templates select="(text() | *)" mode="ibis.copy"/>
     251                </xsl:if>
     252        </xsl:template>
     253
     254
     255        <xsl:template name="HTMLContent.includeConditionalSection"
     256                ibis:doc="Callback type template that controls if the section should be
     257                        processed.  If the template returns 'T', 'X', or 'Y' then that
     258                        content will be included.  If nothing or 'F', 'N' then that cotent
     259                        will be omitted.  Default is to omit everything.  Sub XSLTs must
     260                        override this template and determine if the content should be shown
     261                        based on the XML, params passed in, and the section's ID attribute.
     262                "
     263        >
     264                <xsl:param name="sectionID"/>
     265        </xsl:template>
     266
     267
     268
    234269        <xsl:template match="HTML_CONTENT/CONTENT//ibis:HELP" mode="ibis.copy"
    235270                ibis:doc="Provides a help balloon button."
  • trunk/src/main/webapps/ibisph-view/xslt/ibis.xslt

    r3225 r3699  
    315315        </xsl:template>
    316316
    317         <xsl:template match="ibis:urlPrefix" mode="ibis.copy" ibis:doc="Mechanism that allows the PAGE type XML content to get the ibis:urlPrefix value.  This is useful for pages that have javascript that need this value.">
     317        <xsl:template match="ibis:urlPrefix" mode="ibis.copy" ibis:doc="Mechanism that allows the HTML_CONTENTN PAGE type XML content to get the ibis:urlPrefix value.  This is useful for pages that have javascript that need this value.">
    318318                <xsl:value-of select="$ibis.urlPrefix"/>
    319319        </xsl:template>
Note: See TracChangeset for help on using the changeset viewer.