package requestctx

import (
	"context"

	"github.com/google/uuid"

	"nexavpn/backend/internal/identity"
)

type contextKey string

const claimsKey contextKey = "claims"

func WithClaims(ctx context.Context, claims identity.Claims) context.Context {
	return context.WithValue(ctx, claimsKey, claims)
}

func ClaimsFromContext(ctx context.Context) (identity.Claims, bool) {
	claims, ok := ctx.Value(claimsKey).(identity.Claims)
	return claims, ok
}

func MustUserID(ctx context.Context) (uuid.UUID, bool) {
	claims, ok := ClaimsFromContext(ctx)
	if !ok {
		return uuid.Nil, false
	}
	return claims.UserID, true
}
