models

package
v0.16.0 Latest Latest
Warning

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

Go to latest
Published: Oct 21, 2018 License: GPL-3.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	//SubscriberInactive means that the user cancelled the subscription
	SubscriberInactive = 0
	//SubscriberActive means that the subscription is active
	SubscriberActive = 1
)
View Source
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,
	}
)
View Source
var (
	//TenantActive is the default status for most tenants
	TenantActive = 1
	//TenantInactive is used for signup via email that requires user confirmation
	TenantInactive = 2
)
View Source
var (
	//UserActive is the default status for users
	UserActive = 1
	//UserDeleted is used for users that chose to delete their accounts
	UserDeleted = 2
)
View Source
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

type AssignUnassignTag struct {
	Slug   string `route:"slug"`
	Number int    `route:"number"`
}

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

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

type ChangeUserRole struct {
	Role   Role `route:"role"`
	UserID int  `json:"userID"`
}

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

type CompleteProfile struct {
	Key   string `json:"key"`
	Name  string `json:"name"`
	Email string
}

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
	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

type DeleteComment struct {
	PostNumber int `route:"number"`
	CommentID  int `route:"id"`
}

DeleteComment represents a request to delete an existing comment

type DeletePost added in v0.15.0

type DeletePost struct {
	Number int    `route:"number"`
	Text   string `json:"text"`
}

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

type NewComment struct {
	Number  int    `route:"number"`
	Content string `json:"content"`
}

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"`
}

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
	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

func (i *Post) CanBeVoted() bool

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

const (
	//RoleVisitor is the basic role for every user
	RoleVisitor Role = 1
	//RoleCollaborator has limited access to administrative console
	RoleCollaborator Role = 2
	//RoleAdministrator has full access to administrative console
	RoleAdministrator Role = 3
)

func (Role) MarshalText added in v0.16.0

func (role Role) MarshalText() ([]byte, error)

MarshalText returns the Text version of the post status

func (*Role) UnmarshalText added in v0.16.0

func (role *Role) UnmarshalText(text []byte) error

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

type SignInByEmail struct {
	Email           string `json:"email" format:"lower"`
	VerificationKey string
}

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 {
	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

func (u *User) HasProvider(provider string) bool

HasProvider returns true if current user has registered with given provider

func (*User) IsAdministrator added in v0.7.0

func (u *User) IsAdministrator() bool

IsAdministrator returns true if user is administrator

func (*User) IsCollaborator added in v0.7.0

func (u *User) IsCollaborator() bool

IsCollaborator returns true if user has special permissions

type UserInvitation added in v0.12.0

type UserInvitation struct {
	Email           string
	VerificationKey string
}

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

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

type UserProvider struct {
	Name string
	UID  string
}

UserProvider represents the relationship between an User and an Authentication provide

Jump to

Keyboard shortcuts

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