repos

package
v0.0.0-...-a56b410 Latest Latest
Warning

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

Go to latest
Published: Feb 19, 2023 License: AGPL-3.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNoRecord       = errors.New("no matching record found")
	ErrDuplicateEmail = errors.New("duplicate email")
)

Functions

This section is empty.

Types

type BaseModel

type BaseModel struct {
	ID        string `db:"id"`
	CreatedAt int64  `db:"created_at"`
}

type ClientModel

type ClientModel struct {
	BaseModel
	Name         string      `db:"name"`
	Description  string      `db:"description"`
	Website      string      `db:"website"`
	RedirectURIs StringSlice `db:"redirect_uris"`
	SecretHash   []byte      `db:"secret_hash"`
	UserID       string      `db:"user_id"`
}

type ClientRepository

type ClientRepository interface {
	Find(ctx context.Context, id string) (*ClientModel, error)
	FindByUserAndID(ctx context.Context, userID, id string) (*ClientModel, error)
	FindByUser(ctx context.Context, userID string) ([]*ClientModel, error)
	Create(ctx context.Context, userID, name, description, website string, redirectURIs []string, secretHash []byte) (*ClientModel, error)
	Update(ctx context.Context, userID, id, name, description, website string, redirectURIs []string) error
	UpdateSecret(ctx context.Context, userID, id string, newSecretHash []byte) error
	Delete(ctx context.Context, userID, id string) error
}

type DB

type DB interface {
	NewUserRepository() UserRepository
	NewSessionRepository() SessionRepository
	NewTokenRepository() TokenRepository
	NewClientRepository() ClientRepository
	NewOAuthRepository() OAuthRepository

	Close() error
}

type OAuthRepository

type OAuthRepository interface {
	Create(ctx context.Context, clientID, userID string, category OAuthTokenCategory, tokenHash []byte, redirectURI string, scopes []string, data []byte, lifetime time.Duration) (*OAuthTokenModel, error)
	Find(ctx context.Context, category OAuthTokenCategory, tokenHash []byte) (*OAuthTokenModel, error)
	Use(ctx context.Context, clientID string, category OAuthTokenCategory, tokenHash []byte) error
	Delete(ctx context.Context, clientID string, category OAuthTokenCategory, tokenHash []byte) error
	DeleteByUser(ctx context.Context, clientID, userID string) error

	SetPermissions(ctx context.Context, clientID, userID string, scopes []string) (*PermissionsModel, error)
	FindAllPermissions(ctx context.Context, userID string) ([]*PermissionsModel, error)
	FindPermissions(ctx context.Context, clientID, userID string) (*PermissionsModel, error)
	RevokePermissions(ctx context.Context, clientID, userID string) error
}

type OAuthTokenCategory

type OAuthTokenCategory string
var (
	OAuthTokenCode    OAuthTokenCategory = "code"
	OAuthTokenAccess  OAuthTokenCategory = "access"
	OAuthTokenRefresh OAuthTokenCategory = "refresh"
)

type OAuthTokenModel

type OAuthTokenModel struct {
	CreatedAt   int64              `db:"created_at"`
	Category    OAuthTokenCategory `db:"category"`
	TokenHash   []byte             `db:"token_hash"`
	RedirectURI string             `db:"redirect_uri"`
	ClientID    string             `db:"client_id"`
	UserID      string             `db:"user_id"`
	Scopes      StringSlice        `db:"scopes"`
	Data        []byte             `db:"data"`
	Expires     int64              `db:"expires"`
	Used        bool               `db:"used"`
}

type PermissionsModel

type PermissionsModel struct {
	CreatedAt int64       `db:"created_at"`
	ClientID  string      `db:"client_id"`
	UserID    string      `db:"user_id"`
	Scopes    StringSlice `db:"scopes"`
}

type SessionModel

type SessionModel struct {
	Token   string `db:"token"`
	Data    []byte `db:"data"`
	Expires int64  `db:"expires"`
}

type SessionRepository

type SessionRepository interface {
	scs.Store
	scs.CtxStore
	scs.IterableStore
	scs.IterableCtxStore
}

type StringSlice

type StringSlice []string

func (*StringSlice) Scan

func (s *StringSlice) Scan(source any) error

func (StringSlice) Value

func (s StringSlice) Value() (driver.Value, error)

type TokenCategory

type TokenCategory string
var TokenConfirmEmail TokenCategory = "confirm-email"

type TokenModel

type TokenModel struct {
	CreatedAt int64         `db:"created_at"`
	Category  TokenCategory `db:"category"`
	Key       string        `db:"token_key"`
	ValueHash []byte        `db:"value_hash"`
	Expires   int64         `db:"expires"`
}

type TokenRepository

type TokenRepository interface {
	Create(ctx context.Context, category TokenCategory, key string, valueHash []byte, lifetime time.Duration) (*TokenModel, error)
	Find(ctx context.Context, category TokenCategory, key string) (*TokenModel, error)
	Delete(ctx context.Context, category TokenCategory, key string) error
}

type UserModel

type UserModel struct {
	BaseModel
	Name           string `db:"name"`
	Email          string `db:"email"`
	EmailConfirmed bool   `db:"email_confirmed"`
	PasswordHash   []byte `db:"password_hash"`
}

type UserRepository

type UserRepository interface {
	Find(ctx context.Context, id string) (*UserModel, error)
	FindByEmail(ctx context.Context, email string) (*UserModel, error)
	GetPasswordHash(ctx context.Context, userID string) ([]byte, error)
	Create(ctx context.Context, name, email string, passwordHash []byte) (*UserModel, error)
	Update(ctx context.Context, id, name string) error
	UpdateEmailConfirmed(ctx context.Context, id string, confirmed bool) error
	Delete(ctx context.Context, id string) error
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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