24#include "moc_qgscredentials.cpp"
26using namespace Qt::StringLiterals;
34 QgsDebugError( u
"already registered an instance of QgsCredentials"_s );
48bool QgsCredentials::get(
const QString &realm, QString &username, QString &password,
const QString &message,
bool requestCredentials )
51 const QMutexLocker locker( &mCacheMutex );
52 if ( mCredentialCache.contains( realm ) )
54 const QPair<QString, QString> credentials = mCredentialCache.take( realm );
55 username = credentials.first;
56 password = credentials.second;
57 QgsDebugMsgLevel( u
"retrieved realm:%1 username:%2"_s.arg( realm, username ), 2 );
59 if ( !password.isNull() )
64 if ( requestCredentials &&
request( realm, username, password, message ) )
66 QgsDebugMsgLevel( u
"requested realm:%1 username:%2"_s.arg( realm, username ), 2 );
78 const QMutexLocker locker( &mCacheMutex );
79 QgsDebugMsgLevel( u
"inserting realm:%1 username:%2"_s.arg( realm, username ), 2 );
80 mCredentialCache.insert( realm, QPair<QString, QString>( username, password ) );
115 Q_UNUSED( username );
116 Q_UNUSED( password );
123 Q_UNUSED( password );
138 QTextStream in( stdin, QIODevice::ReadOnly );
139 QTextStream out( stdout, QIODevice::WriteOnly );
141 out <<
"credentials for " << realm << Qt::endl;
142 if ( !message.isEmpty() )
143 out <<
"message: " << message << Qt::endl;
156 QTextStream in( stdin, QIODevice::ReadOnly );
157 QTextStream out( stdout, QIODevice::WriteOnly );
159 const QString msg( stored ?
"Master password for authentication configs: " :
"Set master password for authentication configs: " );
bool requestMasterPassword(QString &password, bool stored=false) override
request a master password
bool request(const QString &realm, QString &username, QString &password, const QString &message=QString()) override
request a password
Default implementation of credentials interface.
bool requestMasterPassword(QString &password, bool stored=false) override
request a master password
bool request(const QString &realm, QString &username, QString &password, const QString &message=QString()) override
request a password
Interface for requesting credentials in QGIS in GUI independent way.
virtual bool requestMasterPassword(QString &password, bool stored=false)=0
request a master password
void setInstance(QgsCredentials *instance)
register instance
static QgsCredentials * instance()
retrieves instance
void lock()
Lock the instance against access from multiple threads.
bool get(const QString &realm, QString &username, QString &password, const QString &message=QString(), bool requestCredentials=true)
Requests credentials for the specified realm.
bool getMasterPassword(QString &password, bool stored=false)
void unlock()
Unlock the instance after being locked.
void put(const QString &realm, const QString &username, const QString &password)
Stores the correct username and password for the specified realm.
virtual bool request(const QString &realm, QString &username, QString &password, const QString &message=QString())=0
request a password
#define QgsDebugMsgLevel(str, level)
#define QgsDebugError(str)