patient see their multiple studies
This commit is contained in:
@@ -39,7 +39,7 @@ func (s *AuthService) Login(email, password string) (*models.LoginResponse, erro
|
||||
}
|
||||
|
||||
// Create token claims based on user role
|
||||
additionalClaims := make(map[string]string)
|
||||
additionalClaims := make(map[string]interface{})
|
||||
var redirectURL string
|
||||
|
||||
switch user.Role {
|
||||
@@ -53,12 +53,29 @@ func (s *AuthService) Login(email, password string) (*models.LoginResponse, erro
|
||||
// Set patient-specific claims
|
||||
additionalClaims["patient_id"] = patientData.PatientID
|
||||
additionalClaims["patient_name"] = patientData.PatientName
|
||||
additionalClaims["accession_number"] = patientData.AccessionNumber
|
||||
additionalClaims["study_iuid"] = patientData.StudyIUID
|
||||
additionalClaims["home_url"] = fmt.Sprintf("viewer?StudyInstanceUIDs=%s", patientData.StudyIUID)
|
||||
additionalClaims["study_list"] = "disabled"
|
||||
|
||||
redirectURL = fmt.Sprintf("/viewer?StudyInstanceUIDs=%s", patientData.StudyIUID)
|
||||
// Handle multiple studies if available
|
||||
if len(patientData.StudyIUIDs) > 0 {
|
||||
// Store all studies in the token for DICOMWeb access
|
||||
additionalClaims["study_iuids"] = patientData.StudyIUIDs
|
||||
additionalClaims["accession_numbers"] = patientData.AccessionNumbers
|
||||
|
||||
// Set the first study as default for display and backward compatibility
|
||||
additionalClaims["study_iuid"] = patientData.StudyIUIDs[0]
|
||||
additionalClaims["accession_number"] = patientData.AccessionNumbers[0]
|
||||
|
||||
// Only use the first study in the redirect URL
|
||||
additionalClaims["home_url"] = fmt.Sprintf("viewer?StudyInstanceUIDs=%s", patientData.StudyIUIDs[0])
|
||||
redirectURL = fmt.Sprintf("/viewer?StudyInstanceUIDs=%s", patientData.StudyIUIDs[0])
|
||||
} else {
|
||||
// Fall back to single study for backward compatibility
|
||||
additionalClaims["study_iuid"] = patientData.StudyIUID
|
||||
additionalClaims["accession_number"] = patientData.AccessionNumber
|
||||
additionalClaims["home_url"] = fmt.Sprintf("viewer?StudyInstanceUIDs=%s", patientData.StudyIUID)
|
||||
redirectURL = fmt.Sprintf("/viewer?StudyInstanceUIDs=%s", patientData.StudyIUID)
|
||||
}
|
||||
|
||||
additionalClaims["study_list"] = "disabled"
|
||||
|
||||
case "ref_doctor":
|
||||
// Set referring doctor claims
|
||||
@@ -112,7 +129,9 @@ func (s *AuthService) RefreshToken(refreshToken string) (string, error) {
|
||||
}
|
||||
|
||||
// Build additionalClaims from the refresh token
|
||||
additionalClaims := make(map[string]string)
|
||||
additionalClaims := make(map[string]interface{})
|
||||
|
||||
// Add string claims
|
||||
if claims.PatientID != "" {
|
||||
additionalClaims["patient_id"] = claims.PatientID
|
||||
}
|
||||
@@ -135,6 +154,14 @@ func (s *AuthService) RefreshToken(refreshToken string) (string, error) {
|
||||
additionalClaims["filter_url"] = claims.FilterURL
|
||||
}
|
||||
|
||||
// Add array claims
|
||||
if len(claims.StudyIUIDs) > 0 {
|
||||
additionalClaims["study_iuids"] = claims.StudyIUIDs
|
||||
}
|
||||
if len(claims.AccessionNumbers) > 0 {
|
||||
additionalClaims["accession_numbers"] = claims.AccessionNumbers
|
||||
}
|
||||
|
||||
// Generate a new access token with the same claims
|
||||
accessToken, err := s.jwtManager.GenerateAccessToken(claims.UserID, claims.Email, claims.Role, claims.UserName, additionalClaims)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user