# HG changeset patch # User Sebastien Jodogne # Date 1787143842 -7200 # Node ID e0121c8ef118e8ffce38f2f68493c5fa2d538422 # Parent 663566c7bc0f45b689986d045ebcdaf208743615 clarifications in AuthenticatedUser diff -r 663566c7bc0f -r e0121c8ef118 Sources/LTI/LTIRoutes.cpp --- a/Sources/LTI/LTIRoutes.cpp Wed Aug 19 14:39:45 2026 +0200 +++ b/Sources/LTI/LTIRoutes.cpp Wed Aug 19 14:50:42 2026 +0200 @@ -360,10 +360,10 @@ else if (type == "project") { if (user.GetRole() == Role_Administrator || - user.IsInstructorOfProject(user.GetLtiProjectId())) + user.IsInstructorOfProject(user.GetProjectIdFromLti())) { link["title"] = "DICOM resources available in this course"; - linkUrl = "../app/list-projects.html?open-project-id=" + user.GetLtiProjectId(); + linkUrl = "../app/list-projects.html?open-project-id=" + user.GetProjectIdFromLti(); } else { @@ -454,7 +454,7 @@ throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError); } - const std::string& projectId = user.GetLtiProjectId(); + const std::string& projectId = user.GetProjectIdFromLti(); std::unique_ptr project(ProjectPermissionContext::GetProjects().CloneDocument(projectId)); assert(project.get() != NULL); diff -r 663566c7bc0f -r e0121c8ef118 Sources/Permissions/AuthenticatedUser.cpp --- a/Sources/Permissions/AuthenticatedUser.cpp Wed Aug 19 14:39:45 2026 +0200 +++ b/Sources/Permissions/AuthenticatedUser.cpp Wed Aug 19 14:50:42 2026 +0200 @@ -60,9 +60,9 @@ Orthanc::SerializationToolbox::WriteSetOfStrings(payload, projectsAsInstructor_, FIELD_INSTRUCTOR); Orthanc::SerializationToolbox::WriteSetOfStrings(payload, projectsAsLearner_, FIELD_LEARNER); - if (hasLtiProjectId_) + if (hasProjectIdFromLti_) { - payload[FIELD_LTI_PROJECT_ID] = boost::lexical_cast(ltiProjectId_); + payload[FIELD_LTI_PROJECT_ID] = boost::lexical_cast(projectIdFromLti_); } } @@ -83,7 +83,7 @@ if (payload.isMember(FIELD_LTI_PROJECT_ID)) { - user->SetLtiProjectId(Orthanc::SerializationToolbox::ReadString(payload, FIELD_LTI_PROJECT_ID)); + user->SetProjectIdFromLti(Orthanc::SerializationToolbox::ReadString(payload, FIELD_LTI_PROJECT_ID)); } return user.release(); @@ -93,7 +93,7 @@ AuthenticatedUser::AuthenticatedUser(Role role) : role_(role), hasUserId_(false), - hasLtiProjectId_(false) + hasProjectIdFromLti_(false) { } @@ -117,7 +117,7 @@ } } -void AuthenticatedUser::SetLtiProjectId(const std::string& projectId) +void AuthenticatedUser::SetProjectIdFromLti(const std::string& projectId) { if (projectId.empty()) { @@ -125,17 +125,17 @@ } else { - hasLtiProjectId_ = true; - ltiProjectId_ = projectId; + hasProjectIdFromLti_ = true; + projectIdFromLti_ = projectId; } } -const std::string& AuthenticatedUser::GetLtiProjectId() const +const std::string& AuthenticatedUser::GetProjectIdFromLti() const { - if (hasLtiProjectId_) + if (hasProjectIdFromLti_) { - return ltiProjectId_; + return projectIdFromLti_; } else { @@ -148,9 +148,9 @@ { std::string s = std::string(hasUserId_ ? userId_ : "?") + " with role " + EnumerationToString(role_); - if (hasLtiProjectId_) + if (hasProjectIdFromLti_) { - s += " in LTI project " + boost::lexical_cast(ltiProjectId_); + s += " in LTI project " + boost::lexical_cast(projectIdFromLti_); } return s; @@ -196,7 +196,7 @@ } std::unique_ptr user(new AuthenticatedUser(Role_Standard)); - user->SetLtiProjectId(projectId); + user->SetProjectIdFromLti(projectId); std::set roles; Orthanc::SerializationToolbox::ReadSetOfStrings(roles, payload, "https://purl.imsglobal.org/spec/lti/claim/roles"); diff -r 663566c7bc0f -r e0121c8ef118 Sources/Permissions/AuthenticatedUser.h --- a/Sources/Permissions/AuthenticatedUser.h Wed Aug 19 14:39:45 2026 +0200 +++ b/Sources/Permissions/AuthenticatedUser.h Wed Aug 19 14:50:42 2026 +0200 @@ -41,11 +41,25 @@ std::string userId_; std::set projectsAsInstructor_; std::set projectsAsLearner_; - bool hasLtiProjectId_; - std::string ltiProjectId_; + bool hasProjectIdFromLti_; + std::string projectIdFromLti_; explicit AuthenticatedUser(Role role); + void SetUserId(const std::string& id); + + void SetProjectIdFromLti(const std::string& projectId); + + void AddInstructorOfProject(const std::string& projectId) + { + projectsAsInstructor_.insert(projectId); + } + + void AddLearnerOfProject(const std::string& projectId) + { + projectsAsLearner_.insert(projectId); + } + static AuthenticatedUser* Unserialize(const Json::Value& payload); public: @@ -56,8 +70,6 @@ return role_; } - void SetUserId(const std::string& id); - bool HasUserId() const { return hasUserId_; @@ -65,44 +77,22 @@ const std::string& GetUserId() const; - void AddInstructorOfProject(const std::string& projectId) - { - projectsAsInstructor_.insert(projectId); - } - bool IsInstructorOfProject(const std::string& projectId) const { return projectsAsInstructor_.find(projectId) != projectsAsInstructor_.end(); } - const std::set GetProjectsAsInstructor() const - { - return projectsAsInstructor_; - } - - void AddLearnerOfProject(const std::string& projectId) - { - projectsAsLearner_.insert(projectId); - } - bool IsLearnerOfProject(const std::string& projectId) const { return projectsAsLearner_.find(projectId) != projectsAsLearner_.end(); } - const std::set GetProjectsAsLearner() const + bool HasProjectIdFromLti() const { - return projectsAsLearner_; + return hasProjectIdFromLti_; } - void SetLtiProjectId(const std::string& projectId); - - bool HasLtiProjectId() const - { - return hasLtiProjectId_; - } - - const std::string& GetLtiProjectId() const; + const std::string& GetProjectIdFromLti() const; std::string Format() const;