Hello,
I want to use authentication in cocoon so I can limit some users to view certein pages.
But I have a problem;
when I access foo-loginpage I get a form where i can introduce my username and password. when i click "login". I get a blank page. and this as url in my browser
http://localhost:8080/extranet/foo-login?resource=foo-protected
What am I doing wrong?
I have thsi code in my sitemap;
<map:action name="auth-protect" src="">
<map:action name="auth-login" src="">
<map:action name="auth-logout" src="">
<map:action name="auth-loggedIn" src="">
<authentication-manager>
<handlers>
<handler name="foo-handler" xmlns:map="http://apache.org/cocoon/sitemap/1.0" xmlns:sunshine="http://sunshine.sundn.de/sunshine/1.0">
<redirect-to uri="cocoon://foo-loginpage"/>
<authentication uri="cocoon:raw://foo-authuser" />
</handler>
</handlers>
</authentication-manager>
<map:match pattern="foo-loginpage">
<map:generate src="" />
<map:transform src="" />
<map:transform type="encodeURL" />
<map:serialize />
</map:match>
<map:match pattern="foo-login">
<map:act type="auth-login">
<map:parameter name="handler" value="foo-handler"/>
<map:parameter name="parameter_name" value="request:name"/>
<map:parameter name="parameter_password" value="request:password"/>
<!-- If the authentication is successfull then this redirect will be performed -->
<map:redirect-to uri="create_ticket"/>
</map:act>
<!-- authentication failed: -->
<map:generate src="">
<map:transform src="">
<map:serialize/>
</map:match>
<map:match pattern="foo-authuser">
<map:generate src="" />
<map:transform src="">
<map:parameter name="use-request-parameters" value="true" />
</map:transform>
<map:serialize type = "xml" />
</map:match>
<map:match pattern="foo-protected">
<map:act type="auth-protect">
<map:parameter name="handler" value="foo-handler"/>
<map:generate src="">
</map:act>
<map:transform src = "">
<map:serialize />
</map:match>
and i got this info in
foo-user.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<authentication>
<ID>roel</ID>
<password>roel</password>
<role>admin</role> <!-- optional -->
<data>
Any additional optional information can be supplied here.
This will be stored in the session for later retrieval
</data>
</authentication>
and in foo-user.xsl
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="password"/>
<xsl:param name="name"/>
<xsl:template match="authentication">
<authentication>
<xsl:apply-templates select="users"/>
</authentication>
</xsl:template>
<xsl:template match="users">
<xsl:apply-templates select="user"/>
</xsl:template>
<xsl:template match="user">
<xsl:if test="normalize-space(name) = $name and normalize-space(password) = $password">
<ID><xsl:value-of select="name"/></ID>
<role><xsl:value-of select="role"/></role>
<data>
<name><xsl:value-of select="name"/></name>
<role><xsl:value-of select="role"/></role>
<ID><xsl:value-of select="name"/></ID>
<user><xsl:value-of select="name"/></user>
</data>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
loginpage.xml
<?xml version="1.0"?>
<content>
<form>
<url>foo-login?resource=foo-protected</url>
<field name="name" type="text" length="24" description="User"/>
<field name="password" type="password" length="10" description="Password"/>
</form>
</content>
loginpage.xsl
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="content">
<html>
<form method="post" target="_top"><xsl:attribute name="action"><xsl:value-of select="normalize-space(form/url)"/></xsl:attribute>
<table>
<xsl:apply-templates select="form/field"/><br/>
</table>
<input type="submit" value="Login"></input>
</form>
</html>
</xsl:template>
<xsl:template match="field">
<tr>
<td>
<font face="Arial, Helvetica, sans-serif" size="2"><xsl:value-of select="@description"/>:</font>
</td>
<td>
<input>
<xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
<xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute>
<xsl:attribute name="size"><xsl:value-of select="@length"/></xsl:attribute>
</input>
</td>
</tr>
</xsl:template>
<!-- Copy all and apply templates -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
thank you
roel
