// Initial file was taken from https://github.com/dexidp/dex/tree/master/cmd/example-app 2019 // // Copyright (c) 2020 Wind River Systems, Inc. // // SPDX-License-Identifier: Apache-2.0 // package main import ( "html/template" "log" "net/http" ) type tokenTmplData struct { IDToken string AccessToken string RefreshToken string RedirectURL string Claims string } var tokenTmpl = template.Must(template.New("token.html").Parse(`
ID Token:
{{ .IDToken }}
Access Token:
{{ .AccessToken }}
Claims:
{{ .Claims }}
{{ if .RefreshToken }}
Refresh Token:
{{ .RefreshToken }}
{{ end }}
`))
func renderToken(w http.ResponseWriter, redirectURL, idToken, accessToken, refreshToken, claims string) {
renderTemplate(w, tokenTmpl, tokenTmplData{
IDToken: idToken,
AccessToken: accessToken,
RefreshToken: refreshToken,
RedirectURL: redirectURL,
Claims: claims,
})
}
func renderTemplate(w http.ResponseWriter, tmpl *template.Template, data interface{}) {
err := tmpl.Execute(w, data)
if err == nil {
return
}
switch err := err.(type) {
case *template.Error:
// An ExecError guarantees that Execute has not written to the underlying reader.
log.Printf("Error rendering template %s: %s", tmpl.Name(), err)
// TODO(ericchiang): replace with better internal server error.
http.Error(w, "Internal server error", http.StatusInternalServerError)
default:
// An error with the underlying write, such as the connection being
// dropped. Ignore for now.
}
}