# HG changeset patch # User Alain Mazy # Date 1787216041 -7200 # Node ID 4d9e8a4773ca733454a1ae17694de58438ea7405 # Parent 47e6b454ef43a296ee3cdd5b92ef8dac661e00a5 Added support for inbox-links diff -r 47e6b454ef43 -r 4d9e8a4773ca NEWS --- a/NEWS Mon Aug 10 10:18:23 2026 +0200 +++ b/NEWS Thu Aug 20 10:54:01 2026 +0200 @@ -1,3 +1,9 @@ +Pending changes +=============== + +* Added support for inbox-links (new permission: create-inbox-links) + + 2026-07-23 - v 0.11.4 ===================== diff -r 47e6b454ef43 -r 4d9e8a4773ca Plugin/AuthorizationWebService.cpp --- a/Plugin/AuthorizationWebService.cpp Mon Aug 10 10:18:23 2026 +0200 +++ b/Plugin/AuthorizationWebService.cpp Thu Aug 20 10:54:01 2026 +0200 @@ -261,7 +261,8 @@ bool AuthorizationWebService::CreateToken(IAuthorizationService::CreatedToken& response, const std::string& tokenType, - const std::string& id, + const std::string& id, + const std::string& username, const std::vector& resources, const std::string& expirationDateString, const uint64_t& validityDuration) @@ -279,6 +280,11 @@ body["id"] = id; } + if (!username.empty()) + { + body["username"] = username; + } + AddServerId(body, serverId_); body["resources"] = Json::arrayValue; diff -r 47e6b454ef43 -r 4d9e8a4773ca Plugin/AuthorizationWebService.h --- a/Plugin/AuthorizationWebService.h Mon Aug 10 10:18:23 2026 +0200 +++ b/Plugin/AuthorizationWebService.h Thu Aug 20 10:54:01 2026 +0200 @@ -93,7 +93,8 @@ virtual bool CreateToken(IAuthorizationService::CreatedToken& response, const std::string& tokenType, - const std::string& id, + const std::string& id, + const std::string& username, const std::vector& resources, const std::string& expirationDateString, const uint64_t& validityDuration) ORTHANC_OVERRIDE; diff -r 47e6b454ef43 -r 4d9e8a4773ca Plugin/CachedAuthorizationService.h --- a/Plugin/CachedAuthorizationService.h Mon Aug 10 10:18:23 2026 +0200 +++ b/Plugin/CachedAuthorizationService.h Thu Aug 20 10:54:01 2026 +0200 @@ -88,7 +88,8 @@ virtual bool CreateToken(IAuthorizationService::CreatedToken& response, const std::string& tokenType, - const std::string& id, + const std::string& id, + const std::string& username, const std::vector& resources, const std::string& expirationDateString, const uint64_t& validityDuration) ORTHANC_OVERRIDE @@ -96,6 +97,7 @@ return decorated_->CreateToken(response, tokenType, id, + username, resources, expirationDateString, validityDuration); diff -r 47e6b454ef43 -r 4d9e8a4773ca Plugin/DefaultConfiguration.json --- a/Plugin/DefaultConfiguration.json Mon Aug 10 10:18:23 2026 +0200 +++ b/Plugin/DefaultConfiguration.json Thu Aug 20 10:54:01 2026 +0200 @@ -86,8 +86,9 @@ // share a link to open a study ["put", "^/auth/tokens/(stone-viewer-publication|meddream-viewer-publication|osimis-viewer-publication|ohif-viewer-publication|volview-viewer-publication)$", "all|share"], - ["get", "^/ui/api/emails/templates/(.*)$", "all|share"], - ["post", "^/ui/api/emails/send$", "all|share"], + ["put", "^/auth/tokens/inbox-link$", "all|create-inbox-links"], + ["get", "^/ui/api/emails/templates/(.*)$", "all|share|create-inbox-links"], + ["post", "^/ui/api/emails/send$", "all|share|create-inbox-links"], // uploads ["post", "^/instances$", "all|upload"], diff -r 47e6b454ef43 -r 4d9e8a4773ca Plugin/IAuthorizationService.h --- a/Plugin/IAuthorizationService.h Mon Aug 10 10:18:23 2026 +0200 +++ b/Plugin/IAuthorizationService.h Thu Aug 20 10:54:01 2026 +0200 @@ -40,6 +40,7 @@ std::string orthancId; std::string url; std::string level; + std::string username; }; struct CreatedToken @@ -103,7 +104,8 @@ virtual bool CreateToken(CreatedToken& response, const std::string& tokenType, - const std::string& id, + const std::string& id, + const std::string& username, const std::vector& resources, const std::string& expirationDateString, const uint64_t& validityDuration) = 0; diff -r 47e6b454ef43 -r 4d9e8a4773ca Plugin/Plugin.cpp --- a/Plugin/Plugin.cpp Mon Aug 10 10:18:23 2026 +0200 +++ b/Plugin/Plugin.cpp Thu Aug 20 10:54:01 2026 +0200 @@ -2043,7 +2043,7 @@ throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat, "A JSON payload was expected"); } - std::string id; + std::string id, username; std::vector resources; std::string expirationDateString; uint64_t validityDuration; @@ -2053,6 +2053,11 @@ id = body["ID"].asString(); } + if (body.isMember("Username")) + { + username = body["Username"].asString(); + } + for (Json::ArrayIndex i = 0; i < body["Resources"].size(); ++i) { const Json::Value& jsonResource = body["Resources"][i]; @@ -2091,6 +2096,7 @@ if (authorizationService_->CreateToken(createdToken, tokenType, id, + username, resources, expirationDateString, validityDuration))