package token

import (
	"github.com/tidbcloud/pkgv2/auth/auth0"
)

type Validator struct {
	RawTokenValidator *auth0.RawTokenValidator
}

func NewValidator(rawTokenValidator *auth0.RawTokenValidator) *Validator {
	return &Validator{
		RawTokenValidator: rawTokenValidator,
	}
}

func (v *Validator) GetEmailFromAuth0Token(auth0Token string) (string, error) {
	validatorID := auth0.AuthValidatorIDCentral
	claims, err := v.RawTokenValidator.ValidateFor(validatorID, auth0Token)
	if err != nil {
		return "", err
	}
	email, err := auth0.GetEmailClaim(claims)
	if err != nil {
		return "", err
	}
	return email, nil
}
