evcc-io/plugin/auth/clientcredentials.go
2026-01-22 08:05:13 +00:00

33 lines
801 B
Go

package auth
import (
"context"
"errors"
"github.com/evcc-io/evcc/util"
"golang.org/x/oauth2"
"golang.org/x/oauth2/clientcredentials"
)
func init() {
registry.AddCtx("clientcredentials", NewClientcredentialsFromConfig)
}
func NewClientcredentialsFromConfig(ctx context.Context, other map[string]any) (oauth2.TokenSource, error) {
var cc clientcredentials.Config
if err := util.DecodeOther(other, &cc); err != nil {
return nil, err
}
switch {
case cc.ClientID == "":
return nil, errors.New("clientcredentials: missing required clientid")
case cc.ClientSecret == "":
return nil, errors.New("clientcredentials: missing required clientsecret")
case cc.TokenURL == "":
return nil, errors.New("clientcredentials: missing required tokenurl")
}
return cc.TokenSource(ctx), nil
}