Index: LedgerSMB/Form.pm
===================================================================
--- LedgerSMB/Form.pm	(revision 5051)
+++ LedgerSMB/Form.pm	(revision 5053)
@@ -1427,7 +1427,11 @@
     # Roles tracking
     $self->{_roles} = [];
     $query = "select rolname from pg_roles 
-               where pg_has_role(SESSION_USER, 'USAGE')";
+               where pg_has_role(rolname, 'USAGE')
+                     and rolname like 
+                          coalesce((select value from defaults
+                                     where setting_key = 'role_prefix'), 
+                                   'lsmb_' || current_database() || '__') || '%'";
     $sth = $dbh->prepare($query);
     $sth->execute();
     while (my @roles = $sth->fetchrow_array){
Index: LedgerSMB/AM.pm
===================================================================
--- LedgerSMB/AM.pm	(revision 5051)
+++ LedgerSMB/AM.pm	(revision 5053)
@@ -1676,6 +1676,10 @@
 
     my ( $self, $myconfig, $form, $defaults) = @_;
 
+    my @roles = @{$form->{_roles}};
+    $form->error('Access Denied') unless grep /system_settings_change/, @roles;
+    
+
     for (qw(inventory income expense fxgain fxloss)) {
         ( $form->{$_ . "_accno_id"} ) = split /--/, $form->{$_ . "_accno_id"};
     }
