better error messages when dynamic client registration fails.
This commit is contained in:
parent
11386dbf00
commit
bba1dde606
|
@ -199,7 +199,7 @@ func (s *SourceCredential) RegisterDynamicClient() error {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
log.Printf("Error Response body: %s", string(b))
|
log.Printf("Error Response body: %s", string(b))
|
||||||
}
|
}
|
||||||
return fmt.Errorf("an error occurred while reading dynamic client registration response, status code was not 200: %d", registrationResponse.StatusCode)
|
return fmt.Errorf("this institution may not support dynamic client registration, meaning that we cannot automatically fetch your records. Please contact support@fastenhealth.com and we'll modify this provider to use our Legacy integration: %d", registrationResponse.StatusCode)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,22 +32,25 @@ func CreateReconnectSource(c *gin.Context) {
|
||||||
logger.Warnf("This client requires a dynamic client registration, starting registration process")
|
logger.Warnf("This client requires a dynamic client registration, starting registration process")
|
||||||
|
|
||||||
if len(sourceCred.RegistrationEndpoint) == 0 {
|
if len(sourceCred.RegistrationEndpoint) == 0 {
|
||||||
logger.Errorln("Empty registration endpoint, cannot be used with dynamic-client registration mode:", sourceCred.DynamicClientRegistrationMode)
|
err := fmt.Errorf("this client requires dynamic registration, but does not provide a registration endpoint: %s", sourceCred.DynamicClientRegistrationMode)
|
||||||
c.JSON(http.StatusBadRequest, gin.H{"success": false})
|
logger.Errorln(err)
|
||||||
|
c.JSON(http.StatusBadRequest, gin.H{"success": false, "error": err.Error()})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err := sourceCred.RegisterDynamicClient()
|
err := sourceCred.RegisterDynamicClient()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Errorln("An error occurred while registering dynamic client", err)
|
err = fmt.Errorf("an error occurred while registering dynamic client: %w", err)
|
||||||
c.JSON(http.StatusBadRequest, gin.H{"success": false})
|
logger.Errorln(err)
|
||||||
|
c.JSON(http.StatusBadRequest, gin.H{"success": false, "error": err.Error()})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
//generate a JWT token and then use it to get an access token for the dynamic client
|
//generate a JWT token and then use it to get an access token for the dynamic client
|
||||||
err = sourceCred.RefreshDynamicClientAccessToken()
|
err = sourceCred.RefreshDynamicClientAccessToken()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Errorln("An error occurred while retrieving access token for dynamic client", err)
|
err = fmt.Errorf("an error occurred while retrieving access token for dynamic client: %w", err)
|
||||||
c.JSON(http.StatusBadRequest, gin.H{"success": false})
|
logger.Errorln(err)
|
||||||
|
c.JSON(http.StatusBadRequest, gin.H{"success": false, "error": err.Error()})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -56,16 +59,18 @@ func CreateReconnectSource(c *gin.Context) {
|
||||||
//reconnect
|
//reconnect
|
||||||
err := databaseRepo.UpdateSource(c, &sourceCred)
|
err := databaseRepo.UpdateSource(c, &sourceCred)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Errorln("An error occurred while reconnecting source credential", err)
|
err = fmt.Errorf("an error occurred while reconnecting source credential: %w", err)
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{"success": false})
|
logger.Errorln(err)
|
||||||
|
c.JSON(http.StatusInternalServerError, gin.H{"success": false, "error": err.Error()})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//create source for the first time
|
//create source for the first time
|
||||||
err := databaseRepo.CreateSource(c, &sourceCred)
|
err := databaseRepo.CreateSource(c, &sourceCred)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Errorln("An error occurred while storing source credential", err)
|
err = fmt.Errorf("an error occurred while storing source credential: %w", err)
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{"success": false})
|
logger.Errorln(err)
|
||||||
|
c.JSON(http.StatusInternalServerError, gin.H{"success": false, "error": err.Error()})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -212,7 +212,7 @@ export class MedicalSourcesConnectedComponent implements OnInit {
|
||||||
|
|
||||||
const toastNotification = new ToastNotification()
|
const toastNotification = new ToastNotification()
|
||||||
toastNotification.type = ToastType.Error
|
toastNotification.type = ToastType.Error
|
||||||
toastNotification.message = `An error occurred while accessing ${sourceType}: '${JSON.stringify(err)}'`
|
toastNotification.message = `An error occurred while accessing ${sourceType}: '${this.extractErrorFromResponse(err)}'`
|
||||||
toastNotification.autohide = false
|
toastNotification.autohide = false
|
||||||
toastNotification.link = {
|
toastNotification.link = {
|
||||||
text: "View Details",
|
text: "View Details",
|
||||||
|
@ -235,6 +235,15 @@ export class MedicalSourcesConnectedComponent implements OnInit {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extractErrorFromResponse(errResp: any): string {
|
||||||
|
let errMsg = ""
|
||||||
|
if(errResp.name == "HttpErrorResponse" && errResp.error && errResp.error?.error){
|
||||||
|
errMsg = errResp.error.error
|
||||||
|
} else {
|
||||||
|
errMsg = JSON.stringify(errResp)
|
||||||
|
}
|
||||||
|
return errMsg
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue