#!/usr/bin/perl # # hack to update/add read-only permissions for a user on the db # # usage: pg-readonly freesideuser readonlyuser use strict; use DBI; use FS::UID qw(adminsuidsetup); use FS::Record qw(dbdef); my $user = shift or die &usage; my $rouser = shift or die &usage; my $dbh = adminsuidsetup $user; foreach my $table ( dbdef->tables ) { $dbh->do("GRANT SELECT ON $table TO $rouser"); $dbh->commit(); if ( my $pkey = dbdef->table($table)->primary_key ) { $dbh->do("GRANT SELECT ON ${table}_${pkey}_seq TO $rouser"); $dbh->commit(); } } my @rt_tables = qw( Attachments Queues Links Principals Groups ScripConditions Transactions Scrips ACL GroupMembers CachedGroupMembers Users Tickets ScripActions Templates ObjectCustomFieldValues CustomFields ObjectCustomFields CustomFieldValues Attributes sessions ); foreach my $table ( @rt_tables ) { $dbh->do("GRANT SELECT ON $table TO $rouser"); $dbh->commit(); $dbh->do("GRANT SELECT ON ${table}_id_seq TO $rouser"); $dbh->commit(); }