takrib

package
v0.0.0-...-304dadd Latest Latest
Warning

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

Go to latest
Published: Jun 11, 2019 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrGeneric is used for testing purposes and for errors handled later in the callstack
	ErrGeneric = errors.New("generic error")

	// ErrBadRequest (400) is returned for bad request (validation)
	ErrBadRequest = echo.NewHTTPError(400)

	// ErrUnauthorized (401) is returned when user is not authorized
	ErrUnauthorized = echo.ErrUnauthorized
)

Functions

This section is empty.

Types

type AccessRole

type AccessRole int

AccessRole represents access role type

const (
	// SuperAdminRole has all permissions
	SuperAdminRole AccessRole = 100

	// AdminRole has admin specific permissions
	AdminRole AccessRole = 110

	// CompanyAdminRole can edit company specific things
	CompanyAdminRole AccessRole = 120

	// LocationAdminRole can edit location specific things
	LocationAdminRole AccessRole = 130

	// UserRole is a standard user
	UserRole AccessRole = 200
)

type AuthToken

type AuthToken struct {
	Token        string `json:"token"`
	Expires      string `json:"expires"`
	RefreshToken string `json:"refresh_token"`
}

AuthToken holds authentication token details with refresh token

type AuthUser

type AuthUser struct {
	ID         int
	CompanyID  int
	LocationID int
	Username   string
	Email      string
	Role       AccessRole
}

AuthUser represents data stored in JWT token for user

type Base

type Base struct {
	ID        int       `json:"id"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
	DeletedAt time.Time `json:"deleted_at,omitempty" pg:",soft_delete"`
}

Base contains common fields for all tables

func (*Base) BeforeInsert

func (b *Base) BeforeInsert(_ context.Context, _ orm.DB) error

BeforeInsert hooks into insert operations, setting createdAt and updatedAt to current time

func (*Base) BeforeUpdate

func (b *Base) BeforeUpdate(_ context.Context, _ orm.DB) error

BeforeUpdate hooks into update operations, setting updatedAt to current time

type Company

type Company struct {
	Base
	Name      string     `json:"name"`
	Active    bool       `json:"active"`
	Locations []Location `json:"locations,omitempty"`
	Owner     User       `json:"owner"`
}

Company represents company model

type Event

type Event struct {
	Base
	Name                 string     `json:"name"`
	Email                string     `json:"email"`
	Description          string     `json:"description"`
	StartTime            time.Time  `json:"start_time"`
	EndTime              time.Time  `json:"end_time"`
	OrganizerName        string     `json:"organizer_name"`
	OrganizerDescription string     `json:"organizer_description"`
	Latitude             string     `json:"latitude"`
	Longitude            string     `json:"longitude"`
	State                string     `json:"state"`
	LogoURL              string     `json:"logo_url"`
	LargeImageURL        string     `json:"large_imageUrl"`
	CopyRight            string     `json:"copyright"`
	CodeOfConduct        string     `json:"code_of_conduct"`
	Speakers             []*Speaker `json:"-"`
	Sponsors             []*Sponsor `json:"-"`
}

Event represents event domain model

type FAQ

type FAQ struct {
	Base
	Question string `json:"question"`
	Answer   string `json:"answer"`
	FAQType  string `json:"type"`
}

FAQ represents FAQ domain model

type FeedBack

type FeedBack struct {
	Base
	Rating  string `json:"rating"`
	Comment string `json:"comment"`
}

FeedBack represents feedback domain model

type ListQuery

type ListQuery struct {
	Query string
	ID    int
}

ListQuery holds company/location data used for list db queries

type Location

type Location struct {
	Base
	Name      string `json:"name"`
	Active    bool   `json:"active"`
	Address   string `json:"address"`
	CompanyID int    `json:"company_id"`
}

Location represents company location model

type Logger

type Logger interface {
	// source, msg, error, params
	Log(echo.Context, string, string, error, map[string]interface{})
}

Logger represents logging interface

type Pagination

type Pagination struct {
	Limit  int `json:"limit,omitempty"`
	Offset int `json:"offset,omitempty"`
}

Pagination holds paginations data

type PaginationReq

type PaginationReq struct {
	Limit int `query:"limit"`
	Page  int `query:"page" validate:"min=0"`
}

PaginationReq holds pagination http fields and tags

func (*PaginationReq) Transform

func (p *PaginationReq) Transform() *Pagination

Transform checks and converts http pagination into database pagination model

type RBACService

type RBACService interface {
	User(echo.Context) *AuthUser
	EnforceRole(echo.Context, AccessRole) error
	EnforceUser(echo.Context, int) error
	EnforceCompany(echo.Context, int) error
	EnforceLocation(echo.Context, int) error
	AccountCreate(echo.Context, AccessRole, int, int) error
	IsLowerRole(echo.Context, AccessRole) error
}

RBACService represents role-based access control service interface

type RefreshToken

type RefreshToken struct {
	Token   string `json:"token"`
	Expires string `json:"expires"`
}

RefreshToken holds authentication token details

type Role

type Role struct {
	ID          AccessRole `json:"id"`
	AccessLevel AccessRole `json:"access_level"`
	Name        string     `json:"name"`
}

Role model

type Speaker

type Speaker struct {
	Base
	Name              string `json:"name"`
	ShortBiography    string `json:"short_biography"`
	LongBiography     string `json:"long_biography"`
	Gender            string `json:"gender"`
	Email             string `json:"email"`
	Mobile            string `json:"mobile"`
	Website           string `json:"website"`
	Twitter           string `json:"twitter"`
	Github            string `json:"github"`
	Linkedin          string `json:"linkedin"`
	Organisation      string `json:"organisation"`
	Position          string `json:"position"`
	Country           string `json:"country"`
	City              string `json:"city"`
	PhotoURL          string `json:"photo_url"`
	ThumbnailImageURL string `json:"thumbnail_image_url"`
}

Speaker represents speaker domain model

type Sponsor struct {
	Base
	Name        string `json:"name"`
	Description string `json:"description"`
	URL         string `json:"url"`
	LogoURL     string `json:"logo_url"`
	SponsorType string `json:"type"`
}

Sponsor represents sponsor domain model

type User

type User struct {
	Base
	FirstName          string     `json:"first_name"`
	LastName           string     `json:"last_name"`
	Username           string     `json:"username"`
	Password           string     `json:"-"`
	Email              string     `json:"email"`
	Mobile             string     `json:"mobile,omitempty"`
	Phone              string     `json:"phone,omitempty"`
	Address            string     `json:"address,omitempty"`
	Active             bool       `json:"active"`
	LastLogin          time.Time  `json:"last_login,omitempty"`
	LastPasswordChange time.Time  `json:"last_password_change,omitempty"`
	Token              string     `json:"-"`
	Role               *Role      `json:"role,omitempty"`
	RoleID             AccessRole `json:"-"`
	CompanyID          int        `json:"company_id"`
	LocationID         int        `json:"location_id"`
}

User represents user domain model

func (*User) ChangePassword

func (u *User) ChangePassword(hash string)

ChangePassword updates user's password related fields

func (*User) UpdateLastLogin

func (u *User) UpdateLastLogin(token string)

UpdateLastLogin updates last login field

Jump to

Keyboard shortcuts

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