force starting timeout when oidc authentication requested so we can cancel the process in case the url isn't working

This commit is contained in:
Gaelle Braud 2026-01-23 10:57:15 +01:00
parent 770ed045e5
commit be5a7fa4e7
6 changed files with 83 additions and 79 deletions

View file

@ -306,6 +306,9 @@ App::App(int &argc, char *argv[])
setWindowIcon(QIcon(Constants::WindowIconPath));
initFonts();
//-------------------
mOIDCRefreshTimer.setInterval(1000);
mOIDCRefreshTimer.setSingleShot(false);
mLinphoneThread = new Thread(this);
init();
@ -329,9 +332,6 @@ App::App(int &argc, char *argv[])
mEventCountNotifier = new EventCountNotifier(this);
mDateUpdateTimer.start();
mOIDCRefreshTimer.setInterval(1000);
mOIDCRefreshTimer.setSingleShot(false);
#ifdef Q_OS_LINUX
exportDesktopFile();
#endif
@ -530,7 +530,6 @@ void App::setSelf(QSharedPointer<App>(me)) {
mCoreModelConnection->makeConnectToModel(&CoreModel::oidcRemainingTimeBeforeTimeoutChanged,
[this](int remainingTime) {
qDebug() << "App: oidc timeout changed";
mCoreModelConnection->invokeToCore([this, remainingTime] {
mRemainingTimeBeforeOidcTimeout = remainingTime;
emit remainingTimeBeforeOidcTimeoutChanged();

View file

@ -682,14 +682,14 @@
<message>
<location filename="../../core/App.cpp" line="425"/>
<location filename="../../core/App.cpp" line="503"/>
<location filename="../../core/App.cpp" line="790"/>
<location filename="../../core/App.cpp" line="789"/>
<source>info_popup_error_title</source>
<extracomment>Error</extracomment>
<translation>Fehler</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="426"/>
<location filename="../../core/App.cpp" line="792"/>
<location filename="../../core/App.cpp" line="791"/>
<source>info_popup_configuration_failed_message</source>
<extracomment>Remote provisioning failed : %1</extracomment>
<translation>Remote-Provisionierung fehlgeschlagen: %1</translation>
@ -729,86 +729,86 @@
<translation>Ihre Version ist auf dem neuesten Stand</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="786"/>
<location filename="../../core/App.cpp" line="785"/>
<source>configuration_error_detail</source>
<extracomment>not reachable</extracomment>
<translation>nicht erreichbar</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1077"/>
<location filename="../../core/App.cpp" line="1076"/>
<source>application_description</source>
<extracomment>&quot;A free and open source SIP video-phone.&quot;</extracomment>
<translation>Ein kostenloses Open-Source SIP Video-Telefon.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1079"/>
<location filename="../../core/App.cpp" line="1078"/>
<source>command_line_arg_order</source>
<extracomment>&quot;Send an order to the application towards a command line&quot;</extracomment>
<translation>Kommandozeilen-Befehl an die Anwendung schicken</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1083"/>
<location filename="../../core/App.cpp" line="1082"/>
<source>command_line_option_show_help</source>
<translation>Zeige Hilfe</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1088"/>
<location filename="../../core/App.cpp" line="1087"/>
<source>command_line_option_show_app_version</source>
<translation>App-Version anzeigen</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1096"/>
<location filename="../../core/App.cpp" line="1095"/>
<source>command_line_option_config_to_fetch</source>
<extracomment>&quot;Specify the linphone configuration file to be fetched. It will be merged with the current configuration.&quot;</extracomment>
<translation>Abzurufende Linphone-Konfigurationsdatei angeben. Sie wird mit der aktuellen Konfiguration zusammengeführt.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1098"/>
<location filename="../../core/App.cpp" line="1097"/>
<source>command_line_option_config_to_fetch_arg</source>
<extracomment>&quot;URL, path or file&quot;</extracomment>
<translation>URL, Pfad oder Datei</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1103"/>
<location filename="../../core/App.cpp" line="1102"/>
<source>command_line_option_minimized</source>
<translation>Minimieren</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1106"/>
<location filename="../../core/App.cpp" line="1105"/>
<source>command_line_option_log_to_stdout</source>
<translation>Debug-Informationen auf der Standardausgabe ausgeben</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1109"/>
<location filename="../../core/App.cpp" line="1108"/>
<source>command_line_option_print_app_logs_only</source>
<extracomment>&quot;Print only logs from the application&quot;</extracomment>
<translation>Nur Anwendungs-Logs ausgeben</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1565"/>
<location filename="../../core/App.cpp" line="1564"/>
<source>hide_action</source>
<extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment>
<translation>Ausblenden</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1565"/>
<location filename="../../core/App.cpp" line="1564"/>
<source>show_action</source>
<translation>Zeigen</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1580"/>
<location filename="../../core/App.cpp" line="1579"/>
<source>quit_action</source>
<extracomment>&quot;Quitter&quot;</extracomment>
<translation>Beenden</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1598"/>
<location filename="../../core/App.cpp" line="1597"/>
<source>check_for_update</source>
<extracomment>Check for update</extracomment>
<translation>Auf Updates prüfen</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1721"/>
<location filename="../../core/App.cpp" line="1720"/>
<source>mark_all_read_action</source>
<translation>Alle als gelesen markieren</translation>
</message>
@ -5106,7 +5106,7 @@ Ablauf: %1</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="107"/>
<location filename="../../model/auth/OIDCModel.cpp" line="273"/>
<location filename="../../model/auth/OIDCModel.cpp" line="275"/>
<source>oidc_authentication_timeout_message</source>
<extracomment>Timeout: Not authenticated</extracomment>
<translation>Zeitüberschreitung: Nicht authentifiziert</translation>
@ -5172,42 +5172,42 @@ Ablauf: %1</translation>
<translation>Autorisierung über den Browser anfordern</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="222"/>
<location filename="../../model/auth/OIDCModel.cpp" line="224"/>
<source>oidc_authentication_no_token_found_error</source>
<translation>Kein Token gefunden</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="235"/>
<location filename="../../model/auth/OIDCModel.cpp" line="237"/>
<source>oidc_authentication_request_token_message</source>
<extracomment>Requesting access token</extracomment>
<translation>Zugriffstoken wird angefordert</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="240"/>
<location filename="../../model/auth/OIDCModel.cpp" line="242"/>
<source>oidc_authentication_refresh_token_message</source>
<extracomment>Refreshing access token</extracomment>
<translation>Zugriffstoken wird aktualisiert</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="245"/>
<location filename="../../model/auth/OIDCModel.cpp" line="247"/>
<source>oidc_authentication_request_authorization_message</source>
<extracomment>Requesting authorization</extracomment>
<translation>Autorisierung wird angefordert</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="250"/>
<location filename="../../model/auth/OIDCModel.cpp" line="252"/>
<source>oidc_authentication_request_temporary_credentials_message</source>
<extracomment>Requesting temporary credentials</extracomment>
<translation>Temporäre Anmeldedaten werden angefordert</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="300"/>
<location filename="../../model/auth/OIDCModel.cpp" line="302"/>
<source>oidc_authentication_no_auth_found_in_config_error</source>
<extracomment>No authorization endpoint found in OpenID configuration</extracomment>
<translation>Kein Autorisierungs-Endpunkt in der OpenID-Konfiguration gefunden</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="315"/>
<location filename="../../model/auth/OIDCModel.cpp" line="317"/>
<source>oidc_authentication_no_token_found_in_config_error</source>
<extracomment>No token endpoint found in OpenID configuration</extracomment>
<translation>Kein Token-Endpunkt in der OpenID-Konfiguration gefunden</translation>

View file

@ -663,14 +663,14 @@
<message>
<location filename="../../core/App.cpp" line="425"/>
<location filename="../../core/App.cpp" line="503"/>
<location filename="../../core/App.cpp" line="790"/>
<location filename="../../core/App.cpp" line="789"/>
<source>info_popup_error_title</source>
<extracomment>Error</extracomment>
<translation>Error</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="426"/>
<location filename="../../core/App.cpp" line="792"/>
<location filename="../../core/App.cpp" line="791"/>
<source>info_popup_configuration_failed_message</source>
<extracomment>Remote provisioning failed : %1</extracomment>
<translation>Remote provisioning failed : %1</translation>
@ -710,86 +710,86 @@
<translation>Up to date Your version is up to date</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="786"/>
<location filename="../../core/App.cpp" line="785"/>
<source>configuration_error_detail</source>
<extracomment>not reachable</extracomment>
<translation>not reachable</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1077"/>
<location filename="../../core/App.cpp" line="1076"/>
<source>application_description</source>
<extracomment>&quot;A free and open source SIP video-phone.&quot;</extracomment>
<translation>A free and open source SIP video-phone.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1079"/>
<location filename="../../core/App.cpp" line="1078"/>
<source>command_line_arg_order</source>
<extracomment>&quot;Send an order to the application towards a command line&quot;</extracomment>
<translation>Send an order to the application towards a command line</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1083"/>
<location filename="../../core/App.cpp" line="1082"/>
<source>command_line_option_show_help</source>
<translation>Show this help</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1088"/>
<location filename="../../core/App.cpp" line="1087"/>
<source>command_line_option_show_app_version</source>
<translation>Show app version</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1096"/>
<location filename="../../core/App.cpp" line="1095"/>
<source>command_line_option_config_to_fetch</source>
<extracomment>&quot;Specify the linphone configuration file to be fetched. It will be merged with the current configuration.&quot;</extracomment>
<translation>Specify the linphone configuration file to be fetched. It will be merged with the current configuration.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1098"/>
<location filename="../../core/App.cpp" line="1097"/>
<source>command_line_option_config_to_fetch_arg</source>
<extracomment>&quot;URL, path or file&quot;</extracomment>
<translation>URL, path or file</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1103"/>
<location filename="../../core/App.cpp" line="1102"/>
<source>command_line_option_minimized</source>
<translation>Minimize</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1106"/>
<location filename="../../core/App.cpp" line="1105"/>
<source>command_line_option_log_to_stdout</source>
<translation>Log to stdout some debug information while running</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1109"/>
<location filename="../../core/App.cpp" line="1108"/>
<source>command_line_option_print_app_logs_only</source>
<extracomment>&quot;Print only logs from the application&quot;</extracomment>
<translation>Print only logs from the application</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1565"/>
<location filename="../../core/App.cpp" line="1564"/>
<source>hide_action</source>
<extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment>
<translation>Hide</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1565"/>
<location filename="../../core/App.cpp" line="1564"/>
<source>show_action</source>
<translation>Show</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1580"/>
<location filename="../../core/App.cpp" line="1579"/>
<source>quit_action</source>
<extracomment>&quot;Quitter&quot;</extracomment>
<translation>Quit</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1598"/>
<location filename="../../core/App.cpp" line="1597"/>
<source>check_for_update</source>
<extracomment>Check for update</extracomment>
<translation>Check for update</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1721"/>
<location filename="../../core/App.cpp" line="1720"/>
<source>mark_all_read_action</source>
<translation>Marquer tout comme lu</translation>
</message>
@ -4995,7 +4995,7 @@ Expiration : %1</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="107"/>
<location filename="../../model/auth/OIDCModel.cpp" line="273"/>
<location filename="../../model/auth/OIDCModel.cpp" line="275"/>
<source>oidc_authentication_timeout_message</source>
<extracomment>Timeout: Not authenticated</extracomment>
<translation>Timeout: Not authenticated</translation>
@ -5061,42 +5061,42 @@ Expiration : %1</translation>
<translation>Requesting authorization from browser</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="222"/>
<location filename="../../model/auth/OIDCModel.cpp" line="224"/>
<source>oidc_authentication_no_token_found_error</source>
<translation>No token found</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="235"/>
<location filename="../../model/auth/OIDCModel.cpp" line="237"/>
<source>oidc_authentication_request_token_message</source>
<extracomment>Requesting access token</extracomment>
<translation>Requesting access token</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="240"/>
<location filename="../../model/auth/OIDCModel.cpp" line="242"/>
<source>oidc_authentication_refresh_token_message</source>
<extracomment>Refreshing access token</extracomment>
<translation>Refreshing access token</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="245"/>
<location filename="../../model/auth/OIDCModel.cpp" line="247"/>
<source>oidc_authentication_request_authorization_message</source>
<extracomment>Requesting authorization</extracomment>
<translation>Requesting authorization</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="250"/>
<location filename="../../model/auth/OIDCModel.cpp" line="252"/>
<source>oidc_authentication_request_temporary_credentials_message</source>
<extracomment>Requesting temporary credentials</extracomment>
<translation>Requesting temporary credentials</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="300"/>
<location filename="../../model/auth/OIDCModel.cpp" line="302"/>
<source>oidc_authentication_no_auth_found_in_config_error</source>
<extracomment>No authorization endpoint found in OpenID configuration</extracomment>
<translation>No authorization endpoint found in OpenID configuration</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="315"/>
<location filename="../../model/auth/OIDCModel.cpp" line="317"/>
<source>oidc_authentication_no_token_found_in_config_error</source>
<extracomment>No token endpoint found in OpenID configuration</extracomment>
<translation>No token endpoint found in OpenID configuration</translation>

View file

@ -658,14 +658,14 @@
<message>
<location filename="../../core/App.cpp" line="425"/>
<location filename="../../core/App.cpp" line="503"/>
<location filename="../../core/App.cpp" line="790"/>
<location filename="../../core/App.cpp" line="789"/>
<source>info_popup_error_title</source>
<extracomment>Error</extracomment>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="426"/>
<location filename="../../core/App.cpp" line="792"/>
<location filename="../../core/App.cpp" line="791"/>
<source>info_popup_configuration_failed_message</source>
<extracomment>Remote provisioning failed : %1</extracomment>
<translation>La configuration distante a échoué : %1</translation>
@ -705,86 +705,86 @@
<translation>Votre version est à jour</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="786"/>
<location filename="../../core/App.cpp" line="785"/>
<source>configuration_error_detail</source>
<extracomment>not reachable</extracomment>
<translation>indisponible</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1077"/>
<location filename="../../core/App.cpp" line="1076"/>
<source>application_description</source>
<extracomment>&quot;A free and open source SIP video-phone.&quot;</extracomment>
<translation>A free and open source SIP video-phone.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1079"/>
<location filename="../../core/App.cpp" line="1078"/>
<source>command_line_arg_order</source>
<extracomment>&quot;Send an order to the application towards a command line&quot;</extracomment>
<translation>Send an order to the application towards a command line</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1083"/>
<location filename="../../core/App.cpp" line="1082"/>
<source>command_line_option_show_help</source>
<translation>Show this help</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1088"/>
<location filename="../../core/App.cpp" line="1087"/>
<source>command_line_option_show_app_version</source>
<translation>Afficher la version de l&apos;application</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1096"/>
<location filename="../../core/App.cpp" line="1095"/>
<source>command_line_option_config_to_fetch</source>
<extracomment>&quot;Specify the linphone configuration file to be fetched. It will be merged with the current configuration.&quot;</extracomment>
<translation>Specify the linphone configuration file to be fetched. It will be merged with the current configuration.</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1098"/>
<location filename="../../core/App.cpp" line="1097"/>
<source>command_line_option_config_to_fetch_arg</source>
<extracomment>&quot;URL, path or file&quot;</extracomment>
<translation>URL, path or file</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1103"/>
<location filename="../../core/App.cpp" line="1102"/>
<source>command_line_option_minimized</source>
<translation>Minimiser</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1106"/>
<location filename="../../core/App.cpp" line="1105"/>
<source>command_line_option_log_to_stdout</source>
<translation>Log to stdout some debug information while running</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1109"/>
<location filename="../../core/App.cpp" line="1108"/>
<source>command_line_option_print_app_logs_only</source>
<extracomment>&quot;Print only logs from the application&quot;</extracomment>
<translation>Print only logs from the application</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1565"/>
<location filename="../../core/App.cpp" line="1564"/>
<source>hide_action</source>
<extracomment>&quot;Cacher&quot; &quot;Afficher&quot;</extracomment>
<translation>Cacher</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1565"/>
<location filename="../../core/App.cpp" line="1564"/>
<source>show_action</source>
<translation>Afficher</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1580"/>
<location filename="../../core/App.cpp" line="1579"/>
<source>quit_action</source>
<extracomment>&quot;Quitter&quot;</extracomment>
<translation>Quitter</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1598"/>
<location filename="../../core/App.cpp" line="1597"/>
<source>check_for_update</source>
<extracomment>Check for update</extracomment>
<translation>Rechercher une mise à jour</translation>
</message>
<message>
<location filename="../../core/App.cpp" line="1721"/>
<location filename="../../core/App.cpp" line="1720"/>
<source>mark_all_read_action</source>
<translation>Marquer tout comme lu</translation>
</message>
@ -4966,7 +4966,7 @@ Expiration : %1</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="107"/>
<location filename="../../model/auth/OIDCModel.cpp" line="273"/>
<location filename="../../model/auth/OIDCModel.cpp" line="275"/>
<source>oidc_authentication_timeout_message</source>
<extracomment>Timeout: Not authenticated</extracomment>
<translation>Timeout : non authentifié</translation>
@ -5032,42 +5032,42 @@ Expiration : %1</translation>
<translation>En attente d&apos;autorisation du navigateur</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="222"/>
<location filename="../../model/auth/OIDCModel.cpp" line="224"/>
<source>oidc_authentication_no_token_found_error</source>
<translation>Token non trouvé</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="235"/>
<location filename="../../model/auth/OIDCModel.cpp" line="237"/>
<source>oidc_authentication_request_token_message</source>
<extracomment>Requesting access token</extracomment>
<translation>En attente du token d&apos;accès</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="240"/>
<location filename="../../model/auth/OIDCModel.cpp" line="242"/>
<source>oidc_authentication_refresh_token_message</source>
<extracomment>Refreshing access token</extracomment>
<translation>Token en cours de rafraîchissement</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="245"/>
<location filename="../../model/auth/OIDCModel.cpp" line="247"/>
<source>oidc_authentication_request_authorization_message</source>
<extracomment>Requesting authorization</extracomment>
<translation>Autorisation en cours</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="250"/>
<location filename="../../model/auth/OIDCModel.cpp" line="252"/>
<source>oidc_authentication_request_temporary_credentials_message</source>
<extracomment>Requesting temporary credentials</extracomment>
<translation>En attente d&apos;identifiants temporaires</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="300"/>
<location filename="../../model/auth/OIDCModel.cpp" line="302"/>
<source>oidc_authentication_no_auth_found_in_config_error</source>
<extracomment>No authorization endpoint found in OpenID configuration</extracomment>
<translation>Pas d&apos;autorisation trouvé dans la configuration OpenID</translation>
</message>
<message>
<location filename="../../model/auth/OIDCModel.cpp" line="315"/>
<location filename="../../model/auth/OIDCModel.cpp" line="317"/>
<source>oidc_authentication_no_token_found_in_config_error</source>
<extracomment>No token endpoint found in OpenID configuration</extracomment>
<translation>Pas de token trouvé dans la configuration OpenID</translation>

View file

@ -192,6 +192,8 @@ OIDCModel::OIDCModel(const std::shared_ptr<linphone::AuthInfo> &authInfo, QObjec
emit timeoutTimerStarted();
QDesktopServices::openUrl(url);
});
mTimeout.start();
emit timeoutTimerStarted();
connect(&mOidc, &QOAuth2AuthorizationCodeFlow::finished, [this](QNetworkReply *reply) {
connect(reply, &QNetworkReply::errorOccurred,

View file

@ -417,6 +417,9 @@ void CoreModel::onAuthenticationRequested(const std::shared_ptr<linphone::Core>
emit timeoutTimerStarted();
qDebug() << "start refresh timer";
});
if (oidcModel->isTimerRunning()) {
emit timeoutTimerStarted();
}
connect(oidcModel, &OIDCModel::timeoutTimerStopped, this, [this] { emit timeoutTimerStopped(); });
connect(this, &CoreModel::forceOidcTimeout, oidcModel, [this, oidcModel] {
if (oidcModel->isTimerRunning()) {