Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
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 = 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 ¶
BeforeInsert hooks into insert operations, setting createdAt and 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 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 ¶
Pagination holds paginations data
type PaginationReq ¶
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 ¶
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 ¶
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 ¶
ChangePassword updates user's password related fields
func (*User) UpdateLastLogin ¶
UpdateLastLogin updates last login field