Documentation ¶
Index ¶
- Variables
- func GenerateSecretKey() string
- type APIAuthorize
- type AssignUnassignTag
- type ChangeUserEmail
- type ChangeUserRole
- type Comment
- type CompleteProfile
- type CreateEditOAuthConfig
- type CreateEditTag
- type CreateTenant
- type CreateUser
- type DeleteComment
- type DeletePost
- type DeleteTag
- type EditComment
- type EmailVerification
- type EmailVerificationKind
- type Event
- type ImageUpload
- type ImageUploadData
- type InviteUsers
- type NewComment
- type NewEmailVerification
- type NewPost
- type Notification
- type NotificationChannel
- type NotificationEvent
- type OAuthConfig
- type OriginalPost
- type Post
- type PostResponse
- type PostStatus
- type Role
- type SetResponse
- type SignInByEmail
- type SystemSettings
- type Tag
- type Tenant
- type UpdatePost
- type UpdateTenantAdvancedSettings
- type UpdateTenantPrivacy
- type UpdateTenantSettings
- type UpdateUserSettings
- type Upload
- type User
- type UserInvitation
- type UserProvider
Constants ¶
This section is empty.
Variables ¶
var ( //SubscriberInactive means that the user cancelled the subscription SubscriberInactive = 0 //SubscriberActive means that the subscription is active SubscriberActive = 1 )
var ( //NotificationEventNewPost is triggered when a new post is posted NotificationEventNewPost = NotificationEvent{ UserSettingsKeyName: "event_notification_new_post", DefaultSettingValue: strconv.Itoa(int(NotificationChannelWeb | NotificationChannelEmail)), RequiresSubscriptionUserRoles: []Role{}, DefaultEnabledUserRoles: []Role{ RoleAdministrator, RoleCollaborator, }, Validate: notificationEventValidation, } //NotificationEventNewComment is triggered when a new comment is posted NotificationEventNewComment = NotificationEvent{ UserSettingsKeyName: "event_notification_new_comment", DefaultSettingValue: strconv.Itoa(int(NotificationChannelWeb | NotificationChannelEmail)), RequiresSubscriptionUserRoles: []Role{ RoleVisitor, }, DefaultEnabledUserRoles: []Role{ RoleAdministrator, RoleCollaborator, RoleVisitor, }, Validate: notificationEventValidation, } //NotificationEventChangeStatus is triggered when a new post has its status changed NotificationEventChangeStatus = NotificationEvent{ UserSettingsKeyName: "event_notification_change_status", DefaultSettingValue: strconv.Itoa(int(NotificationChannelWeb | NotificationChannelEmail)), RequiresSubscriptionUserRoles: []Role{ RoleVisitor, }, DefaultEnabledUserRoles: []Role{ RoleAdministrator, RoleCollaborator, RoleVisitor, }, Validate: notificationEventValidation, } //AllNotificationEvents contains all possible notification events AllNotificationEvents = []NotificationEvent{ NotificationEventNewPost, NotificationEventNewComment, NotificationEventChangeStatus, } )
var ( //TenantActive is the default status for most tenants TenantActive = 1 //TenantInactive is used for signup via email that requires user confirmation TenantInactive = 2 )
var ( //UserActive is the default status for users UserActive = 1 //UserDeleted is used for users that chose to delete their accounts UserDeleted = 2 )
var ( //OAuthConfigDisabled is used to disable an OAuthConfig for signin OAuthConfigDisabled = 1 //OAuthConfigEnabled is used to enable an OAuthConfig for public use OAuthConfigEnabled = 2 )
Functions ¶
func GenerateSecretKey ¶ added in v0.15.0
func GenerateSecretKey() string
GenerateSecretKey returns a 64 chars key
Types ¶
type APIAuthorize ¶ added in v0.15.0
type APIAuthorize struct {
APIKey string `json:"apiKey"`
}
APIAuthorize is used during API Authorize process
type AssignUnassignTag ¶ added in v0.8.0
AssignUnassignTag is used to assign or remove a tag to/from an post
type ChangeUserEmail ¶ added in v0.9.0
type ChangeUserEmail struct { Email string `json:"email" format:"lower"` VerificationKey string Requestor *User }
ChangeUserEmail is the input model used to change current user's email
func (*ChangeUserEmail) GetEmail ¶ added in v0.9.0
func (e *ChangeUserEmail) GetEmail() string
GetEmail returns the email being verified
func (*ChangeUserEmail) GetKind ¶ added in v0.9.0
func (e *ChangeUserEmail) GetKind() EmailVerificationKind
GetKind returns EmailVerificationKindSignIn
func (*ChangeUserEmail) GetName ¶ added in v0.9.0
func (e *ChangeUserEmail) GetName() string
GetName returns empty for this kind of process
func (*ChangeUserEmail) GetUser ¶ added in v0.9.0
func (e *ChangeUserEmail) GetUser() *User
GetUser returns the current user performing this action
type ChangeUserRole ¶ added in v0.7.0
ChangeUserRole is the input model change role of an user
type Comment ¶
type Comment struct { ID int `json:"id"` Content string `json:"content"` CreatedAt time.Time `json:"createdAt"` User *User `json:"user"` EditedAt *time.Time `json:"editedAt,omitempty"` EditedBy *User `json:"editedBy,omitempty"` }
Comment represents an user comment on an post
type CompleteProfile ¶ added in v0.6.0
CompleteProfile is the model used to complete user profile during email sign in
type CreateEditOAuthConfig ¶ added in v0.15.0
type CreateEditOAuthConfig struct { ID int Logo *ImageUpload `json:"logo"` Provider string `json:"provider"` Status int `json:"status"` DisplayName string `json:"displayName"` ClientID string `json:"clientID"` ClientSecret string `json:"clientSecret"` AuthorizeURL string `json:"authorizeURL" format:"lower"` TokenURL string `json:"tokenURL" format:"lower"` Scope string `json:"scope"` ProfileURL string `json:"profileURL" format:"lower"` JSONUserIDPath string `json:"jsonUserIDPath"` JSONUserNamePath string `json:"jsonUserNamePath"` JSONUserEmailPath string `json:"jsonUserEmailPath"` }
CreateEditOAuthConfig is used to create/edit an OAuth Configuration
type CreateEditTag ¶ added in v0.8.0
type CreateEditTag struct { Slug string `route:"slug"` Name string `json:"name"` Color string `json:"color" format:"upper"` IsPublic bool `json:"isPublic"` }
CreateEditTag is used to create a new tag or edit existing
type CreateTenant ¶ added in v0.5.0
type CreateTenant struct { Token string `json:"token"` Name string `json:"name"` Email string `json:"email" format:"lower"` VerificationKey string TenantName string `json:"tenantName"` LegalAgreement bool `json:"legalAgreement"` Subdomain string `json:"subdomain" format:"lower"` UserClaims *jwt.OAuthClaims }
CreateTenant is the input model used to create a tenant
func (*CreateTenant) GetEmail ¶ added in v0.9.0
func (e *CreateTenant) GetEmail() string
GetEmail returns the email being verified
func (*CreateTenant) GetKind ¶ added in v0.9.0
func (e *CreateTenant) GetKind() EmailVerificationKind
GetKind returns EmailVerificationKindSignUp
func (*CreateTenant) GetName ¶ added in v0.9.0
func (e *CreateTenant) GetName() string
GetName returns the name of the email owner
func (*CreateTenant) GetUser ¶ added in v0.9.0
func (e *CreateTenant) GetUser() *User
GetUser returns the current user performing this action
type CreateUser ¶ added in v0.16.0
type CreateUser struct { Name string `json:"name"` Email string `json:"email"` Reference string `json:"reference"` }
CreateUser is the input model to create a new user
type DeleteComment ¶ added in v0.16.0
DeleteComment represents a request to delete an existing comment
type DeletePost ¶ added in v0.15.0
DeletePost represents a request to delete an existing post
type DeleteTag ¶ added in v0.8.0
type DeleteTag struct {
Slug string `route:"slug"`
}
DeleteTag is used to delete an existing tag
type EditComment ¶ added in v0.11.0
type EditComment struct { PostNumber int `route:"number"` ID int `route:"id"` Content string `json:"content"` }
EditComment represents a request to edit existing comment
type EmailVerification ¶ added in v0.9.0
type EmailVerification struct { Email string Name string Key string UserID int Kind EmailVerificationKind CreatedAt time.Time ExpiresAt time.Time VerifiedAt *time.Time }
EmailVerification is the model used by email verification process
type EmailVerificationKind ¶ added in v0.9.0
type EmailVerificationKind int16
EmailVerificationKind specifies which kind of process is being verified by email
const ( //EmailVerificationKindSignIn is the sign in by email process EmailVerificationKindSignIn EmailVerificationKind = 1 //EmailVerificationKindSignUp is the sign up (create tenant) by name and email process EmailVerificationKindSignUp EmailVerificationKind = 2 //EmailVerificationKindChangeEmail is the change user email process EmailVerificationKindChangeEmail EmailVerificationKind = 3 //EmailVerificationKindUserInvitation is the sign in invitation sent to an user EmailVerificationKindUserInvitation EmailVerificationKind = 4 )
type Event ¶ added in v0.16.0
type Event struct { ID int `json:"id"` ClientIP string `json:"clientIP"` Name string `json:"name"` CreatedAt time.Time `json:"createdAt"` }
Event is used for tracking client audit events and actions
type ImageUpload ¶ added in v0.15.0
type ImageUpload struct { Upload *ImageUploadData `json:"upload"` Remove bool `json:"remove"` }
ImageUpload is the input model used to upload/remove an image
type ImageUploadData ¶ added in v0.15.0
type ImageUploadData struct { ContentType string `json:"contentType"` Content []byte `json:"content"` }
UpdateTenantSettingsLogoUpload is the input model used to upload a new logo
type InviteUsers ¶ added in v0.12.0
type InviteUsers struct { Subject string `json:"subject"` Message string `json:"message"` Recipients []string `json:"recipients" format:"lower"` }
InviteUsers is used to invite new users into Fider
type NewComment ¶ added in v0.5.0
NewComment represents a new comment
type NewEmailVerification ¶ added in v0.9.0
type NewEmailVerification interface { GetEmail() string GetName() string GetUser() *User GetKind() EmailVerificationKind }
NewEmailVerification is used to register a new email verification process
type Notification ¶ added in v0.10.0
type Notification struct { ID int `json:"id" db:"id"` Title string `json:"title" db:"title"` Link string `json:"link" db:"link"` Read bool `json:"read" db:"read"` CreatedAt time.Time `json:"createdAt" db:"created_at"` }
Notification is the system generated notification entity
type NotificationChannel ¶ added in v0.10.0
type NotificationChannel int
NotificationChannel represents the medium that the notification is sent
var ( //NotificationChannelWeb is a in-app notification NotificationChannelWeb NotificationChannel = 1 //NotificationChannelEmail is an email notification NotificationChannelEmail NotificationChannel = 2 )
type NotificationEvent ¶ added in v0.10.0
type NotificationEvent struct { UserSettingsKeyName string DefaultSettingValue string RequiresSubscriptionUserRoles []Role DefaultEnabledUserRoles []Role Validate func(string) bool }
NotificationEvent represents all possible notification events
type OAuthConfig ¶ added in v0.15.0
type OAuthConfig struct { ID int Provider string DisplayName string LogoID int Status int ClientID string ClientSecret string AuthorizeURL string TokenURL string ProfileURL string Scope string JSONUserIDPath string JSONUserNamePath string JSONUserEmailPath string }
OAuthConfig is the configuration of a custom OAuth provider
func (OAuthConfig) MarshalJSON ¶ added in v0.15.0
func (o OAuthConfig) MarshalJSON() ([]byte, error)
MarshalJSON returns the JSON encoding of OAuthConfig
type OriginalPost ¶ added in v0.15.0
type OriginalPost struct { Number int `json:"number"` Title string `json:"title"` Slug string `json:"slug"` Status PostStatus `json:"status"` }
OriginalPost holds details of the original post of a duplicate
type Post ¶ added in v0.15.0
type Post struct { ID int `json:"id"` Number int `json:"number"` Title string `json:"title"` Slug string `json:"slug"` Description string `json:"description"` CreatedAt time.Time `json:"createdAt"` User *User `json:"user"` HasVoted bool `json:"hasVoted"` VotesCount int `json:"votesCount"` CommentsCount int `json:"commentsCount"` Status PostStatus `json:"status"` Response *PostResponse `json:"response,omitempty"` Tags []string `json:"tags"` }
Post represents an post on a tenant board
func (*Post) CanBeVoted ¶ added in v0.16.0
CanBeVoted returns true if this post can have its vote changed
type PostResponse ¶ added in v0.15.0
type PostResponse struct { Text string `json:"text"` RespondedAt time.Time `json:"respondedAt"` User *User `json:"user"` Original *OriginalPost `json:"original"` }
PostResponse is a staff response to a given post
type PostStatus ¶ added in v0.16.0
type PostStatus int
PostStatus is the status of a given post
var ( //PostOpen is the default status PostOpen PostStatus //PostStarted is used when the post has been accepted and work is in progress PostStarted PostStatus = 1 //PostCompleted is used when the post has been accepted and already implemented PostCompleted PostStatus = 2 //PostDeclined is used when organizers decide to decline an post PostDeclined PostStatus = 3 //PostPlanned is used when organizers have accepted an post and it's on the roadmap PostPlanned PostStatus = 4 //PostDuplicate is used when the post has already been posted before PostDuplicate PostStatus = 5 //PostDeleted is used when the post is completely removed from the site and should never be shown again PostDeleted PostStatus = 6 )
func (PostStatus) MarshalText ¶ added in v0.16.0
func (status PostStatus) MarshalText() ([]byte, error)
MarshalText returns the Text version of the post status
func (PostStatus) Name ¶ added in v0.16.0
func (status PostStatus) Name() string
Name returns the name of a post status
func (*PostStatus) UnmarshalText ¶ added in v0.16.0
func (status *PostStatus) UnmarshalText(text []byte) error
UnmarshalText parse string into a post status
type Role ¶ added in v0.7.0
type Role int
Role is the role of a user inside a tenant
func (Role) MarshalText ¶ added in v0.16.0
MarshalText returns the Text version of the post status
func (*Role) UnmarshalText ¶ added in v0.16.0
UnmarshalText parse string into a post status
type SetResponse ¶ added in v0.5.0
type SetResponse struct { Number int `route:"number"` Status PostStatus `json:"status"` Text string `json:"text"` OriginalNumber int `json:"originalNumber"` }
SetResponse represents the action to update an post response
type SignInByEmail ¶ added in v0.6.0
SignInByEmail is the input model when user request to sign in by email
func (*SignInByEmail) GetEmail ¶ added in v0.9.0
func (e *SignInByEmail) GetEmail() string
GetEmail returns the email being verified
func (*SignInByEmail) GetKind ¶ added in v0.9.0
func (e *SignInByEmail) GetKind() EmailVerificationKind
GetKind returns EmailVerificationKindSignIn
func (*SignInByEmail) GetName ¶ added in v0.9.0
func (e *SignInByEmail) GetName() string
GetName returns empty for this kind of process
func (*SignInByEmail) GetUser ¶ added in v0.9.0
func (e *SignInByEmail) GetUser() *User
GetUser returns the current user performing this action
type SystemSettings ¶ added in v0.10.0
type SystemSettings struct { Mode string BuildTime string Version string Environment string GoogleAnalytics string Compiler string Domain string HasLegal bool }
SystemSettings is the system-wide settings
type Tag ¶ added in v0.8.0
type Tag struct { ID int `json:"id"` Name string `json:"name"` Slug string `json:"slug"` Color string `json:"color"` IsPublic bool `json:"isPublic"` }
Tag represents a simple tag
type Tenant ¶
type Tenant struct { ID int `json:"id"` Name string `json:"name"` Subdomain string `json:"subdomain"` Invitation string `json:"invitation"` WelcomeMessage string `json:"welcomeMessage"` CNAME string `json:"cname"` Status int `json:"-"` IsPrivate bool `json:"isPrivate"` LogoID int `json:"logoID"` CustomCSS string `json:"-"` }
Tenant represents a tenant
type UpdatePost ¶ added in v0.15.0
type UpdatePost struct { Number int `route:"number"` Title string `json:"title"` Description string `json:"description"` }
UpdatePost represents a request to edit an existing post
type UpdateTenantAdvancedSettings ¶ added in v0.13.0
type UpdateTenantAdvancedSettings struct {
CustomCSS string `json:"customCSS"`
}
UpdateTenantAdvancedSettings is the input model used to update tenant advanced settings
type UpdateTenantPrivacy ¶ added in v0.12.0
type UpdateTenantPrivacy struct {
IsPrivate bool `json:"isPrivate"`
}
UpdateTenantPrivacy is the input model used to update tenant privacy settings
type UpdateTenantSettings ¶ added in v0.5.0
type UpdateTenantSettings struct { Logo *ImageUpload `json:"logo"` Title string `json:"title"` Invitation string `json:"invitation"` WelcomeMessage string `json:"welcomeMessage"` CNAME string `json:"cname" format:"lower"` }
UpdateTenantSettings is the input model used to update tenant general settings
type UpdateUserSettings ¶ added in v0.6.0
type UpdateUserSettings struct { Name string `json:"name"` Settings map[string]string `json:"settings"` }
UpdateUserSettings is the model used to update user's settings
type Upload ¶ added in v0.13.0
type Upload struct { ContentType string `db:"content_type"` Size int `db:"size"` Content []byte `db:"file"` }
Upload represents a file that has been uploaded to Fider
type User ¶
type User struct { ID int `json:"id"` Name string `json:"name"` Email string `json:"-"` Tenant *Tenant `json:"-"` Role Role `json:"role"` Providers []*UserProvider `json:"-"` Status int `json:"-"` }
User represents an user inside our application
func (*User) HasProvider ¶
HasProvider returns true if current user has registered with given provider
func (*User) IsAdministrator ¶ added in v0.7.0
IsAdministrator returns true if user is administrator
func (*User) IsCollaborator ¶ added in v0.7.0
IsCollaborator returns true if user has special permissions
type UserInvitation ¶ added in v0.12.0
UserInvitation is the model used to register an invite sent to an user
func (*UserInvitation) GetEmail ¶ added in v0.12.0
func (e *UserInvitation) GetEmail() string
GetEmail returns the invited user's email
func (*UserInvitation) GetKind ¶ added in v0.12.0
func (e *UserInvitation) GetKind() EmailVerificationKind
GetKind returns EmailVerificationKindUserInvitation
func (*UserInvitation) GetName ¶ added in v0.12.0
func (e *UserInvitation) GetName() string
GetName returns empty for this kind of process
func (*UserInvitation) GetUser ¶ added in v0.12.0
func (e *UserInvitation) GetUser() *User
GetUser returns the current user performing this action
type UserProvider ¶
UserProvider represents the relationship between an User and an Authentication provide