[interchange-cvs] interchange - heins modified lib/Vend/UserDB.pm

interchange-core@icdevgroup.org interchange-core@icdevgroup.org
Fri Apr 11 18:04:01 2003


User:      heins
Date:      2003-04-11 22:03:01 GMT
Modified:  lib/Vend UserDB.pm
Log:
* Add no_login flag to [userdb ....]

	[userdb
		function=new_account
		assign-username=1
		password="[value zip]"
		verify="[value zip]"
		no-login=1]

  This allows an admin (order entry desk) to create a user and
  use [userdb ...] functions on their account without having to
  log in and log out.

  Only applies to new_account function.

Revision  Changes    Path
2.14      +22 -10    interchange/lib/Vend/UserDB.pm


rev 2.14, prev_rev 2.13
Index: UserDB.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/UserDB.pm,v
retrieving revision 2.13
retrieving revision 2.14
diff -u -r2.13 -r2.14
--- UserDB.pm	5 Apr 2003 01:29:39 -0000	2.13
+++ UserDB.pm	11 Apr 2003 22:03:01 -0000	2.14
@@ -1,6 +1,6 @@
 # Vend::UserDB - Interchange user database functions
 #
-# $Id: UserDB.pm,v 2.13 2003/04/05 01:29:39 mheins Exp $
+# $Id: UserDB.pm,v 2.14 2003/04/11 22:03:01 mheins Exp $
 #
 # Copyright (C) 1996-2002 Red Hat, Inc. <interchange@redhat.com>
 #
@@ -16,7 +16,7 @@
 
 package Vend::UserDB;
 
-$VERSION = substr(q$Revision: 2.13 $, 10);
+$VERSION = substr(q$Revision: 2.14 $, 10);
 
 use vars qw!
 	$VERSION
@@ -1374,10 +1374,13 @@
 		unless($self) {
 			$self = new Vend::UserDB %options;
 		}
+
+		delete $Vend::Session->{auto_created_user};
+
 		die ::errmsg("Bad object.") . "\n" unless defined $self;
 
 		die ::errmsg("Already logged in. Log out first.") . "\n"
-			if $Vend::Session->{logged_in};
+			if $Vend::Session->{logged_in} and ! $options{no_login};
 		die ::errmsg("Sorry, reserved user name.") . "\n"
 			if $self->{OPTIONS}{username_mask} 
 				and $self->{USERNAME} =~ m!$self->{OPTIONS}{username_mask}!;
@@ -1456,13 +1459,21 @@
 				or die ::errmsg("Database access error.");
 		}
 
-		username_cookies($self->{USERNAME}, $pw) 
-			if $Vend::Cfg->{CookieLogin};
+		if($options{no_login}) {
+			$Vend::Session->{auto_created_user} = $self->{USERNAME};
+		}
+		else {
+			username_cookies($self->{USERNAME}, $pw) 
+				if $Vend::Cfg->{CookieLogin};
 
-		$self->log('new account') if $options{'log'};
-		$self->set_values();
-		$self->login()
-			or die ::errmsg("Cannot log in after new account creation: %s", $self->{ERROR});
+			$self->log('new account') if $options{'log'};
+			$self->set_values();
+			$self->login()
+				or die ::errmsg(
+							"Cannot log in after new account creation: %s",
+							$self->{ERROR},
+						);
+		}
 	};
 
 	scrub();
@@ -1646,7 +1657,8 @@
 			$Vend::Session->{failure} = ::errmsg("Unable to access user database.");
 			return undef;
 		}
-		if($status = $user->new_account(%options)) {
+		$status = $user->new_account(%options);
+		if($status and ! $options{no_login}) {
 			$Vend::Session->{logged_in} = 1;
 			$Vend::Session->{username} = $user->{USERNAME};
 			undef $Vend::Cookie