func validateAndParse()

in server/gcpcredential/validate.go [209:237]


func validateAndParse(credentials []string, validator validationFunc) ([]string, error) {
	var emails []string
	for i, token := range credentials {
		claims, err := validator(token)
		if err != nil {
			return nil, fmt.Errorf("Error validating token in position %v: %v", i, err)
		}

		tokenClaims, err := parseEmailClaims(claims)
		if err != nil {
			fmt.Printf("Error with ID token in position %v: %v", i, err)
			continue
		}

		if tokenClaims.Email == "" {
			fmt.Printf("ID token in position %v has no email claim\n", i)
			continue
		}

		if !tokenClaims.EmailVerified {
			fmt.Printf("email claim for ID token in position %v is not verified\n", i)
			continue
		}

		emails = append(emails, tokenClaims.Email)
	}

	return emails, nil
}