diff options
Diffstat (limited to 'app/middleware/token_parser.go')
| -rw-r--r-- | app/middleware/token_parser.go | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/app/middleware/token_parser.go b/app/middleware/token_parser.go new file mode 100644 index 0000000..a719b2f --- /dev/null +++ b/app/middleware/token_parser.go @@ -0,0 +1,26 @@ +package middleware + +import ( + "net/http" + + "github.com/xlgmokha/x/pkg/log" + "gitlab.com/gitlab-org/software-supply-chain-security/authorization/sparkled/pkg/oidc" +) + +type TokenParser func(*http.Request) oidc.RawToken + +func IDTokenFromSessionCookie(r *http.Request) oidc.RawToken { + cookies := r.CookiesNamed("session") + + if len(cookies) != 1 { + return "" + } + + tokens, err := oidc.TokensFromBase64String(cookies[0].Value) + if err != nil { + log.WithFields(r.Context(), log.Fields{"error": err}) + return "" + } + + return tokens.IDToken +} |
