Pg setup enhancement

do not create a db if already existing .. and reset the user password instead of creating if the user already exists
This commit is contained in:
Brice Maron 2012-06-28 19:37:29 +00:00
parent bdd1baeb85
commit b2cbf1199d

View file

@ -285,6 +285,15 @@ class OC_Setup {
//we cant use OC_BD functions here because we need to connect as the administrative user. //we cant use OC_BD functions here because we need to connect as the administrative user.
$e_name = pg_escape_string($name); $e_name = pg_escape_string($name);
$e_user = pg_escape_string($user); $e_user = pg_escape_string($user);
$query = "select datname from pg_database where datname = '$e_name'";
$result = pg_query($connection, $query);
if(!$result) {
$entry='DB Error: "'.pg_last_error($connection).'"<br />';
$entry.='Offending command was: '.$query.'<br />';
echo($entry);
}
if(! pg_fetch_row($result)) {
//The database does not exists... let's create it
$query = "CREATE DATABASE \"$e_name\" OWNER \"$e_user\""; $query = "CREATE DATABASE \"$e_name\" OWNER \"$e_user\"";
$result = pg_query($connection, $query); $result = pg_query($connection, $query);
if(!$result) { if(!$result) {
@ -292,6 +301,7 @@ class OC_Setup {
$entry.='Offending command was: '.$query.'<br />'; $entry.='Offending command was: '.$query.'<br />';
echo($entry); echo($entry);
} }
}
$query = "REVOKE ALL PRIVILEGES ON DATABASE \"$e_name\" FROM PUBLIC"; $query = "REVOKE ALL PRIVILEGES ON DATABASE \"$e_name\" FROM PUBLIC";
$result = pg_query($connection, $query); $result = pg_query($connection, $query);
} }
@ -299,6 +309,16 @@ class OC_Setup {
private static function pg_createDBUser($name,$password,$connection) { private static function pg_createDBUser($name,$password,$connection) {
$e_name = pg_escape_string($name); $e_name = pg_escape_string($name);
$e_password = pg_escape_string($password); $e_password = pg_escape_string($password);
$query = "select * from pg_roles where rolname='$e_name';";
$result = pg_query($connection, $query);
if(!$result) {
$entry='DB Error: "'.pg_last_error($connection).'"<br />';
$entry.='Offending command was: '.$query.'<br />';
echo($entry);
}
if(! pg_fetch_row($result)) {
//user does not exists let's create it :)
$query = "CREATE USER \"$e_name\" CREATEDB PASSWORD '$e_password';"; $query = "CREATE USER \"$e_name\" CREATEDB PASSWORD '$e_password';";
$result = pg_query($connection, $query); $result = pg_query($connection, $query);
if(!$result) { if(!$result) {
@ -307,6 +327,16 @@ class OC_Setup {
echo($entry); echo($entry);
} }
} }
else { // change password of the existing role
$query = "ALTER ROLE \"$e_name\" WITH PASSWORD '$e_password';";
$result = pg_query($connection, $query);
if(!$result) {
$entry='DB Error: "'.pg_last_error($connection).'"<br />';
$entry.='Offending command was: '.$query.'<br />';
echo($entry);
}
}
}
/** /**
* create .htaccess files for apache hosts * create .htaccess files for apache hosts