package auth

import (
	"context"
	"github.com/pingcap/errors"
	"github.com/tidbcloud/debug_portal/db/tenant"
)

type ContextKey string

const (
	AuthTokenClaimKey ContextKey = "AuthTokenClaimKey"
)

// GetUserFromContext gets the tenant.User from context if exists.
func GetUserFromContext(ctx context.Context) (*tenant.User, error) {
	claimsIFace := ctx.Value(AuthTokenClaimKey)
	if claimsIFace == nil {
		return nil, errors.New("user not in context")
	}
	user, ok := claimsIFace.(*tenant.User)
	if !ok {
		return nil, errors.New("expect type tenant.User in context")
	}
	return user, nil
}
