[wellwell-devel] [SCM] Interchange wellwell catalog branch, master, updated. dd7c63a3d2d7477f8bf9752de4f24f92b6cdbc22

Stefan Hornburg racke at rt.icdevgroup.org
Wed Apr 29 12:00:16 UTC 2009


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Interchange wellwell catalog".

The branch, master has been updated
       via  dd7c63a3d2d7477f8bf9752de4f24f92b6cdbc22 (commit)
      from  304fe094ee50ef7998e0674694a8d04c259a8464 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit dd7c63a3d2d7477f8bf9752de4f24f92b6cdbc22
Author: Stefan Hornburg (Racke) <racke at linuxia.de>
Date:   Wed Apr 29 13:59:51 2009 +0200

    registration revamped, using [form] framework

-----------------------------------------------------------------------

Summary of changes and diff:
 catalog.cfg                      |    5 ++-
 code/form_register_load.sub      |    7 ++++++
 code/form_register_save.sub      |    8 +++++++
 code/register.action             |   41 --------------------------------------
 code/register.tag                |   40 +++++++++++++++++++++++++++++++++++++
 components/login                 |    6 +----
 database/components/register.sql |    6 +++++
 pages/register.itl               |    3 +-
 profiles/register                |   10 ++++----
 9 files changed, 72 insertions(+), 54 deletions(-)
 create mode 100644 code/form_register_load.sub
 create mode 100644 code/form_register_save.sub
 delete mode 100644 code/register.action
 create mode 100644 code/register.tag
 create mode 100644 database/components/register.sql

diff --git a/catalog.cfg b/catalog.cfg
index c77931a..81b09ca 100644
--- a/catalog.cfg
+++ b/catalog.cfg
@@ -60,12 +60,13 @@ Pragma interpolate_itl_references
 
 # User database configuration
 UserDB default database          users
-#UserDB default indirect_login    email
+UserDB default indirect_login    email
 UserDB default assign_username   0
 UserDB default counter           var/run/userdb.counter
-UserDB default user_field		 username
+UserDB default user_field		 uid
 UserDB default time_field		 none
 UserDB default pass_field		 password
+UserDB default scratch           "username email"
 UserDB default crypt			 0
 
 # Routes and Orders
diff --git a/code/form_register_load.sub b/code/form_register_load.sub
new file mode 100644
index 0000000..eb4906a
--- /dev/null
+++ b/code/form_register_load.sub
@@ -0,0 +1,7 @@
+Sub form_register_load <<EOS
+sub {
+	$Values->{password} = $Values->{password_verify} = '';
+	
+	return;
+}
+EOS
diff --git a/code/form_register_save.sub b/code/form_register_save.sub
new file mode 100644
index 0000000..782da59
--- /dev/null
+++ b/code/form_register_save.sub
@@ -0,0 +1,8 @@
+Sub form_register_save <<EOS
+sub {
+	if ($Tag->register()) {
+		return {page => 'index'};
+	}
+}
+EOS
+
diff --git a/code/register.action b/code/register.action
deleted file mode 100644
index 604d9e1..0000000
--- a/code/register.action
+++ /dev/null
@@ -1,41 +0,0 @@
-ActionMap register <<EOA
-sub {
-	$Tag->perl({tables => 'users'});
-
-	$CGI->{mv_nextpage} = 'register';
-
-	if ($Session->{logged_in}) {
-		$Tag->warnings({message => 'You are already logged in as user %s',
-			param => $Session->{username}});
-		return 1;
-	}
-
-	if ($Tag->env('REQUEST_METHOD') eq 'POST') {
-		# process registration 
-		my $ret;
-
-		$Tag->update('values');
-
-		if ($Tag->run_profile({name => 'register', cgi => 1})) {
-#			Log("Register profile check succeeded.");	
-			$ret = $Tag->userdb({function => 'new_account'});
-			if ($ret) {
-#				Log("New account created.");
-				$CGI->{mv_nextpage} = 'myaccount';
-			} 
-			else {
-				$Tag->error({name => 'register',
-					set => q{Account creation failed. Please contact our support team.}});
-				Log("Account creation failed: %s", $Session->{failure});
-				$CGI->{mv_nextpage} = 'register';
-			}			
-		} 
-		else {
-#			Log("Register profile check failed.");
-#			Log("Errors: " . uneval($Session->{errors}));
-		}
-	}	
-
-	return 1;
-}
-EOA
diff --git a/code/register.tag b/code/register.tag
new file mode 100644
index 0000000..a827d98
--- /dev/null
+++ b/code/register.tag
@@ -0,0 +1,40 @@
+UserTag register Routine <<EOR
+sub {
+	my ($uid, $pass, $ret);
+
+	$Tag->perl({tables => 'users'});
+	$Tag->update('values');
+
+	# generate uid in advance if necessary
+    $uid = $Db{users}->autosequence();
+
+	# username,email
+	unless ($Values->{username}) {
+		$Values->{username} = $Values->{email};
+	}
+
+	# remember password
+	$pass = $CGI->{password};
+
+	# create account without using [userdb] - too cumbersome
+	$uid = $Db{users}->set_slice([{dml => 'insert'}, $uid], 
+		username => $Values->{username},
+		email => $Values->{email},
+		password => $pass);
+
+	if ($uid) {
+		# login with new account for verification
+		$ret = $Tag->userdb({function => 'login',
+			username => $Values->{email},
+			password => $pass,
+			verify => $pass});
+	}
+
+	unless ($ret) {
+		$Tag->error({name => 'register',
+			set => q{Account creation failed. Please contact our support team.}});
+	}
+
+	return 1;
+}
+EOR
diff --git a/components/login b/components/login
index 14dd67f..06a35c5 100644
--- a/components/login
+++ b/components/login
@@ -37,11 +37,7 @@
 </p>
 
 <p>
-[action 
-	targets="create_account"
-	text="Create new account!"
-	type=link
-]
+<a href="[area register]">[L]Create new account![/L]</a>
 </p>
 <p>
 [action 
diff --git a/database/components/register.sql b/database/components/register.sql
new file mode 100644
index 0000000..b412170
--- /dev/null
+++ b/database/components/register.sql
@@ -0,0 +1,6 @@
+insert into form_series (name, part, label, profile) values ('register', 'register', 'Create New Account', 'register');
+insert into form_elements (name, label, component, widget)
+	values ('username', 'Username', 'register', ''),
+	('email', 'Email', 'register', ''),
+	('password', 'Password', 'register', 'password'),
+	('password_verify', 'Confirm Password', 'register', 'password');
\ No newline at end of file
diff --git a/pages/register.itl b/pages/register.itl
index 79dfef2..825f776 100644
--- a/pages/register.itl
+++ b/pages/register.itl
@@ -1,3 +1,4 @@
 [compose
-	components.body="create_account"
+	components.body="register"
+	forms.register.name="register"
 /]
diff --git a/profiles/register b/profiles/register
index 0d55566..2ebecd8 100644
--- a/profiles/register
+++ b/profiles/register
@@ -1,8 +1,8 @@
 __NAME__ register
-[if cgi mv_username]
-mv_username=unique users:username [L]Username already reserved.[/L]
+[if cgi username]
+username=unique users:username [L]Username already reserved.[/L]
 [else]
-mv_username=required [L]Please enter username.[/L]
+username=required [L]Please enter username.[/L]
 [/else]
 [/if]
 [if cgi email]
@@ -13,6 +13,6 @@ email=unique users:email [L]Email address already reserved.[/L]
 email=required [L]Please enter email address.[/L]
 [/else]
 [/if]
-mv_password=length [either][userdb function=option name=passminlen][or]4[/either] 
-mv_verify=match mv_password The specified passwords do not match.
+password=length [either][userdb function=option name=passminlen][or]4[/either] 
+password_verify=match password The specified passwords do not match.
 __END__


hooks/post-receive
-- 
Interchange wellwell catalog



More information about the wellwell-devel mailing list