auth

package
v0.0.0-...-64e351a Latest Latest
Warning

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

Go to latest
Published: Sep 6, 2022 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrExist              = errors.New("user already exists")
	ErrNotExist           = errors.New("user doesn't exist")
	ErrInvalid            = errors.New("invalid argument")
	ErrIO                 = errors.New("io error")
	ErrHash               = errors.New("hash error") // tried to generate this error during tests, didn't happen
	ErrExpired            = errors.New("token expired")
	ErrInvalidToken       = errors.New("invalid token")
	ErrInvalidCredentials = errors.New("invalid credentials")
	ErrBlacklisted        = errors.New("user blacklisted - logged out")
)

Functions

This section is empty.

Types

type Manager

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

func New

func New(storeTokener StoreTokener) *Manager

New is default constructor for Manager

func (*Manager) Add

func (m *Manager) Add(user User) error

Add adds user to base

func (*Manager) Auth

func (m *Manager) Auth(user User) (bool, error)

Auth serves as user authentication (login)

func (*Manager) Exists

func (m *Manager) Exists(user User) (bool, error)

Exists checks, whether particular user exists

func (*Manager) Logout

func (m *Manager) Logout(token string) (*User, error)

func (*Manager) Remove

func (m *Manager) Remove(user User) error

Remove user from Manager

func (*Manager) Token

func (m *Manager) Token(user User) (string, error)

Token returns jwtToken, if user provides correct credentials

func (*Manager) ValidateToken

func (m *Manager) ValidateToken(token string) (*User, error)

ValidateToken returns associated User to token, error on invalid token

type MemoryStore

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

MemoryStore satisfies Store interface

func NewMemoryStore

func NewMemoryStore(key []byte, duration time.Duration) *MemoryStore

NewMemoryStore is default constructor for MemoryStore

func (*MemoryStore) AddToken

func (m *MemoryStore) AddToken(token string) error

func (*MemoryStore) Duration

func (m *MemoryStore) Duration() time.Duration

Duration returns token validation time

func (*MemoryStore) Key

func (m *MemoryStore) Key() []byte

Key is responsible for returning key to generate jwtToken

func (*MemoryStore) Load

func (m *MemoryStore) Load(name string) ([]byte, error)

Load loads user data from store

func (*MemoryStore) NameExists

func (m *MemoryStore) NameExists(name string) (bool, error)

NameExists returns true, whether user with provided name exists

func (*MemoryStore) Remove

func (m *MemoryStore) Remove(name string) error

Remove user from store

func (*MemoryStore) RemoveToken

func (m *MemoryStore) RemoveToken(token string) error

func (*MemoryStore) Save

func (m *MemoryStore) Save(name string, data []byte) error

Save users data into store

func (*MemoryStore) TokenExists

func (m *MemoryStore) TokenExists(token string) (bool, error)

type Store

type Store interface {
	// Load user data, if user doesn't exist, return ""
	Load(name string) (data []byte, err error)
	// Save new user with custom data. Overwrites, if already exists
	Save(name string, data []byte) error
	// NameExists allows to check whether user with name already exists
	NameExists(name string) (bool, error)
	// Remove user with provided name, if user doesn't exist, don't do anything
	Remove(name string) error
	// AddToken adds token to token blacklists
	AddToken(token string) error
	// TokenExists checks whether token exists in blacklist
	TokenExists(token string) (bool, error)
	// RemoveToken removes token from blacklist
	RemoveToken(token string) error
}

Store realizes access to some kind of user database (maybe even just map[string][]data) Errors returned by interface should be ONLY related to internal IO errors

type StoreTokener

type StoreTokener interface {
	Store
	Tokener
}

type Tokener

type Tokener interface {
	Key() []byte
	Duration() time.Duration
}

Tokener realizes access to: key via Key() used to generate token duration via Duration() for generated jwt token

type User

type User struct {
	Name     string `json:"name"`
	Password string `json:"password"`
	// contains filtered or unexported fields
}

Jump to

Keyboard shortcuts

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