changeset 103:e0121c8ef118

clarifications in AuthenticatedUser
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 19 Aug 2026 14:50:42 +0200
parents 663566c7bc0f
children e81b5ab529fa
files Sources/LTI/LTIRoutes.cpp Sources/Permissions/AuthenticatedUser.cpp Sources/Permissions/AuthenticatedUser.h
diffstat 3 files changed, 35 insertions(+), 45 deletions(-) [+]
line wrap: on
line diff
--- 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> project(ProjectPermissionContext::GetProjects().CloneDocument<Project>(projectId));
   assert(project.get() != NULL);
--- 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<std::string>(ltiProjectId_);
+    payload[FIELD_LTI_PROJECT_ID] = boost::lexical_cast<std::string>(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<std::string>(ltiProjectId_);
+    s += " in LTI project " + boost::lexical_cast<std::string>(projectIdFromLti_);
   }
 
   return s;
@@ -196,7 +196,7 @@
   }
 
   std::unique_ptr<AuthenticatedUser> user(new AuthenticatedUser(Role_Standard));
-  user->SetLtiProjectId(projectId);
+  user->SetProjectIdFromLti(projectId);
 
   std::set<std::string> roles;
   Orthanc::SerializationToolbox::ReadSetOfStrings(roles, payload, "https://purl.imsglobal.org/spec/lti/claim/roles");
--- 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<std::string>  projectsAsInstructor_;
   std::set<std::string>  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<std::string> 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<std::string> 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;