18#include "moc_qgsautheditorwidgets.cpp"
20#include "ui_qgsauthmethodplugins.h"
25#include <QTableWidget>
42 mAuthNotifyLayout =
new QVBoxLayout;
43 this->setLayout( mAuthNotifyLayout );
45 mAuthNotifyLayout->addWidget( mAuthNotify );
50 connect( buttonBox, &QDialogButtonBox::rejected,
this, &QDialog::reject );
57void QgsAuthMethodPlugins::setupTable()
59 tblAuthPlugins->setColumnCount( 3 );
60 tblAuthPlugins->verticalHeader()->hide();
61 tblAuthPlugins->horizontalHeader()->setVisible(
true );
62 tblAuthPlugins->setHorizontalHeaderItem( 0,
new QTableWidgetItem( tr(
"Method" ) ) );
63 tblAuthPlugins->setHorizontalHeaderItem( 1,
new QTableWidgetItem( tr(
"Description" ) ) );
64 tblAuthPlugins->setHorizontalHeaderItem( 2,
new QTableWidgetItem( tr(
"Works with" ) ) );
65 tblAuthPlugins->horizontalHeader()->setStretchLastSection(
true );
66 tblAuthPlugins->setAlternatingRowColors(
true );
67 tblAuthPlugins->setColumnWidth( 0, 150 );
68 tblAuthPlugins->setColumnWidth( 1, 300 );
70 tblAuthPlugins->verticalHeader()->setSectionResizeMode( QHeaderView::ResizeToContents );
71 tblAuthPlugins->setSortingEnabled(
true );
72 tblAuthPlugins->setSelectionBehavior( QAbstractItemView::SelectRows );
75void QgsAuthMethodPlugins::populateTable()
80 const auto constAuthMethodKeys = authMethodKeys;
81 for (
const QString &authMethodKey : constAuthMethodKeys )
85 if ( !meta || !method )
87 QgsDebugError( QStringLiteral(
"Load auth method instance FAILED for auth method key (%1)" ).arg( authMethodKey ) );
91 QTableWidgetItem *twi =
new QTableWidgetItem( meta->
key() );
92 twi->setFlags( twi->flags() & ~Qt::ItemIsEditable );
93 tblAuthPlugins->setItem( i, 0, twi );
96 twi->setFlags( twi->flags() & ~Qt::ItemIsEditable );
97 tblAuthPlugins->setItem( i, 1, twi );
100 twi->setFlags( twi->flags() & ~Qt::ItemIsEditable );
101 tblAuthPlugins->setItem( i, 2, twi );
105 tblAuthPlugins->sortItems( 0 );
115 connect( btnCertManager, &QPushButton::clicked,
this, &QgsAuthEditorWidgets::btnCertManager_clicked );
116 connect( btnAuthPlugins, &QPushButton::clicked,
this, &QgsAuthEditorWidgets::btnAuthPlugins_clicked );
119 wdgtConfigEditor->setRelayMessages(
false );
120 wdgtConfigEditor->setShowUtilitiesButton(
false );
121 setupUtilitiesMenu();
125 grpbxManagers->setEnabled(
false );
129void QgsAuthEditorWidgets::btnCertManager_clicked()
132 dlg->setWindowModality( Qt::ApplicationModal );
133 dlg->resize( 750, 500 );
138void QgsAuthEditorWidgets::btnAuthPlugins_clicked()
141 dlg->setWindowModality( Qt::WindowModal );
142 dlg->resize( 675, 500 );
147void QgsAuthEditorWidgets::setupUtilitiesMenu()
150 this, &QgsAuthEditorWidgets::authMessageLog );
155 mActionImportAuthenticationConfigs =
new QAction( tr(
"Import Authentication Configurations from File…" ),
this );
156 mActionExportSelectedAuthenticationConfigs =
new QAction( tr(
"Export Selected Authentication Configurations to File…" ),
this );
157 mActionSetMasterPassword =
new QAction( tr(
"Input Master Password…" ),
this );
158 mActionClearCachedMasterPassword =
new QAction( tr(
"Clear Cached Master Password" ),
this );
159 mActionResetMasterPassword =
new QAction( tr(
"Reset Master Password…" ),
this );
160 mActionClearCachedAuthConfigs =
new QAction( tr(
"Clear Cached Authentication Configurations" ),
this );
161 mActionRemoveAuthConfigs =
new QAction( tr(
"Remove all Authentication Configurations…" ),
this );
162 mActionEraseAuthDatabase =
new QAction( tr(
"Erase Authentication Database…" ),
this );
164 mActionClearAccessCacheNow =
new QAction( tr(
"Clear Network Authentication Access Cache" ),
this );
165 mActionAutoClearAccessCache =
new QAction( tr(
"Automatically Clear Network Authentication Access Cache on SSL Errors" ),
this );
166 mActionAutoClearAccessCache->setCheckable(
true );
169 mActionPasswordHelperSync =
new QAction( tr(
"Store/update the Master Password in your %1" )
171 mActionPasswordHelperDelete =
new QAction( tr(
"Clear the Master Password from your %1…" )
173 mActionPasswordHelperEnable =
new QAction( tr(
"Integrate Master Password with your %1" )
175 mActionPasswordHelperLoggingEnable =
new QAction( tr(
"Enable Password Helper Debug Log" ),
this );
177 mActionPasswordHelperEnable->setCheckable(
true );
180 mActionPasswordHelperLoggingEnable->setCheckable(
true );
185 connect( mActionImportAuthenticationConfigs, &QAction::triggered,
this, &QgsAuthEditorWidgets::importAuthenticationConfigs );
186 connect( mActionResetMasterPassword, &QAction::triggered,
this, &QgsAuthEditorWidgets::resetMasterPassword );
187 connect( mActionRemoveAuthConfigs, &QAction::triggered,
this, &QgsAuthEditorWidgets::removeAuthenticationConfigs );
188 connect( mActionEraseAuthDatabase, &QAction::triggered,
this, &QgsAuthEditorWidgets::eraseAuthenticationDatabase );
192 mActionImportAuthenticationConfigs->setEnabled(
false );
193 mActionResetMasterPassword->setEnabled(
false );
194 mActionRemoveAuthConfigs->setEnabled(
false );
195 mActionEraseAuthDatabase->setEnabled(
false );
198 connect( mActionExportSelectedAuthenticationConfigs, &QAction::triggered,
this, &QgsAuthEditorWidgets::exportSelectedAuthenticationConfigs );
199 connect( mActionSetMasterPassword, &QAction::triggered,
this, &QgsAuthEditorWidgets::setMasterPassword );
200 connect( mActionClearCachedMasterPassword, &QAction::triggered,
this, &QgsAuthEditorWidgets::clearCachedMasterPassword );
201 connect( mActionClearCachedAuthConfigs, &QAction::triggered,
this, &QgsAuthEditorWidgets::clearCachedAuthenticationConfigs );
203 connect( mActionPasswordHelperSync, &QAction::triggered,
this, &QgsAuthEditorWidgets::passwordHelperSync );
204 connect( mActionPasswordHelperDelete, &QAction::triggered,
this, &QgsAuthEditorWidgets::passwordHelperDelete );
205 connect( mActionPasswordHelperEnable, &QAction::triggered,
this, &QgsAuthEditorWidgets::passwordHelperEnableTriggered );
206 connect( mActionPasswordHelperLoggingEnable, &QAction::triggered,
this, &QgsAuthEditorWidgets::passwordHelperLoggingEnableTriggered );
208 connect( mActionClearAccessCacheNow, &QAction::triggered,
this, [ = ]
212 messageBar()->
pushSuccess( tr(
"Auth cache cleared" ), tr(
"Network authentication cache has been cleared" ) );
214 connect( mActionAutoClearAccessCache, &QAction::triggered,
this, [ ](
bool checked )
219 mAuthUtilitiesMenu =
new QMenu(
this );
220 mAuthUtilitiesMenu->addAction( mActionSetMasterPassword );
221 mAuthUtilitiesMenu->addAction( mActionClearCachedMasterPassword );
222 mAuthUtilitiesMenu->addAction( mActionResetMasterPassword );
223 mAuthUtilitiesMenu->addSeparator();
224 mAuthUtilitiesMenu->addAction( mActionClearAccessCacheNow );
225 mAuthUtilitiesMenu->addAction( mActionAutoClearAccessCache );
226 mAuthUtilitiesMenu->addSeparator();
227 mAuthUtilitiesMenu->addAction( mActionPasswordHelperEnable );
228 mAuthUtilitiesMenu->addAction( mActionPasswordHelperSync );
229 mAuthUtilitiesMenu->addAction( mActionPasswordHelperDelete );
230 mAuthUtilitiesMenu->addAction( mActionPasswordHelperLoggingEnable );
231 mAuthUtilitiesMenu->addSeparator();
232 mAuthUtilitiesMenu->addAction( mActionClearCachedAuthConfigs );
233 mAuthUtilitiesMenu->addAction( mActionRemoveAuthConfigs );
234 mAuthUtilitiesMenu->addSeparator();
235 mAuthUtilitiesMenu->addAction( mActionImportAuthenticationConfigs );
236 mAuthUtilitiesMenu->addAction( mActionExportSelectedAuthenticationConfigs );
237 mAuthUtilitiesMenu->addSeparator();
238 mAuthUtilitiesMenu->addAction( mActionEraseAuthDatabase );
240 btnAuthUtilities->setMenu( mAuthUtilitiesMenu );
243void QgsAuthEditorWidgets::importAuthenticationConfigs()
248void QgsAuthEditorWidgets::exportSelectedAuthenticationConfigs()
250 if ( !wdgtConfigEditor )
256void QgsAuthEditorWidgets::setMasterPassword()
261void QgsAuthEditorWidgets::clearCachedMasterPassword()
266void QgsAuthEditorWidgets::resetMasterPassword()
271void QgsAuthEditorWidgets::clearCachedAuthenticationConfigs()
276void QgsAuthEditorWidgets::removeAuthenticationConfigs()
281void QgsAuthEditorWidgets::eraseAuthenticationDatabase()
286void QgsAuthEditorWidgets::authMessageLog(
const QString &message,
const QString &authtag,
Qgis::MessageLevel level )
289 messageBar()->
pushMessage( authtag, message, level );
292void QgsAuthEditorWidgets::passwordHelperDelete()
297void QgsAuthEditorWidgets::passwordHelperSync()
302void QgsAuthEditorWidgets::passwordHelperEnableTriggered()
308void QgsAuthEditorWidgets::passwordHelperLoggingEnableTriggered()
MessageLevel
Level for messages This will be used both for message log and message bar in application.
static QgsAuthManager * authManager()
Returns the application's authentication manager instance.
Dialog wrapper for widget to manage available certificate editors.
virtual bool isReadOnly() const
Returns true if the storage is read-only, false otherwise.
static void importAuthenticationConfigs(QgsMessageBar *msgbar)
Import authentication configurations from a XML file.
static void exportSelectedAuthenticationConfigs(QStringList authenticationConfigIds, QgsMessageBar *msgbar)
Exports selected authentication configurations to a XML file.
static void resetMasterPassword(QgsMessageBar *msgbar, QWidget *parent=nullptr)
Reset the cached master password, updating its hash in authentication database and resetting all exis...
static void clearCachedMasterPassword(QgsMessageBar *msgbar)
Clear the currently cached master password (not its hash in database)
static void passwordHelperEnable(bool enabled, QgsMessageBar *msgbar)
Sets password helper enabled (enable/disable)
static void clearCachedAuthenticationConfigs(QgsMessageBar *msgbar)
Clear all cached authentication configs for session.
static void passwordHelperLoggingEnable(bool enabled, QgsMessageBar *msgbar, int timeout=0)
Sets password helper logging enabled (enable/disable)
static void eraseAuthenticationDatabase(QgsMessageBar *msgbar, QWidget *parent=nullptr)
Completely clear out the authentication database (configs and master password)
static void removeAuthenticationConfigs(QgsMessageBar *msgbar, QWidget *parent=nullptr)
Remove all authentication configs.
static void setMasterPassword(QgsMessageBar *msgbar)
Sets the cached master password (and verifies it if its hash is in authentication database)
static void passwordHelperDelete(QgsMessageBar *msgbar, QWidget *parent=nullptr)
Remove master password from wallet.
static void passwordHelperSync(QgsMessageBar *msgbar)
Store master password into the wallet.
QgsAuthConfigurationStorageDb * defaultDbStorage() const
Transitional proxy to the first ready storage of database type.
void messageLog(const QString &message, const QString &tag=QgsAuthManager::AUTH_MAN_TAG, Qgis::MessageLevel level=Qgis::MessageLevel::Info) const
Custom logging signal to relay to console output and QgsMessageLog.
QgsAuthMethod * authMethod(const QString &authMethodKey)
Gets authentication method from the config/provider cache via its key.
QStringList authMethodsKeys(const QString &dataprovider=QString())
Gets keys of supported authentication methods.
static const QString AUTH_PASSWORD_HELPER_DISPLAY_NAME
The display name of the password helper (platform dependent)
const QgsAuthMethodMetadata * authMethodMetadata(const QString &authMethodKey)
Gets authentication method metadata via its key.
Dialog for viewing available authentication method plugins.
QgsAuthMethodPlugins(QWidget *parent=nullptr)
Construct a dialog for viewing available authentication method plugins.
Abstract base class for authentication method plugins.
QStringList supportedDataProviders() const
The data providers that the method supports, allowing for filtering out authcfgs that are not applica...
A bar for displaying non-blocking messages to the user.
void pushMessage(const QString &text, Qgis::MessageLevel level=Qgis::MessageLevel::Info, int duration=-1)
A convenience method for pushing a message with the specified text to the bar.
void pushSuccess(const QString &title, const QString &message)
Pushes a success message with default timeout to the message bar.
bool clearWidgets()
Removes all items from the bar.
static QgsNetworkAccessManager * instance(Qt::ConnectionType connectionType=Qt::BlockingQueuedConnection)
Returns a pointer to the active QgsNetworkAccessManager for the current thread.
This class is a composition of two QSettings instances:
void setValue(const QString &key, const QVariant &value, QgsSettings::Section section=QgsSettings::NoSection)
Sets the value of setting key to value.
#define QgsDebugError(str)