diff options
author | randomdan <randomdan@localhost> | 2010-07-11 23:35:41 +0000 |
---|---|---|
committer | randomdan <randomdan@localhost> | 2010-07-11 23:35:41 +0000 |
commit | d98ba1df3e29f54f58ed5a6d5de2199ba568a4a4 (patch) | |
tree | 08640dc459d99a4b5db54610ce404448cfd678a9 | |
parent | Implement variables (prefixed strings to find values elsewhere) (diff) | |
download | gentoobrowse-d98ba1df3e29f54f58ed5a6d5de2199ba568a4a4.tar.bz2 gentoobrowse-d98ba1df3e29f54f58ed5a6d5de2199ba568a4a4.tar.xz gentoobrowse-d98ba1df3e29f54f58ed5a6d5de2199ba568a4a4.zip |
Add signup and email confirmation
-rw-r--r-- | gentoobrowse/emails/signup.xslt | 23 | ||||
-rw-r--r-- | gentoobrowse/emails/welcome.xml | 16 | ||||
-rw-r--r-- | gentoobrowse/present/confirm.xml | 13 | ||||
-rw-r--r-- | gentoobrowse/request/doconfirm.xml | 35 | ||||
-rw-r--r-- | gentoobrowse/request/dologin.xml | 12 | ||||
-rw-r--r-- | gentoobrowse/request/dosignup.xml | 48 |
6 files changed, 147 insertions, 0 deletions
diff --git a/gentoobrowse/emails/signup.xslt b/gentoobrowse/emails/signup.xslt new file mode 100644 index 0000000..914784d --- /dev/null +++ b/gentoobrowse/emails/signup.xslt @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:project2="http://project2.randomdan.homeip.net/" exclude-result-prefixes="project2" > + <xsl:output encoding="utf-8" method="html" media-type="text/html" indent="yes" + doctype-system="http://www.w3.org/TR/html4/loose.dtd" + doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" /> + <xsl:template match="/signup"> + <html> + <head> + <title>Welcome to Gentoo Browse</title> + </head> + <body> + <p>Welcome to Gentoo Browse!</p> + <p> + Click <a><xsl:attribute name="href">http://<xsl:value-of select="/signup/project2:servername" />/confirm?verifyguid=<xsl:value-of select="/signup/verifyguids/verifyguid/guid" /> + </xsl:attribute>this link</a> to confirm your account. + </p> + <p>Or alternatively, copy and paste this code into the confirmation page: <xsl:value-of select="/signup/verifyguids/verifyguid/guid" /></p> + </body> + </html> + </xsl:template> +</xsl:stylesheet> + diff --git a/gentoobrowse/emails/welcome.xml b/gentoobrowse/emails/welcome.xml new file mode 100644 index 0000000..09d2c3d --- /dev/null +++ b/gentoobrowse/emails/welcome.xml @@ -0,0 +1,16 @@ +<?xml version="1.0"?> +<view root="signup" style="emails/signup.xslt" xmlns:xi="http://www.w3.org/2001/XInclude" + xmlns:project2="http://project2.randomdan.homeip.net"> + <xi:include href="../datasources/postgres.xml" /> + <project2:sqlview name="verifyguids" recordname="verifyguid" datasource="postgres"> + <sql> + SELECT userid, CAST(verifyguid AS TEXT) AS guid + FROM users u + WHERE useremail = ? + AND verifyguid IS NOT NULL + </sql> + <parameters> + <param bind="0" value="$email" /> + </parameters> + </project2:sqlview> +</view> diff --git a/gentoobrowse/present/confirm.xml b/gentoobrowse/present/confirm.xml new file mode 100644 index 0000000..5784bdf --- /dev/null +++ b/gentoobrowse/present/confirm.xml @@ -0,0 +1,13 @@ +<?xml version="1.0"?> +<view name="confirm" root="gentoo" style="login.xslt" xmlns:xi="http://www.w3.org/2001/XInclude" + xmlns:project2="http://project2.randomdan.homeip.net"> + <project2:rawview> + <para>Please enter the confirmation code from your welcome email.</para> + <form caption="Confirmation" submit="Confirm" action="/doconfirm" method="post"> + <input type="text" name="verifyguid" caption="Confirmation code" + xslvalue="/gentoo/project2:params/project2:param[@name='verifyguid']" /> + </form> + </project2:rawview> +</view> + + diff --git a/gentoobrowse/request/doconfirm.xml b/gentoobrowse/request/doconfirm.xml new file mode 100644 index 0000000..70a1128 --- /dev/null +++ b/gentoobrowse/request/doconfirm.xml @@ -0,0 +1,35 @@ +<?xml version="1.0"?> +<view name="doconfirm" present="accountHome" xmlns:xi="http://www.w3.org/2001/XInclude" + xmlns:project2="http://project2.randomdan.homeip.net"> + <xi:include href="../datasources/postgres.xml" /> + <project2:sqlcheck datasource="postgres" testOp="=" testValue="1" present="login" name="checkUserAuth"> + <message>Invalid username or password</message> + <sql> + SELECT COUNT(*) + FROM users + WHERE verifyguid = ? + </sql> + <parameters> + <param bind="0" value="$verifyguid" /> + </parameters> + </project2:sqlcheck> + <project2:sqliterate datasource="postgres" name="getUidFromDatabase"> + <sql> + SELECT userid + FROM users + WHERE verifyguid = ? + </sql> + <parameters> + <param bind="0" value="$verifyguid" /> + </parameters> + <tasks> + <project2:sessionset key="loggedInUserID" value="^userid" name="setUidInSession" /> + </tasks> + </project2:sqliterate> + <project2:sqltask datasource="postgres"> + <sql>UPDATE users SET verifyguid = NULL WHERE verifyguid = ?</sql> + <parameters> + <param bind="0" value="$verifyguid" /> + </parameters> + </project2:sqltask> +</view> diff --git a/gentoobrowse/request/dologin.xml b/gentoobrowse/request/dologin.xml index 0eda6bc..dde399f 100644 --- a/gentoobrowse/request/dologin.xml +++ b/gentoobrowse/request/dologin.xml @@ -23,6 +23,18 @@ <param bind="1" value="$password" /> </parameters> </project2:sqlcheck> + <project2:sqlcheck datasource="postgres" testOp="=" testValue="1" present="confirm" name="checkConfirmed"> + <message>Confirmation code required</message> + <sql> + SELECT COUNT(*) + FROM users + WHERE username = ? + AND verifyguid IS NULL + </sql> + <parameters> + <param bind="0" value="$username" /> + </parameters> + </project2:sqlcheck> <project2:sqliterate datasource="postgres" name="getUidFromDatabase"> <sql> SELECT userid diff --git a/gentoobrowse/request/dosignup.xml b/gentoobrowse/request/dosignup.xml new file mode 100644 index 0000000..158853d --- /dev/null +++ b/gentoobrowse/request/dosignup.xml @@ -0,0 +1,48 @@ +<?xml version="1.0"?> +<view name="dosignup" present="confirm" xmlns:xi="http://www.w3.org/2001/XInclude" + xmlns:project2="http://project2.randomdan.homeip.net"> + <xi:include href="../datasources/postgres.xml" /> + <project2:regexcheck apply-to="$username" present="signup" name="usernameEntered"> + <regex>.+</regex> + <message>User name required</message> + </project2:regexcheck> + <project2:regexcheck apply-to="$password" present="signup" name="passwordLength"> + <regex>.{6,}</regex> + <message>Password too short</message> + </project2:regexcheck> + <project2:sqlcheck datasource="postgres" testOp="=" testValue="0" present="signup" name="freeUsername"> + <message>Username already used</message> + <sql> + SELECT COUNT(*) + FROM users + WHERE username = ? + </sql> + <parameters> + <param bind="0" value="$username" /> + </parameters> + </project2:sqlcheck> + <project2:sqlcheck datasource="postgres" testOp="=" testValue="0" present="signup" name="freeEmail"> + <message>Email address already used</message> + <sql> + SELECT COUNT(*) + FROM users + WHERE useremail = ? + </sql> + <parameters> + <param bind="0" value="$email" /> + </parameters> + </project2:sqlcheck> + <project2:sqltask datasource="postgres"> + <sql>INSERT INTO users(username, userrealname, userpassword, useremail, verifyguid) + VALUES(?, ?, ?, ?, uuid_generate_v4())</sql> + <parameters> + <param bind="0" value="$username" /> + <param bind="1" value="$realname" /> + <param bind="2" value="$password" /> + <param bind="3" value="$email" /> + </parameters> + </project2:sqltask> + <project2:sendmail to="$email" server="smtp.random.lan:25" subject="Welcome to Gentoo Browse" + present="welcome" from="noreply@gentoobrowse.randomdan.homeip.net" /> +</view> + |