Documentation
¶
Index ¶
- Variables
- func GenerateSecretKey() string
- type APIAuthorize
- type AssignUnassignTag
- type AvatarType
- type BillingPlan
- type ChangeUserEmail
- type ChangeUserRole
- type Comment
- type CompleteProfile
- type Country
- type CreateEditBillingPaymentInfo
- type CreateEditBillingPaymentInfoCard
- 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 PaymentInfo
- type Post
- type PostResponse
- type PostStatus
- type Role
- type SetResponse
- type SignInByEmail
- type SystemSettings
- type Tag
- type Tenant
- type TenantBilling
- type UpcomingInvoice
- type UpdatePost
- type UpdateTenantAdvancedSettings
- type UpdateTenantPrivacy
- type UpdateTenantSettings
- type UpdateUserSettings
- type Upload
- type User
- type UserInvitation
- type UserProvider
- type UserStatus
- type Vote
- type VoteUser
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 //TenantPending is used for signup via email that requires user confirmation TenantPending = 2 //TenantLocked is used when tenants are locked for various reasons TenantLocked = 3 )
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 AvatarType ¶ added in v0.18.0
type AvatarType int
AvatarType are the possible types of a user avatar
var ( //AvatarTypeLetter is the default avatar type for users AvatarTypeLetter AvatarType = 1 //AvatarTypeGravatar fetches avatar from gravatar (if available) AvatarTypeGravatar AvatarType = 2 //AvatarTypeCustom uses a user uploaded avatar AvatarTypeCustom AvatarType = 3 )
func (AvatarType) MarshalText ¶ added in v0.18.0
func (t AvatarType) MarshalText() ([]byte, error)
MarshalText returns the Text version of the avatar type
func (AvatarType) String ¶ added in v0.18.0
func (t AvatarType) String() string
String returns the string version of the user status
func (*AvatarType) UnmarshalText ¶ added in v0.18.0
func (t *AvatarType) UnmarshalText(text []byte) error
UnmarshalText parse string into a avatar type
type BillingPlan ¶ added in v0.18.0
type BillingPlan struct {
ID string `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
Currency string `json:"currency"`
MaxUsers int `json:"maxUsers"`
Price int64 `json:"price"`
Interval string `json:"interval"`
}
BillingPlan is the model for billing plan from Stripe
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"`
Attachments []string `json:"attachments,omitempty"`
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 Country ¶ added in v0.18.0
Country is a valid country within Fider
func GetAllCountries ¶ added in v0.18.0
func GetAllCountries() []*Country
GetAllCountries returns a list of all known countries
type CreateEditBillingPaymentInfo ¶ added in v0.18.0
type CreateEditBillingPaymentInfo struct {
Name string `json:"name"`
Email string `json:"email"`
Card *CreateEditBillingPaymentInfoCard `json:"card"`
AddressLine1 string `json:"addressLine1"`
AddressLine2 string `json:"addressLine2"`
AddressCity string `json:"addressCity"`
AddressState string `json:"addressState"`
AddressPostalCode string `json:"addressPostalCode"`
AddressCountry string `json:"addressCountry" format:"upper"`
VATNumber string `json:"vatNumber"`
}
CreateEditBillingPaymentInfo is the input model to create or edit billing payment info
type CreateEditBillingPaymentInfoCard ¶ added in v0.18.0
type CreateEditBillingPaymentInfoCard struct {
Type string `json:"type"`
Token string `json:"token"`
Country string `json:"country"`
}
CreateEditBillingPaymentInfoCard is the input model for a card during billing payment info update
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"`
Attachments []*ImageUpload `json:"attachments"`
}
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 {
BlobKey string `json:"bkey"`
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 {
FileName string `json:"fileName"`
ContentType string `json:"contentType"`
Content []byte `json:"content"`
}
ImageUploadData 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
type NewComment struct {
Number int `route:"number"`
Content string `json:"content"`
Attachments []*ImageUpload `json:"attachments"`
}
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 NewPost ¶ added in v0.15.0
type NewPost struct {
Title string `json:"title"`
Description string `json:"description"`
Attachments []*ImageUpload `json:"attachments"`
}
NewPost represents a new post
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
LogoBlobKey string
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 PaymentInfo ¶ added in v0.18.0
type PaymentInfo struct {
StripeCardID string `json:"-"`
CardCountry string `json:"cardCountry"`
CardBrand string `json:"cardBrand"`
CardLast4 string `json:"cardLast4"`
CardExpMonth uint8 `json:"cardExpMonth"`
CardExpYear uint16 `json:"cardExpYear"`
AddressCity string `json:"addressCity"`
AddressCountry string `json:"addressCountry"`
Name string `json:"name"`
Email string `json:"email"`
AddressLine1 string `json:"addressLine1"`
AddressLine2 string `json:"addressLine2"`
AddressState string `json:"addressState"`
AddressPostalCode string `json:"addressPostalCode"`
VATNumber string `json:"vatNumber"`
}
PaymentInfo is the model for billing payment info
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 user role
func (*Role) UnmarshalText ¶ added in v0.16.0
UnmarshalText parse string into a user role
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:"status"`
IsPrivate bool `json:"isPrivate"`
LogoBlobKey string `json:"logoBlobKey"`
Billing *TenantBilling `json:"billing,omitempty"`
CustomCSS string `json:"-"`
}
Tenant represents a tenant
type TenantBilling ¶ added in v0.18.0
type TenantBilling struct {
StripeCustomerID string
StripeSubscriptionID string
StripePlanID string `json:"stripePlanID"`
TrialEndsAt time.Time `json:"trialEndsAt"`
SubscriptionEndsAt *time.Time `json:"subscriptionEndsAt,omitempty"`
}
TenantBilling has all the billing information of given tenant
type UpcomingInvoice ¶ added in v0.18.0
type UpcomingInvoice struct {
Currency string `json:"currency"`
DueDate time.Time `json:"dueDate"`
AmountDue int64 `json:"amountDue"`
}
UpcomingInvoice is the model for upcoming invoice from Stripe
type UpdatePost ¶ added in v0.15.0
type UpdatePost struct {
Number int `route:"number"`
Title string `json:"title"`
Description string `json:"description"`
Attachments []*ImageUpload `json:"attachments"`
}
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"`
AvatarType AvatarType `json:"avatarType"`
Avatar *ImageUpload `json:"avatar"`
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"`
Tenant *Tenant `json:"-"`
Email string `json:"-"`
Role Role `json:"role"`
Providers []*UserProvider `json:"-"`
AvatarBlobKey string `json:"-"`
AvatarType AvatarType `json:"-"`
AvatarURL string `json:"avatarURL,omitempty"`
Status UserStatus `json:"status"`
}
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
type UserStatus ¶ added in v0.17.0
type UserStatus int
UserStatus is the status of a user
var ( //UserActive is the default status for users UserActive UserStatus = 1 //UserDeleted is used for users that chose to delete their accounts UserDeleted UserStatus = 2 //UserBlocked is used for users that have been blocked by staff members UserBlocked UserStatus = 3 )
func (UserStatus) MarshalText ¶ added in v0.17.0
func (status UserStatus) MarshalText() ([]byte, error)
MarshalText returns the Text version of the user status
func (*UserStatus) UnmarshalText ¶ added in v0.17.0
func (status *UserStatus) UnmarshalText(text []byte) error
UnmarshalText parse string into a user status