package utils

import (
	"encoding/base64"
	"encoding/json"
	"fmt"
	"strings"
)

func JwtPayload(token string) (map[string]any, error) {
	items := strings.Split(token, ".")
	if len(items) != 3 {
		return nil, fmt.Errorf("invalid jwt token, should be split into 3 parts")
	}
	rawPayload := items[1]

	// decode raw using base64
	decoded, err := base64.RawURLEncoding.DecodeString(rawPayload)
	if err != nil {
		return nil, fmt.Errorf("decode jwt payload failed: %w", err)
	}

	var ret map[string]any
	// decode json
	if err := json.Unmarshal(decoded, &ret); err != nil {
		return nil, err
	}

	return ret, nil
}
