From 88580a89030ba3c85bb49f38f2d6dbff176d8ec1 Mon Sep 17 00:00:00 2001 From: emeric Date: Sat, 9 Mar 2024 20:23:58 +0100 Subject: [PATCH] Fixed race --- src/libs/services/auth/impl/AuthServiceBase.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/libs/services/auth/impl/AuthServiceBase.cpp b/src/libs/services/auth/impl/AuthServiceBase.cpp index 704a80ff..7119d4ac 100644 --- a/src/libs/services/auth/impl/AuthServiceBase.cpp +++ b/src/libs/services/auth/impl/AuthServiceBase.cpp @@ -38,7 +38,7 @@ namespace Auth Session& session{ getDbSession() }; User::pointer user; - + { auto transaction{ session.createReadTransaction() }; user = User::find(session, loginName); @@ -48,12 +48,16 @@ namespace Auth { auto transaction{ session.createWriteTransaction() }; - const UserType type{ User::getCount(session) == 0 ? UserType::ADMIN : UserType::REGULAR }; + user = User::find(session, loginName); + if (!user) + { + const UserType type{ User::getCount(session) == 0 ? UserType::ADMIN : UserType::REGULAR }; - LMS_LOG(AUTH, DEBUG, "Creating user '" << loginName << "', admin = " << (type == UserType::ADMIN)); + LMS_LOG(AUTH, DEBUG, "Creating user '" << loginName << "', admin = " << (type == UserType::ADMIN)); - user = session.create(loginName); - user.modify()->setType(type); + user = session.create(loginName); + user.modify()->setType(type); + } } return user->getId();