19 #include <QPushButton>    32   , mDataProvider( dataprovider )
    38   if ( !disabled && !authcfg.isEmpty() )
    43   if ( disabled || !idok )
    45     mAuthNotifyLayout = 
new QVBoxLayout;
    46     this->setLayout( mAuthNotifyLayout );
    49     if ( !authcfg.isEmpty() )
    51       msg += 
"\n\n" + tr( 
"Authentication config id not loaded: %1" ).arg( authcfg );
    53     mAuthNotify = 
new QLabel( msg, 
this );
    54     mAuthNotifyLayout->addWidget( mAuthNotify );
    57     buttonBox->button( QDialogButtonBox::Save )->setEnabled( 
false );
    62     connect( btnClear, &QToolButton::clicked, 
this, &QgsAuthConfigEdit::btnClear_clicked );
    63     connect( leName, &QLineEdit::textChanged, 
this, &QgsAuthConfigEdit::leName_textChanged );
    64     connect( buttonBox, &QDialogButtonBox::rejected, 
this, &QWidget::close );
    65     connect( buttonBox, &QDialogButtonBox::accepted, 
this, &QgsAuthConfigEdit::saveConfig );
    66     connect( buttonBox->button( QDialogButtonBox::Reset ), &QAbstractButton::clicked, 
this, &QgsAuthConfigEdit::resetConfig );
    68     populateAuthMethods();
    70     connect( cmbAuthMethods, 
static_cast<void ( QComboBox::* )( 
int )
>( &QComboBox::currentIndexChanged ),
    71              stkwAuthMethods, &QStackedWidget::setCurrentIndex );
    72     connect( cmbAuthMethods, 
static_cast<void ( QComboBox::* )( 
int )
>( &QComboBox::currentIndexChanged ),
    73              this, [ = ] { validateAuth(); } );
    84     if ( cmbAuthMethods->count() > 0 )
    86       cmbAuthMethods->setCurrentIndex( 0 );
    87       stkwAuthMethods->setCurrentIndex( 0 );
    99 void QgsAuthConfigEdit::populateAuthMethods()
   104   QMap<QString, QgsAuthMethod *> descmap;
   105   Q_FOREACH ( 
const QString &authMethodKey, authMethodKeys )
   110       QgsDebugMsg( QStringLiteral( 
"Load auth method instance FAILED for auth method key (%1)" ).arg( authMethodKey ) );
   116   QMap<QString, QgsAuthMethod *>::iterator it = descmap.begin();
   117   for ( it = descmap.begin(); it != descmap.end(); ++it )
   123       QgsDebugMsg( QStringLiteral( 
"Load auth method edit widget FAILED for auth method key (%1)" ).arg( it.value()->key() ) );
   128     cmbAuthMethods->addItem( it.key(), QVariant( it.value()->key() ) );
   129     stkwAuthMethods->addWidget( editWidget );
   133 void QgsAuthConfigEdit::loadConfig()
   135   bool emptyAuthCfg = mAuthCfg.isEmpty();
   136   authCfgEdit->setAllowEmptyId( emptyAuthCfg );
   152     QgsDebugMsg( QStringLiteral( 
"Loading FAILED for authcfg: %1" ).arg( mAuthCfg ) );
   156   if ( !mconfig.
isValid( 
true ) )
   158     QgsDebugMsg( QStringLiteral( 
"Loading FAILED for authcfg (%1): invalid config" ).arg( mAuthCfg ) );
   163   leName->setText( mconfig.
name() );
   164   leResource->setText( mconfig.
uri() );
   165   authCfgEdit->setAuthConfigId( mconfig.
id() );
   169   QgsDebugMsg( QStringLiteral( 
"Loading authcfg: %1" ).arg( mAuthCfg ) );
   170   QgsDebugMsg( QStringLiteral( 
"Loading auth method: %1" ).arg( authMethodKey ) );
   172   if ( authMethodKey.isEmpty() )
   174     QgsDebugMsg( QStringLiteral( 
"Loading FAILED for authcfg (%1): no auth method found" ).arg( mAuthCfg ) );
   178   if ( mconfig.
method() != authMethodKey )
   180     QgsDebugMsg( QStringLiteral( 
"Loading FAILED for authcfg (%1): auth method and key mismatch" ).arg( mAuthCfg ) );
   184   int indx = authMethodIndex( authMethodKey );
   187     QgsDebugMsg( QStringLiteral( 
"Loading FAILED for authcfg (%1): no edit widget loaded for auth method '%2'" )
   188                  .arg( mAuthCfg, authMethodKey ) );
   189     if ( cmbAuthMethods->count() > 0 )
   191       cmbAuthMethods->setCurrentIndex( 0 );
   192       stkwAuthMethods->setCurrentIndex( 0 );
   197   cmbAuthMethods->setCurrentIndex( indx );
   198   stkwAuthMethods->setCurrentIndex( indx );
   203     QgsDebugMsg( QStringLiteral( 
"Cast to edit widget FAILED for authcfg (%1) and auth method key (%2)" )
   204                  .arg( mAuthCfg, authMethodKey ) );
   211 void QgsAuthConfigEdit::resetConfig()
   218 void QgsAuthConfigEdit::saveConfig()
   223   QString authMethodKey = cmbAuthMethods->currentData().toString();
   228     QgsDebugMsg( QStringLiteral( 
"Cast to edit widget FAILED)" ) );
   235     QgsDebugMsg( QStringLiteral( 
"Save auth config FAILED when loading auth method instance from key (%1)" ).arg( authMethodKey ) );
   240   mconfig.
setName( leName->text() );
   241   mconfig.
setUri( leResource->text() );
   248     QgsDebugMsg( QStringLiteral( 
"Save auth config FAILED: config invalid" ) );
   252   QString authCfgId( authCfgEdit->configId() );
   253   if ( !mAuthCfg.isEmpty() )
   255     if ( authCfgId == mAuthCfg ) 
   257       mconfig.
setId( mAuthCfg );
   264         QgsDebugMsg( QStringLiteral( 
"Updating auth config FAILED for authcfg: %1" ).arg( mAuthCfg ) );
   269       mconfig.
setId( authCfgId );
   275           QgsDebugMsg( QStringLiteral( 
"Removal of older auth config FAILED" ) );
   277         mAuthCfg = authCfgId;
   281         QgsDebugMsg( QStringLiteral( 
"Storing new auth config with user-created unique ID FAILED" ) );
   285   else if ( mAuthCfg.isEmpty() )
   287     if ( authCfgId.isEmpty() ) 
   291         mAuthCfg = mconfig.
id();
   296         QgsDebugMsg( QStringLiteral( 
"Storing new auth config FAILED" ) );
   301       mconfig.
setId( authCfgId );
   304         mAuthCfg = authCfgId;
   309         QgsDebugMsg( QStringLiteral( 
"Storing new auth config with user-created unique ID FAILED" ) );
   317 void QgsAuthConfigEdit::btnClear_clicked()
   322     QgsDebugMsg( QStringLiteral( 
"Cast to edit widget FAILED)" ) );
   331 void QgsAuthConfigEdit::clearAll()
   335   authCfgEdit->clear();
   337   for ( 
int i = 0; i < stkwAuthMethods->count(); i++ )
   349 void QgsAuthConfigEdit::validateAuth()
   351   bool authok = !leName->text().isEmpty();
   356     QgsDebugMsg( QStringLiteral( 
"Cast to edit widget FAILED" ) );
   362   authok = authok && authCfgEdit->validate();
   364   buttonBox->button( QDialogButtonBox::Save )->setEnabled( authok );
   367 void QgsAuthConfigEdit::leName_textChanged( 
const QString &txt )
   373 int QgsAuthConfigEdit::authMethodIndex( 
const QString &authMethodKey )
   375   return cmbAuthMethods->findData( QVariant( authMethodKey ) );
 virtual QgsStringMap configMap() const =0
The configuration key-vale map of subclasses. 
 
void setUri(const QString &uri)
 
QgsStringMap configMap() const
Gets extended configuration, mapped to key/value pairs of QStrings. 
 
bool isValid(bool validateid=false) const
Whether the configuration is valid. 
 
void setId(const QString &id)
Sets auth config ID. 
 
int version() const
Increment this if method is significantly updated, allow updater code to be written for previously st...
 
void validityChanged(bool valid)
Validity of the ID has changed. 
 
void authenticationConfigUpdated(const QString &authcfg)
Emit current id when an existing config is updated in auth database. 
 
Abstract base class for the edit widget of authentication method plugins. 
 
QStringList authMethodsKeys(const QString &dataprovider=QString())
Gets keys of supported authentication methods. 
 
QgsAuthMethod * authMethod(const QString &authMethodKey)
Gets authentication method from the config/provider cache via its key. 
 
QgsAuthConfigEdit(QWidget *parent=nullptr, const QString &authcfg=QString(), const QString &dataprovider=QString())
Create a dialog for editing an authentication configuration. 
 
virtual void clearConfig()=0
Clear GUI controls in subclassed widget. 
 
virtual void loadConfig(const QgsStringMap &configmap)=0
Load an existing config map into subclassed widget. 
 
void validityChanged(bool valid)
Emitted when the configuration validatity changes. 
 
void setMethod(const QString &method)
 
Configuration storage class for authentication method configurations. 
 
const QString name() const
Gets name of configuration. 
 
QStringList configIds() const
Gets list of authentication ids from database. 
 
QWidget * authMethodEditWidget(const QString &authMethodKey, QWidget *parent)
Gets authentication method edit widget via its key. 
 
static QgsAuthManager * authManager()
Returns the application's authentication manager instance. 
 
QString configAuthMethodKey(const QString &authcfg) const
Gets key of authentication method associated with config ID. 
 
virtual bool validateConfig()=0
Validate the configuration of subclasses. 
 
Abstract base class for authentication method plugins. 
 
void authenticationConfigStored(const QString &authcfg)
Emit generated id when a new config is saved to auth database. 
 
virtual QString displayDescription() const =0
Translatable display version of the 'description()'. 
 
bool storeAuthenticationConfig(QgsAuthMethodConfig &mconfig)
Store an authentication config in the database. 
 
void setVersion(int version)
Sets version of the configuration. 
 
bool isDisabled() const
Whether QCA has the qca-ossl plugin, which a base run-time requirement. 
 
static void enableAutoGeometryRestore(QWidget *widget, const QString &key=QString())
Register the widget to allow its position to be automatically saved and restored when open and closed...
 
QString method() const
Textual key of the associated authentication method. 
 
const QString uri() const
A URI to auto-select a config when connecting to a resource. 
 
void setName(const QString &name)
Sets name of configuration. 
 
void setConfigMap(const QgsStringMap &map)
Set extended configuration map. 
 
const QString id() const
Gets 'authcfg' 7-character alphanumeric ID of the config.