summaryrefslogtreecommitdiff
path: root/app/controllers/sessions/controller.go
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-04-15 13:53:16 -0600
committermo khan <mo@mokhan.ca>2025-04-15 13:53:16 -0600
commitb24e274e9931093ee65304e32ca1f309d2f01234 (patch)
tree62b1440eabaf8cc80d398ff12b5f3c2c99af623b /app/controllers/sessions/controller.go
parentb68a70822804e03c5897a7c43a519a81dbf47fc3 (diff)
feat: store tokens in a session cookie
Diffstat (limited to 'app/controllers/sessions/controller.go')
-rw-r--r--app/controllers/sessions/controller.go32
1 files changed, 15 insertions, 17 deletions
diff --git a/app/controllers/sessions/controller.go b/app/controllers/sessions/controller.go
index a4ba092..70d5631 100644
--- a/app/controllers/sessions/controller.go
+++ b/app/controllers/sessions/controller.go
@@ -1,10 +1,10 @@
package sessions
import (
- "fmt"
+ "encoding/base64"
+ "encoding/json"
"net/http"
- "github.com/xlgmokha/x/pkg/serde"
"gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/oidc"
"golang.org/x/oauth2"
)
@@ -31,25 +31,23 @@ 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 {
- fmt.Printf("%v\n", err)
+ return
}
- err = serde.ToJSON(w, token)
- if err != nil {
- fmt.Printf("%v\n", err)
- return
+ tokens := map[string]interface{}{
+ "access_token": token.AccessToken,
+ "token_type": token.TokenType,
+ "refresh_token": token.RefreshToken,
+ "expiry": token.Expiry,
+ "expires_in": token.ExpiresIn,
}
if rawIDToken, ok := token.Extra("id_token").(string); ok {
- idToken, err := oidc.NewIDToken(rawIDToken)
- if err != nil {
- fmt.Printf("%v\n", err)
- return
- }
- err = serde.ToJSON(w, idToken)
- if err != nil {
- fmt.Printf("%v\n", err)
- return
- }
+ tokens["id_token"] = rawIDToken
}
+
+ 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)
}