fix ticketing system error on bootstrap of new install
[freeside.git] / rt / etc / acl.mysql
index 621ef12..26e27fb 100755 (executable)
@@ -1,9 +1,24 @@
+
 sub acl {
-return () if !$RT::DatabaseUser or $RT::DatabaseUser eq 'root';
-return  (
-"USE mysql;",
-"DELETE FROM user WHERE user = '${RT::DatabaseUser}';",
-"DELETE FROM db where db = '${RT::DatabaseName}';",
-"GRANT SELECT,INSERT,CREATE,INDEX,UPDATE,DELETE ON ${RT::DatabaseName}.* TO ${RT::DatabaseUser}\@'${RT::DatabaseRTHost}' IDENTIFIED BY '${RT::DatabasePassword}';");
+    my $db_name = RT->Config->Get('DatabaseName');
+    my $db_rthost = RT->Config->Get('DatabaseRTHost');
+    my $db_user = RT->Config->Get('DatabaseUser');
+    my $db_pass = RT->Config->Get('DatabasePassword');
+    unless ( $db_user ) {
+        RT->Logger->warn("DatabaseUser option is not defined or empty. Skipping...");
+        return;
+    }
+    if ( $db_user eq 'root' ) {
+        RT->Logger->warn("DatabaseUser is root. Skipping...");
+        return;
+    }
+    $db_name =~ s/([_%\\])/\\$1/g;
+    return (
+        "GRANT SELECT,INSERT,CREATE,INDEX,UPDATE,DELETE
+               ON `$db_name`.*
+               TO '$db_user'\@'$db_rthost'
+               IDENTIFIED BY '$db_pass';",
+    );
 }
+
 1;