QGIS API Documentation  3.26.3-Buenos Aires (65e4edfdad)
qgsauthsettingswidget.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsauthsettingswidget.cpp - QgsAuthSettingsWidget
3 
4  ---------------------
5  begin : 28.9.2017
6  copyright : (C) 2017 by Alessandro Pasotti
7  email : apasotti at boundlessgeo dot com
8  ***************************************************************************
9  * *
10  * This program is free software; you can redistribute it and/or modify *
11  * it under the terms of the GNU General Public License as published by *
12  * the Free Software Foundation; either version 2 of the License, or *
13  * (at your option) any later version. *
14  * *
15  ***************************************************************************/
16 #include "qgsauthsettingswidget.h"
17 #include "qgsauthmanager.h"
18 #include "qgsauthconfig.h"
19 #include "qgsapplication.h"
20 
21 #include <QDateTime>
22 
24  const QString &configId,
25  const QString &username,
26  const QString &password,
27  const QString &dataprovider )
28  : QWidget( parent )
29  , mDataprovider( dataprovider )
30 {
31  setupUi( this );
32  txtPassword->setText( password );
33  txtUserName->setText( username );
34  if ( ! dataprovider.isEmpty( ) )
35  {
36  mAuthConfigSelect->setDataProviderKey( dataprovider );
37  }
38  if ( ! configId.isEmpty( ) )
39  {
40  mAuthConfigSelect->setConfigId( configId );
41  }
42  setBasicText( "" );
43  // default to warning about basic settings stored in project file
45  connect( btnConvertToEncrypted, &QPushButton::clicked, this, &QgsAuthSettingsWidget::convertToEncrypted );
46  connect( txtUserName, &QLineEdit::textChanged, this, &QgsAuthSettingsWidget::userNameTextChanged );
47  connect( txtPassword, &QLineEdit::textChanged, this, &QgsAuthSettingsWidget::passwordTextChanged );
49 
50  // Hide store password and username by default
51  showStoreCheckboxes( false );
52  updateSelectedTab();
53  updateConvertBtnState();
54 }
55 
56 void QgsAuthSettingsWidget::setWarningText( const QString &warningText )
57 {
58  lblWarning->setText( warningText );
59 }
60 
61 void QgsAuthSettingsWidget::setBasicText( const QString &basicText )
62 {
63  lblBasic->setText( basicText );
64  // hide unused widget so its word wrapping does not add to parent widget's height
65  lblBasic->setVisible( ! basicText.isEmpty() );
66 }
67 
69 {
70  return txtUserName->text();
71 }
72 
73 void QgsAuthSettingsWidget::setUsername( const QString &username )
74 {
75  txtUserName->setText( username );
76  updateSelectedTab();
77 }
78 
80 {
81  return txtPassword->text();
82 }
83 
84 void QgsAuthSettingsWidget::setPassword( const QString &password )
85 {
86  txtPassword->setText( password );
87  updateSelectedTab();
88 }
89 
90 void QgsAuthSettingsWidget::setConfigId( const QString &configId )
91 {
92  mAuthConfigSelect->setConfigId( configId );
93  updateSelectedTab();
94 }
95 
96 void QgsAuthSettingsWidget::setDataprovider( const QString &dataprovider )
97 {
98  mDataprovider = dataprovider;
99  mAuthConfigSelect->setDataProviderKey( dataprovider );
100 }
101 
103 {
104  return mDataprovider;
105 }
106 
108 {
109  const QString out = tr( "Warning: credentials stored as plain text in %1." );
110  switch ( warning )
111  {
112  case ProjectFile:
113  return out.arg( tr( "project file" ) );
114  case UserSettings:
115  return out.arg( tr( "user settings" ) );
116  }
117  return QString(); // no build warnings
118 }
119 
121 {
122  return mAuthConfigSelect->configId();
123 }
124 
126 {
127  return btnConvertToEncrypted->isEnabled( );
128 }
129 
131 {
132  if ( enabled )
133  {
134  cbStorePassword->show();
135  cbStoreUsername->show();
136  }
137  else
138  {
139  cbStorePassword->hide();
140  cbStoreUsername->hide();
141  }
142 }
143 
145 {
146  cbStoreUsername->setChecked( checked );
147 }
148 
150 {
151  cbStorePassword->setChecked( checked );
152 }
153 
155 {
156  return cbStorePassword->isChecked( );
157 }
158 
160 {
161  return cbStoreUsername->isChecked( );
162 }
163 
165 {
166  return tabAuth->currentIndex( ) == tabAuth->indexOf( tabConfigurations );
167 }
168 
170 {
171  tabAuth->setCurrentIndex( tabAuth->indexOf( tabConfigurations ) );
172  QgsAuthMethodConfig config( QStringLiteral( "Basic" ) );
173  config.setName( tr( "Converted config %1" ).arg( QDateTime::currentDateTime().toString( ) ) );
174  config.setConfig( QStringLiteral( "username" ), txtUserName->text() );
175  config.setConfig( QStringLiteral( "password" ), txtPassword->text() );
176  if ( ! QgsApplication::authManager()->storeAuthenticationConfig( config ) )
177  {
178  mAuthConfigSelect->showMessage( tr( "Couldn't create a Basic authentication configuration!" ) );
179  return false;
180  }
181  else
182  {
183  txtUserName->setText( QString( ) );
184  txtPassword->setText( QString( ) );
185  mAuthConfigSelect->setConfigId( config.id( ) );
186  return true;
187  }
188 }
189 
190 void QgsAuthSettingsWidget::userNameTextChanged( const QString &text )
191 {
192  Q_UNUSED( text )
193  updateConvertBtnState();
194  emit usernameChanged();
195 }
196 
197 void QgsAuthSettingsWidget::passwordTextChanged( const QString &text )
198 {
199  Q_UNUSED( text )
200  updateConvertBtnState();
201  emit passwordChanged();
202 }
203 
204 void QgsAuthSettingsWidget::updateConvertBtnState()
205 {
206  btnConvertToEncrypted->setEnabled( ! txtUserName->text().isEmpty() || ! txtPassword->text().isEmpty() );
207 }
208 
209 void QgsAuthSettingsWidget::updateSelectedTab()
210 {
211  if ( ! mAuthConfigSelect->configId().isEmpty( ) )
212  {
213  tabAuth->setCurrentIndex( tabAuth->indexOf( tabConfigurations ) );
214  }
215  else if ( !( txtUserName->text( ).isEmpty() && txtPassword->text( ).isEmpty( ) ) )
216  {
217  tabAuth->setCurrentIndex( tabAuth->indexOf( tabBasic ) );
218  }
219 }
qgsauthconfig.h
qgsauthsettingswidget.h
QgsAuthSettingsWidget::setBasicText
void setBasicText(const QString &basicText)
setBasicText set the text of the warning label
Definition: qgsauthsettingswidget.cpp:61
QgsAuthSettingsWidget::setStoreUsernameChecked
void setStoreUsernameChecked(bool checked)
setStoreUsernameChecked check the "Store" checkbox for the username
Definition: qgsauthsettingswidget.cpp:144
QgsAuthSettingsWidget::convertToEncrypted
bool convertToEncrypted()
convertToEncrypted is called when the convert to encrypted button is clicked and it creates a Basic a...
Definition: qgsauthsettingswidget.cpp:169
QgsAuthSettingsWidget::configIdChanged
void configIdChanged()
Emitted when the auth configuration ID selected in the dialog is changed.
qgsauthmanager.h
QgsAuthSettingsWidget::setUsername
void setUsername(const QString &username)
setUsername set the username
Definition: qgsauthsettingswidget.cpp:73
QgsAuthSettingsWidget::QgsAuthSettingsWidget
QgsAuthSettingsWidget(QWidget *parent=nullptr, const QString &configId=QString(), const QString &username=QString(), const QString &password=QString(), const QString &dataprovider=QString())
Create a dialog for setting an associated authentication config, either from existing configs,...
Definition: qgsauthsettingswidget.cpp:23
QgsAuthSettingsWidget::setDataprovider
void setDataprovider(const QString &dataprovider)
setDataprovider set the data provider key for filtering compatible authentication configurations
Definition: qgsauthsettingswidget.cpp:96
QgsAuthSettingsWidget::UserSettings
@ UserSettings
Definition: qgsauthsettingswidget.h:81
QgsAuthSettingsWidget::formattedWarning
static QString formattedWarning(WarningType warning)
warning text message based upon where credentials are stored
Definition: qgsauthsettingswidget.cpp:107
QgsAuthSettingsWidget::setWarningText
void setWarningText(const QString &warningText)
setWarningText set the text of the warning label
Definition: qgsauthsettingswidget.cpp:56
QgsAuthSettingsWidget::username
QString username() const
username
Definition: qgsauthsettingswidget.cpp:68
QgsApplication::authManager
static QgsAuthManager * authManager()
Returns the application's authentication manager instance.
Definition: qgsapplication.cpp:1436
qgsapplication.h
QgsAuthConfigSelect::selectedConfigIdChanged
void selectedConfigIdChanged(const QString &authcfg)
Emitted when authentication config is changed or missing.
QgsAuthSettingsWidget::configId
QString configId() const
configId
Definition: qgsauthsettingswidget.cpp:120
QgsAuthSettingsWidget::setConfigId
void setConfigId(const QString &configId)
setConfigId set the authentication configuration id param configId the authentication configuration i...
Definition: qgsauthsettingswidget.cpp:90
QgsAuthSettingsWidget::usernameChanged
void usernameChanged()
Emitted when the plain text username defined in the dialog is changed.
QgsAuthSettingsWidget::showStoreCheckboxes
void showStoreCheckboxes(bool enabled)
showStoreCheckboxes show the "Store" checkboxes for basic auth.
Definition: qgsauthsettingswidget.cpp:130
QgsAuthSettingsWidget::storePasswordIsChecked
bool storePasswordIsChecked() const
storePassword
Definition: qgsauthsettingswidget.cpp:154
QgsAuthSettingsWidget::btnConvertToEncryptedIsEnabled
bool btnConvertToEncryptedIsEnabled() const
convertButtonEnabled, mainly useful for unit tests
Definition: qgsauthsettingswidget.cpp:125
QgsAuthSettingsWidget::configurationTabIsSelected
bool configurationTabIsSelected()
configurationTabIsSelected
Definition: qgsauthsettingswidget.cpp:164
QgsAuthSettingsWidget::passwordChanged
void passwordChanged()
Emitted when the plain text password defined in the dialog is changed.
QgsAuthSettingsWidget::WarningType
WarningType
The WarningType enum is used to determine the text of the message shown to the user about the destina...
Definition: qgsauthsettingswidget.h:64
QgsAuthMethodConfig::id
const QString id() const
Gets 'authcfg' 7-character alphanumeric ID of the config.
Definition: qgsauthconfig.h:78
QgsAuthSettingsWidget::dataprovider
QString dataprovider() const
dataprovider
Definition: qgsauthsettingswidget.cpp:102
QgsAuthSettingsWidget::password
QString password() const
password
Definition: qgsauthsettingswidget.cpp:79
QgsAuthSettingsWidget::storeUsernameIsChecked
bool storeUsernameIsChecked() const
storeUsername
Definition: qgsauthsettingswidget.cpp:159
QgsAuthSettingsWidget::ProjectFile
@ ProjectFile
Definition: qgsauthsettingswidget.h:80
QgsAuthMethodConfig::setConfig
void setConfig(const QString &key, const QString &value)
Set a single config value per key in the map.
Definition: qgsauthconfig.cpp:113
QgsAuthMethodConfig::setName
void setName(const QString &name)
Sets name of configuration.
Definition: qgsauthconfig.h:85
QgsAuthSettingsWidget::setStorePasswordChecked
void setStorePasswordChecked(bool checked)
setStorePasswordCheched check the "Store" checkbox for the password
Definition: qgsauthsettingswidget.cpp:149
QgsAuthMethodConfig
Configuration storage class for authentication method configurations.
Definition: qgsauthconfig.h:41
QgsAuthSettingsWidget::setPassword
void setPassword(const QString &password)
setPassword set the password
Definition: qgsauthsettingswidget.cpp:84