[Codestriker-commits] CVS update: codestriker codestriker.conf
Brought to you by:
sits
|
From: <si...@us...> - 2008-09-06 11:33:07
|
User: sits
Date: 08/09/06 04:33:06
Modified: lib/Codestriker/Model User.pm
bin install.pl
. codestriker.conf
Log:
Also handle situation here an "admin upgrade" occurs for an existing user.
Index: User.pm
===================================================================
RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Model/User.pm,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- User.pm 6 Sep 2008 11:12:31 -0000 1.1
+++ User.pm 6 Sep 2008 11:33:06 -0000 1.2
@@ -45,6 +45,44 @@
return $self;
}
+# Update an existing user record with a new password.
+sub update_password {
+ my ($self, $new_password) = @_;
+
+ my $password_hash = _hash_password($new_password);
+ my $dbh = Codestriker::DB::DBI->get_connection();
+ eval {
+ my $update_user =
+ $dbh->prepare_cached('UPDATE usertable SET password_hash = ? ' .
+ 'WHERE email = ?');
+ $update_user->execute($password_hash, $self->{email});
+ };
+ my $success = $@ ? 0 : 1;
+
+ Codestriker::DB::DBI->release_connection($dbh, $success);
+ die $dbh->errstr unless $success;
+
+ $self->{password_hash} = $password_hash;
+}
+
+# Update an existing user record with new admin status.
+sub update_admin {
+ my ($self, $new_admin) = @_;
+
+ my $dbh = Codestriker::DB::DBI->get_connection();
+ eval {
+ my $update_user =
+ $dbh->prepare_cached('UPDATE usertable SET admin = ? ' .
+ 'WHERE email = ?');
+ $update_user->execute($new_admin, $self->{email});
+ };
+ my $success = $@ ? 0 : 1;
+
+ Codestriker::DB::DBI->release_connection($dbh, $success);
+ die $dbh->errstr unless $success;
+
+ $self->{admin} = $new_admin;
+}
# Create a new user into the database with all of the specified properties.
# Return the new password which has been assigned to the user.
Index: install.pl
===================================================================
RCS file: /cvsroot/codestriker/codestriker/bin/install.pl,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- install.pl 6 Sep 2008 11:12:31 -0000 1.23
+++ install.pl 6 Sep 2008 11:33:06 -0000 1.24
@@ -55,6 +55,7 @@
eval("use Codestriker::FileParser::UnknownFormat");
eval("use Codestriker::Model::File");
eval("use Codestriker::Model::User");
+use Codestriker::Model::User;
# Set this variables, to avoid compilation warnings below.
$Codestriker::COMMENT_SUBMITTED = 0;
@@ -1077,6 +1078,14 @@
Codestriker::Model::User->create($admin_user, 1);
# TODO: consider sending email with password details.
print "Done\n";
+ } else {
+ # Existing user, check if they are an admin already.
+ my $user = Codestriker::Model::User->new($admin_user);
+ if (! $user->{admin}) {
+ print "Upgrading non-admin user $admin_user to admin...\n";
+ $user->update_admin(1);
+ print "Done\n";
+ }
}
}
}
Index: codestriker.conf
===================================================================
RCS file: /cvsroot/codestriker/codestriker/codestriker.conf,v
retrieving revision 1.105
retrieving revision 1.106
diff -u -r1.105 -r1.106
--- codestriker.conf 6 Sep 2008 11:12:31 -0000 1.105
+++ codestriker.conf 6 Sep 2008 11:33:06 -0000 1.106
@@ -38,9 +38,9 @@
# be able to create/edit/delete projects. If no admin user is defined
# then no login system will be used, and all users will be effectively
# admin users.
-#$admin_users = [ 'dav...@gm...' ];
+$admin_users = [ 'dav...@gm...' ];
#$admin_users = [ 'dav...@gm...', 'si...@us...' ];
-$admin_users = [];
+#$admin_users = [];
# Location of the mailing host. This is used when sending out codestriker
# comments.
|