gousers

package module
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Mar 31, 2021 License: MIT Imports: 17 Imported by: 0

README

gousers

A user library for go projects.

Documentation

Index

Constants

View Source
const (
	RoleAdmin      UserRole = "Admin"
	RoleSupervisor          = "Supervisor"
	RoleEditor              = "Editor"
)

Variables

View Source
var ErrorAuthenticating = errors.New("error authenticating")
View Source
var ErrorUpdateNotAuthorized = errors.New("update not authorized")
View Source
var ErrorUserNotOwner = errors.New("user does not own token")

Functions

func GenerateRandomBytes

func GenerateRandomBytes(n int) ([]byte, error)

func GenerateRandomURLSafeString

func GenerateRandomURLSafeString(n int) (string, error)

func SetToken

func SetToken(token string, r *http.Request)

func SetUser

func SetUser(usr User, r *http.Request)

func TokenFromContext

func TokenFromContext(r *http.Request) (string, bool)

Types

type ApiUserToken

type ApiUserToken struct {
	ID          string `json:"id"`
	Fingerprint string `json:"fingerprint"`
}

type CreateUser

type CreateUser struct {
	User
	Password string `json:"password"`
}

type MagicToken

type MagicToken struct {
	ID        string    `json:"id"`
	UserID    string    `json:"userId"`
	Token     string    `json:"token"`
	CreatedAt time.Time `json:"createdAt"`
}

type MagicTokenRepo

type MagicTokenRepo interface {
	Store(userID, token string) (string, error)
	Find(id string) (MagicToken, error)
	Delete(id string) error
}

func NewMagicTokenRepoGorm

func NewMagicTokenRepoGorm(db *gorm.DB) MagicTokenRepo

type MagicTokenRepoGorm

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

func (MagicTokenRepoGorm) Delete

func (m MagicTokenRepoGorm) Delete(id string) error

func (MagicTokenRepoGorm) Find

func (m MagicTokenRepoGorm) Find(id string) (MagicToken, error)

func (MagicTokenRepoGorm) Store

func (m MagicTokenRepoGorm) Store(userID, token string) (string, error)

type Messenger added in v0.2.0

type Messenger interface {
	RenderMessagePlain(w io.Writer, key string, data map[string]interface{}) error
	RenderMessageHtml(w io.Writer, key string, data map[string]interface{}) error
}

type ParamExtractor

type ParamExtractor func(r *http.Request, name string) string

type Renderer added in v0.2.0

type Renderer interface {
	SetErrorFlash(w http.ResponseWriter, r *http.Request, message string)
	SetSuccessFlash(w http.ResponseWriter, r *http.Request, message string)
	Redirect(w http.ResponseWriter, r *http.Request, url string)
	RenderPage(w http.ResponseWriter, r *http.Request, key string, data map[string]interface{})
	RenderJson(w http.ResponseWriter, data interface{})
	Get(r *http.Request, key string) (*sessions.Session, error)
}

type User

type User struct {
	ID        string    `json:"id"`
	Email     string    `json:"email"`
	Name      string    `json:"name"`
	Avatar    string    `json:"avatar"`
	Bio       string    `json:"bio"`
	UserRole  int       `json:"userRole"`
	CreatedAt time.Time `json:"createdAt"`
	UpdatedAt time.Time `json:"updatedAt"`
}

func FromContext

func FromContext(r *http.Request) (User, bool)

type UserHandler

type UserHandler struct {
	Renderer
	// contains filtered or unexported fields
}

func NewUserHandler

func NewUserHandler(renderer Renderer, userManager *UserManager, paramExtractor ParamExtractor, opts ...UserHandlerConfig) *UserHandler

func (*UserHandler) DeleteUserToken

func (uh *UserHandler) DeleteUserToken(w http.ResponseWriter, r *http.Request)

func (*UserHandler) DoLogin

func (uh *UserHandler) DoLogin(w http.ResponseWriter, r *http.Request)

func (*UserHandler) DoLogout

func (uh *UserHandler) DoLogout(w http.ResponseWriter, r *http.Request)

func (*UserHandler) DoRedeemLogin

func (uh *UserHandler) DoRedeemLogin(w http.ResponseWriter, r *http.Request)

func (*UserHandler) DoSetup

func (uh *UserHandler) DoSetup(w http.ResponseWriter, r *http.Request)

func (*UserHandler) DoUpdateUser

func (uh *UserHandler) DoUpdateUser(w http.ResponseWriter, r *http.Request)

func (*UserHandler) GetUserTokens

func (uh *UserHandler) GetUserTokens(w http.ResponseWriter, r *http.Request)

func (*UserHandler) ShowLogin

func (uh *UserHandler) ShowLogin(w http.ResponseWriter, r *http.Request)

func (*UserHandler) ShowSetup

func (uh *UserHandler) ShowSetup(w http.ResponseWriter, r *http.Request)

type UserHandlerConfig

type UserHandlerConfig func(*UserHandler) error

func AuthSuccessRoute

func AuthSuccessRoute(authSuccessRoute string) UserHandlerConfig

func LoginRoute

func LoginRoute(loginRoute string) UserHandlerConfig

func LoginTplKey

func LoginTplKey(loginTplKey string) UserHandlerConfig

func RememberMeCookieKey

func RememberMeCookieKey(rememberMeCookieKey string) UserHandlerConfig

func SessionKey

func SessionKey(sessionKey string) UserHandlerConfig

func SessionTokenKey

func SessionTokenKey(sessionTokenKey string) UserHandlerConfig

func SetupRoute

func SetupRoute(setupRoute string) UserHandlerConfig

func SetupTplKey

func SetupTplKey(setupTplKey string) UserHandlerConfig

type UserManager

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

func NewUserManager

func NewUserManager(userRepo UserRepo, userTokenRepo UserTokenRepo, magicTokenRepo MagicTokenRepo, adminRole int, msg Messenger, sender messaging.Sender, fromAddress string) *UserManager

func (*UserManager) CreateAdminUser

func (um *UserManager) CreateAdminUser(email, name, password string) (User, error)

func (*UserManager) DeleteToken

func (um *UserManager) DeleteToken(user User, token string) error

func (*UserManager) DeleteTokenById

func (um *UserManager) DeleteTokenById(user User, tokenID string) error

func (*UserManager) FindById

func (um *UserManager) FindById(id string) (User, error)

func (*UserManager) InitiateLogin

func (um *UserManager) InitiateLogin(email string) error

func (*UserManager) ListUserTokens

func (um *UserManager) ListUserTokens(userID string) ([]ApiUserToken, error)

func (*UserManager) LoadUserByToken

func (um *UserManager) LoadUserByToken(token string) (User, error)

func (*UserManager) RedeemLogin

func (um *UserManager) RedeemLogin(token, mtID, fingerprint string) (User, UserToken, error)

func (*UserManager) TryLogin

func (um *UserManager) TryLogin(email, password, fingerprint string) (User, UserToken, error)

func (*UserManager) UpdateUser

func (um *UserManager) UpdateUser(currentUser User, r io.Reader) error

func (*UserManager) UsersCount

func (um *UserManager) UsersCount() (int64, error)

type UserRepo

type UserRepo interface {
	Store(createUser CreateUser) (User, error)
	FindUser(id string) (User, error)
	GetForLogin(email string) (CreateUser, error)
	GetCount() (int64, error)
	ListUsers() ([]User, error)
	UpdateUser(user User) error
}

func NewUserRepoGorm

func NewUserRepoGorm(db *gorm.DB) UserRepo

type UserRepoGorm

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

func (*UserRepoGorm) FindUser

func (u *UserRepoGorm) FindUser(id string) (User, error)

func (*UserRepoGorm) GetCount

func (u *UserRepoGorm) GetCount() (int64, error)

func (*UserRepoGorm) GetForLogin

func (u *UserRepoGorm) GetForLogin(email string) (CreateUser, error)

func (*UserRepoGorm) ListUsers

func (u *UserRepoGorm) ListUsers() ([]User, error)

func (*UserRepoGorm) Store

func (u *UserRepoGorm) Store(createUser CreateUser) (User, error)

func (*UserRepoGorm) UpdateUser

func (u *UserRepoGorm) UpdateUser(user User) error

type UserRole

type UserRole string

func (UserRole) IsValid

func (ur UserRole) IsValid() error

func (*UserRole) UnmarshalJSON

func (ur *UserRole) UnmarshalJSON(b []byte) error

type UserToken

type UserToken struct {
	ID              string `json:"id"`
	UserID          string `json:"userId"`
	Token           string `json:"token"`
	Fingerprint     string `json:"fingerprint"`
	RememberMeToken string `json:"rememberMeToken"`
}

type UserTokenRepo

type UserTokenRepo interface {
	Store(userToken UserToken) (UserToken, error)
	FindUserToken(token string) (UserToken, error)
	FindById(tokenID string) (UserToken, error)
	ListUserTokens(userID string) ([]ApiUserToken, error)
	DeleteToken(token string) error
	DeleteTokenById(tokenID string) error
}

func NewUserTokenRepoGorm

func NewUserTokenRepoGorm(db *gorm.DB) UserTokenRepo

type UserTokenRepoGorm

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

func (*UserTokenRepoGorm) DeleteToken

func (u *UserTokenRepoGorm) DeleteToken(token string) error

func (*UserTokenRepoGorm) DeleteTokenById

func (u *UserTokenRepoGorm) DeleteTokenById(tokenID string) error

func (*UserTokenRepoGorm) FindById

func (u *UserTokenRepoGorm) FindById(tokenID string) (UserToken, error)

func (*UserTokenRepoGorm) FindUserToken

func (u *UserTokenRepoGorm) FindUserToken(token string) (UserToken, error)

func (*UserTokenRepoGorm) ListUserTokens

func (u *UserTokenRepoGorm) ListUserTokens(userID string) ([]ApiUserToken, error)

func (*UserTokenRepoGorm) Store

func (u *UserTokenRepoGorm) Store(userToken UserToken) (UserToken, error)

Jump to

Keyboard shortcuts

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