summaryrefslogtreecommitdiff
path: root/app/controllers/sessions/controller.go
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-04-15 14:47:07 -0600
committermo khan <mo@mokhan.ca>2025-04-15 14:47:07 -0600
commit58276879a5505f8e37aa8f81d577b477b5497a53 (patch)
treebbd06b8fe1e89c6dc3bc7d93b0d1a5ff4354f427 /app/controllers/sessions/controller.go
parentb24e274e9931093ee65304e32ca1f309d2f01234 (diff)
feat: store tokens in sessio cookie
Diffstat (limited to 'app/controllers/sessions/controller.go')
-rw-r--r--app/controllers/sessions/controller.go20
1 files changed, 8 insertions, 12 deletions
diff --git a/app/controllers/sessions/controller.go b/app/controllers/sessions/controller.go
index 70d5631..d526a86 100644
--- a/app/controllers/sessions/controller.go
+++ b/app/controllers/sessions/controller.go
@@ -1,8 +1,6 @@
package sessions
import (
- "encoding/base64"
- "encoding/json"
"net/http"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/oidc"
@@ -31,23 +29,21 @@ func (c *Controller) New(w http.ResponseWriter, r *http.Request) {
func (c *Controller) Create(w http.ResponseWriter, r *http.Request) {
token, err := c.cfg.Config.Exchange(r.Context(), r.URL.Query().Get("code"))
if err != nil {
+ w.WriteHeader(http.StatusBadRequest)
return
}
- tokens := map[string]interface{}{
- "access_token": token.AccessToken,
- "token_type": token.TokenType,
- "refresh_token": token.RefreshToken,
- "expiry": token.Expiry,
- "expires_in": token.ExpiresIn,
+ tokens := &oidc.Tokens{Token: token}
+ if rawIDToken, ok := token.Extra("id_token").(string); ok {
+ tokens.IDToken = rawIDToken
}
- if rawIDToken, ok := token.Extra("id_token").(string); ok {
- tokens["id_token"] = rawIDToken
+ encoded, err := tokens.ToBase64String()
+ if err != nil {
+ w.WriteHeader(http.StatusBadRequest)
+ return
}
- data, err := json.Marshal(tokens)
- encoded := base64.URLEncoding.EncodeToString(data)
http.SetCookie(w, &http.Cookie{Name: "session", Value: encoded})
http.Redirect(w, r, "/dashboard", http.StatusFound)
}