18 #include "ui_qgsauthconfigeditor.h"
21 #include <QMessageBox>
22 #include <QSqlTableModel>
24 #include "qgssettings.h"
32 , mRelayMessages( relayMessages )
37 mAuthNotifyLayout =
new QVBoxLayout;
38 this->setLayout( mAuthNotifyLayout );
40 mAuthNotifyLayout->addWidget( mAuthNotify );
45 connect( btnAddConfig, &QToolButton::clicked,
this, &QgsAuthConfigEditor::btnAddConfig_clicked );
46 connect( btnEditConfig, &QToolButton::clicked,
this, &QgsAuthConfigEditor::btnEditConfig_clicked );
47 connect( btnRemoveConfig, &QToolButton::clicked,
this, &QgsAuthConfigEditor::btnRemoveConfig_clicked );
53 mConfigModel->select();
55 mConfigModel->setHeaderData( 0, Qt::Horizontal, tr(
"ID" ) );
56 mConfigModel->setHeaderData( 1, Qt::Horizontal, tr(
"Name" ) );
57 mConfigModel->setHeaderData( 2, Qt::Horizontal, tr(
"URI" ) );
58 mConfigModel->setHeaderData( 3, Qt::Horizontal, tr(
"Type" ) );
59 mConfigModel->setHeaderData( 4, Qt::Horizontal, tr(
"Version" ) );
60 mConfigModel->setHeaderData( 5, Qt::Horizontal, tr(
"Config" ) );
62 tableViewConfigs->setModel( mConfigModel );
63 tableViewConfigs->resizeColumnsToContents();
68 tableViewConfigs->hideColumn( 4 );
69 tableViewConfigs->hideColumn( 5 );
72 tableViewConfigs->sortByColumn( 1, Qt::AscendingOrder );
73 tableViewConfigs->setSortingEnabled(
true );
75 connect( tableViewConfigs->selectionModel(), &QItemSelectionModel::selectionChanged,
76 this, &QgsAuthConfigEditor::selectionChanged );
78 connect( tableViewConfigs, &QAbstractItemView::doubleClicked,
79 this, &QgsAuthConfigEditor::btnEditConfig_clicked );
84 this, &QgsAuthConfigEditor::authMessageOut );
88 this, &QgsAuthConfigEditor::refreshTableView );
93 mActionImportAuthenticationConfigs =
new QAction( tr(
"Import authentication configurations from file" ),
this );
94 mActionExportSelectedAuthenticationConfigs =
new QAction( tr(
"Export selected authentication configurations to file" ),
this );
95 mActionSetMasterPassword =
new QAction( QStringLiteral(
"Input master password" ),
this );
96 mActionClearCachedMasterPassword =
new QAction( QStringLiteral(
"Clear cached master password" ),
this );
97 mActionResetMasterPassword =
new QAction( QStringLiteral(
"Reset master password" ),
this );
98 mActionClearCachedAuthConfigs =
new QAction( QStringLiteral(
"Clear cached authentication configurations" ),
this );
99 mActionRemoveAuthConfigs =
new QAction( QStringLiteral(
"Remove all authentication configurations" ),
this );
100 mActionEraseAuthDatabase =
new QAction( QStringLiteral(
"Erase authentication database" ),
this );
102 connect( mActionImportAuthenticationConfigs, &QAction::triggered,
this, &QgsAuthConfigEditor::importAuthenticationConfigs );
103 connect( mActionExportSelectedAuthenticationConfigs, &QAction::triggered,
this, &QgsAuthConfigEditor::exportSelectedAuthenticationConfigs );
104 connect( mActionSetMasterPassword, &QAction::triggered,
this, &QgsAuthConfigEditor::setMasterPassword );
105 connect( mActionClearCachedMasterPassword, &QAction::triggered,
this, &QgsAuthConfigEditor::clearCachedMasterPassword );
106 connect( mActionResetMasterPassword, &QAction::triggered,
this, &QgsAuthConfigEditor::resetMasterPassword );
107 connect( mActionClearCachedAuthConfigs, &QAction::triggered,
this, &QgsAuthConfigEditor::clearCachedAuthenticationConfigs );
108 connect( mActionRemoveAuthConfigs, &QAction::triggered,
this, &QgsAuthConfigEditor::removeAuthenticationConfigs );
109 connect( mActionEraseAuthDatabase, &QAction::triggered,
this, &QgsAuthConfigEditor::eraseAuthenticationDatabase );
111 mAuthUtilitiesMenu =
new QMenu(
this );
112 mAuthUtilitiesMenu->addAction( mActionSetMasterPassword );
113 mAuthUtilitiesMenu->addAction( mActionClearCachedMasterPassword );
114 mAuthUtilitiesMenu->addAction( mActionResetMasterPassword );
115 mAuthUtilitiesMenu->addSeparator();
116 mAuthUtilitiesMenu->addAction( mActionClearCachedAuthConfigs );
117 mAuthUtilitiesMenu->addAction( mActionRemoveAuthConfigs );
118 mAuthUtilitiesMenu->addSeparator();
119 mAuthUtilitiesMenu->addAction( mActionImportAuthenticationConfigs );
120 mAuthUtilitiesMenu->addAction( mActionExportSelectedAuthenticationConfigs );
121 mAuthUtilitiesMenu->addSeparator();
122 mAuthUtilitiesMenu->addAction( mActionEraseAuthDatabase );
124 btnAuthUtilities->setMenu( mAuthUtilitiesMenu );
125 lblAuthConfigDb->setVisible(
false );
129 void QgsAuthConfigEditor::importAuthenticationConfigs()
134 void QgsAuthConfigEditor::exportSelectedAuthenticationConfigs()
139 void QgsAuthConfigEditor::setMasterPassword()
144 void QgsAuthConfigEditor::clearCachedMasterPassword()
149 void QgsAuthConfigEditor::resetMasterPassword()
154 void QgsAuthConfigEditor::clearCachedAuthenticationConfigs()
159 void QgsAuthConfigEditor::removeAuthenticationConfigs()
164 void QgsAuthConfigEditor::eraseAuthenticationDatabase()
171 int levelint =
static_cast<int>( level );
179 lblAuthConfigDb->setVisible( visible );
186 QModelIndexList selection = tableViewConfigs->selectionModel()->selectedRows( 0 );
187 for ( QModelIndex index : selection )
189 ids << index.sibling( index.row(), 0 ).data().toString();
198 btnAuthUtilities->setVisible( show );
208 if ( relay == mRelayMessages )
213 if ( mRelayMessages )
216 this, &QgsAuthConfigEditor::authMessageOut );
217 mRelayMessages = relay;
222 this, &QgsAuthConfigEditor::authMessageOut );
223 mRelayMessages = relay;
226 void QgsAuthConfigEditor::refreshTableView()
228 mConfigModel->select();
229 tableViewConfigs->reset();
232 void QgsAuthConfigEditor::selectionChanged(
const QItemSelection &selected,
const QItemSelection &deselected )
235 Q_UNUSED( deselected )
239 void QgsAuthConfigEditor::checkSelection()
241 bool hasselection = tableViewConfigs->selectionModel()->selection().length() > 0;
242 btnEditConfig->setEnabled( hasselection );
243 btnRemoveConfig->setEnabled( hasselection );
246 void QgsAuthConfigEditor::btnAddConfig_clicked()
252 ace->setWindowModality( Qt::WindowModal );
255 mConfigModel->select();
260 void QgsAuthConfigEditor::btnEditConfig_clicked()
262 QString authcfg = selectedConfigId();
264 if ( authcfg.isEmpty() )
271 ace->setWindowModality( Qt::WindowModal );
274 mConfigModel->select();
279 void QgsAuthConfigEditor::btnRemoveConfig_clicked()
281 QModelIndexList selection = tableViewConfigs->selectionModel()->selectedRows( 0 );
283 if ( selection.empty() )
286 for ( QModelIndex index : selection )
288 QString name = index.sibling( index.row(), 1 ).data().toString();
290 if ( QMessageBox::warning(
this, tr(
"Remove Configuration" ),
291 tr(
"Are you sure you want to remove '%1'?\n\n"
292 "Operation can NOT be undone!" ).arg( name ),
293 QMessageBox::Ok | QMessageBox::Cancel,
294 QMessageBox::Cancel ) == QMessageBox::Ok )
296 mConfigModel->removeRow( index.row() );
306 QString QgsAuthConfigEditor::selectedConfigId()
308 QModelIndexList selection = tableViewConfigs->selectionModel()->selectedRows( 0 );
310 if ( selection.empty() )
313 QModelIndex indx = selection.at( 0 );
314 return indx.sibling( indx.row(), 0 ).data().toString();
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.
Widget for editing an authentication configuration.
QgsAuthConfigEditor(QWidget *parent=nullptr, bool showUtilities=true, bool relayMessages=true)
Widget for editing authentication configurations directly in database.
void setRelayMessages(bool relay=true)
Sets whether to relay auth manager messages to internal message bar, e.g. when embedding.
void setShowUtilitiesButton(bool show=true)
Sets whether to show the widget's utilities button, e.g. when embedding.
QStringList selectedAuthenticationConfigIds() const
Returns the list of selected authentication configuration IDs.
void toggleTitleVisibility(bool visible)
Hide the widget's title, e.g. when embedding.
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 clearCachedAuthenticationConfigs(QgsMessageBar *msgbar)
Clear all cached authentication configs for session.
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)
MessageLevel
Message log level (mirrors that of QgsMessageLog, so it can also output there)
void messageOut(const QString &message, const QString &tag=QgsAuthManager::AUTH_MAN_TAG, QgsAuthManager::MessageLevel level=QgsAuthManager::INFO) const
Custom logging signal to relay to console output and QgsMessageLog.
void authDatabaseChanged()
Emitted when the authentication db is significantly changed, e.g. large record removal,...
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.