auth

package
v0.6.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 3, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const ExpiryBuffer = time.Minute

ExpiryBuffer is subtracted from expiry time to refresh tokens early.

View Source
const RenewBuffer = 5 * time.Minute

RenewBuffer is how long before access-token expiry we proactively renew it from the refresh token. Sized for the short-lived (1h) CLI access token.

Variables

This section is empty.

Functions

func DeleteCredentials

func DeleteCredentials() error

DeleteCredentials removes the credentials file.

func HasCredentials

func HasCredentials() bool

HasCredentials returns whether credentials exist on disk.

Types

type Credentials

type Credentials struct {
	AccessToken string `json:"access_token"`
	// RefreshToken is a long-lived, rotating credential used to mint new access
	// tokens. Stored in plaintext on disk (0600); the server keeps only its hash.
	RefreshToken string `json:"refresh_token,omitempty"`
	// AccessTokenExpiresAt is the authoritative expiry for the short-lived access
	// token. ExpiresAt is kept for backward-compat with old credential files.
	AccessTokenExpiresAt time.Time `json:"access_token_expires_at,omitempty"`
	ExpiresAt            time.Time `json:"expires_at"`
	Email                string    `json:"email,omitempty"`
	OrganizationName     string    `json:"organization_name,omitempty"`
}

Credentials holds OAuth tokens for API authentication.

func LoadCredentials

func LoadCredentials() (*Credentials, error)

LoadCredentials reads credentials from disk.

func (*Credentials) HasRefreshToken added in v0.4.0

func (c *Credentials) HasRefreshToken() bool

HasRefreshToken reports whether a refresh token is stored.

func (*Credentials) IsExpired

func (c *Credentials) IsExpired() bool

IsExpired returns whether the access token is expired or about to expire. Used by the status/login UI flows; the token hot path uses ShouldRenew + the client's renewing Token() instead.

func (*Credentials) Save

func (c *Credentials) Save() error

Save writes credentials to disk with secure permissions.

The write is atomic: data is written to a temp file in the same directory with 0600 perms, then renamed over the target (atomic on POSIX). This avoids the truncate-then-write race where a concurrent taufinity process could read a partial file or where two rotating writers could corrupt the stored refresh token. The temp file is removed if anything before the rename fails.

func (*Credentials) ShouldRenew added in v0.4.0

func (c *Credentials) ShouldRenew() bool

ShouldRenew reports whether the access token is expired or within RenewBuffer of expiry, in which case it should be renewed from the refresh token.

func (*Credentials) UpdateTokens added in v0.4.0

func (c *Credentials) UpdateTokens(accessToken, refreshToken string, accessExpiresAt time.Time, email, orgName string) error

UpdateTokens stores a rotated access+refresh pair and saves to disk. An empty refreshToken leaves the existing one intact (the server may omit it). Empty email/orgName likewise preserve current values.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL