pgstore

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Oct 19, 2026 License: MIT Imports: 14 Imported by: 0

Documentation

Overview

Package pgstore implements auth's user-plane store ports on Postgres through sqlc: users, sessions, reset and verification tokens, TOTP, lockout, linked accounts, passkeys and email login.

Its tables live in the auth schema and migrate with their own goose version table, so an app runs Migrate beside its own migrations and neither sees the other's history.

Index

Constants

View Source
const VersionTable = "auth.goose_db_version"

VersionTable is goose's bookkeeping for the auth schema, kept apart from the app's own goose_db_version.

Variables

This section is empty.

Functions

func Migrate

func Migrate(ctx context.Context, pool *pgxpool.Pool) error

Migrate brings the auth schema to the current version.

Types

type Store

type Store struct {
	// contains filtered or unexported fields
}

Store implements every user-plane port and store.TxRunner over one pool.

func New

func New(pool *pgxpool.Pool) *Store

New returns a Store over pool. The schema must already be migrated.

func (*Store) ClearFailedLoginAttempts

func (s *Store) ClearFailedLoginAttempts(ctx context.Context, email string) error

func (*Store) ConsumeWebAuthnChallenge

func (s *Store) ConsumeWebAuthnChallenge(ctx context.Context, tokenHash string) (*store.WebAuthnChallenge, error)

func (*Store) CountRecentFailedLoginAttempts

func (s *Store) CountRecentFailedLoginAttempts(ctx context.Context, email string, since time.Time) (int, error)

func (*Store) CountSuperusers

func (s *Store) CountSuperusers(ctx context.Context) (int, error)

func (*Store) CreateAccount

func (s *Store) CreateAccount(ctx context.Context, a *store.Account) error

func (*Store) CreateEmailLoginToken

func (s *Store) CreateEmailLoginToken(ctx context.Context, t *store.EmailLoginToken) error

func (*Store) CreateEmailVerificationToken

func (s *Store) CreateEmailVerificationToken(ctx context.Context, t *store.EmailVerificationToken) error

func (*Store) CreatePasswordResetToken

func (s *Store) CreatePasswordResetToken(ctx context.Context, t *store.PasswordResetToken) error

func (*Store) CreatePendingTwoFactorSession

func (s *Store) CreatePendingTwoFactorSession(ctx context.Context, p *store.PendingTwoFactorSession) error

func (*Store) CreateRefreshToken

func (s *Store) CreateRefreshToken(ctx context.Context, t *store.RefreshToken) error

func (*Store) CreateSuperuser

func (s *Store) CreateSuperuser(ctx context.Context, su *store.Superuser) error

func (*Store) CreateSuperuserPendingTwoFactorSession

func (s *Store) CreateSuperuserPendingTwoFactorSession(ctx context.Context, p *store.PendingTwoFactorSession) error

func (*Store) CreateSuperuserRefreshToken

func (s *Store) CreateSuperuserRefreshToken(ctx context.Context, t *store.SuperuserRefreshToken) error

func (*Store) CreateSuperuserTOTPSettings

func (s *Store) CreateSuperuserTOTPSettings(ctx context.Context, t *store.TOTPSettings) error

func (*Store) CreateTOTPSettings

func (s *Store) CreateTOTPSettings(ctx context.Context, t *store.TOTPSettings) error

func (*Store) CreateUser

func (s *Store) CreateUser(ctx context.Context, u *store.User) error

func (*Store) CreateWebAuthnChallenge

func (s *Store) CreateWebAuthnChallenge(ctx context.Context, c *store.WebAuthnChallenge) error

func (*Store) CreateWebAuthnCredential

func (s *Store) CreateWebAuthnCredential(ctx context.Context, c *store.WebAuthnCredential) error

func (*Store) DeleteAccount

func (s *Store) DeleteAccount(ctx context.Context, id string) error

func (*Store) DeleteEmailLoginTokens

func (s *Store) DeleteEmailLoginTokens(ctx context.Context, email string, kind store.EmailLoginKind) error

func (*Store) DeletePendingTwoFactorSession

func (s *Store) DeletePendingTwoFactorSession(ctx context.Context, id string) error

func (*Store) DeleteSuperuserPendingTwoFactorSession

func (s *Store) DeleteSuperuserPendingTwoFactorSession(ctx context.Context, id string) error

func (*Store) DeleteSuperuserTOTPSettings

func (s *Store) DeleteSuperuserTOTPSettings(ctx context.Context, superuserID string) error

func (*Store) DeleteTOTPSettings

func (s *Store) DeleteTOTPSettings(ctx context.Context, userID string) error

func (*Store) DeleteUserEmailVerificationTokens

func (s *Store) DeleteUserEmailVerificationTokens(ctx context.Context, userID string) error

func (*Store) DeleteUserPasswordResetTokens

func (s *Store) DeleteUserPasswordResetTokens(ctx context.Context, userID string) error

func (*Store) DeleteWebAuthnCredential

func (s *Store) DeleteWebAuthnCredential(ctx context.Context, id string) error

func (*Store) GetAccount

func (s *Store) GetAccount(ctx context.Context, id string) (*store.Account, error)

func (*Store) GetAccountByProvider

func (s *Store) GetAccountByProvider(ctx context.Context, provider, providerAccountID string) (*store.Account, error)

func (*Store) GetEmailLoginTokenByEmail

func (s *Store) GetEmailLoginTokenByEmail(ctx context.Context, email string, kind store.EmailLoginKind) (*store.EmailLoginToken, error)

func (*Store) GetEmailLoginTokenByHash

func (s *Store) GetEmailLoginTokenByHash(ctx context.Context, hash string) (*store.EmailLoginToken, error)

func (*Store) GetEmailVerificationTokenByHash

func (s *Store) GetEmailVerificationTokenByHash(ctx context.Context, hash string) (*store.EmailVerificationToken, error)

func (*Store) GetPasswordResetTokenByHash

func (s *Store) GetPasswordResetTokenByHash(ctx context.Context, hash string) (*store.PasswordResetToken, error)

func (*Store) GetPendingTwoFactorSessionByHash

func (s *Store) GetPendingTwoFactorSessionByHash(ctx context.Context, hash string) (*store.PendingTwoFactorSession, error)

func (*Store) GetRefreshTokenByHash

func (s *Store) GetRefreshTokenByHash(ctx context.Context, hash string) (*store.RefreshToken, error)

func (*Store) GetSuperuserByEmail

func (s *Store) GetSuperuserByEmail(ctx context.Context, email string) (*store.Superuser, error)

func (*Store) GetSuperuserByID

func (s *Store) GetSuperuserByID(ctx context.Context, id string) (*store.Superuser, error)

func (*Store) GetSuperuserPendingTwoFactorSessionByHash

func (s *Store) GetSuperuserPendingTwoFactorSessionByHash(ctx context.Context, hash string) (*store.PendingTwoFactorSession, error)

func (*Store) GetSuperuserRefreshTokenByHash

func (s *Store) GetSuperuserRefreshTokenByHash(ctx context.Context, hash string) (*store.SuperuserRefreshToken, error)

func (*Store) GetSuperuserTOTPSettings

func (s *Store) GetSuperuserTOTPSettings(ctx context.Context, superuserID string) (*store.TOTPSettings, error)

func (*Store) GetTOTPSettingsByUserID

func (s *Store) GetTOTPSettingsByUserID(ctx context.Context, userID string) (*store.TOTPSettings, error)

func (*Store) GetUserByEmail

func (s *Store) GetUserByEmail(ctx context.Context, email string) (*store.User, error)

func (*Store) GetUserByID

func (s *Store) GetUserByID(ctx context.Context, id string) (*store.User, error)

func (*Store) GetWebAuthnCredential

func (s *Store) GetWebAuthnCredential(ctx context.Context, id string) (*store.WebAuthnCredential, error)

func (*Store) GetWebAuthnCredentialByCredentialID

func (s *Store) GetWebAuthnCredentialByCredentialID(ctx context.Context, credentialID []byte) (*store.WebAuthnCredential, error)

func (*Store) IncrementEmailLoginTokenAttempts

func (s *Store) IncrementEmailLoginTokenAttempts(ctx context.Context, id string) (int, error)

func (*Store) IsAccountLocked

func (s *Store) IsAccountLocked(ctx context.Context, userID string) (bool, error)

func (*Store) ListAccountsByUser

func (s *Store) ListAccountsByUser(ctx context.Context, userID string) ([]*store.Account, error)

func (*Store) ListActiveRefreshTokens

func (s *Store) ListActiveRefreshTokens(ctx context.Context, userID string) ([]*store.RefreshToken, error)

func (*Store) ListActiveSuperuserRefreshTokens

func (s *Store) ListActiveSuperuserRefreshTokens(ctx context.Context, superuserID string) ([]*store.SuperuserRefreshToken, error)

func (*Store) ListSuperusers

func (s *Store) ListSuperusers(ctx context.Context) ([]*store.Superuser, error)

func (*Store) ListWebAuthnCredentialsByUser

func (s *Store) ListWebAuthnCredentialsByUser(ctx context.Context, userID string) ([]*store.WebAuthnCredential, error)

func (*Store) LockAccount

func (s *Store) LockAccount(ctx context.Context, userID string) error

func (*Store) MarkEmailLoginTokenUsed

func (s *Store) MarkEmailLoginTokenUsed(ctx context.Context, id string, usedAt time.Time) error

func (*Store) MarkEmailVerificationTokenUsed

func (s *Store) MarkEmailVerificationTokenUsed(ctx context.Context, id string) error

func (*Store) MarkPasswordResetTokenUsed

func (s *Store) MarkPasswordResetTokenUsed(ctx context.Context, id string) error

func (*Store) RecordFailedLoginAttempt

func (s *Store) RecordFailedLoginAttempt(ctx context.Context, a *store.FailedLoginAttempt) error

func (*Store) RevokeAllSuperuserRefreshTokens

func (s *Store) RevokeAllSuperuserRefreshTokens(ctx context.Context, superuserID string) error

func (*Store) RevokeAllUserRefreshTokens

func (s *Store) RevokeAllUserRefreshTokens(ctx context.Context, userID string) error

func (*Store) RevokeRefreshToken

func (s *Store) RevokeRefreshToken(ctx context.Context, id string) error

func (*Store) RevokeSuperuserRefreshToken

func (s *Store) RevokeSuperuserRefreshToken(ctx context.Context, id string) error

func (*Store) RunInTx

func (s *Store) RunInTx(ctx context.Context, fn func(ctx context.Context) error) error

RunInTx runs fn in one transaction. store.TxRunner requires every store call made with fn's context to join it, so q reads the transaction back out of the context; a call inside an open transaction joins that one.

func (*Store) TouchRefreshToken

func (s *Store) TouchRefreshToken(ctx context.Context, id string, expiresAt time.Time) error

func (*Store) UnlockAccount

func (s *Store) UnlockAccount(ctx context.Context, userID string) error

func (*Store) UpdateAccount

func (s *Store) UpdateAccount(ctx context.Context, a *store.Account) error

func (*Store) UpdateSuperuser

func (s *Store) UpdateSuperuser(ctx context.Context, su *store.Superuser) error

func (*Store) UpdateSuperuserTOTPSettings

func (s *Store) UpdateSuperuserTOTPSettings(ctx context.Context, t *store.TOTPSettings) error

func (*Store) UpdateTOTPSettings

func (s *Store) UpdateTOTPSettings(ctx context.Context, t *store.TOTPSettings) error

func (*Store) UpdateUser

func (s *Store) UpdateUser(ctx context.Context, u *store.User) error

func (*Store) UpdateWebAuthnCredential

func (s *Store) UpdateWebAuthnCredential(ctx context.Context, c *store.WebAuthnCredential) error

Directories

Path Synopsis
internal
db

Jump to

Keyboard shortcuts

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