mirror of
https://github.com/gitpod-io/gitpod.git
synced 2025-12-08 17:36:30 +00:00
55 lines
978 B
Go
55 lines
978 B
Go
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
|
|
// Licensed under the GNU Affero General Public License (AGPL).
|
|
// See License.AGPL.txt in the project root for license information.
|
|
|
|
package auth
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
)
|
|
|
|
type contextKey int
|
|
|
|
const (
|
|
authContextKey contextKey = iota
|
|
)
|
|
|
|
type TokenType int
|
|
|
|
const (
|
|
AccessTokenType TokenType = iota
|
|
CookieTokenType
|
|
)
|
|
|
|
type Token struct {
|
|
Type TokenType
|
|
Value string
|
|
}
|
|
|
|
func NewAccessToken(token string) Token {
|
|
return Token{
|
|
Type: AccessTokenType,
|
|
Value: token,
|
|
}
|
|
}
|
|
|
|
func NewCookieToken(cookie string) Token {
|
|
return Token{
|
|
Type: CookieTokenType,
|
|
Value: cookie,
|
|
}
|
|
}
|
|
|
|
func TokenToContext(ctx context.Context, token Token) context.Context {
|
|
return context.WithValue(ctx, authContextKey, token)
|
|
}
|
|
|
|
func TokenFromContext(ctx context.Context) (Token, error) {
|
|
if val, ok := ctx.Value(authContextKey).(Token); ok {
|
|
return val, nil
|
|
}
|
|
|
|
return Token{}, errors.New("no token present on context")
|
|
}
|