QGIS API Documentation 3.28.0-Firenze (ed3ad0430f)
qgscredentials.h
Go to the documentation of this file.
1/***************************************************************************
2 qgscredentials.h - interface for requesting credentials
3 ----------------------
4 begin : February 2010
5 copyright : (C) 2010 by Juergen E. Fischer
6 email : jef at norbit dot de
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16
17#ifndef QGSCREDENTIALS_H
18#define QGSCREDENTIALS_H
19
20#include <QMap>
21#include <QMutex>
22#include <QObject>
23#include <QPair>
24#include <QString>
25
26#include "qgis_core.h"
27#include "qgis_sip.h"
28
45class CORE_EXPORT QgsCredentials
46{
47 public:
48
52 virtual ~QgsCredentials() = default;
53
69 bool get( const QString &realm, QString &username SIP_INOUT, QString &password SIP_INOUT, const QString &message = QString() );
70
80 void put( const QString &realm, const QString &username, const QString &password );
81
82 bool getMasterPassword( QString &password SIP_INOUT, bool stored = false );
83
85 static QgsCredentials *instance();
86
93 void lock();
94
99 void unlock();
100
105 QMutex *mutex() { return &mAuthMutex; }
106
107 protected:
108
112 QgsCredentials() = default;
113
115 virtual bool request( const QString &realm, QString &username SIP_INOUT, QString &password SIP_INOUT, const QString &message = QString() ) = 0;
116
118 virtual bool requestMasterPassword( QString &password SIP_INOUT, bool stored = false ) = 0;
119
121 void setInstance( QgsCredentials *instance );
122
123 private:
124 Q_DISABLE_COPY( QgsCredentials )
125
126#ifdef SIP_RUN
128#endif
129
131 QMap< QString, QPair<QString, QString> > mCredentialCache;
132
134 static QgsCredentials *sInstance;
135
137 QMutex mAuthMutex;
138
140 QMutex mCacheMutex;
141};
142
143
150class CORE_EXPORT QgsCredentialsNone : public QObject, public QgsCredentials
151{
152 Q_OBJECT
153
154 public:
156
157 signals:
159 void destroyed();
160
161 protected:
162 bool request( const QString &realm, QString &username SIP_INOUT, QString &password SIP_INOUT, const QString &message = QString() ) override;
163 bool requestMasterPassword( QString &password SIP_INOUT, bool stored = false ) override;
164};
165
166
175class CORE_EXPORT QgsCredentialsConsole : public QObject, public QgsCredentials
176{
177 Q_OBJECT
178
179 public:
181
182 signals:
184 void destroyed();
185
186 protected:
187 bool request( const QString &realm, QString &username SIP_INOUT, QString &password SIP_INOUT, const QString &message = QString() ) override;
188 bool requestMasterPassword( QString &password SIP_INOUT, bool stored = false ) override;
189};
190
191#endif
Implementation of credentials interface for the console.
void destroyed()
signals that object will be destroyed and shouldn't be used anymore
Default implementation of credentials interface.
void destroyed()
signals that object will be destroyed and shouldn't be used anymore
Interface for requesting credentials in QGIS in GUI independent way.
QMutex * mutex()
Returns pointer to mutex.
virtual bool requestMasterPassword(QString &password, bool stored=false)=0
request a master password
QgsCredentials()=default
Constructor for QgsCredentials.
virtual ~QgsCredentials()=default
Destructor.
virtual bool request(const QString &realm, QString &username, QString &password, const QString &message=QString())=0
request a password
#define SIP_INOUT
Definition: qgis_sip.h:71