adapters

package
v1.2.1 Latest Latest
Warning

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

Go to latest
Published: May 21, 2024 License: MIT Imports: 6 Imported by: 4

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrUnimplemented = errors.New("not implemented")

ErrUnimplemented is returned when a method is not implemented.

Functions

func StringPtr

func StringPtr(s string) *string

StringPtr returns a pointer to the string value passed in.

func TimePtr

func TimePtr(t time.Time) *time.Time

TimePtr returns a pointer to the time value passed in.

Types

type AccountType

type AccountType string

AccountType represents the type of an account.

const (
	// AccountTypeOAuth2 represents an OAuth2 account type.
	AccountTypeOAuth2 AccountType = "oauth2"
	// AccountTypeOIDC represents an OIDC account type.
	AccountTypeOIDC AccountType = "oidc"
	// AccountTypeSAML represents a SAML account type.
	AccountTypeSAML AccountType = "saml"
	// AccountTypeEmail represents an email account type.
	AccountTypeEmail AccountType = "email"
	// AccountTypeWebAuthn represents a WebAuthn account type.
	AccountTypeWebAuthn AccountType = "webauthn"
)

type Adapter

type Adapter interface {
	// CreateUser creates a new user.
	CreateUser(ctx context.Context, user GothUser) (GothUser, error)
	// GetUser retrieves a user by ID.
	GetUser(ctx context.Context, id uuid.UUID) (GothUser, error)
	// GetUserByEmail retrieves a user by email.
	GetUserByEmail(ctx context.Context, email string) (GothUser, error)
	// UpdateUser updates a user.
	UpdateUser(ctx context.Context, user GothUser) (GothUser, error)
	// DeleteUser deletes a user by ID.
	DeleteUser(ctx context.Context, id uuid.UUID) error
	// LinkAccount links an account to a user.
	LinkAccount(ctx context.Context, accountID, userID uuid.UUID) error
	// UnlinkAccount unlinks an account from a user.
	UnlinkAccount(ctx context.Context, accountID, userID uuid.UUID) error
	// CreateSession creates a new session.
	CreateSession(ctx context.Context, userID uuid.UUID, expires time.Time) (GothSession, error)
	// GetSession retrieves a session by session token.
	GetSession(ctx context.Context, sessionToken string) (GothSession, error)
	// UpdateSession updates a session.
	UpdateSession(ctx context.Context, session GothSession) (GothSession, error)
	// RefreshSession refreshes a session.
	RefreshSession(ctx context.Context, session GothSession) (GothSession, error)
	// DeleteSession deletes a session by session token.
	DeleteSession(ctx context.Context, sessionToken string) error
	// CreateVerificationToken creates a new verification token.
	CreateVerificationToken(ctx context.Context, verficationToken GothVerificationToken) (GothVerificationToken, error)
	// UseVerficationToken uses a verification token.
	UseVerficationToken(ctx context.Context, identifier string, token string) (GothVerificationToken, error)
}

Adapter is an interface that defines the methods for interacting with the underlying data storage.

type GothAccount added in v1.2.1

type GothAccount struct {
	ID                uuid.UUID   `json:"id" gorm:"primaryKey;type:uuid;column:id;default:gen_random_uuid();"`
	Type              AccountType `json:"type" validate:"required"`
	Provider          string      `json:"provider" validate:"required"`
	ProviderAccountID *string     `json:"provider_account_id"`
	RefreshToken      *string     `json:"refresh_token"`
	AccessToken       *string     `json:"access_token"`
	ExpiresAt         *time.Time  `json:"expires_at"`
	TokenType         *string     `json:"token_type"`
	Scope             *string     `json:"scope"`
	IDToken           *string     `json:"id_token"`
	SessionState      string      `json:"session_state"`
	UserID            *uuid.UUID  `json:"user_id"`
	User              GothUser    `json:"user" gorm:"foreignKey:UserID;constraint:OnDelete:CASCADE"`

	CreatedAt time.Time      `json:"created_at"`
	UpdatedAt time.Time      `json:"updated_at"`
	DeletedAt gorm.DeletedAt `json:"deleted_at"`
}

GothAccount represents an account in a third-party identity provider.

type GothSession added in v1.2.1

type GothSession struct {
	ID           uuid.UUID `json:"id" gorm:"primaryKey;unique;type:uuid;column:id;default:gen_random_uuid()"`
	ExpiresAt    time.Time `json:"expires_at"`
	SessionToken string    `json:"session_token"`
	UserID       uuid.UUID `json:"user_id"`
	User         GothUser  `json:"user"`

	CreatedAt time.Time      `json:"created_at"`
	UpdatedAt time.Time      `json:"updated_at"`
	DeletedAt gorm.DeletedAt `json:"deleted_at"`
}

GothSession is a session for a user.

func (*GothSession) IsValid added in v1.2.1

func (s *GothSession) IsValid() bool

IsValid returns true if the session is valid.

type GothUser added in v1.2.1

type GothUser struct {
	ID            uuid.UUID     `json:"id" gorm:"primaryKey;unique;type:uuid;column:id;default:gen_random_uuid()"`
	Name          string        `json:"name" validate:"required,max=255"`
	Email         string        `json:"email" gorm:"uniqueIndex" validate:"required,email"`
	EmailVerified *bool         `json:"email_verified"`
	Image         *string       `json:"image" validate:"url"`
	Accounts      []GothAccount `json:"accounts" gorm:"foreignKey:UserID;constraint:OnDelete:CASCADE"`
	Sessions      []GothSession `json:"sessions" gorm:"foreignKey:UserID;constraint:OnDelete:CASCADE"`

	CreatedAt time.Time      `json:"created_at"`
	UpdatedAt time.Time      `json:"updated_at"`
	DeletedAt gorm.DeletedAt `json:"deleted_at"`
}

GothUser is a user of the application.

type GothVerificationToken added in v1.2.1

type GothVerificationToken struct {
	Token      string    `json:"token" gorm:"primaryKey"`
	Identifier string    `json:"identifier"`
	ExpiresAt  time.Time `json:"expires_at"`

	CreatedAt time.Time      `json:"created_at"`
	UpdatedAt time.Time      `json:"updated_at"`
	DeletedAt gorm.DeletedAt `json:"deleted_at"`
}

GothVerificationToken is a verification token for a user

type UnimplementedAdapter

type UnimplementedAdapter struct{}

UnimplementedAdapter is an adapter that does not implement any of the methods.

func (*UnimplementedAdapter) CreateSession

func (a *UnimplementedAdapter) CreateSession(_ context.Context, userID uuid.UUID, expires time.Time) (GothSession, error)

CreateSession creates a new session.

func (*UnimplementedAdapter) CreateUser

func (a *UnimplementedAdapter) CreateUser(_ context.Context, user GothUser) (GothUser, error)

CreateUser creates a new user.

func (*UnimplementedAdapter) CreateVerificationToken

func (a *UnimplementedAdapter) CreateVerificationToken(_ context.Context, erficationToken GothVerificationToken) (GothVerificationToken, error)

CreateVerificationToken creates a new verification token.

func (*UnimplementedAdapter) DeleteSession

func (a *UnimplementedAdapter) DeleteSession(_ context.Context, sessionToken string) error

DeleteSession deletes a session by session token.

func (*UnimplementedAdapter) DeleteUser

func (a *UnimplementedAdapter) DeleteUser(_ context.Context, id uuid.UUID) error

DeleteUser deletes a user by ID.

func (*UnimplementedAdapter) GetSession

func (a *UnimplementedAdapter) GetSession(_ context.Context, sessionToken string) (GothSession, error)

GetSession retrieves a session by session token.

func (*UnimplementedAdapter) GetUser

GetUser retrieves a user by ID.

func (*UnimplementedAdapter) GetUserByAccount

func (a *UnimplementedAdapter) GetUserByAccount(_ context.Context, provider string, providerAccountID string) (GothUser, error)

GetUserByAccount retrieves a user by account.

func (*UnimplementedAdapter) GetUserByEmail

func (a *UnimplementedAdapter) GetUserByEmail(_ context.Context, email string) (GothUser, error)

GetUserByEmail retrieves a user by email.

func (*UnimplementedAdapter) LinkAccount

func (a *UnimplementedAdapter) LinkAccount(_ context.Context, accountID, userID uuid.UUID) error

LinkAccount links an account to a user.

func (*UnimplementedAdapter) RefreshSession

func (a *UnimplementedAdapter) RefreshSession(_ context.Context, session GothSession) (GothSession, error)

RefreshSession refreshes a session.

func (*UnimplementedAdapter) UnlinkAccount

func (a *UnimplementedAdapter) UnlinkAccount(_ context.Context, accountID, userID uuid.UUID) error

UnlinkAccount unlinks an account from a user.

func (*UnimplementedAdapter) UpdateSession

func (a *UnimplementedAdapter) UpdateSession(_ context.Context, session GothSession) (GothSession, error)

UpdateSession updates a session.

func (*UnimplementedAdapter) UpdateUser

func (a *UnimplementedAdapter) UpdateUser(_ context.Context, user GothUser) (GothUser, error)

UpdateUser updates a user.

func (*UnimplementedAdapter) UseVerficationToken

func (a *UnimplementedAdapter) UseVerficationToken(_ context.Context, identifier string, token string) (GothVerificationToken, error)

UseVerficationToken uses a verification token.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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