QGIS API Documentation  3.21.0-Master (5b68dc587e)
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 
45 class 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
127  QgsCredentials( const QgsCredentials & );
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 
150 class 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 
175 class 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.
virtual bool requestMasterPassword(QString &password, bool stored=false)=0
request a master password
QgsCredentials()=default
Constructor for QgsCredentials.
virtual ~QgsCredentials()=default
Destructor.
QMutex * mutex()
Returns pointer to mutex.
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