package jwt

import (
	"time"

	portainer "github.com/portainer/portainer/api"
)

// GenerateTokenForKubeconfig generates a new JWT token for Kubeconfig
func (service *Service) GenerateTokenForKubeconfig(data *portainer.TokenData) (string, error) {
	settings, err := service.dataStore.Settings().Settings()
	if err != nil {
		return "", err
	}

	expiryDuration, err := time.ParseDuration(settings.KubeconfigExpiry)
	if err != nil {
		return "", err
	}

	expiryAt := time.Now().Add(expiryDuration).Unix()
	if expiryDuration == time.Duration(0) {
		expiryAt = 0
	}

	return service.generateSignedToken(data, expiryAt, kubeConfigScope)
}