diff --git a/src/libs/subsonic/impl/SubsonicResource.cpp b/src/libs/subsonic/impl/SubsonicResource.cpp index 33910a8c..825d6986 100644 --- a/src/libs/subsonic/impl/SubsonicResource.cpp +++ b/src/libs/subsonic/impl/SubsonicResource.cpp @@ -135,6 +135,7 @@ namespace lms::api::subsonic { "/ping", { handlePingRequest } }, { "/getLicense", { handleGetLicenseRequest } }, { "/getOpenSubsonicExtensions", { handleGetOpenSubsonicExtensions, AuthenticationMode::Unauthenticated } }, + { "/tokenInfo", { handleTokenInfoRequest } }, // Browsing { "/getMusicFolders", { handleGetMusicFoldersRequest } }, diff --git a/src/libs/subsonic/impl/endpoints/System.cpp b/src/libs/subsonic/impl/endpoints/System.cpp index 987c60fa..5263dc17 100644 --- a/src/libs/subsonic/impl/endpoints/System.cpp +++ b/src/libs/subsonic/impl/endpoints/System.cpp @@ -19,6 +19,9 @@ #include +#include "database/Session.hpp" +#include "database/objects/User.hpp" + #include "endpoints/System.hpp" namespace lms::api::subsonic @@ -40,6 +43,17 @@ namespace lms::api::subsonic return response; } + Response handleTokenInfoRequest(RequestContext& context) + { + Response response{ Response::createOkResponse(context.getServerProtocolVersion()) }; + Response::Node& tokenInfoNode{ response.createNode("tokenInfo") }; + + auto transaction{ context.getDbSession().createReadTransaction() }; + tokenInfoNode.setAttribute("username", std::string{ context.getUser()->getLoginName() }); + + return response; + } + Response handleGetOpenSubsonicExtensions(RequestContext& context) { Response response{ Response::createOkResponse(context.getServerProtocolVersion()) }; diff --git a/src/libs/subsonic/impl/endpoints/System.hpp b/src/libs/subsonic/impl/endpoints/System.hpp index b5be1347..0eb98a0e 100644 --- a/src/libs/subsonic/impl/endpoints/System.hpp +++ b/src/libs/subsonic/impl/endpoints/System.hpp @@ -27,4 +27,5 @@ namespace lms::api::subsonic Response handlePingRequest(RequestContext& context); Response handleGetLicenseRequest(RequestContext& context); Response handleGetOpenSubsonicExtensions(RequestContext& context); + Response handleTokenInfoRequest(RequestContext& context); } // namespace lms::api::subsonic