19#include "ui_qgsauthmethodplugins.h"
24#include <QTableWidget>
41 mAuthNotifyLayout =
new QVBoxLayout;
42 this->setLayout( mAuthNotifyLayout );
44 mAuthNotifyLayout->addWidget( mAuthNotify );
49 connect( buttonBox, &QDialogButtonBox::rejected,
this, &QDialog::reject );
56void QgsAuthMethodPlugins::setupTable()
58 tblAuthPlugins->setColumnCount( 3 );
59 tblAuthPlugins->verticalHeader()->hide();
60 tblAuthPlugins->horizontalHeader()->setVisible(
true );
61 tblAuthPlugins->setHorizontalHeaderItem( 0,
new QTableWidgetItem( tr(
"Method" ) ) );
62 tblAuthPlugins->setHorizontalHeaderItem( 1,
new QTableWidgetItem( tr(
"Description" ) ) );
63 tblAuthPlugins->setHorizontalHeaderItem( 2,
new QTableWidgetItem( tr(
"Works with" ) ) );
64 tblAuthPlugins->horizontalHeader()->setStretchLastSection(
true );
65 tblAuthPlugins->setAlternatingRowColors(
true );
66 tblAuthPlugins->setColumnWidth( 0, 150 );
67 tblAuthPlugins->setColumnWidth( 1, 300 );
69 tblAuthPlugins->verticalHeader()->setSectionResizeMode( QHeaderView::ResizeToContents );
70 tblAuthPlugins->setSortingEnabled(
true );
71 tblAuthPlugins->setSelectionBehavior( QAbstractItemView::SelectRows );
74void QgsAuthMethodPlugins::populateTable()
79 const auto constAuthMethodKeys = authMethodKeys;
80 for (
const QString &authMethodKey : constAuthMethodKeys )
84 if ( !meta || !method )
86 QgsDebugError( QStringLiteral(
"Load auth method instance FAILED for auth method key (%1)" ).arg( authMethodKey ) );
90 QTableWidgetItem *twi =
new QTableWidgetItem( meta->
key() );
91 twi->setFlags( twi->flags() & ~Qt::ItemIsEditable );
92 tblAuthPlugins->setItem( i, 0, twi );
95 twi->setFlags( twi->flags() & ~Qt::ItemIsEditable );
96 tblAuthPlugins->setItem( i, 1, twi );
99 twi->setFlags( twi->flags() & ~Qt::ItemIsEditable );
100 tblAuthPlugins->setItem( i, 2, twi );
104 tblAuthPlugins->sortItems( 0 );
114 connect( btnCertManager, &QPushButton::clicked,
this, &QgsAuthEditorWidgets::btnCertManager_clicked );
115 connect( btnAuthPlugins, &QPushButton::clicked,
this, &QgsAuthEditorWidgets::btnAuthPlugins_clicked );
118 wdgtConfigEditor->setRelayMessages(
false );
119 wdgtConfigEditor->setShowUtilitiesButton(
false );
120 setupUtilitiesMenu();
124 grpbxManagers->setEnabled(
false );
128void QgsAuthEditorWidgets::btnCertManager_clicked()
131 dlg->setWindowModality( Qt::ApplicationModal );
132 dlg->resize( 750, 500 );
137void QgsAuthEditorWidgets::btnAuthPlugins_clicked()
140 dlg->setWindowModality( Qt::WindowModal );
141 dlg->resize( 675, 500 );
146void QgsAuthEditorWidgets::setupUtilitiesMenu()
149 this, &QgsAuthEditorWidgets::authMessageLog );
154 mActionImportAuthenticationConfigs =
new QAction( tr(
"Import Authentication Configurations from File…" ),
this );
155 mActionExportSelectedAuthenticationConfigs =
new QAction( tr(
"Export Selected Authentication Configurations to File…" ),
this );
156 mActionSetMasterPassword =
new QAction( tr(
"Input Master Password…" ),
this );
157 mActionClearCachedMasterPassword =
new QAction( tr(
"Clear Cached Master Password" ),
this );
158 mActionResetMasterPassword =
new QAction( tr(
"Reset Master Password…" ),
this );
159 mActionClearCachedAuthConfigs =
new QAction( tr(
"Clear Cached Authentication Configurations" ),
this );
160 mActionRemoveAuthConfigs =
new QAction( tr(
"Remove all Authentication Configurations…" ),
this );
161 mActionEraseAuthDatabase =
new QAction( tr(
"Erase Authentication Database…" ),
this );
163 mActionClearAccessCacheNow =
new QAction( tr(
"Clear Network Authentication Access Cache" ),
this );
164 mActionAutoClearAccessCache =
new QAction( tr(
"Automatically Clear Network Authentication Access Cache on SSL Errors" ),
this );
165 mActionAutoClearAccessCache->setCheckable(
true );
168 mActionPasswordHelperSync =
new QAction( tr(
"Store/update the Master Password in your %1" )
170 mActionPasswordHelperDelete =
new QAction( tr(
"Clear the Master Password from your %1…" )
172 mActionPasswordHelperEnable =
new QAction( tr(
"Integrate Master Password with your %1" )
174 mActionPasswordHelperLoggingEnable =
new QAction( tr(
"Enable Password Helper Debug Log" ),
this );
176 mActionPasswordHelperEnable->setCheckable(
true );
179 mActionPasswordHelperLoggingEnable->setCheckable(
true );
184 connect( mActionImportAuthenticationConfigs, &QAction::triggered,
this, &QgsAuthEditorWidgets::importAuthenticationConfigs );
185 connect( mActionResetMasterPassword, &QAction::triggered,
this, &QgsAuthEditorWidgets::resetMasterPassword );
186 connect( mActionRemoveAuthConfigs, &QAction::triggered,
this, &QgsAuthEditorWidgets::removeAuthenticationConfigs );
187 connect( mActionEraseAuthDatabase, &QAction::triggered,
this, &QgsAuthEditorWidgets::eraseAuthenticationDatabase );
191 mActionImportAuthenticationConfigs->setEnabled(
false );
192 mActionResetMasterPassword->setEnabled(
false );
193 mActionRemoveAuthConfigs->setEnabled(
false );
194 mActionEraseAuthDatabase->setEnabled(
false );
197 connect( mActionExportSelectedAuthenticationConfigs, &QAction::triggered,
this, &QgsAuthEditorWidgets::exportSelectedAuthenticationConfigs );
198 connect( mActionSetMasterPassword, &QAction::triggered,
this, &QgsAuthEditorWidgets::setMasterPassword );
199 connect( mActionClearCachedMasterPassword, &QAction::triggered,
this, &QgsAuthEditorWidgets::clearCachedMasterPassword );
200 connect( mActionClearCachedAuthConfigs, &QAction::triggered,
this, &QgsAuthEditorWidgets::clearCachedAuthenticationConfigs );
202 connect( mActionPasswordHelperSync, &QAction::triggered,
this, &QgsAuthEditorWidgets::passwordHelperSync );
203 connect( mActionPasswordHelperDelete, &QAction::triggered,
this, &QgsAuthEditorWidgets::passwordHelperDelete );
204 connect( mActionPasswordHelperEnable, &QAction::triggered,
this, &QgsAuthEditorWidgets::passwordHelperEnableTriggered );
205 connect( mActionPasswordHelperLoggingEnable, &QAction::triggered,
this, &QgsAuthEditorWidgets::passwordHelperLoggingEnableTriggered );
207 connect( mActionClearAccessCacheNow, &QAction::triggered,
this, [ = ]
211 messageBar()->
pushSuccess( tr(
"Auth cache cleared" ), tr(
"Network authentication cache has been cleared" ) );
213 connect( mActionAutoClearAccessCache, &QAction::triggered,
this, [ ](
bool checked )
218 mAuthUtilitiesMenu =
new QMenu(
this );
219 mAuthUtilitiesMenu->addAction( mActionSetMasterPassword );
220 mAuthUtilitiesMenu->addAction( mActionClearCachedMasterPassword );
221 mAuthUtilitiesMenu->addAction( mActionResetMasterPassword );
222 mAuthUtilitiesMenu->addSeparator();
223 mAuthUtilitiesMenu->addAction( mActionClearAccessCacheNow );
224 mAuthUtilitiesMenu->addAction( mActionAutoClearAccessCache );
225 mAuthUtilitiesMenu->addSeparator();
226 mAuthUtilitiesMenu->addAction( mActionPasswordHelperEnable );
227 mAuthUtilitiesMenu->addAction( mActionPasswordHelperSync );
228 mAuthUtilitiesMenu->addAction( mActionPasswordHelperDelete );
229 mAuthUtilitiesMenu->addAction( mActionPasswordHelperLoggingEnable );
230 mAuthUtilitiesMenu->addSeparator();
231 mAuthUtilitiesMenu->addAction( mActionClearCachedAuthConfigs );
232 mAuthUtilitiesMenu->addAction( mActionRemoveAuthConfigs );
233 mAuthUtilitiesMenu->addSeparator();
234 mAuthUtilitiesMenu->addAction( mActionImportAuthenticationConfigs );
235 mAuthUtilitiesMenu->addAction( mActionExportSelectedAuthenticationConfigs );
236 mAuthUtilitiesMenu->addSeparator();
237 mAuthUtilitiesMenu->addAction( mActionEraseAuthDatabase );
239 btnAuthUtilities->setMenu( mAuthUtilitiesMenu );
242void QgsAuthEditorWidgets::importAuthenticationConfigs()
247void QgsAuthEditorWidgets::exportSelectedAuthenticationConfigs()
249 if ( !wdgtConfigEditor )
255void QgsAuthEditorWidgets::setMasterPassword()
260void QgsAuthEditorWidgets::clearCachedMasterPassword()
265void QgsAuthEditorWidgets::resetMasterPassword()
270void QgsAuthEditorWidgets::clearCachedAuthenticationConfigs()
275void QgsAuthEditorWidgets::removeAuthenticationConfigs()
280void QgsAuthEditorWidgets::eraseAuthenticationDatabase()
285void QgsAuthEditorWidgets::authMessageLog(
const QString &message,
const QString &authtag,
Qgis::MessageLevel level )
288 messageBar()->
pushMessage( authtag, message, level );
291void QgsAuthEditorWidgets::passwordHelperDelete()
296void QgsAuthEditorWidgets::passwordHelperSync()
301void QgsAuthEditorWidgets::passwordHelperEnableTriggered()
307void 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)