50 lines
1.9 KiB
Go
50 lines
1.9 KiB
Go
package zitadel
|
|
|
|
import "time"
|
|
|
|
// Conf configures the ZITADEL HTTP client.
|
|
type Conf struct {
|
|
// Issuer is the ZITADEL instance URL (e.g. https://zitadel.example.com).
|
|
Issuer string `json:",optional"`
|
|
// APIBase overrides the base URL for Management API v2 calls; defaults to Issuer.
|
|
APIBase string `json:",optional"`
|
|
// ServiceUserToken is a PAT or service-account token for Management API (CreateUser, Deactivate).
|
|
ServiceUserToken string `json:",optional,env=ZITADEL_SERVICE_TOKEN"`
|
|
// DefaultOrgID is used when CreateHumanUserRequest.OrgID is empty.
|
|
DefaultOrgID string `json:",optional,env=ZITADEL_DEFAULT_ORG_ID"`
|
|
// OAuthClientID and OAuthClientSecret identify the Gateway OIDC application (password grant / social).
|
|
OAuthClientID string `json:",optional,env=ZITADEL_OAUTH_CLIENT_ID"`
|
|
OAuthClientSecret string `json:",optional,env=ZITADEL_OAUTH_CLIENT_SECRET"`
|
|
// Google OAuth app credentials (register/social flow, PR 6).
|
|
GoogleClientID string `json:",optional"`
|
|
GoogleClientSecret string `json:",optional,env=ZITADEL_GOOGLE_CLIENT_SECRET"`
|
|
// GoogleIdPID is the ZITADEL external IdP id for Google (optional idp_id authorize hint).
|
|
GoogleIdPID string `json:",optional"`
|
|
// LdapIdPID is the ZITADEL external IdP id for LDAP (optional idp_id authorize hint).
|
|
LdapIdPID string `json:",optional,env=ZITADEL_LDAP_IDP_ID"`
|
|
// JWKSUrl overrides OIDC JWKS endpoint; defaults to {Issuer}/oauth/v2/keys.
|
|
JWKSUrl string `json:",optional"`
|
|
TimeoutSeconds int `json:",optional"`
|
|
}
|
|
|
|
// Defaults returns zero-value-safe defaults.
|
|
func (c Conf) Defaults() Conf {
|
|
if c.APIBase == "" {
|
|
c.APIBase = c.Issuer
|
|
}
|
|
if c.TimeoutSeconds <= 0 {
|
|
c.TimeoutSeconds = 15
|
|
}
|
|
return c
|
|
}
|
|
|
|
func (c Conf) timeout() time.Duration {
|
|
return time.Duration(c.Defaults().TimeoutSeconds) * time.Second
|
|
}
|
|
|
|
// Enabled reports whether ZITADEL integration is configured.
|
|
func (c Conf) Enabled() bool {
|
|
c = c.Defaults()
|
|
return c.Issuer != "" && c.ServiceUserToken != ""
|
|
}
|