[QGIS Commit] r12698 - trunk/qgis/src/providers/postgres
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Thu Jan 7 15:23:10 EST 2010
Author: jef
Date: 2010-01-07 15:23:08 -0500 (Thu, 07 Jan 2010)
New Revision: 12698
Modified:
trunk/qgis/src/providers/postgres/qgspostgresprovider.cpp
trunk/qgis/src/providers/postgres/qgspostgresprovider.h
Log:
add postgresql password cache
Modified: trunk/qgis/src/providers/postgres/qgspostgresprovider.cpp
===================================================================
--- trunk/qgis/src/providers/postgres/qgspostgresprovider.cpp 2010-01-07 19:03:14 UTC (rev 12697)
+++ trunk/qgis/src/providers/postgres/qgspostgresprovider.cpp 2010-01-07 20:23:08 UTC (rev 12698)
@@ -51,6 +51,7 @@
QMap<QString, QgsPostgresProvider::Conn *> QgsPostgresProvider::Conn::connectionsRO;
QMap<QString, QgsPostgresProvider::Conn *> QgsPostgresProvider::Conn::connectionsRW;
+QMap<QString, QString> QgsPostgresProvider::Conn::passwordCache;
int QgsPostgresProvider::providerIds = 0;
QgsPostgresProvider::QgsPostgresProvider( QString const & uri )
@@ -310,25 +311,36 @@
{
QString password = QString::null;
- while( PQstatus( pd ) != CONNECTION_OK )
+ while ( PQstatus( pd ) != CONNECTION_OK )
{
bool ok = true;
- password = QInputDialog::getText( 0,
- tr( "Enter password" ),
- tr( "Error: %1Enter password for %2")
+
+ if ( passwordCache.contains( conninfo ) )
+ {
+ password = passwordCache.take( conninfo );
+ }
+ else
+ {
+ password = QInputDialog::getText( 0,
+ tr( "Enter password" ),
+ tr( "Error: %1Enter password for %2" )
.arg( QString::fromUtf8( PQerrorMessage( pd ) ) )
.arg( conninfo ),
- QLineEdit::Password,
- password,
- &ok );
+ QLineEdit::Password,
+ password,
+ &ok );
+ }
+ if ( !ok )
+ break;
+
::PQfinish( pd );
- if( !ok )
- break;
-
pd = PQconnectdb( QString( "%1 password='%2'" ).arg( conninfo ).arg( password ).toLocal8Bit() );
}
+
+ if ( PQstatus( pd ) == CONNECTION_OK )
+ passwordCache[ conninfo ] = password;
}
if ( PQstatus( pd ) != CONNECTION_OK )
Modified: trunk/qgis/src/providers/postgres/qgspostgresprovider.h
===================================================================
--- trunk/qgis/src/providers/postgres/qgspostgresprovider.h 2010-01-07 19:03:14 UTC (rev 12697)
+++ trunk/qgis/src/providers/postgres/qgspostgresprovider.h 2010-01-07 20:23:08 UTC (rev 12698)
@@ -660,6 +660,7 @@
static QMap<QString, Conn *> connectionsRW;
static QMap<QString, Conn *> connectionsRO;
+ static QMap<QString, QString> passwordCache;
};
class Result
More information about the QGIS-commit
mailing list