aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Stenger <christian.stenger@qt.io>2025-09-11 12:36:34 +0200
committerChristian Stenger <christian.stenger@qt.io>2025-09-12 10:45:32 +0000
commitcc5c1ce1da08d7c99809f6578548a5e94565ac01 (patch)
tree5aa221f3cead224741d64ffedd619b7dbdc4c888
parentb2a235491d0788ac074d33cb33d50e9c13750308 (diff)
Axivion: Fix authorization issue17.0
If special case is detected, create fake Dto::ApiTokenInfoDto with corrected apiToken. Change-Id: Ibead06a56d5880bb56be04204f4bfc1b72a8b5ca Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r--src/plugins/axivion/axivionplugin.cpp36
1 files changed, 32 insertions, 4 deletions
diff --git a/src/plugins/axivion/axivionplugin.cpp b/src/plugins/axivion/axivionplugin.cpp
index 74e1e6624ae..162de558ad0 100644
--- a/src/plugins/axivion/axivionplugin.cpp
+++ b/src/plugins/axivion/axivionplugin.cpp
@@ -178,6 +178,7 @@ struct PostDtoStorage
{
QUrl url;
std::optional<QByteArray> credential;
+ QString password;
QByteArray csrfToken;
QByteArray writeData;
std::optional<DtoType> dtoData;
@@ -653,6 +654,35 @@ static Group dtoRecipe(const Storage<DtoStorageType<DtoType>> &dtoStorage)
showFilterException(error->message);
return DoneResult::Error;
}
+
+ if constexpr (std::is_same_v<DtoStorageType<DtoType>, PostDtoStorage<DtoType>>
+ && std::is_same_v<DtoType, Dto::ApiTokenInfoDto>) {
+ if (statusCode == 400 && error->type == "PasswordVerificationException" && error->data) {
+ const auto it = error->data->find("passwordMayBeUsedAsApiToken");
+ if (it != error->data->end()) {
+ const Dto::Any data = it->second;
+ if (data.isBool() && data.getBool()) {
+ Dto::ApiTokenInfoDto fakeDto{
+ QString(),
+ QString(),
+ true,
+ QString(),
+ QString(),
+ dtoStorage->password,
+ QString(),
+ QString(),
+ QString(),
+ QString(),
+ std::optional<QString>(),
+ QString(),
+ false
+ };
+ dtoStorage->dtoData = fakeDto;
+ return DoneResult::Success;
+ }
+ }
+ }
+ }
errorString = Error(DashboardError(reply->url(), statusCode,
reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString(),
*error)).message();
@@ -851,6 +881,7 @@ static Group authorizationRecipe(DashboardMode dashboardMode)
const Dto::ApiTokenCreationRequestDto requestDto{*passwordStorage, "IdePlugin",
apiTokenDescription(), 0};
apiTokenStorage->writeData = requestDto.serialize();
+ apiTokenStorage->password = *passwordStorage;
return SetupResult::Continue;
};
@@ -915,10 +946,7 @@ static Group authorizationRecipe(DashboardMode dashboardMode)
passwordStorage,
dashboardStorage,
onGroupSetup(onPasswordGroupSetup),
- Group { // GET DashboardInfoDto
- finishAllAndSuccess,
- dtoRecipe(dashboardStorage)
- },
+ dtoRecipe(dashboardStorage) || successItem, // GET DashboardInfoDto
Group { // POST ApiTokenCreationRequestDto, GET ApiTokenInfoDto.
apiTokenStorage,
onGroupSetup(onApiTokenGroupSetup),