From a698b2c4f3dfb62a112a0d09a9e6bf99139ba81e Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Mon, 16 Jul 2007 21:00:03 +0000 Subject: [PATCH] Make the SQLForm use the new functions inside DatabaseLink to do database privilege checking. This fixes the newest bug about database permissions on the bug boards. --- docs/changelog/7.x.x.txt | 2 ++ lib/WebGUI/Asset/Wobject/SQLForm.pm | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 3cfef096d..e9342603a 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -76,6 +76,8 @@ - fix: Self-deactivation doesn't show login screen after success - fix regression: Calendar events on the last day of the month do not appear on the month view http://www.webgui.org/bugs/tracker/fixed-calendar-events-on-the-last-day-of-the-month-do-not-appear-on-the-month-view + - fix: SQLForm says Databaselink does not have enough privileges (perlDreamer Consulting, LLC) + http://www.webgui.org/bugs/tracker/sqlform-says-databaselink-does-not-have-enough-privileges 7.3.20 - Added beta label to the beta components in the system, so people can more diff --git a/lib/WebGUI/Asset/Wobject/SQLForm.pm b/lib/WebGUI/Asset/Wobject/SQLForm.pm index a5cbd9200..049a4c822 100644 --- a/lib/WebGUI/Asset/Wobject/SQLForm.pm +++ b/lib/WebGUI/Asset/Wobject/SQLForm.pm @@ -610,7 +610,8 @@ sub _createFieldType { =head2 _databaseLinkHasPrivileges ( wantedPrivileges, databaseLink ) -Returns true if the database link has at least the given privileges. +Returns true if the database link has at least the given privileges. This method is +deprecated. Please use the checkPrivileges method in WebGUI::DatabaseLink instead. =head3 wantedPrivileges @@ -676,6 +677,8 @@ sub _databaseLinkHasPrivileges { foreach (@$wantedPrivileges) { return 0 unless (isIn(uc($_), @privileges)); } + + return 1; } #------------------------------------------------------------------- @@ -1243,7 +1246,7 @@ sub processPropertiesFromFormPost { # $dbLink->db will raise a fatal error if there is a connection error. # return ["Can't connect to database through the selected database link"] unless ($dbLink->db); - unless ($self->_databaseLinkHasPrivileges([qw(ALTER CREATE DELETE INDEX INSERT SELECT UPDATE)], $dbLink)) { + unless ($dbLink->checkPrivileges([qw(ALTER CREATE DELETE INDEX INSERT SELECT UPDATE)])) { return ["Databaselink does not have enough privileges (Needs ALTER, CREATE, DELETE, INDEX, INSERT, SELECT, UPDATE)"]; }