diff options
Diffstat (limited to 'app/controllers/sessions/controller.go')
| -rw-r--r-- | app/controllers/sessions/controller.go | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/app/controllers/sessions/controller.go b/app/controllers/sessions/controller.go index e8409a3..bf7d813 100644 --- a/app/controllers/sessions/controller.go +++ b/app/controllers/sessions/controller.go @@ -24,6 +24,7 @@ func New(cfg *oidc.OpenID, http *http.Client) *Controller { func (c *Controller) MountTo(mux *http.ServeMux) { mux.HandleFunc("GET /session/new", c.New) + mux.HandleFunc("GET /session", c.Show) mux.HandleFunc("GET /session/callback", c.Create) mux.HandleFunc("POST /session/destroy", c.Destroy) } @@ -39,6 +40,25 @@ func (c *Controller) New(w http.ResponseWriter, r *http.Request) { c.redirectTo(w, r, url) } +func (c *Controller) Show(w http.ResponseWriter, r *http.Request) { + cookie, err := r.Cookie(cfg.IDTokenCookie) + if err != nil { + pls.LogError(r.Context(), err) + w.WriteHeader(http.StatusNotFound) + return + } + + token, err := c.svc.JWTBody(r.Context(), oidc.RawToken(cookie.Value)) + if err != nil { + pls.LogError(r.Context(), err) + w.WriteHeader(http.StatusNotFound) + return + } + + w.WriteHeader(http.StatusOK) + w.Write(token) +} + /* This is the callback endpoint from the OIDC Provider: |
