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.