Eric-

Glad you have the db auth working. This will likely be files thrown together
because I am getting ready to go out town for a bit.

Here is login.xml
<?xml version="1.0"?>

<page>
<document sidebar="">
 <title>Login page</title>
 <content>
   <linkbar/>
   <para>
     This is a managed system.
   </para>
   <br/><br/>
   <form handler="do-login" name="login" method="get">
   <table width="20" caption="log-in" cellspacing="0" cellpadding="0"
border="0">
    <tr>
    <td width="10" height="0" align="right">WBS id:</td>
    <td width="10" height="0" align="left">
  <input-text name="user_id"/></td>
    </tr>
    <tr>
    <td width="10" height="0" align="right">Password:</td>
    <td width="10" height="0" align="left">
  <input-password name="user_password"/></td>
    </tr>
    <tr>
    <td width="10" height="0" align="center"> </td>
    <td width="10" height="0" align="left">
  <submit name="Login" value="Login"/></td>
    </tr>
 </table>
 <br/>
   </form>
 </content>
</document>
</page>

I flexed heavily off the apache.xsl but if there is anything confusing, let
me know.
I'll give one xsl entry I modified:
  <xsl:template match="input-text">
      <input type="text" name="{@name}" value="{@value}"/>
  </xsl:template>


The pipeline & auth.xml are below from the prior message.
My param.xml is:
<?xml version="1.0" encoding="UTF-8"?>

<!--
This file is used for description of request and session parameters.
parameters that are nullable and are found being null are replaced with
their
default values, non-nullable parameters can make the validation process
fail.
-->
<parameters-descriptor>
  <parameter name="user_id"  type="string" nullable="no"/>
  <parameter name="user_password"  type="string" nullable="no"/>
  <parameter name="user_permission" type="string" nullable="yes"
default="read"/>
</parameters-descriptor>

Your 'login.xsp' and 'do_login.xsp' look very similiar to mine. Just make
sure names match. If it still does not work, I'll have to see your
login.xsp.

      <!-- ================= -->
      <!-- Simple login page -->
      <!-- ================= -->
      <map:match pattern="login">
        <map:generate src="docs/login.xml"/>
        <map:transform src="stylesheets/wbs.xsl"/>
        <map:serialize/>
      </map:match>

      <!-- ========================================= -->
      <!-- Form target which performs auth service   -->
      <!-- ========================================= -->
      <map:match pattern="do-login">
        <!-- first validate whether submitted values are ok -->
        <map:act type="form-validator">
          <map:parameter name="descriptor"
value="context://wbs/descriptors/params.xml"/>
          <map:parameter name="validate" value="user_id"/>
          <!-- now try to log in -->
          <map:act type="db-authenticator">
            <map:parameter name="descriptor"
value="context://wbs/descriptors/auth.xml"/>
            <!-- now go to protected area -->
            <map:redirect-to uri="protected"/>
          </map:act>
  </map:act>
        <!-- something was wrong, try it again -->
  <map:redirect-to uri="login"/>
      </map:match>

On your '*.xsp' pipeline I noticed you used {1}. Once you use an action it
sets a new context and you need to use {../1} to get to the ancestor (or
parent).

Good luck!
Dave.................

----- Original Message -----
From: "Eric Dalquist" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, July 01, 2002 10:22 AM
Subject: Re: Form Validator


> Thanks for the tips Dave. I have the DBAuthenticator working. But I still
> can't get the session validator and form validator to work. Could you
please
> post an example of the XML file you use in your Form or Session
validators?
> I'm trying to be really simple right now with mine:
>
> <?xml version="1.0"?>
> <root>
>     <parameter name="user_name" type="string" nullable="no"/>
> </root>
>
> Here is an exerpt of my sitemap. I took the FormValidator off the
> do_login.xsp to get the DBAuth working.
>
>             <!-- unprotected login page -->
>             <map:match pattern="login.xsp">
>                 <map:generate type="serverpages" src="logic/login.xsp"/>
>                 <map:transform src="../stylesheets/site_format.xsl"/>
>                 <map:transform src="stylesheets/login.xsl"/>
>                 <map:serialize/>
>             </map:match>
>
>
>             <!--
>              | The page do_login does not actually exist this is just a
> dummy
>              | target for the login auth to take place at.
>              -->
>             <map:match pattern="do_login.xsp">
>                 <!-- now try to log in -->
>                 <map:act type="db-authenticator">
>                     <map:parameter name="descriptor"
> value="context://house_bills/descriptors/auth.xml"/>
>
>                     <!-- now go to protected area -->
>                     <map:redirect-to uri="index.xsp"/>
>                 </map:act>
>
>                 <!-- something was wrong, try it again -->
>                 <map:redirect-to uri="login.xsp"/>
>             </map:match>
>
>
>             <!--
>              | Just like with do_login.xsp there is no logout.xsp page. It
> is
>              | just a dummy target which kills the user's session.
>              -->
>             <map:match pattern="logout.xsp">
>                 <map:act type="session-invalidator">
>                     <map:redirect-to uri="login.xsp"/>
>                 </map:act>
>             </map:match>
>
>             <!-- the whole site requires a login so we do special
> excludes -->
>             <map:match pattern="*.xsp">
>                 <map:act type="session-validator">
>                     <map:parameter name="descriptor"
> value="context://house_bills/descriptors/params.xml"/>
>                     <map:parameter name="validate" value="user_name"/>
>
>                     <!-- Now generate the page -->
>                     <map:generate type="serverpages" src="logic/{1}.xsp"/>
>                     <map:transform src="../stylesheets/site_format.xsl"/>
>                     <map:transform src="stylesheets/{1}.xsl"/>
>                     <map:serialize/>
>                     <!-- End generated page -->
>                 </map:act>
>
>                 <!-- something was wrong, redirect to login page -->
>                 <map:redirect-to uri="login.xsp"/>
>             </map:match>
>
>
> ----- Original Message -----
> From: "Dave Covert" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Sunday, June 30, 2002 10:54 PM
> Subject: Re: Form Validator
>
>
> > Eric-
> > I have a simple authentication running with mySql.
> >
> > The db-authenticator is missing from the pipeline given. form-validator
is
> > only validating that the values in your form meet the constraints in
> > params.xml. db-authenticator will check the database table against what
> the
> > user typed in.
> >
> > The corresponding pipeline in my sub-site is:
> >       <map:match pattern="do-login">
> >         <!-- first validate whether submitted values are ok -->
> >         <map:act type="form-validator">
> >           <map:parameter name="descriptor"
> > value="context://wbs/descriptors/params.xml"/>
> >           <map:parameter name="validate" value="user_id"/>
> >           <!-- now try to log in -->
> >           <map:act type="db-authenticator">
> >             <map:parameter name="descriptor"
> > value="context://wbs/descriptors/auth.xml"/>
> >             <!-- now go to protected area -->
> >             <map:redirect-to uri="protected"/>
> >           </map:act>
> >   </map:act>
> >         <!-- something was wrong, try it again -->
> >   <map:redirect-to uri="login"/>
> >       </map:match>
> > (Yes, it was shamelessly stolen from the example.)
> > The auth.xml I use looks like this:
> > <?xml version="1.0" encoding="UTF-8"?>
> > <auth-descriptor>
> >   <connection>wbs</connection>
> >   <table name="tbl_users">
> >     <select dbcol="user_id" request-param="user_id"
to-session="user_id"/>
> >     <select dbcol="user_password" request-param="user_password"
> > to-session="user_password"/>
> >     <select dbcol="user_permission" to-session="user_permission"
> > type="string"/>
> >   </table>
> > </auth-descriptor>
> >
> > An item of note: the names for the id & password MUST match in login.xsp
> > (request name - html form), in params.xml (name=), and auth.xml
> > (request-param=). The "dbcol" in auth.xml is the column name in your
> table -
> > "user_name" from your table def.
> > If the request name in login.xsp (from the html form) is not the same as
> in
> > params.xml (in your case "user_id") that may be why the form is not
> > validated - sending you back to login.
> >
> >
> > Then, assuming other pipes will be 'protected' you need to wrap each
one.
> > Such as:
> >   <map:match pattern="*-meter.html*">
> >     <map:act type="session-validator">
> >       <map:parameter name="descriptor"
> > value="context://wbs//descriptors/params.xml"/>
> >       <map:parameter name="validate" value="user_id, user_password"/>
> >       <!-- Now generate the page -->
> >       <map:generate type="serverpages" src="docs/{../1}-meter.xsp"/>
> >       <map:transform src="stylesheets/wbs.xsl"/>
> >       <map:serialize/>
> >       <!-- End generated page -->
> >     </map:act>
> >     <!-- something was wrong, redirect to login page -->
> >     <map:redirect-to uri="login"/>
> >   </map:match>
> > "session-validator" will validate that the user_id & user_password
(placed
> > in session variables by "db-authenticator" from the "to-session" of
> > auth.xml) are valid. It only checks validity in terms of a 'form'
check -
> it
> > does not access the database again (as far as I know).
> > These values are invalidated on session timeout, forcing the user to
login
> > again.
> > Since I am still playing, I am allowing the password to stay around as a
> > session variable.
> >
> > On your PASSWORD() function question, I can not help. My guess is that
you
> > would have to modify (or make your own)
> > org.apache.cocoon.acting.FormValidatorAction.
> >
> > HTH
> > Dave...................
> >
> > ----- Original Message -----
> > From: "Eric Dalquist" <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Saturday, June 29, 2002 12:06 PM
> > Subject: Form Validator
> >
> >
> > > I've been trying to get the form validator and DB Validator working
for
> > > about a week now. I decided to try and just got the form stuff working
> > first
> > > but I can't even get that. I'm running Cocoon 2.0.2-dev and Tomcat
> 4.1.3.
> > >
> > > In my sitemap.xmap I have the following:
> > >
> > > <!--
> > >  | The page do_login does not actually exist this is just a dummy
> > >  | target for the login auth to take place at.
> > >  -->
> > > <map:match pattern="do_login.xsp">
> > >     <map:act type="form-validator">
> > >         <map:parameter name="descriptor"
> > > value="context://house_bills/descriptors/params.xml"/>
> > >         <map:parameter name="validate-set" value="user-pass"/>
> > >
> > >         <map:redirect-to uri="index.xsp"/>
> > >     </map:act>
> > >
> > >     <map:redirect-to uri="login.xsp"/>
> > > </map:match>
> > >
> > > login.xsp has a form that posts to do_login.xsp and has two inputs
named
> > > user_name and user_password.
> > >
> > > Here is my params.xml
> > > <?xml version="1.0"?>
> > > <root>
> > >   <parameter name="user_name" type="string" nullable="no"/>
> > >   <parameter name="user_password" type="string" nullable="no"/>
> > >
> > >   <constraint-set name="name-pass">
> > >     <validate name="user_name"/>
> > >     <validate name="user_password"/>
> > >   </constraint-set>
> > > </root>
> > >
> > > I've checked through the logs and there aren't any context errors so
> > Cocoon
> > > seems to be finding the params.xml file OK. Everytime I submit the
form
> I
> > > get bounced back to the login.xsp page instead of getting sent to
> > index.xsp.
> > > It doesn't matter if I don't put anything in the inputs or have valid
> data
> > > in both.
> > >
> > > I would also like to be able to validate the user_name &
password_fields
> > > against a MySQL database and setting the value in the corresponding
> > user_id
> > > column in a session variable. I played with it a little and cocoon was
> > > connection to the DB but not authenticating, I don't have my
descriptor
> > file
> > > for that any more. Here is my DDL for the table I want to auth
against.
> > >
> > > CREATE TABLE `users` (
> > >   `user_id` int(11) unsigned NOT NULL auto_increment,
> > >   `user_name` varchar(255) NOT NULL default '',
> > >   `user_password` varchar(16) NOT NULL default '',
> > >   `user_first_name` varchar(255) NOT NULL default '',
> > >   `user_last_name` varchar(255) NOT NULL default '',
> > >   `user_email` varchar(255) NOT NULL default '',
> > >   `user_status` tinyint(4) unsigned NOT NULL default '1',
> > >   PRIMARY KEY  (`user_id`),
> > >   UNIQUE KEY `user_login` (`user_name`,`user_password`),
> > >   UNIQUE KEY `user_id` (`user_id`)
> > > ) TYPE=MyISAM
> > >
> > > My other question with the DBAuth stuff is can cocoon run the
submitted
> > > password through MySQLs PASSWORD() function? I would really like to be
> > able
> > > to keep the password column in the table encrypted and still be able
to
> > use
> > > the DBAuth stuff.
> > >
> > > I hope someone can give me a hand with this. After a week of searching
> the
> > > mailing lists, coocon site and web in general I'm stuck!
> > >
> > > -Eric Dalquist
> > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > > Please check that your question  has not already been answered in the
> > > FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>
> > >
> > > To unsubscribe, e-mail:     <[EMAIL PROTECTED]>
> > > For additional commands, e-mail:   <[EMAIL PROTECTED]>
> >
> >
> >
> > ---------------------------------------------------------------------
> > Please check that your question  has not already been answered in the
> > FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>
> >
> > To unsubscribe, e-mail:     <[EMAIL PROTECTED]>
> > For additional commands, e-mail:   <[EMAIL PROTECTED]>
> >
>
>
>
> ---------------------------------------------------------------------
> Please check that your question  has not already been answered in the
> FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>
>
> To unsubscribe, e-mail:     <[EMAIL PROTECTED]>
> For additional commands, e-mail:   <[EMAIL PROTECTED]>
>



---------------------------------------------------------------------
Please check that your question  has not already been answered in the
FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>

To unsubscribe, e-mail:     <[EMAIL PROTECTED]>
For additional commands, e-mail:   <[EMAIL PROTECTED]>

Reply via email to