From 4071436458c6f66f693b3b1014c21de9a57a617a Mon Sep 17 00:00:00 2001 From: Chris Date: Mon, 3 Jun 2013 14:25:14 +0100 Subject: [PATCH] Default create no longer relies on non-existent function, horay! --- Webperl/AuthMethod.pm | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Webperl/AuthMethod.pm b/Webperl/AuthMethod.pm index f162607..672cd2d 100644 --- a/Webperl/AuthMethod.pm +++ b/Webperl/AuthMethod.pm @@ -100,7 +100,7 @@ sub create_user { $self -> clear_error(); - my $active = !$self -> capabilities("activate"); + my $active = $self -> capabilities("activate") ? 0 : time(); my $newuser = $self -> {"dbh"} -> prepare("INSERT INTO ".$self -> {"settings"} -> {"database"} -> {"users"}." (user_auth, activated, username, created, last_login) @@ -108,7 +108,17 @@ sub create_user { $newuser -> execute($authmethod, $active, $username) or $self -> self_error("Unable to create new user record: ".$self -> {"dbh"} -> errstr); - return $self -> get_user($username); + # FIXME: This ties to MySQL, but is more reliable that last_insert_id in general. + # Try to find a decent solution for this mess... + my $userid = $self -> {"dbh"} -> {"mysql_insertid"}; + return $self -> self_error("Unable to obtain id for user '$username'") if(!$userid); + + my $userh = $self -> {"dbh"} -> prepare("SELECT * FROM ".$self -> {"settings"} -> {"database"} -> {"users"}." + WHERE user_id = ?"); + $userh -> execute($userid) + or return $self -> self_error("Unable to fetch user record: ".$self -> {"dbh"} -> errstr); + + return $userh -> fetchrow_hashref(); }