Documentation ¶
Index ¶
- Variables
- type BaseModel
- type ClientModel
- type ClientRepository
- type DB
- type OAuthRepository
- type OAuthTokenCategory
- type OAuthTokenModel
- type PermissionsModel
- type SessionModel
- type SessionRepository
- type StringSlice
- type TokenCategory
- type TokenModel
- type TokenRepository
- type UserModel
- type UserRepository
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 ClientModel ¶
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 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
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 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 }
Source Files ¶
Click to show internal directories.
Click to hide internal directories.