Documentation ¶
Index ¶
- Constants
- type AdminConfig
- type Categories
- type Category
- type DBMap
- type Editor
- type Field
- type FieldConditionalLogic
- type FieldGroup
- type FieldGroups
- type FieldLayout
- type FieldLocation
- type FieldValue
- type FieldWrapper
- type Fields
- type Form
- type FormField
- type FormFields
- type FormLabel
- type FormSubmission
- type FormSubmissions
- type FormValues
- type Forms
- type Layout
- type Layouts
- type Media
- type MediaConfig
- type MediaItems
- type MediaSize
- type MediaSizeOptions
- type MediaSizes
- type Mime
- type OptionDB
- type Options
- type OptionsDB
- type OptionsDBMap
- type PasswordReset
- type Post
- type PostCreate
- type PostData
- type PostDatum
- type PostFacebook
- type PostField
- type PostFields
- type PostMeta
- type PostOptions
- type PostSeo
- type PostTemplate
- type PostTwitter
- type PostType
- type Posts
- type Redirect
- type Redirects
- type Resource
- type Resources
- type Role
- type Roles
- type Site
- type Template
- type Templates
- type Theme
- type ThemeConfig
- type Themes
- type User
- type UserCreate
- type UserPart
- type UserPasswordReset
- type Users
- type UsersParts
Constants ¶
const ( HomeType = "home" PageType = "page" SingleType = "single" ArchiveType = "archive" CategoryType = "category" )
Use for PostType
const ( // The default banned role ID. BannedRoleID = 1 // The default contributor role ID. ContributorRoleID = 2 // The default author role ID. AuthorRoleID = 3 // The default editor role ID. EditorRoleID = 4 // The default admin role ID. AdminRoleID = 5 // The default owner role ID. OwnerRoleID = 6 )
const (
// WebPExtension defines the extension used for webp images.
WebPExtension = ".webp"
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AdminConfig ¶
type Category ¶
type Category struct { Id int `sqlb:"id,skipAll" db:"id" json:"id"` //nolint UUID uuid.UUID `sqlb:"uuid" db:"uuid" json:"uuid"` Slug string `sqlb:"slug" db:"slug" json:"slug" binding:"required,max=150"` Name string `sqlb:"name" db:"name" json:"name" binding:"required,max=150"` Description *string `sqlb:"description" db:"description" json:"description" binding:"omitempty,max=500"` Resource string `sqlb:"resource" db:"resource" json:"resource" binding:"required,max=150"` ParentId *int `sqlb:"parent_id" db:"parent_id" json:"parent_id" binding:"omitempty,numeric"` //nolint ArchiveId *int `sqlb:"archive_id" db:"archive_id" json:"archive_id" binding:"omitempty,numeric"` //nolint CreatedAt time.Time `sqlb:"created_at,autoCreateTime" db:"created_at" json:"created_at"` UpdatedAt time.Time `sqlb:"updated_at,autoUpdateTime" db:"updated_at" json:"updated_at"` }
Category defines the groups used for categorising individual posts.
type DBMap ¶
type DBMap map[string]interface{}
DBMap defines the helper for unmarshalling into a map directly from the database.
type Editor ¶
type Editor struct { Modules []string `yaml:"modules" json:"modules"` Options map[string]interface{} `yaml:"options" json:"options"` }
Editor defines editor options for the admin interface.
type Field ¶
type Field struct { UUID uuid.UUID `json:"uuid"` Label string `json:"label"` Name string `json:"name"` Type string `json:"type"` Instructions string `json:"instructions"` Required bool `json:"required"` Logic [][]FieldConditionalLogic `json:"conditional_logic"` Wrapper *FieldWrapper `json:"wrapper"` Options map[string]interface{} `json:"options"` SubFields []Field `json:"sub_fields,omitempty"` Layouts map[string]FieldLayout `json:"layouts,omitempty"` }
Field defines an individual field type.
type FieldConditionalLogic ¶
type FieldConditionalLogic struct { Field string `json:"field"` Operator string `json:"operator"` Value string `json:"value"` }
FieldConditionalLogic defines the logic used to process a field and if one can be shown.
type FieldGroup ¶
type FieldGroup struct { UUID uuid.UUID `json:"uuid"` Title string `json:"title"` Fields []Field `json:"fields,omitempty"` Locations [][]FieldLocation `json:"location,omitempty"` }
FieldGroup defines a group of JSON fields.
type FieldLayout ¶
type FieldLayout struct { UUID uuid.UUID `json:"uuid"` Name string `json:"name"` Label string `json:"label"` Display string `json:"display"` SubFields []Field `json:"sub_fields,omitempty"` }
FieldLayout defines the structure of fields for individual pages and resources.
type FieldLocation ¶
FieldLocation defines where the FieldGroup will appear.
type FieldValue ¶
type FieldValue string
FieldValue defines the original value of the field in string form.
func (FieldValue) Int ¶
func (f FieldValue) Int() (int, error)
Int
Converts the field value to a string.
Returns errors.INVALID if the string convert failed.
func (FieldValue) IsEmpty ¶
func (f FieldValue) IsEmpty() bool
IsEmpty
Determines if the field is an empty string.
func (FieldValue) Slice ¶
func (f FieldValue) Slice() []string
Slice
Returns a slice of split field values by comma.
func (FieldValue) String ¶
func (f FieldValue) String() string
String
Stringer on the FieldValue type.
type FieldWrapper ¶
type FieldWrapper struct {
Width int `json:"width"`
}
FieldWrapper defines the container for field objects on the front end.
type Form ¶
type Form struct { Id int `db:"id" json:"id" binding:"numeric"` //nolint UUID uuid.UUID `db:"uuid" json:"uuid"` Name string `db:"name" json:"name" binding:"required,max=500"` Fields FormFields `db:"fields" json:"fields"` Submissions FormSubmissions `db:"-" json:"submissions"` EmailSend types.BitBool `db:"email_send" json:"email_send"` EmailMessage string `db:"email_message" json:"email_message"` EmailSubject string `db:"email_subject" json:"email_subject"` Recipients string `db:"recipients" json:"recipients"` StoreDB types.BitBool `db:"store_db" json:"store_db"` Body interface{} `db:"-" json:"-"` CreatedAt time.Time `db:"created_at" json:"created_at"` UpdatedAt time.Time `db:"updated_at" json:"updated_at"` }
Form defines the data for sending data to the API from the client side.
func (*Form) GetRecipients ¶
GetRecipients Splits the recipients string and returns a slice of email addresses.
type FormField ¶
type FormField struct { Id int `db:"id" json:"id" binding:"numeric"` //nolint UUID uuid.UUID `db:"uuid" json:"uuid"` FormId int `db:"form_id" json:"-"` //nolint Key string `db:"key" json:"key" binding:"required"` Label FormLabel `db:"label" json:"label" binding:"required"` Type string `db:"type" json:"type" binding:"required"` Validation string `db:"validation" json:"validation"` Required types.BitBool `db:"required" json:"required"` Options DBMap `db:"options" json:"options"` }
FormField defines a individual field from the pivot table.
type FormLabel ¶
type FormLabel string
FormLabel defines the label/name for form fields.
type FormSubmission ¶
type FormSubmission struct { Id int `db:"id" json:"id" binding:"numeric"` //nolint UUID uuid.UUID `db:"uuid" json:"uuid"` FormId int `db:"form_id" json:"form_id"` //nolint Fields FormValues `db:"fields" json:"fields"` IPAddress string `db:"ip_address" json:"ip_address"` UserAgent string `db:"user_agent" json:"user_agent"` SentAt *time.Time `db:"sent_at" json:"sent_at"` }
FormSubmission defines a submission of the of a form.
type FormSubmissions ¶
type FormSubmissions []FormSubmission
FormSubmissions represents the slice of FormSubmission's.
type FormValues ¶
type FormValues map[string]interface{}
FormValues - TODO
func (FormValues) Scan ¶
func (f FormValues) Scan(value interface{}) error
Scan
Scanner for FormValues. unmarshal the FormValues when the entity is pulled from the database.
type Media ¶
type Media struct { Id int `db:"id" json:"id"` //nolint UUID uuid.UUID `db:"uuid" json:"uuid"` Url string `db:"url" json:"url"` //nolint Title string `db:"title" json:"title"` Alt string `db:"alt" json:"alt"` Description string `db:"description" json:"description"` FilePath string `db:"file_path" json:"-"` FileSize int64 `db:"file_size" json:"file_size"` FileName string `db:"file_name" json:"file_name"` Sizes MediaSizes `db:"sizes" json:"sizes"` Mime Mime `db:"mime" json:"mime"` UserId int `db:"user_id" json:"user_id"` //nolint CreatedAt time.Time `db:"created_at" json:"created_at"` UpdatedAt time.Time `db:"updated_at" json:"updated_at"` }
Media defines the core media entity for Verbis.
func (*Media) IsOrganiseYearMonth ¶
IsOrganiseYearMonth
Returns a bool indicating if the file has been saved a year month path, i.e 2020/01.
func (*Media) PossibleFiles ¶
PossibleFiles
Returns a the possible files saved to the system after the files have been uploaded. Note: This does not include the upload path.
func (*Media) UploadPath ¶
UploadPath
Returns the upload path of the media item without the storage uploads path, for example: 2020/01/photo.jpg
type MediaConfig ¶
type MediaSize ¶
type MediaSize struct { UUID uuid.UUID `db:"uuid" json:"uuid"` Url string `db:"url" json:"url"` //nolint Name string `db:"name" json:"name"` SizeName string `db:"size_name" json:"size_name"` FileSize int64 `db:"file_size" json:"file_size"` Width int `db:"width" json:"width"` Height int `db:"height" json:"height"` Crop bool `db:"crop" json:"crop"` }
MediaSize defines an individual media size that's stored in the database.
type MediaSizeOptions ¶
type MediaSizeOptions struct { Name string `db:"name" json:"name" binding:"required,numeric"` Width int `db:"width" json:"width" binding:"required,numeric"` Height int `db:"height" json:"height" binding:"required,numeric"` Crop bool `db:"crop" json:"crop"` }
MediaSizeOptions defines the options for saving different image sizes when uploaded.
type MediaSizes ¶
MediaSizes defines the map of MediaSizes, by key value pair.
func (MediaSizes) Scan ¶
func (m MediaSizes) Scan(value interface{}) error
Scan
Scanner for MediaSize. unmarshal the MediaSize when the entity is pulled from the database.
type Mime ¶
type Mime string
Mime TODO
type OptionDB ¶
type OptionDB struct { ID int `db:"id" json:"id"` Name string `db:"option_name" json:"option_name" binding:"required"` Value json.RawMessage `db:"option_value" json:"option_value" binding:"required"` }
OptionDB represents a singular entity of an option that's stored in the database.
type Options ¶
type Options struct { // Site SiteTitle string `json:"site_title" binding:"required"` SiteDescription string `json:"site_description" binding:"required"` SiteLogo string `json:"site_logo" binding:"required"` SiteUrl string `json:"site_url" binding:"required,url"` //nolint // Theme ActiveTheme string `json:"active_theme" binding:"required"` Homepage int `json:"homepage"` // General GeneralLocale string `json:"general_locale" binding:"required"` // Contact ContactEmail string `json:"contact_email" binding:"omitempty,email"` ContactTelephone string `json:"contact_telephone"` ContactAddress string `json:"contact_address"` // Social SocialFacebook string `json:"social_facebook" binding:"omitempty,url"` SocialTwitter string `json:"social_twitter" binding:"omitempty,url"` SocialInstagram string `json:"social_instagram" binding:"omitempty,url"` SocialLinkedIn string `json:"social_linkedin" binding:"omitempty,url"` SocialYoutube string `json:"social_youtube" binding:"omitempty,url"` SocialPinterest string `json:"social_pinterest" binding:"omitempty,url"` // Code Injection CodeInjectionHead string `json:"codeinjection_head" binding:"omitempty"` CodeInjectionFoot string `json:"codeinjection_foot" binding:"omitempty"` // Meta MetaTitle string `json:"meta_title" binding:"omitempty"` MetaDescription string `json:"meta_description" binding:"omitempty"` MetaFacebookTitle string `json:"meta_facebook_title" binding:"omitempty"` MetaFacebookDescription string `json:"meta_facebook_description" binding:"omitempty"` MetaFacebookImageId int `json:"meta_facebook_image_id" binding:"numeric"` //nolint MetaTwitterTitle string `json:"meta_twitter_title" binding:"omitempty"` MetaTwitterDescription string `json:"meta_twitter_description" binding:"omitempty"` MetaTwitterImageID int `json:"meta_twitter_image_id" binding:"omitempty,numeric"` // SEO SeoPrivate bool `json:"seo_private"` SeoSitemapServe bool `json:"seo_sitemap_serve"` SeoSitemapRedirects bool `json:"seo_sitemap_redirects"` SeoSitemapExcluded []string `json:"seo_sitemap_excluded"` SeoEnforceSlash bool `json:"seo_enforce_slash"` SeoRobotsServe bool `json:"seo_robots_serve"` SeoRobots string `json:"seo_robots"` // Breadcrumbs BreadcrumbsEnable bool `json:"breadcrumbs_enable"` BreadcrumbsTitle string `json:"breadcrumbs_title"` BreadcrumbsSeparator string `json:"breadcrumbs_separator"` BreadcrumbsHomepageText string `json:"breadcrumbs_homepage_text"` BreadcrumbsHideHomePage bool `json:"breadcrumbs_hide_homepage"` // Media MediaCompression int `json:"media_compression" binding:"required"` MediaConvertWebP bool `json:"media_convert_webp"` MediaServeWebP bool `json:"media_serve_webp"` MediaUploadMaxSize int64 `json:"media_upload_max_size" binding:"numeric"` MediaUploadMaxWidth int64 `json:"media_upload_max_width" binding:"numeric"` MediaUploadMaxHeight int64 `json:"media_upload_max_height" binding:"numeric"` MediaOrganiseDate bool `json:"media_organise_year_month"` MediaSizes MediaSizes `json:"media_images_sizes"` // Server Cache CacheServerTemplates bool `json:"cache_server_templates"` CacheServerFields bool `json:"cache_server_field_layouts"` // Frontend Caching CacheFrontend bool `json:"cache_frontend"` CacheFrontendRequest string `json:"cache_frontend_request"` CacheFrontendSeconds int64 `json:"cache_frontend_seconds"` CacheFrontendExtension []string `json:"cache_frontend_extensions"` // Gzip Gzip bool `json:"gzip"` GzipCompression string `json:"gzip_compression"` GzipUsePaths bool `json:"gzip_use_paths"` GzipExcludedExtensions []string `json:"gzip_excluded_extensions"` GzipExcludedPaths []string `json:"gzip_excluded_paths"` // Minify MinifyHTML bool `json:"minify_html"` MinifyJS bool `json:"minify_js"` MinifyCSS bool `json:"minify_css"` MinifySVG bool `json:"minify_svg"` MinifyJSON bool `json:"minify_json"` MinifyXML bool `json:"minify_xml"` // Forms FormSendEmailAddresses []string `json:"form_send_email_addresses"` FormFromEmailAddress string `json:"form_from_email_addresses"` FormIncludeLogo bool `json:"form_email_include_logo"` FormEmailDisclosure string `json:"form_email_disclosure"` }
Options defines the main system options defined in the store this is used throughout the application for user defined choices.
type OptionsDBMap ¶
type OptionsDBMap map[string]interface{}
OptionsDBMap defines the map of key value pair options that are stored in the database, used for marshalling and unmarshalling into the Options struct.
type PasswordReset ¶
type PasswordReset struct { Id int `db:"id" json:"-"` //nolint Email string `db:"email" json:"email" binding:"required,email"` Token string `db:"token" json:"token" binding:"required,email"` CreatedAt time.Time `db:"created_at" json:"created_at"` }
PasswordReset defines the struct for interacting with the password resets table.
type Post ¶
type Post struct { Id int `db:"id" json:"id" binding:"numeric"` //nolint UUID uuid.UUID `db:"uuid" json:"uuid"` Slug string `db:"slug" json:"slug" binding:"required,max=150"` Permalink string `db:"-" json:"permalink"` Title string `db:"title" json:"title" binding:"required,max=500"` Status string `db:"status" json:"status,omitempty"` Resource string `db:"resource" json:"resource"` PageTemplate string `db:"page_template" json:"page_template,omitempty" binding:"max=150"` PageLayout string `db:"layout" json:"layout,omitempty" binding:"required,max=150"` CodeInjectionHead string `db:"codeinjection_head" json:"codeinjection_head,omitempty"` CodeInjectionFoot string `db:"codeinjection_foot" json:"codeinjection_foot,omitempty"` UserId int `db:"user_id" json:"-"` //nolint IsArchive types.BitBool `db:"archive" json:"archive"` PublishedAt *time.Time `db:"published_at" json:"published_at"` CreatedAt time.Time `db:"created_at" json:"created_at"` UpdatedAt time.Time `db:"updated_at" json:"updated_at"` SeoMeta PostOptions `db:"options" json:"options"` }
Post defines the main page entity of Verbis.
type PostCreate ¶
type PostCreate struct { Post Author int `json:"author,omitempty" binding:"numeric"` Category *int `json:"category,omitempty" binding:"omitempty,numeric"` Fields PostFields `json:"fields,omitempty"` }
PostCreate defines the data when a post is created.
type PostDatum ¶
type PostDatum struct { Post `json:"post"` Author UserPart `json:"author"` Category *Category `json:"category"` Layout []FieldGroup `json:"layout,omitempty"` Fields PostFields `json:"fields,omitempty"` Type PostType `json:"type"` }
PostDatum defines the post including author, category, layout and field information.
func (*PostDatum) IsHomepage ¶
IsHomepage
Determines if the post is the homepage by comparing the domain options.
func (*PostDatum) Tpl ¶
func (p *PostDatum) Tpl() PostTemplate
Tpl
Converts a PostDatum to a PostTemplate and hides layouts.
type PostFacebook ¶
type PostFacebook struct { Title string `json:"title,omitempty"` Description string `json:"description,omitempty"` ImageId int `json:"image_id,omitempty" binding:"numeric"` //nolint }
PostFacebook defines the opengraph meta information used when calling the VerbisHeader.
type PostField ¶
type PostField struct { PostId int `db:"post_id" json:"-"` //nolint UUID uuid.UUID `db:"uuid" json:"uuid" binding:"required"` Type string `db:"type" json:"type"` Name string `db:"name" json:"name"` Key string `db:"field_key" json:"key"` Value interface{} `db:"-" json:"-"` OriginalValue FieldValue `db:"value" json:"value"` }
PostField defines the individual field that is attached to a post.
func (*PostField) IsValueJSON ¶
IsValueJSON
Determines if the value is valid JSON and has the key words - key and value.
func (*PostField) TypeIsInSlice ¶
TypeIsInSlice
Determines if the given field values is in the slice passed.
type PostMeta ¶
type PostMeta struct { Title string `json:"title,omitempty"` Description string `json:"description,omitempty"` Twitter PostTwitter `json:"twitter,omitempty"` Facebook PostFacebook `json:"facebook,omitempty"` }
PostMeta defines the global meta information for the post used when calling the VerbisHeader.
type PostOptions ¶
type PostOptions struct { Id int `json:"-"` //nolint PostId int `json:"-" binding:"required|numeric"` //nolint Meta *PostMeta `db:"meta" json:"meta"` Seo *PostSeo `db:"seo" json:"seo"` EditLock string `db:"edit_lock" json:"edit_lock"` }
PostOptions defines the global post options that includes post meta and post seo information.
type PostSeo ¶
type PostSeo struct { Private bool `json:"private"` ExcludeSitemap bool `json:"exclude_sitemap"` Canonical string `json:"canonical"` }
PostSeo defines the options for Seo on the post, including if the post is indexable, if it should appear in the sitemap and any canonical overrides.
type PostTemplate ¶
PostTemplate defines the Post data for templates when they are used in the front end.
type PostTwitter ¶
type PostTwitter struct { Title string `json:"title,omitempty"` Description string `json:"description,omitempty"` ImageId int `json:"image_id,omitempty" binding:"numeric"` //nolint }
PostTwitter defines the twitter meta information used when calling the VerbisHeader.
type PostType ¶
type PostType struct { PageType string Data interface{} }
PostType defines the type of page that has been served, It can be an archive, single, home, page or any type defined by the constants below.
type Redirect ¶
type Redirect struct { Id int `db:"id" json:"id"` //nolint From string `db:"from_path" json:"from_path" binding:"required"` To string `db:"to_path" json:"to_path" binding:"required"` Code int `db:"code" json:"code" binding:"required,numeric"` CreatedAt time.Time `db:"created_at" json:"created_at"` UpdatedAt time.Time `db:"updated_at" json:"updated_at"` }
Redirects defines the data used for redirecting http requests.
type Resource ¶
type Resource struct { Name string `yaml:"name" json:"name"` FriendlyName string `yaml:"friendly_name" json:"friendly_name"` SingularName string `yaml:"singular_name" json:"singular_name"` Slug string `yaml:"slug" json:"slug"` Icon string `yaml:"icon" json:"icon"` Hidden bool `yaml:"hidden" json:"hidden"` HideCategorySlug bool `yaml:"hide_category_slug" json:"hide_category_slug"` AvailableTemplates []string `yaml:"available_templates" json:"available_templates"` }
Resource defines an individual resource or custom post type declared in the theme config.
type Role ¶
type Role struct { Id int `db:"id" json:"id" binding:"required,numeric"` //nolint Name string `db:"name" json:"name"` Description string `db:"description" json:"description"` }
Role defines the role a user has, from the pivot table.
type Site ¶
type Site struct { Title string `json:"title"` Description string `json:"description"` Logo string `json:"logo"` Url string `json:"url"` //nolint Version string `json:"version"` RemoteVersion string `json:"remote_version"` HasUpdate bool `json:"has_update"` }
Site defines the global Verbis object that is used in the public facing API (without credentials). The version is the version of Verbis the application is currently running.
type Template ¶
Template defines a page template that are available from the theme's template directory.
type Theme ¶
type Theme struct { Title string `yaml:"title" json:"title"` Description string `yaml:"description" json:"description"` Version string `yaml:"version" json:"version"` Screenshot string `yaml:"-" json:"screenshot"` Name string `yaml:"-" json:"name"` Active bool `yaml:"-" json:"active"` }
Theme defines the information for the currently active theme.
type ThemeConfig ¶
type ThemeConfig struct { Theme Theme `yaml:"theme" json:"theme"` Resources Resources `yaml:"resources" json:"resources"` AssetsPath string `yaml:"assets_path" json:"assets_path"` FileExtension string `yaml:"file_extension" json:"file_extension"` TemplateDir string `yaml:"template_dir" json:"template_dir"` LayoutDir string `yaml:"layout_dir" json:"layout_dir"` Admin AdminConfig `yaml:"admin" json:"admin"` Media MediaConfig `yaml:"media" json:"media"` Editor Editor `yaml:"editor" json:"editor"` }
ThemeConfig defines the data used for unmarshalling the config.yml file found in the theme's directory.
type User ¶
type User struct { UserPart Password string `db:"password" json:"password,omitempty" binding:""` Token string `db:"token" json:"token,omitempty"` TokenLastUsed *time.Time `db:"token_last_used" json:"token_last_used,omitempty"` }
User defines the main author entity for Verbis.
func (*User) HideCredentials ¶
HideCredentials
Returns a new UserPart, hiding any sensitive information such as passwords and tokens.
func (*User) HidePassword ¶
func (u *User) HidePassword()
HidePassword
Sets the users password to an empty string.
type UserCreate ¶
type UserCreate struct { User Password string `db:"password" json:"password,omitempty" binding:"required,min=8,max=60"` ConfirmPassword string `json:"confirm_password,omitempty" binding:"required,eqfield=Password,required"` }
PostCreate defines the data when a user is created.
type UserPart ¶
type UserPart struct { Id int `db:"id" json:"id"` //nolint UUID uuid.UUID `db:"uuid" json:"uuid"` FirstName string `db:"first_name" json:"first_name" binding:"required,max=150,alpha"` LastName string `db:"last_name" json:"last_name" binding:"required,max=150,alpha"` Email string `db:"email" json:"email" binding:"required,email,max=255"` Website string `db:"website" json:"website,omitempty" binding:"omitempty,url"` Facebook string `db:"facebook" json:"facebook"` Twitter string `db:"twitter" json:"twitter"` Linkedin string `db:"linked_in" json:"linked_in"` Instagram string `db:"instagram" json:"instagram"` Biography string `db:"biography" json:"biography"` Role Role `db:"roles" json:"role"` ProfilePictureID *int `db:"profile_picture_id" json:"profile_picture_id"` EmailVerifiedAt *time.Time `db:"email_verified_at" json:"email_verified_at"` CreatedAt time.Time `db:"created_at" json:"created_at"` UpdatedAt time.Time `db:"updated_at" json:"updated_at"` }
UserPart defines the User with non-sensitive information.
type UserPasswordReset ¶
type UserPasswordReset struct { DBPassword string `json:"-" binding:""` CurrentPassword string `json:"current_password" binding:"required,password"` NewPassword string `json:"new_password" binding:"required,min=8,max=60"` ConfirmPassword string `json:"confirm_password" binding:"eqfield=NewPassword,required"` }
UserPasswordReset defines the data for when a user resets their password.
type Users ¶
type Users []User
Users represents the slice of User's.
func (Users) HideCredentials ¶
func (u Users) HideCredentials() UsersParts
HideCredentials
Returns a slice of UserParts from the given input, hiding any sensitive information such as passwords and tokens.