auth

package module
v1.4.3 Latest Latest
Warning

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

Go to latest
Published: Mar 25, 2022 License: MIT Imports: 24 Imported by: 0

README

Authentication HTTP helpers using JWT

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrUnauthorized  = errors.New("unauthorized")
	ErrNotFound      = errors.New("user not found")
	ErrExists        = errors.New("user exists")
	ErrWrongUserPass = errors.New("wrong username or password")
	ErrTokenExpired  = errors.New("token expired")
)
View Source
var ErrInvalidJwt = errors.New("invalid jwt")
View Source
var Scopes = map[Scope]string{}

Scopes can be overridden to provide human friendly scope descriptions

Functions

func CheckTokenHandler

func CheckTokenHandler(validator TokenValidator) http.HandlerFunc

func CreateUserHandler

func CreateUserHandler(writer UserWriter, access Scope) http.HandlerFunc

func DeleteUserToken added in v1.4.0

func DeleteUserToken(store TokenRemover) http.HandlerFunc

func GenerateUserTokenHandler added in v1.4.0

func GenerateUserTokenHandler(writer TokenGenerator) http.HandlerFunc

func GetAllUsersHandler added in v1.4.0

func GetAllUsersHandler(reader UserReader, access Scope) http.HandlerFunc

func GetUserTokens added in v1.4.0

func GetUserTokens(reader TokenReader) http.HandlerFunc

func LoginHandler

func LoginHandler(auth UserLoginHandler) http.HandlerFunc

func LogoutHandler

func LogoutHandler(auth UserLogoutHandler) http.HandlerFunc

func Middleware added in v1.4.0

func Middleware(validator TokenValidator) func(http.Handler) http.Handler

func WithContext added in v1.4.0

func WithContext(ctx context.Context, user *User, cs *Claims) context.Context

Types

type Auth added in v1.4.0

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

func New added in v1.4.0

func New(users UserStore, tokens UserTokenStore, opts Opts) *Auth

New returns a default authentication service

func (*Auth) CreateUser added in v1.4.0

func (a *Auth) CreateUser(u User) error

func (*Auth) DeleteUserToken added in v1.4.0

func (a *Auth) DeleteUserToken(id string, u *User) error

func (*Auth) GenerateUserToken added in v1.4.0

func (a *Auth) GenerateUserToken(owner, description string, scope Scope, expires time.Time) (Token, error)

func (*Auth) GetAllUsers added in v1.4.0

func (a *Auth) GetAllUsers() ([]*User, error)

func (*Auth) GetUser added in v1.4.0

func (a *Auth) GetUser(ID string, u *User) error

func (*Auth) GetUserToken added in v1.4.0

func (a *Auth) GetUserToken(id string, t *Token) error

func (*Auth) GetUserTokens added in v1.4.0

func (a *Auth) GetUserTokens(user string) ([]Token, error)

func (*Auth) Login added in v1.4.0

func (a *Auth) Login(username, password string) (string, error)

func (*Auth) Logout added in v1.4.0

func (a *Auth) Logout(User) error

func (*Auth) ValidateToken added in v1.4.0

func (a *Auth) ValidateToken(token string, u *User, cs *Claims, update bool) (string, error)

type BoltStore

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

func NewBoltStore

func NewBoltStore(path string) (*BoltStore, error)

func (*BoltStore) AllUsers added in v1.4.0

func (s *BoltStore) AllUsers(page, pageSize int) ([]*User, error)

func (*BoltStore) DeleteUser added in v1.4.0

func (s *BoltStore) DeleteUser(ID string) error

func (*BoltStore) DeleteUserToken added in v1.4.0

func (s *BoltStore) DeleteUserToken(id string) error

func (*BoltStore) GetUser added in v1.4.0

func (s *BoltStore) GetUser(ID string, u *User) error

func (*BoltStore) GetUserByUsername added in v1.4.0

func (s *BoltStore) GetUserByUsername(username string, u *User) error

func (*BoltStore) GetUserToken added in v1.4.0

func (s *BoltStore) GetUserToken(id string, t *Token) error

func (*BoltStore) GetUserTokenByValue added in v1.4.0

func (s *BoltStore) GetUserTokenByValue(value string, t *Token) error

func (*BoltStore) GetUserTokens added in v1.4.0

func (s *BoltStore) GetUserTokens(user string) ([]Token, error)

func (*BoltStore) SaveUser added in v1.4.0

func (s *BoltStore) SaveUser(u User) error

func (*BoltStore) SaveUserToken added in v1.4.0

func (s *BoltStore) SaveUserToken(t Token) error

type CheckRequest added in v1.4.0

type CheckRequest struct {
	Token  string `json:"token"`
	Update bool   `json:"update"`
}

type Claims

type Claims struct {
	jwt.StandardClaims
	Username string `json:"username"`
	Name     string `json:"name"`
	Scope    Scope  `json:"scope"`
}

Claims contains specific claims used in the auth system

type Err added in v1.4.0

type Err struct {
	Error string `json:"error"`
}

Err is a json error wrapper

type Opts

type Opts struct {
	TokenTTL       time.Duration
	PasswordSecret []byte
}

type Scope added in v1.4.0

type Scope int

func (Scope) Is added in v1.4.0

func (s Scope) Is(other Scope) bool

func (Scope) String added in v1.4.0

func (s Scope) String() string

type Token added in v1.4.0

type Token struct {
	ID          string    `storm:"id" json:"id"`
	Token       string    `json:"-"`
	Description string    `json:"description"`
	Owner       string    `storm:"index" json:"owner"`
	Created     time.Time `json:"created"`
	ExpiresAt   time.Time `json:"expires_at"`
	Scope       Scope     `json:"scope"`
}

type TokenGenerator added in v1.4.0

type TokenGenerator interface {
	GenerateUserToken(owner, description string, scope Scope, expires time.Time) (Token, error)
}

type TokenReader added in v1.4.0

type TokenReader interface {
	GetUserTokens(string) ([]Token, error)
}

type TokenRemover added in v1.4.0

type TokenRemover interface {
	DeleteUserToken(id string, u *User) error
}

type TokenValidator

type TokenValidator interface {
	ValidateToken(token string, user *User, claims *Claims, update bool) (string, error)
}

type User

type User struct {
	ID       string `json:"id" yaml:"id,omitempty" storm:"unique"`
	Username string `json:"username" yaml:"username" storm:"unique"`
	Name     string `json:"name" yaml:"name"`
	Password string `json:"password,omitempty" yaml:"password,omitempty"`
	Scope    Scope  `json:"scope" yaml:"scope"`
}

User contains user properties

func ContextUser added in v1.4.0

func ContextUser(c context.Context) *User

func LoadUsersFromFile added in v1.4.0

func LoadUsersFromFile(file string, fs afero.Fs) ([]*User, error)

func (User) Validate added in v1.4.0

func (u User) Validate() error

type UserLoginHandler

type UserLoginHandler interface {
	Login(string, string) (string, error)
}

UserLoginHandler is an access layer for user-related operations

type UserLogoutHandler

type UserLogoutHandler interface {
	Logout(User) error
}

type UserReadWriter added in v1.4.0

type UserReadWriter interface {
	UserReader
	UserWriter
}

type UserReader

type UserReader interface {
	GetUser(string, *User) error
	GetAllUsers() ([]*User, error)
}

type UserStore added in v1.4.0

type UserStore interface {
	SaveUser(User) error
	GetUser(string, *User) error
	GetUserByUsername(string, *User) error
	DeleteUser(string) error
	AllUsers(page, pageSize int) ([]*User, error)
}

type UserTokenStore added in v1.4.0

type UserTokenStore interface {
	GetUserToken(string, *Token) error
	GetUserTokenByValue(string, *Token) error
	GetUserTokens(user string) ([]Token, error)
	DeleteUserToken(id string) error
	SaveUserToken(Token) error
}

type UserWriter added in v1.4.0

type UserWriter interface {
	CreateUser(User) error
}

Directories

Path Synopsis
app

Jump to

Keyboard shortcuts

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