Help us shape the future of Go! Take the 2026 Go Developer Survey

models

package
v0.2.6 Latest Latest
Warning

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

Go to latest
Published: Oct 6, 2020 License: GPL-3.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const SelfUser = "self"

SelfUser is a special username meaning the currently authenticated user

Variables

View Source
var (
	// ErrUserNotFound indicates the user attempted to perform an API call with a username that does not exist
	ErrUserNotFound = errors.New("user does not exist")
	// ErrUsernameExists indicates another user with the provided username exists
	ErrUsernameExists = errors.New("user with that username already exists")
	// ErrEmailExists indicates another user with the provided email exists
	ErrEmailExists = errors.New("user with that email already exists")
	// ErrLoginDisabled indicates login is disabled for this user
	ErrLoginDisabled = errors.New("login is disabled for this user")
	// ErrTokenRequired indicates a JWT is required for this endpoint
	ErrTokenRequired = errors.New("a valid token is required for this endpoint")
	// ErrAdminRequired indicates that an admin user is required
	ErrAdminRequired = errors.New("only admin users can make use of this endpoint")
	// ErrTokenExpired indicates that a user's token has expired
	ErrTokenExpired = errors.New("your token has expired")
	// ErrIncorrectPassword indicates the provide password was incorrect
	ErrIncorrectPassword = errors.New("incorrect password")
	// ErrUnverified indicates the user's email is not verified
	ErrUnverified = errors.New("email address is not verified")
	// ErrVerified indicates the user's email is already verified
	ErrVerified = errors.New("email address is already verified")
	// ErrOtherVerification indicates the user attempted to verify another user
	ErrOtherVerification = errors.New("can only verify own account")
	// ErrOtherReset indicates the user attempted to reset the password of another user
	ErrOtherReset = errors.New("can only reset password for own account")
	// ErrReservedUsername indicates a user attempted to use a reserved username
	ErrReservedUsername = errors.New("username is reserved, contact support if this username previously belonged to you")
	// ErrPasswordRequired indicates a user attempt to reset their password without providing the new password
	ErrPasswordRequired = errors.New("password is required")
)
View Source
var (
	// AudAuth is the JWT audience for regular authentication tokens
	AudAuth = "auth"
	// AudVerification is the JWT audience for email verification tokens
	AudVerification = "verification"
	// AudPasswordReset is the JWT audience for password reset tokens
	AudPasswordReset = "password_reset"
)

Functions

func ErrToStatus

func ErrToStatus(err error) int

ErrToStatus converts an error to a HTTP status code

Types

type EmailClaims

type EmailClaims struct {
	jwt.StandardClaims
	Version uint `json:"version"`
}

EmailClaims represents claims in an emailed JWT

type User

type User struct {
	ID uint `json:"id" gorm:"primaryKey"`

	// User-modifiable
	Username  string `json:"username" gorm:"uniqueIndex"`
	Email     string `json:"email" gorm:"uniqueIndex"`
	Password  string `json:"password,omitempty"`
	FirstName string `json:"first_name"`
	LastName  string `json:"last_name"`

	// Only admin can set
	Verified bool      `json:"verified"`
	Renewed  time.Time `json:"renewed"`
	IsAdmin  bool      `json:"is_admin"`

	// Set only internally
	TokenVersion uint     `json:"-"`
	Meta         UserMeta `json:"meta" gorm:"embedded"`
}

User represents a Netsoc member

func (*User) BeforeCreate

func (u *User) BeforeCreate(tx *gorm.DB) error

BeforeCreate is called by GORM before creating the User

func (*User) BeforeUpdate

func (u *User) BeforeUpdate(tx *gorm.DB) error

BeforeUpdate is called by GORM before updating the User

func (*User) CheckPassword

func (u *User) CheckPassword(password string) error

CheckPassword validates a password against the stored hash

func (*User) Clean

func (u *User) Clean()

Clean scrubs fields which should not be visible in a returned object

func (*User) GenerateEmailToken

func (u *User) GenerateEmailToken(key []byte, issuer, audience string, validity time.Duration) (string, error)

GenerateEmailToken generates a JWT for sending by email the user

func (*User) GenerateToken

func (u *User) GenerateToken(key []byte, issuer string, expiry time.Time) (string, error)

GenerateToken generates a JWT for the user

func (*User) NonAdminSaveOK

func (u *User) NonAdminSaveOK(reservedUsernames []string) error

NonAdminSaveOK returns true if a partial User (patch) can be saved with a non-admin account

type UserClaims

type UserClaims struct {
	jwt.StandardClaims
	IsAdmin bool `json:"is_admin"`
	Version uint `json:"version"`
}

UserClaims represents claims in an auth JWT

type UserMeta

type UserMeta struct {
	Created time.Time      `json:"created" gorm:"autoCreateTime"`
	Updated time.Time      `json:"updated" gorm:"autoUpdateTime"`
	Deleted gorm.DeletedAt `json:"-" gorm:"index"`
}

UserMeta holds some GORM metadata about the User

Jump to

Keyboard shortcuts

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