QGIS API Documentation  3.26.3-Buenos Aires (65e4edfdad)
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
QgsCredentialsNone
Default implementation of credentials interface.
Definition: qgscredentials.h:150
QgsCredentials
Interface for requesting credentials in QGIS in GUI independent way.
Definition: qgscredentials.h:45
QgsCredentials::request
virtual bool request(const QString &realm, QString &username, QString &password, const QString &message=QString())=0
request a password
QgsCredentialsConsole
Implementation of credentials interface for the console.
Definition: qgscredentials.h:175
qgis_sip.h
SIP_INOUT
#define SIP_INOUT
Definition: qgis_sip.h:71
QgsCredentials::requestMasterPassword
virtual bool requestMasterPassword(QString &password, bool stored=false)=0
request a master password