app

package
v6.7.2 Latest Latest
Warning

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

Go to latest
Published: Jun 14, 2022 License: AGPL-3.0, Apache-2.0 Imports: 139 Imported by: 9

Documentation

Overview

Installing a managed plugin consists of copying the uploaded plugin (*.tar.gz) to the filestore, unpacking to the configured local directory (PluginSettings.Directory), and copying any webapp bundle therein to the configured local client directory (PluginSettings.ClientDirectory). The unpacking and copy occurs each time the server starts, ensuring it remains synchronized with the set of installed plugins.

When a plugin is enabled, all connected websocket clients are notified so as to fetch any webapp bundle and load the client-side portion of the plugin. This works well in a single-server system, but requires careful coordination in a high-availability cluster with multiple servers. In particular, websocket clients must not be notified of the newly enabled plugin until all servers in the cluster have finished unpacking the plugin, otherwise the webapp bundle might not yet be available. Ideally, each server would just notify its own set of connected peers after it finishes this process, but nothing prevents those clients from re-connecting to a different server behind the load balancer that hasn't finished unpacking.

To achieve this coordination, each server instead checks the status of its peers after unpacking. If it finds peers with differing versions of the plugin, it skips the notification. If it finds all peers with the same version of the plugin, it notifies all websocket clients connected to all peers. There's a small chance that this never occurs if the last server to finish unpacking dies before it can announce. There is also a chance that multiple servers decide to notify, but the webapp handles this idempotently.

Complicating this flow further are the various means of notifying. In addition to websocket events, there are cluster messages between peers. There is a cluster message when the config changes and a plugin is enabled or disabled. There is a cluster message when installing or uninstalling a plugin. There is a cluster message when peer's plugin change its status. And finally the act of notifying websocket clients is propagated itself via a cluster message.

The key methods involved in handling these notifications are notifyPluginEnabled and notifyPluginStatusesChanged. Note that none of this complexity applies to single-server systems or to plugins without a webapp bundle.

Finally, in addition to managed plugins, note that there are unmanaged and prepackaged plugins. Unmanaged plugins are plugins installed manually to the configured local directory (PluginSettings.Directory). Prepackaged plugins are included with the server. They otherwise follow the above flow, except do not get uploaded to the filestore. Prepackaged plugins override all other plugins with the same plugin id, but only when the prepackaged plugin is newer. Managed plugins unconditionally override unmanaged plugins with the same plugin id.

Index

Constants

View Source
const (
	DayMilliseconds   = 24 * 60 * 60 * 1000
	MonthMilliseconds = 31 * DayMilliseconds
)
View Source
const (
	RestLevelID        = 240
	RestContentLevelID = 241
	RestPermsLevelID   = 242
	CLILevelID         = 243
)
View Source
const (
	BrandFilePath = "brand/"
	BrandFileName = "image.png"
)
View Source
const (
	MaxEmojiFileSize       = 1 << 20 // 1 MB
	MaxEmojiWidth          = 128
	MaxEmojiHeight         = 128
	MaxEmojiOriginalWidth  = 1028
	MaxEmojiOriginalHeight = 1028
)
View Source
const (
	LicenseEnv                = "MM_LICENSE"
	LicenseRenewalURL         = "https://customers.mattermost.com/subscribe/renew"
	JWTDefaultTokenExpiration = 7 * 24 * time.Hour // 7 days of expiration
)
View Source
const (
	OAuthCookieMaxAgeSeconds = 30 * 60 // 30 minutes
	CookieOAuth              = "MMOAUTH"
	OpenIDScope              = "openid"
)
View Source
const (
	PermissionManageSystem                   = "manage_system"
	PermissionManageTeam                     = "manage_team"
	PermissionManageEmojis                   = "manage_emojis"
	PermissionManageOthersEmojis             = "manage_others_emojis"
	PermissionCreateEmojis                   = "create_emojis"
	PermissionDeleteEmojis                   = "delete_emojis"
	PermissionDeleteOthersEmojis             = "delete_others_emojis"
	PermissionManageWebhooks                 = "manage_webhooks"
	PermissionManageOthersWebhooks           = "manage_others_webhooks"
	PermissionManageIncomingWebhooks         = "manage_incoming_webhooks"
	PermissionManageOthersIncomingWebhooks   = "manage_others_incoming_webhooks"
	PermissionManageOutgoingWebhooks         = "manage_outgoing_webhooks"
	PermissionManageOthersOutgoingWebhooks   = "manage_others_outgoing_webhooks"
	PermissionListPublicTeams                = "list_public_teams"
	PermissionListPrivateTeams               = "list_private_teams"
	PermissionJoinPublicTeams                = "join_public_teams"
	PermissionJoinPrivateTeams               = "join_private_teams"
	PermissionPermanentDeleteUser            = "permanent_delete_user"
	PermissionCreateBot                      = "create_bot"
	PermissionReadBots                       = "read_bots"
	PermissionReadOthersBots                 = "read_others_bots"
	PermissionManageBots                     = "manage_bots"
	PermissionManageOthersBots               = "manage_others_bots"
	PermissionDeletePublicChannel            = "delete_public_channel"
	PermissionDeletePrivateChannel           = "delete_private_channel"
	PermissionManagePublicChannelProperties  = "manage_public_channel_properties"
	PermissionManagePrivateChannelProperties = "manage_private_channel_properties"
	PermissionConvertPublicChannelToPrivate  = "convert_public_channel_to_private"
	PermissionConvertPrivateChannelToPublic  = "convert_private_channel_to_public"
	PermissionViewMembers                    = "view_members"
	PermissionInviteUser                     = "invite_user"
	PermissionInviteGuest                    = "invite_guest"
	PermissionPromoteGuest                   = "promote_guest"
	PermissionDemoteToGuest                  = "demote_to_guest"
	PermissionUseChannelMentions             = "use_channel_mentions"
	PermissionCreatePost                     = "create_post"
	PermissionCreatePost_PUBLIC              = "create_post_public"
	PermissionUseGroupMentions               = "use_group_mentions"
	PermissionAddReaction                    = "add_reaction"
	PermissionRemoveReaction                 = "remove_reaction"
	PermissionManagePublicChannelMembers     = "manage_public_channel_members"
	PermissionManagePrivateChannelMembers    = "manage_private_channel_members"
	PermissionReadJobs                       = "read_jobs"
	PermissionManageJobs                     = "manage_jobs"
	PermissionReadOtherUsersTeams            = "read_other_users_teams"
	PermissionEditOtherUsers                 = "edit_other_users"
	PermissionReadPublicChannelGroups        = "read_public_channel_groups"
	PermissionReadPrivateChannelGroups       = "read_private_channel_groups"
	PermissionEditBrand                      = "edit_brand"
	PermissionManageSharedChannels           = "manage_shared_channels"
	PermissionManageSecureConnections        = "manage_secure_connections"
	PermissionManageRemoteClusters           = "manage_remote_clusters" // deprecated; use `manage_secure_connections`
)
View Source
const (
	PendingPostIDsCacheSize = 25000
	PendingPostIDsCacheTTL  = 30 * time.Second
	PageDefault             = 0
)
View Source
const (
	SamlPublicCertificateName = "saml-public.crt"
	SamlPrivateKeyName        = "saml-private.key"
	SamlIdpCertificateName    = "saml-idp.crt"
)
View Source
const (
	PropSecurityURL      = "https://securityupdatecheck.mattermost.com"
	SecurityUpdatePeriod = 86400000 // 24 hours in milliseconds.

	PropSecurityID              = "id"
	PropSecurityBuild           = "b"
	PropSecurityEnterpriseReady = "be"
	PropSecurityDatabase        = "db"
	PropSecurityOS              = "os"
	PropSecurityUserCount       = "uc"
	PropSecurityTeamCount       = "tc"
	PropSecurityActiveUserCount = "auc"
	PropSecurityUnitTests       = "ut"
)
View Source
const (
	TokenTypePasswordRecovery  = "password_recovery"
	TokenTypeVerifyEmail       = "verify_email"
	TokenTypeTeamInvitation    = "team_invitation"
	TokenTypeGuestInvitation   = "guest_invitation"
	TokenTypeCWSAccess         = "cws_access_token"
	PasswordRecoverExpiryTime  = 1000 * 60 * 60 * 24 // 24 hours
	InvitationExpiryTime       = 1000 * 60 * 60 * 48 // 48 hours
	ImageProfilePixelDimension = 128
)
View Source
const (
	TriggerwordsExactMatch = 0
	TriggerwordsStartsWith = 1

	MaxIntegrationResponseSize = 1024 * 1024 // Posts can be <100KB at most, so this is likely more than enough
)
View Source
const (
	CmdCustomStatusTrigger = "status"
)
View Source
const ContentExtractionConfigDefaultTrueMigrationKey = "ContentExtractionConfigDefaultTrueMigrationComplete"
View Source
const (
	DiscoveryServiceWritePing = 60 * time.Second
)
View Source
const EmojisPermissionsMigrationKey = "EmojisPermissionsMigrationComplete"
View Source
const (
	ErrorTermsOfServiceNoRowsFound = "app.terms_of_service.get.no_rows.app_error"
)
View Source
const FirstAdminSetupCompleteKey = model.SystemFirstAdminSetupComplete
View Source
const GuestRolesCreationMigrationKey = "GuestRolesCreationMigrationComplete"
View Source
const (
	// HTTPRequestTimeout defines a high timeout for downloading large files
	// from an external URL to avoid slow connections from failing to install.
	HTTPRequestTimeout = 1 * time.Hour
)
View Source
const LinkCacheDuration = 1 * time.Hour
View Source
const LinkCacheSize = 10000
View Source
const MaxMetadataImageSize = MaxOpenGraphResponseSize
View Source
const (
	MaxOpenGraphResponseSize = 1024 * 1024 * 50
)
View Source
const MaxRepeatViewings = 3
View Source
const MinSecondsBetweenRepeatViewings = 60 * 60
View Source
const MissingAccountError = "app.user.missing_account.const"
View Source
const MissingAuthAccountError = "app.user.get_by_auth.missing_account.app_error"
View Source
const MissingChannelMemberError = "app.channel.get_member.missing.app_error"
View Source
const (
	OneHourMillis = 60 * 60 * 1000
)
View Source
const PlaybookRolesCreationMigrationKey = "PlaybookRolesCreationMigrationComplete"
View Source
const SystemConsoleRolesCreationMigrationKey = "SystemConsoleRolesCreationMigrationComplete"
View Source
const TimeToWaitForConnectionsToCloseOnServerShutdown = time.Second
View Source
const (
	TimestampFormat = "Mon Jan 2 15:04:05 -0700 MST 2006"
)

Variables

View Source
var (
	LevelAPI     = mlog.LvlAuditAPI
	LevelContent = mlog.LvlAuditContent
	LevelPerms   = mlog.LvlAuditPerms
	LevelCLI     = mlog.LvlAuditCLI
)
View Source
var RequestTrialURL = "https://customers.mattermost.com/api/v1/trials"
View Source
var SentryDSN = "placeholder_sentry_dsn"

declaring this as var to allow overriding in tests

Functions

func DoesNotifyPropsAllowPushNotification

func DoesNotifyPropsAllowPushNotification(user *model.User, channelNotifyProps model.StringMap, post *model.Post, wasMentioned bool) bool

func DoesStatusAllowPushNotification

func DoesStatusAllowPushNotification(userNotifyProps model.StringMap, status *model.Status, channelID string) bool

func GeneratePublicLinkHash

func GeneratePublicLinkHash(fileID, salt string) string

func GetProtocol

func GetProtocol(r *http.Request) string

func IsCWSLogin

func IsCWSLogin(a *App, token string) bool

func JoinCluster

func JoinCluster(s *Server) error

func NewMockRemoteClusterService

func NewMockRemoteClusterService(service remotecluster.RemoteClusterServiceIFace, options ...MockOptionRemoteClusterService) *mockRemoteClusterService

func NewMockSharedChannelService

func NewMockSharedChannelService(service SharedChannelServiceIFace, options ...MockOptionSharedChannelService) *mockSharedChannelService

func RegisterAccountMigrationInterface

func RegisterAccountMigrationInterface(f func(*App) einterfaces.AccountMigrationInterface)

func RegisterCloudInterface

func RegisterCloudInterface(f func(*Server) einterfaces.CloudInterface)

func RegisterClusterInterface

func RegisterClusterInterface(f func(*Server) einterfaces.ClusterInterface)

func RegisterCommandProvider

func RegisterCommandProvider(newProvider CommandProvider)

func RegisterComplianceInterface

func RegisterComplianceInterface(f func(*App) einterfaces.ComplianceInterface)

func RegisterDataRetentionInterface

func RegisterDataRetentionInterface(f func(*App) einterfaces.DataRetentionInterface)

func RegisterElasticsearchInterface

func RegisterElasticsearchInterface(f func(*Server) searchengine.SearchEngineInterface)

func RegisterJobsDataRetentionJobInterface

func RegisterJobsDataRetentionJobInterface(f func(*Server) ejobs.DataRetentionJobInterface)

func RegisterJobsElasticsearchAggregatorInterface

func RegisterJobsElasticsearchAggregatorInterface(f func(*Server) ejobs.ElasticsearchAggregatorInterface)

func RegisterJobsElasticsearchIndexerInterface

func RegisterJobsElasticsearchIndexerInterface(f func(*Server) ejobs.IndexerJobInterface)

func RegisterJobsLdapSyncInterface

func RegisterJobsLdapSyncInterface(f func(*App) ejobs.LdapSyncInterface)

func RegisterJobsMessageExportJobInterface

func RegisterJobsMessageExportJobInterface(f func(*Server) ejobs.MessageExportJobInterface)

func RegisterLdapInterface

func RegisterLdapInterface(f func(*App) einterfaces.LdapInterface)

func RegisterLicenseInterface

func RegisterLicenseInterface(f func(*Server) einterfaces.LicenseInterface)

func RegisterMessageExportInterface

func RegisterMessageExportInterface(f func(*App) einterfaces.MessageExportInterface)

func RegisterMetricsInterface

func RegisterMetricsInterface(f func(*Server) einterfaces.MetricsInterface)

func RegisterNewSamlInterface

func RegisterNewSamlInterface(f func(*App) einterfaces.SamlInterface)

func RegisterNotificationInterface

func RegisterNotificationInterface(f func(*App) einterfaces.NotificationInterface)

func RegisterProduct added in v6.1.0

func RegisterProduct(name string, m ProductManifest)

func RemoveRoles

func RemoveRoles(rolesToRemove []string, roles string) string

func RunEssentialJobs

func RunEssentialJobs(s *Server) error

func ShouldSendPushNotification

func ShouldSendPushNotification(user *model.User, channelNotifyProps model.StringMap, wasMentioned bool, status *model.Status, post *model.Post) bool

func SplitWebhookPost

func SplitWebhookPost(post *model.Post, maxPostSize int) ([]*model.Post, *model.AppError)

func StartMetrics

func StartMetrics(s *Server) error

func StartSearchEngine

func StartSearchEngine(s *Server) error

func UploadFileSetClientId

func UploadFileSetClientId(clientId string) func(t *UploadFileTask)

func UploadFileSetContentLength

func UploadFileSetContentLength(contentLength int64) func(t *UploadFileTask)

func UploadFileSetRaw

func UploadFileSetRaw() func(t *UploadFileTask)

func UploadFileSetTeamId

func UploadFileSetTeamId(teamID string) func(t *UploadFileTask)

func UploadFileSetTimestamp

func UploadFileSetTimestamp(timestamp time.Time) func(t *UploadFileTask)

func UploadFileSetUserId

func UploadFileSetUserId(userID string) func(t *UploadFileTask)

func WithMaster

func WithMaster(ctx context.Context) context.Context

WithMaster adds the context value that master DB should be selected for this request.

Types

type App

type App struct {
	// contains filtered or unexported fields
}

App is a pure functional component that does not have any fields, except Server. It is a request-scoped struct constructed every time a request hits the server, and its only purpose is to provide business logic to Server via its methods.

func New

func New(options ...AppOption) *App

func (*App) AccountMigration

func (a *App) AccountMigration() einterfaces.AccountMigrationInterface

func (*App) ActivateMfa

func (a *App) ActivateMfa(userID, token string) *model.AppError

func (*App) AddChannelMember

func (a *App) AddChannelMember(c *request.Context, userID string, channel *model.Channel, opts ChannelMemberOpts) (*model.ChannelMember, *model.AppError)

AddChannelMember adds a user to a channel. It is a wrapper over AddUserToChannel.

func (*App) AddChannelsToRetentionPolicy

func (a *App) AddChannelsToRetentionPolicy(policyID string, channelIDs []string) *model.AppError

func (*App) AddConfigListener

func (a *App) AddConfigListener(listener func(*model.Config, *model.Config)) string

func (*App) AddCursorIdsForPostList

func (a *App) AddCursorIdsForPostList(originalList *model.PostList, afterPost, beforePost string, since int64, page, perPage int, collapsedThreads bool)

AddCursorIdsForPostList adds NextPostId and PrevPostId as cursor to the PostList. The conditional blocks ensure that it sets those cursor IDs immediately as afterPost, beforePost or empty, and only query to database whenever necessary.

func (*App) AddDirectChannels

func (a *App) AddDirectChannels(teamID string, user *model.User) *model.AppError

func (*App) AddLdapPrivateCertificate

func (a *App) AddLdapPrivateCertificate(fileData *multipart.FileHeader) *model.AppError

func (*App) AddLdapPublicCertificate

func (a *App) AddLdapPublicCertificate(fileData *multipart.FileHeader) *model.AppError

func (*App) AddPublicKey

func (a *App) AddPublicKey(name string, key io.Reader) *model.AppError

AddPublicKey will add plugin public key to the config. Overwrites the previous file

func (*App) AddRemoteCluster

func (a *App) AddRemoteCluster(rc *model.RemoteCluster) (*model.RemoteCluster, *model.AppError)

func (*App) AddSamlIdpCertificate

func (a *App) AddSamlIdpCertificate(fileData *multipart.FileHeader) *model.AppError

func (*App) AddSamlPrivateCertificate

func (a *App) AddSamlPrivateCertificate(fileData *multipart.FileHeader) *model.AppError

func (*App) AddSamlPublicCertificate

func (a *App) AddSamlPublicCertificate(fileData *multipart.FileHeader) *model.AppError

func (*App) AddSessionToCache

func (a *App) AddSessionToCache(session *model.Session)

func (*App) AddStatusCache

func (a *App) AddStatusCache(status *model.Status)

func (*App) AddStatusCacheSkipClusterSend

func (a *App) AddStatusCacheSkipClusterSend(status *model.Status)

func (*App) AddTeamMember

func (a *App) AddTeamMember(c *request.Context, teamID, userID string) (*model.TeamMember, *model.AppError)

func (*App) AddTeamMemberByInviteId

func (a *App) AddTeamMemberByInviteId(c *request.Context, inviteId, userID string) (*model.TeamMember, *model.AppError)

func (*App) AddTeamMemberByToken

func (a *App) AddTeamMemberByToken(c *request.Context, userID, tokenID string) (*model.TeamMember, *model.AppError)

func (*App) AddTeamMembers

func (a *App) AddTeamMembers(c *request.Context, teamID string, userIDs []string, userRequestorId string, graceful bool) ([]*model.TeamMemberWithError, *model.AppError)

func (*App) AddTeamsToRetentionPolicy

func (a *App) AddTeamsToRetentionPolicy(policyID string, teamIDs []string) *model.AppError

func (*App) AddUserToChannel

func (a *App) AddUserToChannel(user *model.User, channel *model.Channel, skipTeamMemberIntegrityCheck bool) (*model.ChannelMember, *model.AppError)

AddUserToChannel adds a user to a given channel.

func (*App) AddUserToTeam

func (a *App) AddUserToTeam(c *request.Context, teamID string, userID string, userRequestorId string) (*model.Team, *model.TeamMember, *model.AppError)

func (*App) AddUserToTeamByInviteId

func (a *App) AddUserToTeamByInviteId(c *request.Context, inviteId string, userID string) (*model.Team, *model.TeamMember, *model.AppError)

func (*App) AddUserToTeamByTeamId

func (a *App) AddUserToTeamByTeamId(c *request.Context, teamID string, user *model.User) *model.AppError

func (*App) AddUserToTeamByToken

func (a *App) AddUserToTeamByToken(c *request.Context, userID string, tokenID string) (*model.Team, *model.TeamMember, *model.AppError)

func (*App) AdjustImage

func (a *App) AdjustImage(file io.Reader) (*bytes.Buffer, *model.AppError)

func (*App) AllowOAuthAppAccessToUser

func (a *App) AllowOAuthAppAccessToUser(userID string, authRequest *model.AuthorizeRequest) (string, *model.AppError)

func (*App) AppendFile

func (a *App) AppendFile(fr io.Reader, path string) (int64, *model.AppError)

func (*App) AsymmetricSigningKey

func (a *App) AsymmetricSigningKey() *ecdsa.PrivateKey

func (*App) AttachCloudSessionCookie added in v6.4.0

func (a *App) AttachCloudSessionCookie(c *request.Context, w http.ResponseWriter, r *http.Request)

func (*App) AttachDeviceId

func (a *App) AttachDeviceId(sessionID string, deviceID string, expiresAt int64) *model.AppError

func (*App) AttachSessionCookies

func (a *App) AttachSessionCookies(c *request.Context, w http.ResponseWriter, r *http.Request)

func (*App) AuthenticateUserForLogin

func (a *App) AuthenticateUserForLogin(c *request.Context, id, loginId, password, mfaToken, cwsToken string, ldapOnly bool) (user *model.User, err *model.AppError)

func (*App) AuthorizeOAuthUser

func (a *App) AuthorizeOAuthUser(w http.ResponseWriter, r *http.Request, service, code, state, redirectURI string) (io.ReadCloser, string, map[string]string, *model.User, *model.AppError)

func (*App) AutocompleteChannels

func (a *App) AutocompleteChannels(userID, term string) (model.ChannelListWithTeamData, *model.AppError)

func (*App) AutocompleteChannelsForSearch

func (a *App) AutocompleteChannelsForSearch(teamID string, userID string, term string) (model.ChannelList, *model.AppError)

func (*App) AutocompleteChannelsForTeam added in v6.2.0

func (a *App) AutocompleteChannelsForTeam(teamID, userID, term string) (model.ChannelList, *model.AppError)

func (*App) AutocompleteUsersInChannel

func (a *App) AutocompleteUsersInChannel(teamID string, channelID string, term string, options *model.UserSearchOptions) (*model.UserAutocompleteInChannel, *model.AppError)

func (*App) AutocompleteUsersInTeam

func (a *App) AutocompleteUsersInTeam(teamID string, term string, options *model.UserSearchOptions) (*model.UserAutocompleteInTeam, *model.AppError)

func (*App) BroadcastStatus

func (a *App) BroadcastStatus(status *model.Status)

func (*App) BuildPostReactions

func (a *App) BuildPostReactions(postID string) (*[]ReactionImportData, *model.AppError)

func (*App) BuildPushNotificationMessage

func (a *App) BuildPushNotificationMessage(contentsConfig string, post *model.Post, user *model.User, channel *model.Channel, channelName string, senderName string,
	explicitMention bool, channelWideMention bool, replyToThreadType string) (*model.PushNotification, *model.AppError)

func (*App) BuildSamlMetadataObject

func (a *App) BuildSamlMetadataObject(idpMetadata []byte) (*model.SamlMetadataResponse, *model.AppError)

func (*App) BulkExport

func (a *App) BulkExport(writer io.Writer, outPath string, opts model.BulkExportOpts) *model.AppError

func (*App) BulkImport

func (a *App) BulkImport(c *request.Context, jsonlReader io.Reader, attachmentsReader *zip.Reader, dryRun bool, workers int) (*model.AppError, int)

func (*App) BulkImportWithPath

func (a *App) BulkImportWithPath(c *request.Context, jsonlReader io.Reader, attachmentsReader *zip.Reader, dryRun bool, workers int, importPath string) (*model.AppError, int)

func (*App) CancelJob

func (a *App) CancelJob(jobId string) *model.AppError

func (*App) ChannelMembersMinusGroupMembers

func (a *App) ChannelMembersMinusGroupMembers(channelID string, groupIDs []string, page, perPage int) ([]*model.UserWithGroups, int64, *model.AppError)

ChannelMembersMinusGroupMembers returns the set of users in the given channel minus the set of users in the given groups.

The result can be used, for example, to determine the set of users who would be removed from a channel if the channel were group-constrained with the given groups.

func (*App) ChannelMembersToAdd

func (a *App) ChannelMembersToAdd(since int64, channelID *string, includeRemovedMembers bool) ([]*model.UserChannelIDPair, *model.AppError)

ChannelMembersToAdd returns a slice of UserChannelIDPair that need newly created memberships based on the groups configurations. The returned list can be optionally scoped to a single given channel.

Typically since will be the last successful group sync time. If includeRemovedMembers is true, then channel members who left or were removed from the channel will be included; otherwise, they will be excluded.

func (*App) ChannelMembersToRemove

func (a *App) ChannelMembersToRemove(teamID *string) ([]*model.ChannelMember, *model.AppError)

func (*App) Channels added in v6.2.0

func (a *App) Channels() *Channels

func (*App) CheckCanInviteToSharedChannel

func (a *App) CheckCanInviteToSharedChannel(channelId string) error

func (*App) CheckForClientSideCert

func (a *App) CheckForClientSideCert(r *http.Request) (string, string, string)

func (*App) CheckIntegrity

func (a *App) CheckIntegrity() <-chan model.IntegrityCheckResult

func (*App) CheckMandatoryS3Fields

func (a *App) CheckMandatoryS3Fields(settings *model.FileSettings) *model.AppError

func (*App) CheckPasswordAndAllCriteria

func (a *App) CheckPasswordAndAllCriteria(user *model.User, password string, mfaToken string) *model.AppError

func (*App) CheckProviderAttributes

func (a *App) CheckProviderAttributes(user *model.User, patch *model.UserPatch) string

CheckProviderAttributes returns the empty string if the patch can be applied without overriding attributes set by the user's login provider; otherwise, the name of the offending field is returned.

func (*App) CheckRolesExist

func (a *App) CheckRolesExist(roleNames []string) *model.AppError

func (*App) CheckUserAllAuthenticationCriteria

func (a *App) CheckUserAllAuthenticationCriteria(user *model.User, mfaToken string) *model.AppError

func (*App) CheckUserMfa

func (a *App) CheckUserMfa(user *model.User, token string) *model.AppError

func (*App) CheckUserPostflightAuthenticationCriteria

func (a *App) CheckUserPostflightAuthenticationCriteria(user *model.User) *model.AppError

func (*App) CheckUserPreflightAuthenticationCriteria

func (a *App) CheckUserPreflightAuthenticationCriteria(user *model.User, mfaToken string) *model.AppError

func (*App) CheckWebConn

func (a *App) CheckWebConn(userID, connectionID string) *CheckConnResult

func (*App) ClearChannelMembersCache

func (a *App) ClearChannelMembersCache(channelID string)

func (*App) ClearLatestVersionCache added in v6.5.0

func (a *App) ClearLatestVersionCache()

func (*App) ClearSessionCacheForAllUsers

func (a *App) ClearSessionCacheForAllUsers()

func (*App) ClearSessionCacheForAllUsersSkipClusterSend

func (a *App) ClearSessionCacheForAllUsersSkipClusterSend()

func (*App) ClearSessionCacheForUser

func (a *App) ClearSessionCacheForUser(userID string)

func (*App) ClearSessionCacheForUserSkipClusterSend

func (a *App) ClearSessionCacheForUserSkipClusterSend(userID string)

func (*App) ClearTeamMembersCache

func (a *App) ClearTeamMembersCache(teamID string)

func (*App) ClientConfig

func (a *App) ClientConfig() map[string]string

func (*App) ClientConfigHash

func (a *App) ClientConfigHash() string

func (*App) ClientConfigWithComputed

func (a *App) ClientConfigWithComputed() map[string]string

ClientConfigWithComputed gets the configuration in a format suitable for sending to the client.

func (*App) Cloud

func (a *App) Cloud() einterfaces.CloudInterface

func (*App) Cluster

func (a *App) Cluster() einterfaces.ClusterInterface

func (*App) CompareAndDeletePluginKey

func (a *App) CompareAndDeletePluginKey(pluginID string, key string, oldValue []byte) (bool, *model.AppError)

func (*App) CompareAndSetPluginKey

func (a *App) CompareAndSetPluginKey(pluginID string, key string, oldValue, newValue []byte) (bool, *model.AppError)

func (*App) CompleteOAuth

func (a *App) CompleteOAuth(c *request.Context, service string, body io.ReadCloser, teamID string, props map[string]string, tokenUser *model.User) (*model.User, *model.AppError)

func (*App) CompleteOnboarding added in v6.5.0

func (a *App) CompleteOnboarding(c *request.Context, request *model.CompleteOnboardingRequest) *model.AppError

func (*App) CompleteSwitchWithOAuth

func (a *App) CompleteSwitchWithOAuth(service string, userData io.Reader, email string, tokenUser *model.User) (*model.User, *model.AppError)

func (*App) Compliance

func (a *App) Compliance() einterfaces.ComplianceInterface

func (*App) Config

func (a *App) Config() *model.Config

func (*App) ConvertBotToUser

func (a *App) ConvertBotToUser(bot *model.Bot, userPatch *model.UserPatch, sysadmin bool) (*model.User, *model.AppError)

ConvertBotToUser converts a bot to user.

func (*App) ConvertUserToBot

func (a *App) ConvertUserToBot(user *model.User) (*model.Bot, *model.AppError)

ConvertUserToBot converts a user to bot.

func (*App) CopyFileInfos

func (a *App) CopyFileInfos(userID string, fileIDs []string) ([]string, *model.AppError)

func (*App) CreateBot

func (a *App) CreateBot(c *request.Context, bot *model.Bot) (*model.Bot, *model.AppError)

CreateBot creates the given bot and corresponding user.

func (*App) CreateChannel

func (a *App) CreateChannel(c *request.Context, channel *model.Channel, addMember bool) (*model.Channel, *model.AppError)

func (*App) CreateChannelScheme

func (a *App) CreateChannelScheme(channel *model.Channel) (*model.Scheme, *model.AppError)

CreateChannelScheme creates a new Scheme of scope channel and assigns it to the channel.

func (*App) CreateChannelWithUser

func (a *App) CreateChannelWithUser(c *request.Context, channel *model.Channel, userID string) (*model.Channel, *model.AppError)

func (*App) CreateCommand

func (a *App) CreateCommand(cmd *model.Command) (*model.Command, *model.AppError)

func (*App) CreateCommandPost

func (a *App) CreateCommandPost(c *request.Context, post *model.Post, teamID string, response *model.CommandResponse, skipSlackParsing bool) (*model.Post, *model.AppError)

@openTracingParams teamID, skipSlackParsing

func (*App) CreateCommandWebhook

func (a *App) CreateCommandWebhook(commandID string, args *model.CommandArgs) (*model.CommandWebhook, *model.AppError)

func (*App) CreateDefaultMemberships

func (a *App) CreateDefaultMemberships(c *request.Context, since int64, includeRemovedMembers bool) error

CreateDefaultMemberships adds users to teams and channels based on their group memberships and how those groups are configured to sync with teams and channels for group members on or after the given timestamp. If includeRemovedMembers is true, then members who left or were removed from a team/channel will be re-added; otherwise, they will not be re-added.

func (*App) CreateEmoji

func (a *App) CreateEmoji(sessionUserId string, emoji *model.Emoji, multiPartImageData *multipart.Form) (*model.Emoji, *model.AppError)

func (*App) CreateGroup

func (a *App) CreateGroup(group *model.Group) (*model.Group, *model.AppError)

func (*App) CreateGroupChannel

func (a *App) CreateGroupChannel(userIDs []string, creatorId string) (*model.Channel, *model.AppError)

func (*App) CreateGroupWithUserIds added in v6.5.0

func (a *App) CreateGroupWithUserIds(group *model.GroupWithUserIds) (*model.Group, *model.AppError)

func (*App) CreateGuest

func (a *App) CreateGuest(c *request.Context, user *model.User) (*model.User, *model.AppError)

CreateGuest creates a guest and sets several fields of the returned User struct to their zero values.

func (*App) CreateIncomingWebhookForChannel

func (a *App) CreateIncomingWebhookForChannel(creatorId string, channel *model.Channel, hook *model.IncomingWebhook) (*model.IncomingWebhook, *model.AppError)

func (*App) CreateJob

func (a *App) CreateJob(job *model.Job) (*model.Job, *model.AppError)

func (*App) CreateOAuthApp

func (a *App) CreateOAuthApp(app *model.OAuthApp) (*model.OAuthApp, *model.AppError)

func (*App) CreateOAuthStateToken

func (a *App) CreateOAuthStateToken(extra string) (*model.Token, *model.AppError)

func (*App) CreateOAuthUser

func (a *App) CreateOAuthUser(c *request.Context, service string, userData io.Reader, teamID string, tokenUser *model.User) (*model.User, *model.AppError)

func (*App) CreateOutgoingWebhook

func (a *App) CreateOutgoingWebhook(hook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError)

func (*App) CreatePasswordRecoveryToken

func (a *App) CreatePasswordRecoveryToken(userID, email string) (*model.Token, *model.AppError)

func (*App) CreatePost

func (a *App) CreatePost(c *request.Context, post *model.Post, channel *model.Channel, triggerWebhooks, setOnline bool) (savedPost *model.Post, err *model.AppError)

func (*App) CreatePostAsUser

func (a *App) CreatePostAsUser(c *request.Context, post *model.Post, currentSessionId string, setOnline bool) (*model.Post, *model.AppError)

func (*App) CreatePostMissingChannel

func (a *App) CreatePostMissingChannel(c *request.Context, post *model.Post, triggerWebhooks bool) (*model.Post, *model.AppError)

func (*App) CreateRole

func (a *App) CreateRole(role *model.Role) (*model.Role, *model.AppError)

func (*App) CreateScheme

func (a *App) CreateScheme(scheme *model.Scheme) (*model.Scheme, *model.AppError)

func (*App) CreateSession

func (a *App) CreateSession(session *model.Session) (*model.Session, *model.AppError)

func (*App) CreateSidebarCategory

func (a *App) CreateSidebarCategory(userID, teamID string, newCategory *model.SidebarCategoryWithChannels) (*model.SidebarCategoryWithChannels, *model.AppError)

func (*App) CreateTeam

func (a *App) CreateTeam(c *request.Context, team *model.Team) (*model.Team, *model.AppError)

func (*App) CreateTeamWithUser

func (a *App) CreateTeamWithUser(c *request.Context, team *model.Team, userID string) (*model.Team, *model.AppError)

func (*App) CreateTermsOfService

func (a *App) CreateTermsOfService(text, userID string) (*model.TermsOfService, *model.AppError)

func (*App) CreateUploadSession

func (a *App) CreateUploadSession(us *model.UploadSession) (*model.UploadSession, *model.AppError)

func (*App) CreateUser

func (a *App) CreateUser(c *request.Context, user *model.User) (*model.User, *model.AppError)

CreateUser creates a user and sets several fields of the returned User struct to their zero values.

func (*App) CreateUserAccessToken

func (a *App) CreateUserAccessToken(token *model.UserAccessToken) (*model.UserAccessToken, *model.AppError)

func (*App) CreateUserAsAdmin

func (a *App) CreateUserAsAdmin(c *request.Context, user *model.User, redirect string) (*model.User, *model.AppError)

func (*App) CreateUserFromSignup

func (a *App) CreateUserFromSignup(c *request.Context, user *model.User, redirect string) (*model.User, *model.AppError)

func (*App) CreateUserWithInviteId

func (a *App) CreateUserWithInviteId(c *request.Context, user *model.User, inviteId, redirect string) (*model.User, *model.AppError)

func (*App) CreateUserWithToken

func (a *App) CreateUserWithToken(c *request.Context, user *model.User, token *model.Token) (*model.User, *model.AppError)

func (*App) CreateWebhookPost

func (a *App) CreateWebhookPost(c *request.Context, userID string, channel *model.Channel, text, overrideUsername, overrideIconURL, overrideIconEmoji string, props model.StringInterface, postType string, postRootId string) (*model.Post, *model.AppError)

func (*App) CreateZipFileAndAddFiles

func (a *App) CreateZipFileAndAddFiles(fileBackend filestore.FileBackend, fileDatas []model.FileData, zipFileName, directory string) error

This function zip's up all the files in fileDatas array and then saves it to the directory specified with the specified zip file name Ensure the zip file name ends with a .zip

func (*App) DBHealthCheckDelete

func (a *App) DBHealthCheckDelete() error

func (*App) DBHealthCheckWrite

func (a *App) DBHealthCheckWrite() error

func (*App) DataRetention

func (a *App) DataRetention() einterfaces.DataRetentionInterface

func (*App) DeactivateGuests

func (a *App) DeactivateGuests(c *request.Context) *model.AppError

func (*App) DeactivateMfa

func (a *App) DeactivateMfa(userID string) *model.AppError

func (*App) DeauthorizeOAuthAppForUser

func (a *App) DeauthorizeOAuthAppForUser(userID, appID string) *model.AppError

func (*App) DefaultChannelNames

func (a *App) DefaultChannelNames() []string

DefaultChannelNames returns the list of system-wide default channel names.

By default the list will be (not necessarily in this order):

['town-square', 'off-topic']

However, if TeamSettings.ExperimentalDefaultChannels contains a list of channels then that list will replace 'off-topic' and be included in the return results in addition to 'town-square'. For example:

['town-square', 'game-of-thrones', 'wow']

func (*App) DeleteAllExpiredPluginKeys

func (a *App) DeleteAllExpiredPluginKeys() *model.AppError

func (*App) DeleteAllKeysForPlugin

func (a *App) DeleteAllKeysForPlugin(pluginID string) *model.AppError

func (*App) DeleteBrandImage

func (a *App) DeleteBrandImage() *model.AppError

func (*App) DeleteChannel

func (a *App) DeleteChannel(c *request.Context, channel *model.Channel, userID string) *model.AppError

func (*App) DeleteChannelScheme

func (a *App) DeleteChannelScheme(channel *model.Channel) (*model.Channel, *model.AppError)

DeleteChannelScheme deletes a channels scheme and sets its SchemeId to nil.

func (*App) DeleteCommand

func (a *App) DeleteCommand(commandID string) *model.AppError

func (*App) DeleteEmoji

func (a *App) DeleteEmoji(emoji *model.Emoji) *model.AppError

func (*App) DeleteEphemeralPost

func (a *App) DeleteEphemeralPost(userID, postID string)

func (*App) DeleteExport

func (a *App) DeleteExport(name string) *model.AppError

func (*App) DeleteGroup

func (a *App) DeleteGroup(groupID string) (*model.Group, *model.AppError)

func (*App) DeleteGroupConstrainedMemberships

func (a *App) DeleteGroupConstrainedMemberships(c *request.Context) error

DeleteGroupConstrainedMemberships deletes team and channel memberships of users who aren't members of the allowed groups of all group-constrained teams and channels.

func (*App) DeleteGroupMember

func (a *App) DeleteGroupMember(groupID string, userID string) (*model.GroupMember, *model.AppError)

func (*App) DeleteGroupMembers added in v6.5.0

func (a *App) DeleteGroupMembers(groupID string, userIDs []string) ([]*model.GroupMember, *model.AppError)

func (*App) DeleteGroupSyncable

func (a *App) DeleteGroupSyncable(groupID string, syncableID string, syncableType model.GroupSyncableType) (*model.GroupSyncable, *model.AppError)

func (*App) DeleteIncomingWebhook

func (a *App) DeleteIncomingWebhook(hookID string) *model.AppError

func (*App) DeleteOAuthApp

func (a *App) DeleteOAuthApp(appID string) *model.AppError

func (*App) DeleteOutgoingWebhook

func (a *App) DeleteOutgoingWebhook(hookID string) *model.AppError

func (*App) DeletePluginKey

func (a *App) DeletePluginKey(pluginID string, key string) *model.AppError

func (*App) DeletePost

func (a *App) DeletePost(postID, deleteByID string) (*model.Post, *model.AppError)

func (*App) DeletePreferences

func (a *App) DeletePreferences(userID string, preferences model.Preferences) *model.AppError

func (*App) DeletePublicKey

func (a *App) DeletePublicKey(name string) *model.AppError

DeletePublicKey will delete plugin public key from the config.

func (*App) DeleteReactionForPost

func (a *App) DeleteReactionForPost(c *request.Context, reaction *model.Reaction) *model.AppError

func (*App) DeleteRemoteCluster

func (a *App) DeleteRemoteCluster(remoteClusterId string) (bool, *model.AppError)

func (*App) DeleteRetentionPolicy

func (a *App) DeleteRetentionPolicy(policyID string) *model.AppError

func (*App) DeleteScheme

func (a *App) DeleteScheme(schemeId string) (*model.Scheme, *model.AppError)

func (*App) DeleteSharedChannel

func (a *App) DeleteSharedChannel(channelID string) (bool, error)

func (*App) DeleteSharedChannelRemote

func (a *App) DeleteSharedChannelRemote(id string) (bool, error)

func (*App) DeleteSidebarCategory

func (a *App) DeleteSidebarCategory(userID, teamID, categoryId string) *model.AppError

func (*App) DeleteToken

func (a *App) DeleteToken(token *model.Token) *model.AppError

func (*App) DemoteUserToGuest

func (a *App) DemoteUserToGuest(user *model.User) *model.AppError

DemoteUserToGuest Convert user's roles and all his membership's roles from regular user roles to guest roles.

func (*App) DisableAutoResponder

func (a *App) DisableAutoResponder(userID string, asAdmin bool) *model.AppError

func (*App) DisablePlugin

func (a *App) DisablePlugin(id string) *model.AppError

DisablePlugin will set the config for an installed plugin to disabled, triggering deactivation if active. Notifies cluster peers through config change.

func (*App) DisableUserAccessToken

func (a *App) DisableUserAccessToken(token *model.UserAccessToken) *model.AppError

func (*App) DoActionRequest

func (a *App) DoActionRequest(c *request.Context, rawURL string, body []byte) (*http.Response, *model.AppError)

Perform an HTTP POST request to an integration's action endpoint. Caller must consume and close returned http.Response as necessary. For internal requests, requests are routed directly to a plugin ServerHTTP hook

func (*App) DoAdvancedPermissionsMigration

func (a *App) DoAdvancedPermissionsMigration()

This function migrates the default built in roles from code/config to the database.

func (*App) DoAppMigrations

func (a *App) DoAppMigrations()

func (*App) DoCommandRequest

func (a *App) DoCommandRequest(cmd *model.Command, p url.Values) (*model.Command, *model.CommandResponse, *model.AppError)

func (*App) DoEmojisPermissionsMigration

func (a *App) DoEmojisPermissionsMigration()

func (*App) DoGuestRolesCreationMigration

func (a *App) DoGuestRolesCreationMigration()

func (*App) DoLocalRequest

func (a *App) DoLocalRequest(c *request.Context, rawURL string, body []byte) (*http.Response, *model.AppError)

func (*App) DoLogin

func (a *App) DoLogin(c *request.Context, w http.ResponseWriter, r *http.Request, user *model.User, deviceID string, isMobile, isOAuthUser, isSaml bool) *model.AppError

func (*App) DoPermissionsMigrations

func (a *App) DoPermissionsMigrations() error

DoPermissionsMigrations execute all the permissions migrations need by the current version.

func (*App) DoPostAction

func (a *App) DoPostAction(c *request.Context, postID, actionId, userID, selectedOption string) (string, *model.AppError)

func (*App) DoPostActionWithCookie

func (a *App) DoPostActionWithCookie(c *request.Context, postID, actionId, userID, selectedOption string, cookie *model.PostActionCookie) (string, *model.AppError)

func (*App) DoSystemConsoleRolesCreationMigration

func (a *App) DoSystemConsoleRolesCreationMigration()

func (*App) DoUploadFile

func (a *App) DoUploadFile(c *request.Context, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, *model.AppError)

func (*App) DoUploadFileExpectModification

func (a *App) DoUploadFileExpectModification(c *request.Context, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError)

func (*App) DoubleCheckPassword

func (a *App) DoubleCheckPassword(user *model.User, password string) *model.AppError

This to be used for places we check the users password when they are already logged in

func (*App) DownloadFromURL

func (a *App) DownloadFromURL(downloadURL string) ([]byte, error)

func (*App) EnablePlugin

func (a *App) EnablePlugin(id string) *model.AppError

EnablePlugin will set the config for an installed plugin to enabled, triggering asynchronous activation if inactive anywhere in the cluster. Notifies cluster peers through config change.

func (*App) EnableUserAccessToken

func (a *App) EnableUserAccessToken(token *model.UserAccessToken) *model.AppError

func (*App) EnvironmentConfig

func (a *App) EnvironmentConfig(filter func(reflect.StructField) bool) map[string]interface{}

func (*App) ExecuteCommand

func (a *App) ExecuteCommand(c *request.Context, args *model.CommandArgs) (*model.CommandResponse, *model.AppError)

@openTracingParams args

func (*App) ExportPermissions

func (a *App) ExportPermissions(w io.Writer) error

func (*App) ExtendSessionExpiryIfNeeded

func (a *App) ExtendSessionExpiryIfNeeded(session *model.Session) bool

ExtendSessionExpiryIfNeeded extends Session.ExpiresAt based on session lengths in config. A new ExpiresAt is only written if enough time has elapsed since last update. Returns true only if the session was extended.

func (*App) ExtractContentFromFileInfo

func (a *App) ExtractContentFromFileInfo(fileInfo *model.FileInfo) error

func (*App) FetchSamlMetadataFromIdp

func (a *App) FetchSamlMetadataFromIdp(url string) ([]byte, *model.AppError)

func (*App) FileBackend

func (a *App) FileBackend() filestore.FileBackend

func (*App) FileExists

func (a *App) FileExists(path string) (bool, *model.AppError)

func (*App) FileModTime

func (a *App) FileModTime(path string) (time.Time, *model.AppError)

func (*App) FileReader

func (a *App) FileReader(path string) (filestore.ReadCloseSeeker, *model.AppError)

Caller must close the first return value

func (*App) FileSize

func (a *App) FileSize(path string) (int64, *model.AppError)

func (*App) FillInChannelProps

func (a *App) FillInChannelProps(channel *model.Channel) *model.AppError

func (*App) FillInChannelsProps

func (a *App) FillInChannelsProps(channelList model.ChannelList) *model.AppError

func (*App) FillInPostProps

func (a *App) FillInPostProps(post *model.Post, channel *model.Channel) *model.AppError

FillInPostProps should be invoked before saving posts to fill in properties such as channel_mentions.

If channel is nil, FillInPostProps will look up the channel corresponding to the post.

func (*App) FilterNonGroupChannelMembers

func (a *App) FilterNonGroupChannelMembers(userIDs []string, channel *model.Channel) ([]string, error)

FilterNonGroupChannelMembers returns the subset of the given user IDs of the users who are not members of groups associated to the channel excluding bots

func (*App) FilterNonGroupTeamMembers

func (a *App) FilterNonGroupTeamMembers(userIDs []string, team *model.Team) ([]string, error)

FilterNonGroupTeamMembers returns the subset of the given user IDs of the users who are not members of groups associated to the team excluding bots.

func (*App) FilterUsersByVisible

func (a *App) FilterUsersByVisible(viewer *model.User, otherUsers []*model.User) ([]*model.User, *model.AppError)

func (*App) FindTeamByName

func (a *App) FindTeamByName(name string) bool

func (*App) GenerateMfaSecret

func (a *App) GenerateMfaSecret(userID string) (*model.MfaSecret, *model.AppError)
func (a *App) GeneratePublicLink(siteURL string, info *model.FileInfo) string

func (*App) GenerateSupportPacket

func (a *App) GenerateSupportPacket() []model.FileData

func (*App) GetActivePluginManifests

func (a *App) GetActivePluginManifests() ([]*model.Manifest, *model.AppError)

func (*App) GetAllChannels

func (a *App) GetAllChannels(page, perPage int, opts model.ChannelSearchOpts) (model.ChannelListWithTeamData, *model.AppError)

func (*App) GetAllChannelsCount

func (a *App) GetAllChannelsCount(opts model.ChannelSearchOpts) (int64, *model.AppError)

func (*App) GetAllLdapGroupsPage

func (a *App) GetAllLdapGroupsPage(page int, perPage int, opts model.LdapGroupSearchOpts) ([]*model.Group, int, *model.AppError)

GetAllLdapGroupsPage retrieves all LDAP groups under the configured base DN using the default or configured group filter.

func (*App) GetAllPrivateTeams

func (a *App) GetAllPrivateTeams() ([]*model.Team, *model.AppError)

func (*App) GetAllPublicTeams

func (a *App) GetAllPublicTeams() ([]*model.Team, *model.AppError)

func (*App) GetAllRemoteClusters

func (a *App) GetAllRemoteClusters(filter model.RemoteClusterQueryFilter) ([]*model.RemoteCluster, *model.AppError)

func (*App) GetAllRoles added in v6.2.0

func (a *App) GetAllRoles() ([]*model.Role, *model.AppError)

func (*App) GetAllStatuses

func (a *App) GetAllStatuses() map[string]*model.Status

func (*App) GetAllTeams

func (a *App) GetAllTeams() ([]*model.Team, *model.AppError)

func (*App) GetAllTeamsPage

func (a *App) GetAllTeamsPage(offset int, limit int, opts *model.TeamSearch) ([]*model.Team, *model.AppError)

func (*App) GetAllTeamsPageWithCount

func (a *App) GetAllTeamsPageWithCount(offset int, limit int, opts *model.TeamSearch) (*model.TeamsWithCount, *model.AppError)

func (*App) GetAnalytics

func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *model.AppError)

func (*App) GetAppliedSchemaMigrations added in v6.6.0

func (a *App) GetAppliedSchemaMigrations() ([]model.AppliedMigration, *model.AppError)

func (*App) GetAudits

func (a *App) GetAudits(userID string, limit int) (model.Audits, *model.AppError)

func (*App) GetAuditsPage

func (a *App) GetAuditsPage(userID string, page int, perPage int) (model.Audits, *model.AppError)

func (*App) GetAuthorizationCode

func (a *App) GetAuthorizationCode(w http.ResponseWriter, r *http.Request, service string, props map[string]string, loginHint string) (string, *model.AppError)

func (*App) GetAuthorizedAppsForUser

func (a *App) GetAuthorizedAppsForUser(userID string, page, perPage int) ([]*model.OAuthApp, *model.AppError)

func (*App) GetBot

func (a *App) GetBot(botUserId string, includeDeleted bool) (*model.Bot, *model.AppError)

GetBot returns the given bot.

func (*App) GetBots

func (a *App) GetBots(options *model.BotGetOptions) (model.BotList, *model.AppError)

GetBots returns the requested page of bots.

func (*App) GetBrandImage

func (a *App) GetBrandImage() ([]byte, *model.AppError)

func (*App) GetBulkReactionsForPosts

func (a *App) GetBulkReactionsForPosts(postIDs []string) (map[string][]*model.Reaction, *model.AppError)

func (*App) GetChannel

func (a *App) GetChannel(channelID string) (*model.Channel, *model.AppError)

func (*App) GetChannelByName

func (a *App) GetChannelByName(channelName, teamID string, includeDeleted bool) (*model.Channel, *model.AppError)

func (*App) GetChannelByNameForTeamName

func (a *App) GetChannelByNameForTeamName(channelName, teamName string, includeDeleted bool) (*model.Channel, *model.AppError)

func (*App) GetChannelCounts

func (a *App) GetChannelCounts(teamID string, userID string) (*model.ChannelCounts, *model.AppError)

func (*App) GetChannelFileCount added in v6.7.0

func (a *App) GetChannelFileCount(channelID string) (int64, *model.AppError)

func (*App) GetChannelGroupUsers

func (a *App) GetChannelGroupUsers(channelID string) ([]*model.User, *model.AppError)

GetChannelGroupUsers returns the users who are associated to the channel via GroupChannels and GroupMembers.

func (*App) GetChannelGuestCount

func (a *App) GetChannelGuestCount(channelID string) (int64, *model.AppError)

func (*App) GetChannelMember

func (a *App) GetChannelMember(ctx context.Context, channelID string, userID string) (*model.ChannelMember, *model.AppError)

func (*App) GetChannelMemberCount

func (a *App) GetChannelMemberCount(channelID string) (int64, *model.AppError)

func (*App) GetChannelMembersByIds

func (a *App) GetChannelMembersByIds(channelID string, userIDs []string) (model.ChannelMembers, *model.AppError)

func (*App) GetChannelMembersForUser

func (a *App) GetChannelMembersForUser(teamID string, userID string) (model.ChannelMembers, *model.AppError)

func (*App) GetChannelMembersForUserWithPagination

func (a *App) GetChannelMembersForUserWithPagination(userID string, page, perPage int) ([]*model.ChannelMember, *model.AppError)

func (*App) GetChannelMembersPage

func (a *App) GetChannelMembersPage(channelID string, page, perPage int) (model.ChannelMembers, *model.AppError)

func (*App) GetChannelMembersTimezones

func (a *App) GetChannelMembersTimezones(channelID string) ([]string, *model.AppError)

func (*App) GetChannelMembersWithTeamDataForUserWithPagination added in v6.2.0

func (a *App) GetChannelMembersWithTeamDataForUserWithPagination(userID string, page, perPage int) (model.ChannelMembersWithTeamData, *model.AppError)

func (*App) GetChannelModerationsForChannel

func (a *App) GetChannelModerationsForChannel(channel *model.Channel) ([]*model.ChannelModeration, *model.AppError)

GetChannelModerationsForChannel Gets a channels ChannelModerations from either the higherScoped roles or from the channel scheme roles.

func (*App) GetChannelPinnedPostCount

func (a *App) GetChannelPinnedPostCount(channelID string) (int64, *model.AppError)

func (*App) GetChannelPoliciesForUser

func (a *App) GetChannelPoliciesForUser(userID string, offset, limit int) (*model.RetentionPolicyForChannelList, *model.AppError)

func (*App) GetChannelUnread

func (a *App) GetChannelUnread(channelID, userID string) (*model.ChannelUnread, *model.AppError)

func (*App) GetChannels added in v6.7.0

func (a *App) GetChannels(channelIDs []string) ([]*model.Channel, *model.AppError)

func (*App) GetChannelsByNames

func (a *App) GetChannelsByNames(channelNames []string, teamID string) ([]*model.Channel, *model.AppError)

func (*App) GetChannelsForRetentionPolicy

func (a *App) GetChannelsForRetentionPolicy(policyID string, offset, limit int) (*model.ChannelsWithCount, *model.AppError)

func (*App) GetChannelsForScheme

func (a *App) GetChannelsForScheme(scheme *model.Scheme, offset int, limit int) (model.ChannelList, *model.AppError)

func (*App) GetChannelsForSchemePage

func (a *App) GetChannelsForSchemePage(scheme *model.Scheme, page int, perPage int) (model.ChannelList, *model.AppError)

func (*App) GetChannelsForTeamForUser added in v6.2.0

func (a *App) GetChannelsForTeamForUser(teamID string, userID string, opts *model.ChannelSearchOpts) (model.ChannelList, *model.AppError)

func (*App) GetChannelsForTeamForUserWithCursor added in v6.5.0

func (a *App) GetChannelsForTeamForUserWithCursor(teamID string, userID string, opts *model.ChannelSearchOpts, afterChannelID string) (model.ChannelList, *model.AppError)

func (*App) GetChannelsForUser

func (a *App) GetChannelsForUser(userID string, includeDeleted bool, lastDeleteAt, pageSize int, fromChannelID string) (model.ChannelList, *model.AppError)

func (*App) GetChannelsUserNotIn

func (a *App) GetChannelsUserNotIn(teamID string, userID string, offset int, limit int) (model.ChannelList, *model.AppError)

func (*App) GetCloudSession

func (a *App) GetCloudSession(token string) (*model.Session, *model.AppError)

func (*App) GetClusterId

func (a *App) GetClusterId() string

func (*App) GetClusterPluginStatuses

func (a *App) GetClusterPluginStatuses() (model.PluginStatuses, *model.AppError)

GetClusterPluginStatuses returns the status for plugins installed anywhere in the cluster.

func (*App) GetClusterStatus

func (a *App) GetClusterStatus() []*model.ClusterInfo

func (*App) GetCommand

func (a *App) GetCommand(commandID string) (*model.Command, *model.AppError)

func (*App) GetCommonTeamIDsForTwoUsers

func (a *App) GetCommonTeamIDsForTwoUsers(userID, otherUserID string) ([]string, *model.AppError)

func (*App) GetComplianceFile

func (a *App) GetComplianceFile(job *model.Compliance) ([]byte, *model.AppError)

func (*App) GetComplianceReport

func (a *App) GetComplianceReport(reportId string) (*model.Compliance, *model.AppError)

func (*App) GetComplianceReports

func (a *App) GetComplianceReports(page, perPage int) (model.Compliances, *model.AppError)

func (*App) GetConfigFile

func (a *App) GetConfigFile(name string) ([]byte, error)

GetConfigFile proxies access to the given configuration file to the underlying config store.

func (*App) GetCookieDomain

func (a *App) GetCookieDomain() string

func (*App) GetCustomStatus added in v6.2.0

func (a *App) GetCustomStatus(userID string) (*model.CustomStatus, *model.AppError)

func (*App) GetDefaultProfileImage

func (a *App) GetDefaultProfileImage(user *model.User) ([]byte, *model.AppError)

func (*App) GetDeletedChannels

func (a *App) GetDeletedChannels(teamID string, offset int, limit int, userID string) (model.ChannelList, *model.AppError)

func (*App) GetEmoji

func (a *App) GetEmoji(emojiId string) (*model.Emoji, *model.AppError)

func (*App) GetEmojiByName

func (a *App) GetEmojiByName(emojiName string) (*model.Emoji, *model.AppError)

func (*App) GetEmojiImage

func (a *App) GetEmojiImage(emojiId string) ([]byte, string, *model.AppError)

func (*App) GetEmojiList

func (a *App) GetEmojiList(page, perPage int, sort string) ([]*model.Emoji, *model.AppError)

func (*App) GetEmojiStaticURL

func (a *App) GetEmojiStaticURL(emojiName string) (string, *model.AppError)

GetEmojiStaticURL returns a relative static URL for system default emojis, and the API route for custom ones. Errors if not found or if custom and deleted.

func (*App) GetEnvironmentConfig

func (a *App) GetEnvironmentConfig(filter func(reflect.StructField) bool) map[string]interface{}

GetEnvironmentConfig returns a map of configuration keys whose values have been overridden by an environment variable. If filter is not nil and returns false for a struct field, that field will be omitted.

func (*App) GetFile

func (a *App) GetFile(fileID string) ([]byte, *model.AppError)

func (*App) GetFileInfo

func (a *App) GetFileInfo(fileID string) (*model.FileInfo, *model.AppError)

func (*App) GetFileInfos

func (a *App) GetFileInfos(page, perPage int, opt *model.GetFileInfosOptions) ([]*model.FileInfo, *model.AppError)

func (*App) GetFileInfosForPost

func (a *App) GetFileInfosForPost(postID string, fromMaster bool) ([]*model.FileInfo, *model.AppError)

func (*App) GetFileInfosForPostWithMigration

func (a *App) GetFileInfosForPostWithMigration(postID string) ([]*model.FileInfo, *model.AppError)

func (*App) GetFilteredUsersStats

func (a *App) GetFilteredUsersStats(options *model.UserCountOptions) (*model.UsersStats, *model.AppError)

GetFilteredUsersStats is used to get a count of users based on the set of filters supported by UserCountOptions.

func (*App) GetFlaggedPosts

func (a *App) GetFlaggedPosts(userID string, offset int, limit int) (*model.PostList, *model.AppError)

func (*App) GetFlaggedPostsForChannel

func (a *App) GetFlaggedPostsForChannel(userID, channelID string, offset int, limit int) (*model.PostList, *model.AppError)

func (*App) GetFlaggedPostsForTeam

func (a *App) GetFlaggedPostsForTeam(userID, teamID string, offset int, limit int) (*model.PostList, *model.AppError)

func (*App) GetGlobalRetentionPolicy

func (a *App) GetGlobalRetentionPolicy() (*model.GlobalRetentionPolicy, *model.AppError)

func (*App) GetGroup

func (a *App) GetGroup(id string, opts *model.GetGroupOpts) (*model.Group, *model.AppError)

func (*App) GetGroupByName

func (a *App) GetGroupByName(name string, opts model.GroupSearchOpts) (*model.Group, *model.AppError)

func (*App) GetGroupByRemoteID

func (a *App) GetGroupByRemoteID(remoteID string, groupSource model.GroupSource) (*model.Group, *model.AppError)

func (*App) GetGroupChannel

func (a *App) GetGroupChannel(userIDs []string) (*model.Channel, *model.AppError)

func (*App) GetGroupMemberCount

func (a *App) GetGroupMemberCount(groupID string) (int64, *model.AppError)

func (*App) GetGroupMemberUsers

func (a *App) GetGroupMemberUsers(groupID string) ([]*model.User, *model.AppError)

func (*App) GetGroupMemberUsersPage

func (a *App) GetGroupMemberUsersPage(groupID string, page int, perPage int) ([]*model.User, int, *model.AppError)

func (*App) GetGroupSyncable

func (a *App) GetGroupSyncable(groupID string, syncableID string, syncableType model.GroupSyncableType) (*model.GroupSyncable, *model.AppError)

func (*App) GetGroupSyncables

func (a *App) GetGroupSyncables(groupID string, syncableType model.GroupSyncableType) ([]*model.GroupSyncable, *model.AppError)

func (*App) GetGroups

func (a *App) GetGroups(page, perPage int, opts model.GroupSearchOpts) ([]*model.Group, *model.AppError)

func (*App) GetGroupsAssociatedToChannelsByTeam

func (a *App) GetGroupsAssociatedToChannelsByTeam(teamID string, opts model.GroupSearchOpts) (map[string][]*model.GroupWithSchemeAdmin, *model.AppError)

func (*App) GetGroupsByChannel

func (a *App) GetGroupsByChannel(channelID string, opts model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, int, *model.AppError)

func (*App) GetGroupsByIDs

func (a *App) GetGroupsByIDs(groupIDs []string) ([]*model.Group, *model.AppError)

func (*App) GetGroupsBySource

func (a *App) GetGroupsBySource(groupSource model.GroupSource) ([]*model.Group, *model.AppError)

func (*App) GetGroupsByTeam

func (a *App) GetGroupsByTeam(teamID string, opts model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, int, *model.AppError)

GetGroupsByTeam returns the paged list and the total count of group associated to the given team.

func (*App) GetGroupsByUserId

func (a *App) GetGroupsByUserId(userID string) ([]*model.Group, *model.AppError)

func (*App) GetHubForUserId

func (a *App) GetHubForUserId(userID string) *Hub

func (*App) GetIncomingWebhook

func (a *App) GetIncomingWebhook(hookID string) (*model.IncomingWebhook, *model.AppError)

func (*App) GetIncomingWebhooksForTeamPage

func (a *App) GetIncomingWebhooksForTeamPage(teamID string, page, perPage int) ([]*model.IncomingWebhook, *model.AppError)

func (*App) GetIncomingWebhooksForTeamPageByUser

func (a *App) GetIncomingWebhooksForTeamPageByUser(teamID string, userID string, page, perPage int) ([]*model.IncomingWebhook, *model.AppError)

func (*App) GetIncomingWebhooksPage

func (a *App) GetIncomingWebhooksPage(page, perPage int) ([]*model.IncomingWebhook, *model.AppError)

func (*App) GetIncomingWebhooksPageByUser

func (a *App) GetIncomingWebhooksPageByUser(userID string, page, perPage int) ([]*model.IncomingWebhook, *model.AppError)

func (*App) GetJob

func (a *App) GetJob(id string) (*model.Job, *model.AppError)

func (*App) GetJobs

func (a *App) GetJobs(offset int, limit int) ([]*model.Job, *model.AppError)

func (*App) GetJobsByType

func (a *App) GetJobsByType(jobType string, offset int, limit int) ([]*model.Job, *model.AppError)

func (*App) GetJobsByTypePage

func (a *App) GetJobsByTypePage(jobType string, page int, perPage int) ([]*model.Job, *model.AppError)

func (*App) GetJobsByTypes

func (a *App) GetJobsByTypes(jobTypes []string, offset int, limit int) ([]*model.Job, *model.AppError)

func (*App) GetJobsByTypesPage

func (a *App) GetJobsByTypesPage(jobType []string, page int, perPage int) ([]*model.Job, *model.AppError)

func (*App) GetJobsPage

func (a *App) GetJobsPage(page int, perPage int) ([]*model.Job, *model.AppError)

func (*App) GetKnownUsers

func (a *App) GetKnownUsers(userID string) ([]string, *model.AppError)

GetKnownUsers returns the list of user ids of users with any direct relationship with a user. That means any user sharing any channel, including direct and group channels.

func (*App) GetLatestTermsOfService

func (a *App) GetLatestTermsOfService() (*model.TermsOfService, *model.AppError)

func (*App) GetLatestVersion added in v6.5.0

func (a *App) GetLatestVersion(latestVersionUrl string) (*model.GithubReleaseInfo, *model.AppError)

func (*App) GetLdapGroup

func (a *App) GetLdapGroup(ldapGroupID string) (*model.Group, *model.AppError)

GetLdapGroup retrieves a single LDAP group by the given LDAP group id.

func (*App) GetLogs

func (a *App) GetLogs(page, perPage int) ([]string, *model.AppError)

func (*App) GetLogsSkipSend

func (a *App) GetLogsSkipSend(page, perPage int) ([]string, *model.AppError)

func (*App) GetMarketplacePlugins

func (a *App) GetMarketplacePlugins(filter *model.MarketplacePluginFilter) ([]*model.MarketplacePlugin, *model.AppError)

GetMarketplacePlugins returns a list of plugins from the marketplace-server, and plugins that are installed locally.

func (*App) GetMemberCountsByGroup

func (a *App) GetMemberCountsByGroup(ctx context.Context, channelID string, includeTimezones bool) ([]*model.ChannelMemberCountByGroup, *model.AppError)

func (*App) GetMessageForNotification

func (a *App) GetMessageForNotification(post *model.Post, translateFunc i18n.TranslateFunc) string

func (*App) GetMultipleEmojiByName

func (a *App) GetMultipleEmojiByName(names []string) ([]*model.Emoji, *model.AppError)

func (*App) GetNewUsersForTeamPage

func (a *App) GetNewUsersForTeamPage(teamID string, page, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)

func (*App) GetNextPostIdFromPostList

func (a *App) GetNextPostIdFromPostList(postList *model.PostList, collapsedThreads bool) string

func (*App) GetNotificationNameFormat

func (a *App) GetNotificationNameFormat(user *model.User) string

func (*App) GetNumberOfChannelsOnTeam

func (a *App) GetNumberOfChannelsOnTeam(teamID string) (int, *model.AppError)

func (*App) GetOAuthAccessTokenForCodeFlow

func (a *App) GetOAuthAccessTokenForCodeFlow(clientId, grantType, redirectURI, code, secret, refreshToken string) (*model.AccessResponse, *model.AppError)

func (*App) GetOAuthAccessTokenForImplicitFlow

func (a *App) GetOAuthAccessTokenForImplicitFlow(userID string, authRequest *model.AuthorizeRequest) (*model.Session, *model.AppError)

func (*App) GetOAuthApp

func (a *App) GetOAuthApp(appID string) (*model.OAuthApp, *model.AppError)

func (*App) GetOAuthApps

func (a *App) GetOAuthApps(page, perPage int) ([]*model.OAuthApp, *model.AppError)

func (*App) GetOAuthAppsByCreator

func (a *App) GetOAuthAppsByCreator(userID string, page, perPage int) ([]*model.OAuthApp, *model.AppError)

func (*App) GetOAuthCodeRedirect

func (a *App) GetOAuthCodeRedirect(userID string, authRequest *model.AuthorizeRequest) (string, *model.AppError)

func (*App) GetOAuthImplicitRedirect

func (a *App) GetOAuthImplicitRedirect(userID string, authRequest *model.AuthorizeRequest) (string, *model.AppError)

func (*App) GetOAuthLoginEndpoint

func (a *App) GetOAuthLoginEndpoint(w http.ResponseWriter, r *http.Request, service, teamID, action, redirectTo, loginHint string, isMobile bool) (string, *model.AppError)

func (*App) GetOAuthSignupEndpoint

func (a *App) GetOAuthSignupEndpoint(w http.ResponseWriter, r *http.Request, service, teamID string) (string, *model.AppError)

func (*App) GetOAuthStateToken

func (a *App) GetOAuthStateToken(token string) (*model.Token, *model.AppError)

func (*App) GetOnboarding added in v6.5.0

func (a *App) GetOnboarding() (*model.System, *model.AppError)

func (*App) GetOpenGraphMetadata

func (a *App) GetOpenGraphMetadata(requestURL string) ([]byte, error)

func (*App) GetOrCreateDirectChannel

func (a *App) GetOrCreateDirectChannel(c *request.Context, userID, otherUserID string, channelOptions ...model.ChannelOption) (*model.Channel, *model.AppError)

func (*App) GetOutgoingWebhook

func (a *App) GetOutgoingWebhook(hookID string) (*model.OutgoingWebhook, *model.AppError)

func (*App) GetOutgoingWebhooksForChannelPageByUser

func (a *App) GetOutgoingWebhooksForChannelPageByUser(channelID string, userID string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError)

func (*App) GetOutgoingWebhooksForTeamPage

func (a *App) GetOutgoingWebhooksForTeamPage(teamID string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError)

func (*App) GetOutgoingWebhooksForTeamPageByUser

func (a *App) GetOutgoingWebhooksForTeamPageByUser(teamID string, userID string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError)

func (*App) GetOutgoingWebhooksPage

func (a *App) GetOutgoingWebhooksPage(page, perPage int) ([]*model.OutgoingWebhook, *model.AppError)

func (*App) GetOutgoingWebhooksPageByUser

func (a *App) GetOutgoingWebhooksPageByUser(userID string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError)

func (*App) GetPasswordRecoveryToken

func (a *App) GetPasswordRecoveryToken(token string) (*model.Token, *model.AppError)

func (*App) GetPermalinkPost

func (a *App) GetPermalinkPost(c *request.Context, postID string, userID string) (*model.PostList, *model.AppError)

func (*App) GetPinnedPosts

func (a *App) GetPinnedPosts(channelID string) (*model.PostList, *model.AppError)

func (*App) GetPluginKey

func (a *App) GetPluginKey(pluginID string, key string) ([]byte, *model.AppError)

func (*App) GetPluginStatus

func (a *App) GetPluginStatus(id string) (*model.PluginStatus, *model.AppError)

GetPluginStatus returns the status for a plugin installed on this server.

func (*App) GetPluginStatuses

func (a *App) GetPluginStatuses() (model.PluginStatuses, *model.AppError)

GetPluginStatuses returns the status for plugins installed on this server.

func (*App) GetPlugins

func (a *App) GetPlugins() (*model.PluginsResponse, *model.AppError)

func (*App) GetPluginsEnvironment

func (a *App) GetPluginsEnvironment() *plugin.Environment

GetPluginsEnvironment returns the plugin environment for use if plugins are enabled and initialized.

To get the plugins environment when the plugins are disabled, manually acquire the plugins lock instead.

func (*App) GetPostAfterTime

func (a *App) GetPostAfterTime(channelID string, time int64, collapsedThreads bool) (*model.Post, *model.AppError)

func (*App) GetPostIdAfterTime

func (a *App) GetPostIdAfterTime(channelID string, time int64, collapsedThreads bool) (string, *model.AppError)

func (*App) GetPostIdBeforeTime

func (a *App) GetPostIdBeforeTime(channelID string, time int64, collapsedThreads bool) (string, *model.AppError)

func (*App) GetPostIfAuthorized

func (a *App) GetPostIfAuthorized(postID string, session *model.Session) (*model.Post, *model.AppError)

func (*App) GetPostThread

func (a *App) GetPostThread(postID string, opts model.GetPostsOptions, userID string) (*model.PostList, *model.AppError)

func (*App) GetPosts

func (a *App) GetPosts(channelID string, offset int, limit int) (*model.PostList, *model.AppError)

func (*App) GetPostsAfterPost

func (a *App) GetPostsAfterPost(options model.GetPostsOptions) (*model.PostList, *model.AppError)

func (*App) GetPostsAroundPost

func (a *App) GetPostsAroundPost(before bool, options model.GetPostsOptions) (*model.PostList, *model.AppError)

func (*App) GetPostsBeforePost

func (a *App) GetPostsBeforePost(options model.GetPostsOptions) (*model.PostList, *model.AppError)

func (*App) GetPostsByIds added in v6.2.0

func (a *App) GetPostsByIds(postIDs []string) ([]*model.Post, *model.AppError)

func (*App) GetPostsEtag

func (a *App) GetPostsEtag(channelID string, collapsedThreads bool) string

func (*App) GetPostsForChannelAroundLastUnread

func (a *App) GetPostsForChannelAroundLastUnread(channelID, userID string, limitBefore, limitAfter int, skipFetchThreads bool, collapsedThreads, collapsedThreadsExtended bool) (*model.PostList, *model.AppError)

func (*App) GetPostsPage

func (a *App) GetPostsPage(options model.GetPostsOptions) (*model.PostList, *model.AppError)

func (*App) GetPostsSince

func (a *App) GetPostsSince(options model.GetPostsSinceOptions) (*model.PostList, *model.AppError)

func (*App) GetPreferenceByCategoryAndNameForUser

func (a *App) GetPreferenceByCategoryAndNameForUser(userID string, category string, preferenceName string) (*model.Preference, *model.AppError)

func (*App) GetPreferenceByCategoryForUser

func (a *App) GetPreferenceByCategoryForUser(userID string, category string) (model.Preferences, *model.AppError)

func (*App) GetPreferencesForUser

func (a *App) GetPreferencesForUser(userID string) (model.Preferences, *model.AppError)

func (*App) GetPrevPostIdFromPostList

func (a *App) GetPrevPostIdFromPostList(postList *model.PostList, collapsedThreads bool) string

func (*App) GetPrivateChannelsForTeam

func (a *App) GetPrivateChannelsForTeam(teamID string, offset int, limit int) (model.ChannelList, *model.AppError)

func (*App) GetProductNotices

func (a *App) GetProductNotices(c *request.Context, userID, teamID string, client model.NoticeClientType, clientVersion string, locale string) (model.NoticeMessages, *model.AppError)

GetProductNotices is called from the frontend to fetch the product notices that are relevant to the caller

func (*App) GetProfileImage

func (a *App) GetProfileImage(user *model.User) ([]byte, bool, *model.AppError)

func (*App) GetPublicChannelsByIdsForTeam

func (a *App) GetPublicChannelsByIdsForTeam(teamID string, channelIDs []string) (model.ChannelList, *model.AppError)

func (*App) GetPublicChannelsForTeam

func (a *App) GetPublicChannelsForTeam(teamID string, offset int, limit int) (model.ChannelList, *model.AppError)

func (*App) GetPublicKey

func (a *App) GetPublicKey(name string) ([]byte, *model.AppError)

GetPublicKey will return the actual public key saved in the `name` file.

func (*App) GetReactionsForPost

func (a *App) GetReactionsForPost(postID string) ([]*model.Reaction, *model.AppError)

func (*App) GetRecentlyActiveUsersForTeam

func (a *App) GetRecentlyActiveUsersForTeam(teamID string) (map[string]*model.User, *model.AppError)

func (*App) GetRecentlyActiveUsersForTeamPage

func (a *App) GetRecentlyActiveUsersForTeamPage(teamID string, page, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)

func (*App) GetRemoteCluster

func (a *App) GetRemoteCluster(remoteClusterId string) (*model.RemoteCluster, *model.AppError)

func (*App) GetRemoteClusterForUser

func (a *App) GetRemoteClusterForUser(remoteID string, userID string) (*model.RemoteCluster, *model.AppError)

func (*App) GetRemoteClusterService

func (a *App) GetRemoteClusterService() (remotecluster.RemoteClusterServiceIFace, *model.AppError)

func (*App) GetRemoteClusterSession

func (a *App) GetRemoteClusterSession(token string, remoteId string) (*model.Session, *model.AppError)

func (*App) GetRetentionPolicies

func (a *App) GetRetentionPolicies(offset, limit int) (*model.RetentionPolicyWithTeamAndChannelCountsList, *model.AppError)

func (*App) GetRetentionPoliciesCount

func (a *App) GetRetentionPoliciesCount() (int64, *model.AppError)

func (*App) GetRetentionPolicy

func (a *App) GetRetentionPolicy(policyID string) (*model.RetentionPolicyWithTeamAndChannelCounts, *model.AppError)

func (*App) GetRole

func (a *App) GetRole(id string) (*model.Role, *model.AppError)

func (*App) GetRoleByName

func (a *App) GetRoleByName(ctx context.Context, name string) (*model.Role, *model.AppError)

func (*App) GetRolesByNames

func (a *App) GetRolesByNames(names []string) ([]*model.Role, *model.AppError)

func (*App) GetSamlCertificateStatus

func (a *App) GetSamlCertificateStatus() *model.SamlCertificateStatus

func (*App) GetSamlMetadata

func (a *App) GetSamlMetadata() (string, *model.AppError)

func (*App) GetSamlMetadataFromIdp

func (a *App) GetSamlMetadataFromIdp(idpMetadataURL string) (*model.SamlMetadataResponse, *model.AppError)

func (*App) GetSanitizeOptions

func (a *App) GetSanitizeOptions(asAdmin bool) map[string]bool

func (*App) GetSanitizedConfig

func (a *App) GetSanitizedConfig() *model.Config

GetSanitizedConfig gets the configuration for a system admin without any secrets.

func (*App) GetScheme

func (a *App) GetScheme(id string) (*model.Scheme, *model.AppError)

func (*App) GetSchemeByName

func (a *App) GetSchemeByName(name string) (*model.Scheme, *model.AppError)

func (*App) GetSchemeRolesForChannel

func (a *App) GetSchemeRolesForChannel(channelID string) (guestRoleName, userRoleName, adminRoleName string, err *model.AppError)

GetSchemeRolesForChannel Checks if a channel or its team has an override scheme for channel roles and returns the scheme roles or default channel roles.

func (*App) GetSchemeRolesForTeam

func (a *App) GetSchemeRolesForTeam(teamID string) (string, string, string, *model.AppError)

func (*App) GetSchemes

func (a *App) GetSchemes(scope string, offset int, limit int) ([]*model.Scheme, *model.AppError)

func (*App) GetSchemesPage

func (a *App) GetSchemesPage(scope string, page int, perPage int) ([]*model.Scheme, *model.AppError)

func (*App) GetSession

func (a *App) GetSession(token string) (*model.Session, *model.AppError)

func (*App) GetSessionById

func (a *App) GetSessionById(sessionID string) (*model.Session, *model.AppError)

func (*App) GetSessionLengthInMillis

func (a *App) GetSessionLengthInMillis(session *model.Session) int64

GetSessionLengthInMillis returns the session length, in milliseconds, based on the type of session (Mobile, SSO, Web/LDAP).

func (*App) GetSessions

func (a *App) GetSessions(userID string) ([]*model.Session, *model.AppError)

func (*App) GetSharedChannel

func (a *App) GetSharedChannel(channelID string) (*model.SharedChannel, error)

func (*App) GetSharedChannelRemote

func (a *App) GetSharedChannelRemote(id string) (*model.SharedChannelRemote, error)

func (*App) GetSharedChannelRemoteByIds

func (a *App) GetSharedChannelRemoteByIds(channelID string, remoteID string) (*model.SharedChannelRemote, error)

func (*App) GetSharedChannelRemotes

func (a *App) GetSharedChannelRemotes(opts model.SharedChannelRemoteFilterOpts) ([]*model.SharedChannelRemote, error)

func (*App) GetSharedChannelRemotesStatus

func (a *App) GetSharedChannelRemotesStatus(channelID string) ([]*model.SharedChannelRemoteStatus, error)

func (*App) GetSharedChannels

func (a *App) GetSharedChannels(page int, perPage int, opts model.SharedChannelFilterOpts) ([]*model.SharedChannel, *model.AppError)

func (*App) GetSharedChannelsCount

func (a *App) GetSharedChannelsCount(opts model.SharedChannelFilterOpts) (int64, error)

func (*App) GetSidebarCategories

func (a *App) GetSidebarCategories(userID, teamID string) (*model.OrderedSidebarCategories, *model.AppError)

func (*App) GetSidebarCategory

func (a *App) GetSidebarCategory(categoryId string) (*model.SidebarCategoryWithChannels, *model.AppError)

func (*App) GetSidebarCategoryOrder

func (a *App) GetSidebarCategoryOrder(userID, teamID string) ([]string, *model.AppError)

func (*App) GetSinglePost

func (a *App) GetSinglePost(postID string) (*model.Post, *model.AppError)

func (*App) GetSiteURL

func (a *App) GetSiteURL() string

func (*App) GetStatus

func (a *App) GetStatus(userID string) (*model.Status, *model.AppError)

func (*App) GetStatusFromCache

func (a *App) GetStatusFromCache(userID string) *model.Status

func (*App) GetStatusesByIds

func (a *App) GetStatusesByIds(userIDs []string) (map[string]interface{}, *model.AppError)

func (*App) GetSuggestions

func (a *App) GetSuggestions(c *request.Context, commandArgs *model.CommandArgs, commands []*model.Command, roleID string) []model.AutocompleteSuggestion

GetSuggestions returns suggestions for user input.

func (*App) GetSystemBot

func (a *App) GetSystemBot() (*model.Bot, *model.AppError)

func (*App) GetTeam

func (a *App) GetTeam(teamID string) (*model.Team, *model.AppError)

func (*App) GetTeamByInviteId

func (a *App) GetTeamByInviteId(inviteId string) (*model.Team, *model.AppError)

func (*App) GetTeamByName

func (a *App) GetTeamByName(name string) (*model.Team, *model.AppError)

func (*App) GetTeamGroupUsers

func (a *App) GetTeamGroupUsers(teamID string) ([]*model.User, *model.AppError)

GetTeamGroupUsers returns the users who are associated to the team via GroupTeams and GroupMembers.

func (*App) GetTeamIcon

func (a *App) GetTeamIcon(team *model.Team) ([]byte, *model.AppError)

func (*App) GetTeamIdFromQuery

func (a *App) GetTeamIdFromQuery(query url.Values) (string, *model.AppError)

func (*App) GetTeamMember

func (a *App) GetTeamMember(teamID, userID string) (*model.TeamMember, *model.AppError)

func (*App) GetTeamMembers

func (a *App) GetTeamMembers(teamID string, offset int, limit int, teamMembersGetOptions *model.TeamMembersGetOptions) ([]*model.TeamMember, *model.AppError)

func (*App) GetTeamMembersByIds

func (a *App) GetTeamMembersByIds(teamID string, userIDs []string, restrictions *model.ViewUsersRestrictions) ([]*model.TeamMember, *model.AppError)

func (*App) GetTeamMembersForUser

func (a *App) GetTeamMembersForUser(userID string) ([]*model.TeamMember, *model.AppError)

func (*App) GetTeamMembersForUserWithPagination

func (a *App) GetTeamMembersForUserWithPagination(userID string, page, perPage int) ([]*model.TeamMember, *model.AppError)

func (*App) GetTeamPoliciesForUser

func (a *App) GetTeamPoliciesForUser(userID string, offset, limit int) (*model.RetentionPolicyForTeamList, *model.AppError)

func (*App) GetTeamSchemeChannelRoles

func (a *App) GetTeamSchemeChannelRoles(teamID string) (guestRoleName, userRoleName, adminRoleName string, err *model.AppError)

GetTeamSchemeChannelRoles Checks if a team has an override scheme and returns the scheme channel role names or default channel role names.

func (*App) GetTeamStats

func (a *App) GetTeamStats(teamID string, restrictions *model.ViewUsersRestrictions) (*model.TeamStats, *model.AppError)

func (*App) GetTeamUnread

func (a *App) GetTeamUnread(teamID, userID string) (*model.TeamUnread, *model.AppError)

func (*App) GetTeams added in v6.7.0

func (a *App) GetTeams(teamIDs []string) ([]*model.Team, *model.AppError)

func (*App) GetTeamsForRetentionPolicy

func (a *App) GetTeamsForRetentionPolicy(policyID string, offset, limit int) (*model.TeamsWithCount, *model.AppError)

func (*App) GetTeamsForScheme

func (a *App) GetTeamsForScheme(scheme *model.Scheme, offset int, limit int) ([]*model.Team, *model.AppError)

func (*App) GetTeamsForSchemePage

func (a *App) GetTeamsForSchemePage(scheme *model.Scheme, page int, perPage int) ([]*model.Team, *model.AppError)

func (*App) GetTeamsForUser

func (a *App) GetTeamsForUser(userID string) ([]*model.Team, *model.AppError)

func (*App) GetTeamsUnreadForUser

func (a *App) GetTeamsUnreadForUser(excludeTeamId string, userID string, includeCollapsedThreads bool) ([]*model.TeamUnread, *model.AppError)

func (*App) GetTermsOfService

func (a *App) GetTermsOfService(id string) (*model.TermsOfService, *model.AppError)

func (*App) GetThreadForUser

func (a *App) GetThreadForUser(teamID string, threadMembership *model.ThreadMembership, extended bool) (*model.ThreadResponse, *model.AppError)

func (*App) GetThreadMembershipForUser

func (a *App) GetThreadMembershipForUser(userId, threadId string) (*model.ThreadMembership, *model.AppError)

func (*App) GetThreadMembershipsForUser

func (a *App) GetThreadMembershipsForUser(userID, teamID string) ([]*model.ThreadMembership, error)

func (*App) GetThreadsForUser

func (a *App) GetThreadsForUser(userID, teamID string, options model.GetUserThreadsOpts) (*model.Threads, *model.AppError)

func (*App) GetTokenById added in v6.1.0

func (a *App) GetTokenById(token string) (*model.Token, *model.AppError)

func (*App) GetTopReactionsForTeamSince added in v6.7.0

func (a *App) GetTopReactionsForTeamSince(teamID string, userID string, opts *model.InsightsOpts) (*model.TopReactionList, *model.AppError)

func (*App) GetTopReactionsForUserSince added in v6.7.0

func (a *App) GetTopReactionsForUserSince(userID string, teamID string, opts *model.InsightsOpts) (*model.TopReactionList, *model.AppError)

func (*App) GetTotalUsersStats

func (a *App) GetTotalUsersStats(viewRestrictions *model.ViewUsersRestrictions) (*model.UsersStats, *model.AppError)

GetTotalUsersStats is used for the DM list total

func (*App) GetUploadSession

func (a *App) GetUploadSession(uploadId string) (*model.UploadSession, *model.AppError)

func (*App) GetUploadSessionsForUser

func (a *App) GetUploadSessionsForUser(userID string) ([]*model.UploadSession, *model.AppError)

func (*App) GetUser

func (a *App) GetUser(userID string) (*model.User, *model.AppError)

func (*App) GetUserAccessToken

func (a *App) GetUserAccessToken(tokenID string, sanitize bool) (*model.UserAccessToken, *model.AppError)

func (*App) GetUserAccessTokens

func (a *App) GetUserAccessTokens(page, perPage int) ([]*model.UserAccessToken, *model.AppError)

func (*App) GetUserAccessTokensForUser

func (a *App) GetUserAccessTokensForUser(userID string, page, perPage int) ([]*model.UserAccessToken, *model.AppError)

func (*App) GetUserByAuth

func (a *App) GetUserByAuth(authData *string, authService string) (*model.User, *model.AppError)

func (*App) GetUserByEmail

func (a *App) GetUserByEmail(email string) (*model.User, *model.AppError)

func (*App) GetUserByUsername

func (a *App) GetUserByUsername(username string) (*model.User, *model.AppError)

func (*App) GetUserForLogin

func (a *App) GetUserForLogin(id, loginId string) (*model.User, *model.AppError)

func (*App) GetUserStatusesByIds

func (a *App) GetUserStatusesByIds(userIDs []string) ([]*model.Status, *model.AppError)

GetUserStatusesByIds used by apiV4

func (*App) GetUserTermsOfService

func (a *App) GetUserTermsOfService(userID string) (*model.UserTermsOfService, *model.AppError)

func (*App) GetUsers

func (a *App) GetUsers(options *model.UserGetOptions) ([]*model.User, *model.AppError)

func (*App) GetUsersByGroupChannelIds

func (a *App) GetUsersByGroupChannelIds(c *request.Context, channelIDs []string, asAdmin bool) (map[string][]*model.User, *model.AppError)

func (*App) GetUsersByIds

func (a *App) GetUsersByIds(userIDs []string, options *store.UserGetByIdsOpts) ([]*model.User, *model.AppError)

func (*App) GetUsersByUsernames

func (a *App) GetUsersByUsernames(usernames []string, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)

func (*App) GetUsersEtag

func (a *App) GetUsersEtag(restrictionsHash string) string

func (*App) GetUsersInChannel

func (a *App) GetUsersInChannel(options *model.UserGetOptions) ([]*model.User, *model.AppError)

func (*App) GetUsersInChannelByStatus

func (a *App) GetUsersInChannelByStatus(options *model.UserGetOptions) ([]*model.User, *model.AppError)

func (*App) GetUsersInChannelMap

func (a *App) GetUsersInChannelMap(options *model.UserGetOptions, asAdmin bool) (map[string]*model.User, *model.AppError)

func (*App) GetUsersInChannelPage

func (a *App) GetUsersInChannelPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError)

func (*App) GetUsersInChannelPageByStatus

func (a *App) GetUsersInChannelPageByStatus(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError)

func (*App) GetUsersInTeam

func (a *App) GetUsersInTeam(options *model.UserGetOptions) ([]*model.User, *model.AppError)

func (*App) GetUsersInTeamEtag

func (a *App) GetUsersInTeamEtag(teamID string, restrictionsHash string) string

func (*App) GetUsersInTeamPage

func (a *App) GetUsersInTeamPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError)

func (*App) GetUsersNotInChannel

func (a *App) GetUsersNotInChannel(teamID string, channelID string, groupConstrained bool, offset int, limit int, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)

func (*App) GetUsersNotInChannelMap

func (a *App) GetUsersNotInChannelMap(teamID string, channelID string, groupConstrained bool, offset int, limit int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) (map[string]*model.User, *model.AppError)

func (*App) GetUsersNotInChannelPage

func (a *App) GetUsersNotInChannelPage(teamID string, channelID string, groupConstrained bool, page int, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)

func (*App) GetUsersNotInGroupPage added in v6.5.0

func (a *App) GetUsersNotInGroupPage(groupID string, page int, perPage int) ([]*model.User, *model.AppError)

func (*App) GetUsersNotInTeam

func (a *App) GetUsersNotInTeam(teamID string, groupConstrained bool, offset int, limit int, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)

func (*App) GetUsersNotInTeamEtag

func (a *App) GetUsersNotInTeamEtag(teamID string, restrictionsHash string) string

func (*App) GetUsersNotInTeamPage

func (a *App) GetUsersNotInTeamPage(teamID string, groupConstrained bool, page int, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)

func (*App) GetUsersPage

func (a *App) GetUsersPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError)

func (*App) GetUsersWithInvalidEmails added in v6.5.0

func (a *App) GetUsersWithInvalidEmails(page int, perPage int) ([]*model.User, *model.AppError)

func (*App) GetUsersWithoutTeam

func (a *App) GetUsersWithoutTeam(options *model.UserGetOptions) ([]*model.User, *model.AppError)

func (*App) GetUsersWithoutTeamPage

func (a *App) GetUsersWithoutTeamPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError)

func (*App) GetVerifyEmailToken

func (a *App) GetVerifyEmailToken(token string) (*model.Token, *model.AppError)

func (*App) GetViewUsersRestrictions

func (a *App) GetViewUsersRestrictions(userID string) (*model.ViewUsersRestrictions, *model.AppError)

func (*App) GetWarnMetricsBot

func (a *App) GetWarnMetricsBot() (*model.Bot, *model.AppError)

func (*App) GetWarnMetricsStatus

func (a *App) GetWarnMetricsStatus() (map[string]*model.WarnMetricStatus, *model.AppError)

func (*App) HTTPService

func (a *App) HTTPService() httpservice.HTTPService

func (*App) Handle404

func (a *App) Handle404(w http.ResponseWriter, r *http.Request)

func (*App) HandleCommandResponse

func (a *App) HandleCommandResponse(c *request.Context, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.CommandResponse, *model.AppError)

func (*App) HandleCommandResponsePost

func (a *App) HandleCommandResponsePost(c *request.Context, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.Post, *model.AppError)

func (*App) HandleCommandWebhook

func (a *App) HandleCommandWebhook(c *request.Context, hookID string, response *model.CommandResponse) *model.AppError

func (*App) HandleImages

func (a *App) HandleImages(previewPathList []string, thumbnailPathList []string, fileData [][]byte)

func (*App) HandleIncomingWebhook

func (a *App) HandleIncomingWebhook(c *request.Context, hookID string, req *model.IncomingWebhookRequest) *model.AppError

func (*App) HandleMessageExportConfig

func (a *App) HandleMessageExportConfig(cfg *model.Config, appCfg *model.Config)

func (*App) HasPermissionTo

func (a *App) HasPermissionTo(askingUserId string, permission *model.Permission) bool

func (*App) HasPermissionToChannel

func (a *App) HasPermissionToChannel(askingUserId string, channelID string, permission *model.Permission) bool

func (*App) HasPermissionToChannelByPost

func (a *App) HasPermissionToChannelByPost(askingUserId string, postID string, permission *model.Permission) bool

func (*App) HasPermissionToReadChannel

func (a *App) HasPermissionToReadChannel(userID string, channel *model.Channel) bool

func (*App) HasPermissionToTeam

func (a *App) HasPermissionToTeam(askingUserId string, teamID string, permission *model.Permission) bool

func (*App) HasPermissionToUser

func (a *App) HasPermissionToUser(askingUserId string, userID string) bool

func (*App) HasRemote

func (a *App) HasRemote(channelID string, remoteID string) (bool, error)

HasRemote returns whether a given channelID is present in the channel remotes or not.

func (*App) HasSharedChannel

func (a *App) HasSharedChannel(channelID string) (bool, error)

func (*App) HubRegister

func (a *App) HubRegister(webConn *WebConn)

HubRegister registers a connection to a hub.

func (*App) HubUnregister

func (a *App) HubUnregister(webConn *WebConn)

HubUnregister unregisters a connection from a hub.

func (*App) ImageProxy

func (a *App) ImageProxy() *imageproxy.ImageProxy

func (*App) ImageProxyAdder

func (a *App) ImageProxyAdder() func(string) string

func (*App) ImageProxyRemover

func (a *App) ImageProxyRemover() (f func(string) string)

func (*App) ImportPermissions

func (a *App) ImportPermissions(jsonl io.Reader) error

func (*App) InitPlugins

func (a *App) InitPlugins(c *request.Context, pluginDir, webappPluginDir string)

func (*App) InstallPlugin

func (a *App) InstallPlugin(pluginFile io.ReadSeeker, replace bool) (*model.Manifest, *model.AppError)

InstallPlugin unpacks and installs a plugin but does not enable or activate it.

func (*App) InvalidateAllEmailInvites

func (a *App) InvalidateAllEmailInvites() *model.AppError

func (*App) InvalidateAllResendInviteEmailJobs added in v6.5.0

func (a *App) InvalidateAllResendInviteEmailJobs() *model.AppError

func (*App) InvalidateCacheForUser

func (a *App) InvalidateCacheForUser(userID string)

func (*App) InviteGuestsToChannels

func (a *App) InviteGuestsToChannels(teamID string, guestsInvite *model.GuestsInvite, senderId string) *model.AppError

func (*App) InviteGuestsToChannelsGracefully

func (a *App) InviteGuestsToChannelsGracefully(teamID string, guestsInvite *model.GuestsInvite, senderId string) ([]*model.EmailInviteWithError, *model.AppError)

func (*App) InviteNewUsersToTeam

func (a *App) InviteNewUsersToTeam(emailList []string, teamID, senderId string) *model.AppError

func (*App) InviteNewUsersToTeamGracefully

func (a *App) InviteNewUsersToTeamGracefully(memberInvite *model.MemberInvite, teamID, senderId string, reminderInterval string) ([]*model.EmailInviteWithError, *model.AppError)

func (*App) IsCRTEnabledForUser added in v6.2.0

func (a *App) IsCRTEnabledForUser(userID string) bool

func (*App) IsFirstUserAccount

func (a *App) IsFirstUserAccount() bool

func (*App) IsLeader

func (a *App) IsLeader() bool

func (*App) IsPasswordValid

func (a *App) IsPasswordValid(password string) *model.AppError

func (*App) IsPhase2MigrationCompleted

func (a *App) IsPhase2MigrationCompleted() *model.AppError

func (*App) IsUserAway

func (a *App) IsUserAway(lastActivityAt int64) bool

func (*App) IsUserSignUpAllowed

func (a *App) IsUserSignUpAllowed() *model.AppError

func (*App) JoinChannel

func (a *App) JoinChannel(c *request.Context, channel *model.Channel, userID string) *model.AppError

func (*App) JoinDefaultChannels

func (a *App) JoinDefaultChannels(c *request.Context, teamID string, user *model.User, shouldBeAdmin bool, userRequestorId string) *model.AppError

func (*App) JoinUserToTeam

func (a *App) JoinUserToTeam(c *request.Context, team *model.Team, user *model.User, userRequestorId string) (*model.TeamMember, *model.AppError)

func (*App) Ldap

func (a *App) Ldap() einterfaces.LdapInterface

func (*App) LeaveChannel

func (a *App) LeaveChannel(c *request.Context, channelID string, userID string) *model.AppError

func (*App) LeaveTeam

func (a *App) LeaveTeam(c *request.Context, team *model.Team, user *model.User, requestorId string) *model.AppError

func (*App) License added in v6.2.0

func (a *App) License() *model.License

func (*App) LimitedClientConfig

func (a *App) LimitedClientConfig() map[string]string

func (*App) LimitedClientConfigWithComputed

func (a *App) LimitedClientConfigWithComputed() map[string]string

LimitedClientConfigWithComputed gets the configuration in a format suitable for sending to the client.

func (*App) ListAllCommands

func (a *App) ListAllCommands(teamID string, T i18n.TranslateFunc) ([]*model.Command, *model.AppError)

func (*App) ListAutocompleteCommands

func (a *App) ListAutocompleteCommands(teamID string, T i18n.TranslateFunc) ([]*model.Command, *model.AppError)

@openTracingParams teamID previous ListCommands now ListAutocompleteCommands

func (*App) ListDirectory

func (a *App) ListDirectory(path string) ([]string, *model.AppError)

func (*App) ListDirectoryRecursively added in v6.6.0

func (a *App) ListDirectoryRecursively(path string) ([]string, *model.AppError)

func (*App) ListExports

func (a *App) ListExports() ([]string, *model.AppError)

func (*App) ListImports

func (a *App) ListImports() ([]string, *model.AppError)

func (*App) ListPluginKeys

func (a *App) ListPluginKeys(pluginID string, page, perPage int) ([]string, *model.AppError)

func (*App) ListTeamCommands

func (a *App) ListTeamCommands(teamID string) ([]*model.Command, *model.AppError)

func (*App) Log

func (a *App) Log() *mlog.Logger

func (*App) LogAuditRec

func (a *App) LogAuditRec(rec *audit.Record, err error)

LogAuditRec logs an audit record using default LvlAuditCLI.

func (*App) LogAuditRecWithLevel

func (a *App) LogAuditRecWithLevel(rec *audit.Record, level mlog.Level, err error)

LogAuditRecWithLevel logs an audit record using specified Level.

func (*App) LoginByOAuth

func (a *App) LoginByOAuth(c *request.Context, service string, userData io.Reader, teamID string, tokenUser *model.User) (*model.User, *model.AppError)

func (*App) MakeAuditRecord

func (a *App) MakeAuditRecord(event string, initialStatus string) *audit.Record

MakeAuditRecord creates a audit record pre-populated with defaults.

func (*App) MakePermissionError

func (a *App) MakePermissionError(s *model.Session, permissions []*model.Permission) *model.AppError

func (*App) MarkChannelAsUnreadFromPost

func (a *App) MarkChannelAsUnreadFromPost(postID string, userID string, collapsedThreadsSupported bool) (*model.ChannelUnreadAt, *model.AppError)

MarkChanelAsUnreadFromPost will take a post and set the channel as unread from that one.

func (*App) MarkChannelsAsViewed

func (a *App) MarkChannelsAsViewed(channelIDs []string, userID string, currentSessionId string, collapsedThreadsSupported bool) (map[string]int64, *model.AppError)

func (*App) MaxPostSize

func (a *App) MaxPostSize() int

func (*App) MentionsToPublicChannels

func (a *App) MentionsToPublicChannels(message, teamID string) model.ChannelMentionMap

MentionsToPublicChannels returns all the mentions to public channels, linking them to their channels

func (*App) MentionsToTeamMembers

func (a *App) MentionsToTeamMembers(message, teamID string) model.UserMentionMap

MentionsToTeamMembers returns all the @ mentions found in message that belong to users in the specified team, linking them to their users

func (*App) MessageExport

func (a *App) MessageExport() einterfaces.MessageExportInterface

func (*App) Metrics

func (a *App) Metrics() einterfaces.MetricsInterface

func (*App) MigrateFilenamesToFileInfos

func (a *App) MigrateFilenamesToFileInfos(post *model.Post) []*model.FileInfo

Creates and stores FileInfos for a post created before the FileInfos table existed.

func (*App) MigrateIdLDAP

func (a *App) MigrateIdLDAP(toAttribute string) *model.AppError

func (*App) MoveChannel

func (a *App) MoveChannel(c *request.Context, team *model.Team, channel *model.Channel, user *model.User) *model.AppError

MoveChannel method is prone to data races if someone joins to channel during the move process. However this function is only exposed to sysadmins and the possibility of this edge case is relatively small.

func (*App) MoveCommand

func (a *App) MoveCommand(team *model.Team, command *model.Command) *model.AppError

func (*App) MoveFile

func (a *App) MoveFile(oldPath, newPath string) *model.AppError

func (*App) NewClusterDiscoveryService

func (a *App) NewClusterDiscoveryService() *ClusterDiscoveryService

func (*App) NewPluginAPI

func (a *App) NewPluginAPI(c *request.Context, manifest *model.Manifest) plugin.API

func (*App) NewWebConn

func (a *App) NewWebConn(cfg *WebConnConfig) *WebConn

NewWebConn returns a new WebConn instance.

func (*App) Notification

func (a *App) Notification() einterfaces.NotificationInterface

func (*App) NotificationsLog

func (a *App) NotificationsLog() *mlog.Logger

func (*App) NotifyAndSetWarnMetricAck

func (a *App) NotifyAndSetWarnMetricAck(warnMetricId string, sender *model.User, forceAck bool, isBot bool) *model.AppError

func (*App) NotifySessionsExpired

func (a *App) NotifySessionsExpired() error

NotifySessionsExpired is called periodically from the job server to notify any mobile sessions that have expired.

func (*App) NotifySharedChannelUserUpdate

func (a *App) NotifySharedChannelUserUpdate(user *model.User)

func (*App) OpenInteractiveDialog

func (a *App) OpenInteractiveDialog(request model.OpenDialogRequest) *model.AppError

func (*App) OriginChecker

func (a *App) OriginChecker() func(*http.Request) bool

func (*App) OverrideIconURLIfEmoji

func (a *App) OverrideIconURLIfEmoji(post *model.Post)

OverrideIconURLIfEmoji changes the post icon override URL prop, if it has an emoji icon, so that it points to the URL (relative) of the emoji - static if emoji is default, /api if custom.

func (*App) PatchBot

func (a *App) PatchBot(botUserId string, botPatch *model.BotPatch) (*model.Bot, *model.AppError)

PatchBot applies the given patch to the bot and corresponding user.

func (*App) PatchChannel

func (a *App) PatchChannel(c *request.Context, channel *model.Channel, patch *model.ChannelPatch, userID string) (*model.Channel, *model.AppError)

func (*App) PatchChannelModerationsForChannel

func (a *App) PatchChannelModerationsForChannel(channel *model.Channel, channelModerationsPatch []*model.ChannelModerationPatch) ([]*model.ChannelModeration, *model.AppError)

PatchChannelModerationsForChannel Updates a channels scheme roles based on a given ChannelModerationPatch, if the permissions match the higher scoped role the scheme is deleted.

func (*App) PatchPost

func (a *App) PatchPost(c *request.Context, postID string, patch *model.PostPatch) (*model.Post, *model.AppError)

func (*App) PatchRole

func (a *App) PatchRole(role *model.Role, patch *model.RolePatch) (*model.Role, *model.AppError)

func (*App) PatchScheme

func (a *App) PatchScheme(scheme *model.Scheme, patch *model.SchemePatch) (*model.Scheme, *model.AppError)

func (*App) PatchTeam

func (a *App) PatchTeam(teamID string, patch *model.TeamPatch) (*model.Team, *model.AppError)

func (*App) PatchUser

func (a *App) PatchUser(userID string, patch *model.UserPatch, asAdmin bool) (*model.User, *model.AppError)

func (*App) PermanentDeleteAllUsers

func (a *App) PermanentDeleteAllUsers(c *request.Context) *model.AppError

func (*App) PermanentDeleteBot

func (a *App) PermanentDeleteBot(botUserId string) *model.AppError

PermanentDeleteBot permanently deletes a bot and its corresponding user.

func (*App) PermanentDeleteChannel

func (a *App) PermanentDeleteChannel(channel *model.Channel) *model.AppError

func (*App) PermanentDeleteTeam

func (a *App) PermanentDeleteTeam(team *model.Team) *model.AppError

func (*App) PermanentDeleteTeamId

func (a *App) PermanentDeleteTeamId(teamID string) *model.AppError

func (*App) PermanentDeleteUser

func (a *App) PermanentDeleteUser(c *request.Context, user *model.User) *model.AppError

func (*App) PluginCommandsForTeam

func (a *App) PluginCommandsForTeam(teamID string) []*model.Command

func (*App) PopulateWebConnConfig

func (a *App) PopulateWebConnConfig(s *model.Session, cfg *WebConnConfig, seqVal string) (*WebConnConfig, error)

PopulateWebConnConfig checks if the connection id already exists in the hub, and if so, accordingly populates the other fields of the webconn.

func (*App) PostActionCookieSecret

func (a *App) PostActionCookieSecret() []byte

func (*App) PostAddToChannelMessage

func (a *App) PostAddToChannelMessage(c *request.Context, user *model.User, addedUser *model.User, channel *model.Channel, postRootId string) *model.AppError

func (*App) PostPatchWithProxyRemovedFromImageURLs

func (a *App) PostPatchWithProxyRemovedFromImageURLs(patch *model.PostPatch) *model.PostPatch

func (*App) PostUpdateChannelDisplayNameMessage

func (a *App) PostUpdateChannelDisplayNameMessage(c *request.Context, userID string, channel *model.Channel, oldChannelDisplayName, newChannelDisplayName string) *model.AppError

func (*App) PostUpdateChannelHeaderMessage

func (a *App) PostUpdateChannelHeaderMessage(c *request.Context, userID string, channel *model.Channel, oldChannelHeader, newChannelHeader string) *model.AppError

func (*App) PostUpdateChannelPurposeMessage

func (a *App) PostUpdateChannelPurposeMessage(c *request.Context, userID string, channel *model.Channel, oldChannelPurpose string, newChannelPurpose string) *model.AppError

func (*App) PostWithProxyAddedToImageURLs

func (a *App) PostWithProxyAddedToImageURLs(post *model.Post) *model.Post

func (*App) PostWithProxyRemovedFromImageURLs

func (a *App) PostWithProxyRemovedFromImageURLs(post *model.Post) *model.Post

func (*App) PreparePostForClient

func (a *App) PreparePostForClient(originalPost *model.Post, isNewPost, isEditPost bool) *model.Post

func (*App) PreparePostForClientWithEmbedsAndImages

func (a *App) PreparePostForClientWithEmbedsAndImages(originalPost *model.Post, isNewPost, isEditPost bool) *model.Post

func (*App) PreparePostListForClient

func (a *App) PreparePostListForClient(originalList *model.PostList) *model.PostList

func (*App) ProcessSlackAttachments

func (a *App) ProcessSlackAttachments(attachments []*model.SlackAttachment) []*model.SlackAttachment

Expand announcements in incoming webhooks from Slack. Those announcements can be found in the text attribute, or in the pretext, text, title and value attributes of the attachment structure. The Slack attachment structure is documented here: https://api.slack.com/docs/attachments

func (*App) ProcessSlackText

func (a *App) ProcessSlackText(text string) string

func (*App) PromoteGuestToUser

func (a *App) PromoteGuestToUser(c *request.Context, user *model.User, requestorId string) *model.AppError

PromoteGuestToUser Convert user's roles and all his membership's roles from guest roles to regular user roles.

func (*App) Publish

func (a *App) Publish(message *model.WebSocketEvent)

func (*App) PublishUserTyping

func (a *App) PublishUserTyping(userID, channelID, parentId string) *model.AppError

func (*App) PurgeBleveIndexes

func (a *App) PurgeBleveIndexes() *model.AppError

func (*App) PurgeElasticsearchIndexes

func (a *App) PurgeElasticsearchIndexes() *model.AppError

func (*App) ReadFile

func (a *App) ReadFile(path string) ([]byte, *model.AppError)

func (*App) RecycleDatabaseConnection

func (a *App) RecycleDatabaseConnection()

func (*App) RegenCommandToken

func (a *App) RegenCommandToken(cmd *model.Command) (*model.Command, *model.AppError)

func (*App) RegenOutgoingWebhookToken

func (a *App) RegenOutgoingWebhookToken(hook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError)

func (*App) RegenerateOAuthAppSecret

func (a *App) RegenerateOAuthAppSecret(app *model.OAuthApp) (*model.OAuthApp, *model.AppError)

func (*App) RegenerateTeamInviteId

func (a *App) RegenerateTeamInviteId(teamID string) (*model.Team, *model.AppError)

func (*App) RegisterPluginCommand

func (a *App) RegisterPluginCommand(pluginID string, command *model.Command) error

func (*App) ReloadConfig

func (a *App) ReloadConfig() error

func (*App) RemoveAllDeactivatedMembersFromChannel

func (a *App) RemoveAllDeactivatedMembersFromChannel(channel *model.Channel) *model.AppError

func (*App) RemoveChannelsFromRetentionPolicy

func (a *App) RemoveChannelsFromRetentionPolicy(policyID string, channelIDs []string) *model.AppError

func (*App) RemoveConfigListener

func (a *App) RemoveConfigListener(id string)

func (*App) RemoveCustomStatus

func (a *App) RemoveCustomStatus(userID string) *model.AppError

func (*App) RemoveDirectory

func (a *App) RemoveDirectory(path string) *model.AppError

func (*App) RemoveFile

func (a *App) RemoveFile(path string) *model.AppError

func (*App) RemoveLdapPrivateCertificate

func (a *App) RemoveLdapPrivateCertificate() *model.AppError

func (*App) RemoveLdapPublicCertificate

func (a *App) RemoveLdapPublicCertificate() *model.AppError

func (*App) RemoveRecentCustomStatus

func (a *App) RemoveRecentCustomStatus(userID string, status *model.CustomStatus) *model.AppError

func (*App) RemoveSamlIdpCertificate

func (a *App) RemoveSamlIdpCertificate() *model.AppError

func (*App) RemoveSamlPrivateCertificate

func (a *App) RemoveSamlPrivateCertificate() *model.AppError

func (*App) RemoveSamlPublicCertificate

func (a *App) RemoveSamlPublicCertificate() *model.AppError

func (*App) RemoveTeamIcon

func (a *App) RemoveTeamIcon(teamID string) *model.AppError

func (*App) RemoveTeamsFromRetentionPolicy

func (a *App) RemoveTeamsFromRetentionPolicy(policyID string, teamIDs []string) *model.AppError

func (*App) RemoveUserFromChannel

func (a *App) RemoveUserFromChannel(c *request.Context, userIDToRemove string, removerUserId string, channel *model.Channel) *model.AppError

func (*App) RemoveUserFromTeam

func (a *App) RemoveUserFromTeam(c *request.Context, teamID string, userID string, requestorId string) *model.AppError

func (*App) RemoveUsersFromChannelNotMemberOfTeam

func (a *App) RemoveUsersFromChannelNotMemberOfTeam(c *request.Context, remover *model.User, channel *model.Channel, team *model.Team) *model.AppError

func (*App) RenameChannel

func (a *App) RenameChannel(channel *model.Channel, newChannelName string, newDisplayName string) (*model.Channel, *model.AppError)

RenameChannel is used to rename the channel Name and the DisplayName fields

func (*App) RenameTeam

func (a *App) RenameTeam(team *model.Team, newTeamName string, newDisplayName string) (*model.Team, *model.AppError)

RenameTeam is used to rename the team Name and the DisplayName fields

func (*App) RequestLicenseAndAckWarnMetric

func (a *App) RequestLicenseAndAckWarnMetric(c *request.Context, warnMetricId string, isBot bool) *model.AppError

func (*App) ResetPasswordFromToken

func (a *App) ResetPasswordFromToken(userSuppliedTokenString, newPassword string) *model.AppError

func (*App) ResetPermissionsSystem

func (a *App) ResetPermissionsSystem() *model.AppError

func (*App) ResetSamlAuthDataToEmail

func (a *App) ResetSamlAuthDataToEmail(includeDeleted bool, dryRun bool, userIDs []string) (numAffected int, appErr *model.AppError)

func (*App) RestoreChannel

func (a *App) RestoreChannel(c *request.Context, channel *model.Channel, userID string) (*model.Channel, *model.AppError)

func (*App) RestoreTeam

func (a *App) RestoreTeam(teamID string) *model.AppError

func (*App) RestrictUsersGetByPermissions

func (a *App) RestrictUsersGetByPermissions(userID string, options *model.UserGetOptions) (*model.UserGetOptions, *model.AppError)

func (*App) RestrictUsersSearchByPermissions

func (a *App) RestrictUsersSearchByPermissions(userID string, options *model.UserSearchOptions) (*model.UserSearchOptions, *model.AppError)

func (*App) ReturnSessionToPool

func (a *App) ReturnSessionToPool(session *model.Session)

func (*App) RevokeAccessToken

func (a *App) RevokeAccessToken(token string) *model.AppError

func (*App) RevokeAllSessions

func (a *App) RevokeAllSessions(userID string) *model.AppError

func (*App) RevokeSession

func (a *App) RevokeSession(session *model.Session) *model.AppError

func (*App) RevokeSessionById

func (a *App) RevokeSessionById(sessionID string) *model.AppError

func (*App) RevokeSessionsForDeviceId

func (a *App) RevokeSessionsForDeviceId(userID string, deviceID string, currentSessionId string) *model.AppError

func (*App) RevokeSessionsFromAllUsers

func (a *App) RevokeSessionsFromAllUsers() *model.AppError

RevokeSessionsFromAllUsers will go through all the sessions active in the server and revoke them

func (*App) RevokeUserAccessToken

func (a *App) RevokeUserAccessToken(token *model.UserAccessToken) *model.AppError

func (*App) RolesGrantPermission

func (a *App) RolesGrantPermission(roleNames []string, permissionId string) bool

func (*App) Saml

func (a *App) Saml() einterfaces.SamlInterface

func (*App) SanitizePostListMetadataForUser

func (a *App) SanitizePostListMetadataForUser(postList *model.PostList, userID string) (*model.PostList, *model.AppError)

func (*App) SanitizePostMetadataForUser

func (a *App) SanitizePostMetadataForUser(post *model.Post, userID string) (*model.Post, *model.AppError)

func (*App) SanitizeProfile

func (a *App) SanitizeProfile(user *model.User, asAdmin bool)

func (*App) SanitizeTeam

func (a *App) SanitizeTeam(session model.Session, team *model.Team) *model.Team

func (*App) SanitizeTeams

func (a *App) SanitizeTeams(session model.Session, teams []*model.Team) []*model.Team

func (*App) SaveAndBroadcastStatus

func (a *App) SaveAndBroadcastStatus(status *model.Status)

func (*App) SaveBrandImage

func (a *App) SaveBrandImage(imageData *multipart.FileHeader) *model.AppError

func (*App) SaveComplianceReport

func (a *App) SaveComplianceReport(job *model.Compliance) (*model.Compliance, *model.AppError)

func (*App) SaveConfig

func (a *App) SaveConfig(newCfg *model.Config, sendConfigChangeClusterMessage bool) (*model.Config, *model.Config, *model.AppError)

SaveConfig replaces the active configuration, optionally notifying cluster peers.

func (*App) SaveReactionForPost

func (a *App) SaveReactionForPost(c *request.Context, reaction *model.Reaction) (*model.Reaction, *model.AppError)

func (*App) SaveSharedChannel

func (a *App) SaveSharedChannel(sc *model.SharedChannel) (*model.SharedChannel, error)

func (*App) SaveSharedChannelRemote

func (a *App) SaveSharedChannelRemote(remote *model.SharedChannelRemote) (*model.SharedChannelRemote, error)

func (*App) SaveUserTermsOfService

func (a *App) SaveUserTermsOfService(userID, termsOfServiceId string, accepted bool) *model.AppError

func (*App) SchemesIterator

func (a *App) SchemesIterator(scope string, batchSize int) func() []*model.Scheme

func (*App) SearchAllChannels

func (a *App) SearchAllChannels(term string, opts model.ChannelSearchOpts) (model.ChannelListWithTeamData, int64, *model.AppError)

SearchAllChannels returns a list of channels, the total count of the results of the search (if the paginate search option is true), and an error.

func (*App) SearchAllTeams

func (a *App) SearchAllTeams(searchOpts *model.TeamSearch) ([]*model.Team, int64, *model.AppError)

SearchAllTeams returns a team list and the total count of the results

func (*App) SearchArchivedChannels

func (a *App) SearchArchivedChannels(teamID string, term string, userID string) (model.ChannelList, *model.AppError)

func (*App) SearchChannels

func (a *App) SearchChannels(teamID string, term string) (model.ChannelList, *model.AppError)

func (*App) SearchChannelsForUser

func (a *App) SearchChannelsForUser(userID, teamID, term string) (model.ChannelList, *model.AppError)

func (*App) SearchChannelsUserNotIn

func (a *App) SearchChannelsUserNotIn(teamID string, userID string, term string) (model.ChannelList, *model.AppError)

func (*App) SearchEmoji

func (a *App) SearchEmoji(name string, prefixOnly bool, limit int) ([]*model.Emoji, *model.AppError)

func (*App) SearchEngine

func (a *App) SearchEngine() *searchengine.Broker

func (*App) SearchFilesInTeamForUser

func (a *App) SearchFilesInTeamForUser(c *request.Context, terms string, userId string, teamId string, isOrSearch bool, includeDeletedChannels bool, timeZoneOffset int, page, perPage int) (*model.FileInfoList, *model.AppError)

func (*App) SearchGroupChannels

func (a *App) SearchGroupChannels(userID, term string) (model.ChannelList, *model.AppError)

func (*App) SearchPostsForUser added in v6.1.0

func (a *App) SearchPostsForUser(c *request.Context, terms string, userID string, teamID string, isOrSearch bool, includeDeletedChannels bool, timeZoneOffset int, page, perPage int) (*model.PostSearchResults, *model.AppError)

func (*App) SearchPostsInTeam

func (a *App) SearchPostsInTeam(teamID string, paramsList []*model.SearchParams) (*model.PostList, *model.AppError)

func (*App) SearchPrivateTeams

func (a *App) SearchPrivateTeams(searchOpts *model.TeamSearch) ([]*model.Team, *model.AppError)

func (*App) SearchPublicTeams

func (a *App) SearchPublicTeams(searchOpts *model.TeamSearch) ([]*model.Team, *model.AppError)

func (*App) SearchUserAccessTokens

func (a *App) SearchUserAccessTokens(term string) ([]*model.UserAccessToken, *model.AppError)

func (*App) SearchUsers

func (a *App) SearchUsers(props *model.UserSearch, options *model.UserSearchOptions) ([]*model.User, *model.AppError)

func (*App) SearchUsersInChannel

func (a *App) SearchUsersInChannel(channelID string, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)

func (*App) SearchUsersInGroup

func (a *App) SearchUsersInGroup(groupID string, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)

func (*App) SearchUsersInTeam

func (a *App) SearchUsersInTeam(teamID, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)

func (*App) SearchUsersNotInChannel

func (a *App) SearchUsersNotInChannel(teamID string, channelID string, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)

func (*App) SearchUsersNotInGroup added in v6.5.0

func (a *App) SearchUsersNotInGroup(groupID string, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)

func (*App) SearchUsersNotInTeam

func (a *App) SearchUsersNotInTeam(notInTeamId string, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)

func (*App) SearchUsersWithoutTeam

func (a *App) SearchUsersWithoutTeam(term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)

func (*App) SendAckToPushProxy

func (a *App) SendAckToPushProxy(ack *model.PushNotificationAck) error

func (*App) SendAutoResponse

func (a *App) SendAutoResponse(c *request.Context, channel *model.Channel, receiver *model.User, post *model.Post) (bool, *model.AppError)

func (*App) SendAutoResponseIfNecessary

func (a *App) SendAutoResponseIfNecessary(c *request.Context, channel *model.Channel, sender *model.User, post *model.Post) (bool, *model.AppError)

func (*App) SendCloudTrialEndWarningEmail

func (a *App) SendCloudTrialEndWarningEmail(trialEndDate, siteURL string) *model.AppError

func (*App) SendCloudTrialEndedEmail

func (a *App) SendCloudTrialEndedEmail() *model.AppError

func (*App) SendEmailVerification

func (a *App) SendEmailVerification(user *model.User, newEmail, redirect string) *model.AppError

func (*App) SendEphemeralPost

func (a *App) SendEphemeralPost(userID string, post *model.Post) *model.Post

func (*App) SendNoCardPaymentFailedEmail

func (a *App) SendNoCardPaymentFailedEmail() *model.AppError

SendNoCardPaymentFailedEmail

func (*App) SendNotifications

func (a *App) SendNotifications(post *model.Post, team *model.Team, channel *model.Channel, sender *model.User, parentPostList *model.PostList, setOnline bool) ([]string, error)

func (*App) SendPasswordReset

func (a *App) SendPasswordReset(email string, siteURL string) (bool, *model.AppError)

func (*App) SendPaymentFailedEmail

func (a *App) SendPaymentFailedEmail(failedPayment *model.FailedPayment) *model.AppError

func (*App) SendTestPushNotification added in v6.3.8

func (a *App) SendTestPushNotification(deviceID string) string

func (*App) ServeInterPluginRequest

func (a *App) ServeInterPluginRequest(w http.ResponseWriter, r *http.Request, sourcePluginId, destinationPluginId string)

func (*App) SessionHasPermissionTo

func (a *App) SessionHasPermissionTo(session model.Session, permission *model.Permission) bool

func (*App) SessionHasPermissionToAny

func (a *App) SessionHasPermissionToAny(session model.Session, permissions []*model.Permission) bool

func (*App) SessionHasPermissionToCategory

func (a *App) SessionHasPermissionToCategory(session model.Session, userID, teamID, categoryId string) bool

func (*App) SessionHasPermissionToChannel

func (a *App) SessionHasPermissionToChannel(session model.Session, channelID string, permission *model.Permission) bool

func (*App) SessionHasPermissionToChannelByPost

func (a *App) SessionHasPermissionToChannelByPost(session model.Session, postID string, permission *model.Permission) bool

func (*App) SessionHasPermissionToCreateJob

func (a *App) SessionHasPermissionToCreateJob(session model.Session, job *model.Job) (bool, *model.Permission)

func (*App) SessionHasPermissionToGroup added in v6.5.0

func (a *App) SessionHasPermissionToGroup(session model.Session, groupID string, permission *model.Permission) bool

func (*App) SessionHasPermissionToManageBot

func (a *App) SessionHasPermissionToManageBot(session model.Session, botUserId string) *model.AppError

SessionHasPermissionToManageBot returns nil if the session has access to manage the given bot. This function deviates from other authorization checks in returning an error instead of just a boolean, allowing the permission failure to be exposed with more granularity.

func (*App) SessionHasPermissionToReadJob

func (a *App) SessionHasPermissionToReadJob(session model.Session, jobType string) (bool, *model.Permission)

func (*App) SessionHasPermissionToTeam

func (a *App) SessionHasPermissionToTeam(session model.Session, teamID string, permission *model.Permission) bool

func (*App) SessionHasPermissionToUser

func (a *App) SessionHasPermissionToUser(session model.Session, userID string) bool

func (*App) SessionHasPermissionToUserOrBot

func (a *App) SessionHasPermissionToUserOrBot(session model.Session, userID string) bool

func (*App) SessionIsRegistered

func (a *App) SessionIsRegistered(session model.Session) bool

SessionIsRegistered determines if a specific session has been registered

func (*App) SetActiveChannel

func (a *App) SetActiveChannel(userID string, channelID string) *model.AppError

func (*App) SetAutoResponderStatus

func (a *App) SetAutoResponderStatus(user *model.User, oldNotifyProps model.StringMap)

func (*App) SetChannels added in v6.1.0

func (a *App) SetChannels(ch *Channels)

func (*App) SetCustomStatus

func (a *App) SetCustomStatus(userID string, cs *model.CustomStatus) *model.AppError

func (*App) SetDefaultProfileImage

func (a *App) SetDefaultProfileImage(user *model.User) *model.AppError

func (*App) SetPhase2PermissionsMigrationStatus

func (a *App) SetPhase2PermissionsMigrationStatus(isComplete bool) error

func (*App) SetPluginKey

func (a *App) SetPluginKey(pluginID string, key string, value []byte) *model.AppError

func (*App) SetPluginKeyWithExpiry

func (a *App) SetPluginKeyWithExpiry(pluginID string, key string, value []byte, expireInSeconds int64) *model.AppError

func (*App) SetPluginKeyWithOptions

func (a *App) SetPluginKeyWithOptions(pluginID string, key string, value []byte, options model.PluginKVSetOptions) (bool, *model.AppError)

func (*App) SetProfileImage

func (a *App) SetProfileImage(userID string, imageData *multipart.FileHeader) *model.AppError

func (*App) SetProfileImageFromFile

func (a *App) SetProfileImageFromFile(userID string, file io.Reader) *model.AppError

func (*App) SetProfileImageFromMultiPartFile

func (a *App) SetProfileImageFromMultiPartFile(userID string, file multipart.File) *model.AppError

func (*App) SetRemoteClusterLastPingAt

func (a *App) SetRemoteClusterLastPingAt(remoteClusterId string) *model.AppError

func (*App) SetSamlIdpCertificateFromMetadata

func (a *App) SetSamlIdpCertificateFromMetadata(data []byte) *model.AppError

func (*App) SetSearchEngine

func (a *App) SetSearchEngine(se *searchengine.Broker)

func (*App) SetServer

func (a *App) SetServer(srv *Server)

func (*App) SetSessionExpireInDays

func (a *App) SetSessionExpireInDays(session *model.Session, days int)

SetSessionExpireInDays sets the session's expiry the specified number of days relative to either the session creation date or the current time, depending on the `ExtendSessionOnActivity` config setting.

func (*App) SetStatusAwayIfNeeded

func (a *App) SetStatusAwayIfNeeded(userID string, manual bool)

func (*App) SetStatusDoNotDisturb

func (a *App) SetStatusDoNotDisturb(userID string)

func (*App) SetStatusDoNotDisturbTimed

func (a *App) SetStatusDoNotDisturbTimed(userId string, endtime int64)

SetStatusDoNotDisturbTimed takes endtime in unix epoch format in UTC and sets status of given userId to dnd which will be restored back after endtime

func (*App) SetStatusLastActivityAt

func (a *App) SetStatusLastActivityAt(userID string, activityAt int64)

SetStatusLastActivityAt sets the last activity at for a user on the local app server and updates status to away if needed. Used by the WS to set status to away if an 'online' device disconnects while an 'away' device is still connected

func (*App) SetStatusOffline

func (a *App) SetStatusOffline(userID string, manual bool)

func (*App) SetStatusOnline

func (a *App) SetStatusOnline(userID string, manual bool)

func (*App) SetStatusOutOfOffice

func (a *App) SetStatusOutOfOffice(userID string)

func (*App) SetTeamIcon

func (a *App) SetTeamIcon(teamID string, imageData *multipart.FileHeader) *model.AppError

func (*App) SetTeamIconFromFile

func (a *App) SetTeamIconFromFile(team *model.Team, file io.Reader) *model.AppError

func (*App) SetTeamIconFromMultiPartFile

func (a *App) SetTeamIconFromMultiPartFile(teamID string, file multipart.File) *model.AppError

func (*App) SlackImport

func (a *App) SlackImport(c *request.Context, fileData multipart.File, fileSize int64, teamID string) (*model.AppError, *bytes.Buffer)

func (*App) SoftDeleteTeam

func (a *App) SoftDeleteTeam(teamID string) *model.AppError

func (*App) Srv

func (a *App) Srv() *Server

func (*App) SubmitInteractiveDialog

func (a *App) SubmitInteractiveDialog(c *request.Context, request model.SubmitDialogRequest) (*model.SubmitDialogResponse, *model.AppError)

func (*App) SwitchEmailToLdap

func (a *App) SwitchEmailToLdap(email, password, code, ldapLoginId, ldapPassword string) (string, *model.AppError)

func (*App) SwitchEmailToOAuth

func (a *App) SwitchEmailToOAuth(w http.ResponseWriter, r *http.Request, email, password, code, service string) (string, *model.AppError)

func (*App) SwitchLdapToEmail

func (a *App) SwitchLdapToEmail(ldapPassword, code, email, newPassword string) (string, *model.AppError)

func (*App) SwitchOAuthToEmail

func (a *App) SwitchOAuthToEmail(email, password, requesterId string) (string, *model.AppError)

func (*App) SyncLdap

func (a *App) SyncLdap(includeRemovedMembers bool)

SyncLdap starts an LDAP sync job. If includeRemovedMembers is true, then members who left or were removed from a team/channel will be re-added; otherwise, they will not be re-added.

func (*App) SyncPlugins

func (a *App) SyncPlugins() *model.AppError

SyncPlugins synchronizes the plugins installed locally with the plugin bundles available in the file store.

func (*App) SyncRolesAndMembership

func (a *App) SyncRolesAndMembership(c *request.Context, syncableID string, syncableType model.GroupSyncableType, includeRemovedMembers bool)

SyncRolesAndMembership updates the SchemeAdmin status and membership of all of the members of the given syncable.

func (*App) SyncSyncableRoles

func (a *App) SyncSyncableRoles(syncableID string, syncableType model.GroupSyncableType) *model.AppError

SyncSyncableRoles updates the SchemeAdmin field value of the given syncable's members based on the configuration of the member's group memberships and the configuration of those groups to the syncable. This method should only be invoked on group-synced (aka group-constrained) syncables.

func (*App) TeamMembersMinusGroupMembers

func (a *App) TeamMembersMinusGroupMembers(teamID string, groupIDs []string, page, perPage int) ([]*model.UserWithGroups, int64, *model.AppError)

TeamMembersMinusGroupMembers returns the set of users on the given team minus the set of users in the given groups.

The result can be used, for example, to determine the set of users who would be removed from a team if the team were group-constrained with the given groups.

func (*App) TeamMembersToAdd

func (a *App) TeamMembersToAdd(since int64, teamID *string, includeRemovedMembers bool) ([]*model.UserTeamIDPair, *model.AppError)

TeamMembersToAdd returns a slice of UserTeamIDPair that need newly created memberships based on the groups configurations. The returned list can be optionally scoped to a single given team.

Typically since will be the last successful group sync time. If includeRemovedMembers is true, then team members who left or were removed from the team will be included; otherwise, they will be excluded.

func (*App) TeamMembersToRemove

func (a *App) TeamMembersToRemove(teamID *string) ([]*model.TeamMember, *model.AppError)

func (*App) TelemetryId

func (a *App) TelemetryId() string

func (*App) TestElasticsearch

func (a *App) TestElasticsearch(cfg *model.Config) *model.AppError

func (*App) TestEmail

func (a *App) TestEmail(userID string, cfg *model.Config) *model.AppError

func (*App) TestFileStoreConnection

func (a *App) TestFileStoreConnection() *model.AppError

func (*App) TestFileStoreConnectionWithConfig

func (a *App) TestFileStoreConnectionWithConfig(cfg *model.FileSettings) *model.AppError

func (*App) TestLdap

func (a *App) TestLdap() *model.AppError

func (*App) TestSiteURL

func (a *App) TestSiteURL(siteURL string) *model.AppError

func (*App) Timezones

func (a *App) Timezones() *timezones.Timezones

func (*App) ToggleMuteChannel

func (a *App) ToggleMuteChannel(channelID, userID string) (*model.ChannelMember, *model.AppError)

func (*App) TotalWebsocketConnections

func (a *App) TotalWebsocketConnections() int

func (*App) TriggerWebhook

func (a *App) TriggerWebhook(c *request.Context, payload *model.OutgoingWebhookPayload, hook *model.OutgoingWebhook, post *model.Post, channel *model.Channel)

func (*App) UnregisterPluginCommand

func (a *App) UnregisterPluginCommand(pluginID, teamID, trigger string)

func (*App) UpdateActive

func (a *App) UpdateActive(c *request.Context, user *model.User, active bool) (*model.User, *model.AppError)

func (*App) UpdateBotActive

func (a *App) UpdateBotActive(c *request.Context, botUserId string, active bool) (*model.Bot, *model.AppError)

UpdateBotActive marks a bot as active or inactive, along with its corresponding user.

func (*App) UpdateBotOwner

func (a *App) UpdateBotOwner(botUserId, newOwnerId string) (*model.Bot, *model.AppError)

UpdateBotOwner changes a bot's owner to the given value.

func (*App) UpdateChannel

func (a *App) UpdateChannel(channel *model.Channel) (*model.Channel, *model.AppError)

UpdateChannel updates a given channel by its Id. It also publishes the CHANNEL_UPDATED event.

func (*App) UpdateChannelMemberNotifyProps

func (a *App) UpdateChannelMemberNotifyProps(data map[string]string, channelID string, userID string) (*model.ChannelMember, *model.AppError)

func (*App) UpdateChannelMemberRoles

func (a *App) UpdateChannelMemberRoles(channelID string, userID string, newRoles string) (*model.ChannelMember, *model.AppError)

func (*App) UpdateChannelMemberSchemeRoles

func (a *App) UpdateChannelMemberSchemeRoles(channelID string, userID string, isSchemeGuest bool, isSchemeUser bool, isSchemeAdmin bool) (*model.ChannelMember, *model.AppError)

func (*App) UpdateChannelPrivacy

func (a *App) UpdateChannelPrivacy(c *request.Context, oldChannel *model.Channel, user *model.User) (*model.Channel, *model.AppError)

func (*App) UpdateChannelScheme

func (a *App) UpdateChannelScheme(channel *model.Channel) (*model.Channel, *model.AppError)

UpdateChannelScheme saves the new SchemeId of the channel passed.

func (*App) UpdateCommand

func (a *App) UpdateCommand(oldCmd, updatedCmd *model.Command) (*model.Command, *model.AppError)

func (*App) UpdateConfig

func (a *App) UpdateConfig(f func(*model.Config))

func (*App) UpdateDNDStatusOfUsers

func (a *App) UpdateDNDStatusOfUsers()

UpdateDNDStatusOfUsers is a recurring task which is started when server starts which unsets dnd status of users if needed and saves and broadcasts it

func (*App) UpdateEphemeralPost

func (a *App) UpdateEphemeralPost(userID string, post *model.Post) *model.Post

func (*App) UpdateExpiredDNDStatuses

func (a *App) UpdateExpiredDNDStatuses() ([]*model.Status, error)

func (*App) UpdateGroup

func (a *App) UpdateGroup(group *model.Group) (*model.Group, *model.AppError)

func (*App) UpdateGroupSyncable

func (a *App) UpdateGroupSyncable(groupSyncable *model.GroupSyncable) (*model.GroupSyncable, *model.AppError)

func (*App) UpdateHashedPassword

func (a *App) UpdateHashedPassword(user *model.User, newHashedPassword string) *model.AppError

func (*App) UpdateHashedPasswordByUserId

func (a *App) UpdateHashedPasswordByUserId(userID, newHashedPassword string) *model.AppError

func (*App) UpdateIncomingWebhook

func (a *App) UpdateIncomingWebhook(oldHook, updatedHook *model.IncomingWebhook) (*model.IncomingWebhook, *model.AppError)

func (*App) UpdateLastActivityAtIfNeeded

func (a *App) UpdateLastActivityAtIfNeeded(session model.Session)

func (*App) UpdateMfa

func (a *App) UpdateMfa(activate bool, userID, token string) *model.AppError

func (*App) UpdateMobileAppBadge

func (a *App) UpdateMobileAppBadge(userID string)

func (*App) UpdateOAuthApp

func (a *App) UpdateOAuthApp(oldApp, updatedApp *model.OAuthApp) (*model.OAuthApp, *model.AppError)

func (*App) UpdateOAuthUserAttrs

func (a *App) UpdateOAuthUserAttrs(userData io.Reader, user *model.User, provider einterfaces.OAuthProvider, service string, tokenUser *model.User) *model.AppError

func (*App) UpdateOutgoingWebhook

func (a *App) UpdateOutgoingWebhook(oldHook, updatedHook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError)

func (*App) UpdatePassword

func (a *App) UpdatePassword(user *model.User, newPassword string) *model.AppError

func (*App) UpdatePasswordAsUser

func (a *App) UpdatePasswordAsUser(userID, currentPassword, newPassword string) *model.AppError

func (*App) UpdatePasswordByUserIdSendEmail

func (a *App) UpdatePasswordByUserIdSendEmail(userID, newPassword, method string) *model.AppError

func (*App) UpdatePasswordSendEmail

func (a *App) UpdatePasswordSendEmail(user *model.User, newPassword, method string) *model.AppError

func (*App) UpdatePost

func (a *App) UpdatePost(c *request.Context, post *model.Post, safeUpdate bool) (*model.Post, *model.AppError)

func (*App) UpdatePreferences

func (a *App) UpdatePreferences(userID string, preferences model.Preferences) *model.AppError

func (*App) UpdateProductNotices

func (a *App) UpdateProductNotices() *model.AppError

UpdateProductNotices is called periodically from a scheduled worker to fetch new notices and update the cache

func (*App) UpdateRemoteCluster

func (a *App) UpdateRemoteCluster(rc *model.RemoteCluster) (*model.RemoteCluster, *model.AppError)

func (*App) UpdateRemoteClusterTopics

func (a *App) UpdateRemoteClusterTopics(remoteClusterId string, topics string) (*model.RemoteCluster, *model.AppError)

func (*App) UpdateRole

func (a *App) UpdateRole(role *model.Role) (*model.Role, *model.AppError)

func (*App) UpdateScheme

func (a *App) UpdateScheme(scheme *model.Scheme) (*model.Scheme, *model.AppError)

func (*App) UpdateSharedChannel

func (a *App) UpdateSharedChannel(sc *model.SharedChannel) (*model.SharedChannel, error)

func (*App) UpdateSharedChannelRemoteCursor

func (a *App) UpdateSharedChannelRemoteCursor(id string, cursor model.GetPostsSinceForSyncCursor) error

func (*App) UpdateSidebarCategories

func (a *App) UpdateSidebarCategories(userID, teamID string, categories []*model.SidebarCategoryWithChannels) ([]*model.SidebarCategoryWithChannels, *model.AppError)

func (*App) UpdateSidebarCategoryOrder

func (a *App) UpdateSidebarCategoryOrder(userID, teamID string, categoryOrder []string) *model.AppError

func (*App) UpdateTeam

func (a *App) UpdateTeam(team *model.Team) (*model.Team, *model.AppError)

func (*App) UpdateTeamMemberRoles

func (a *App) UpdateTeamMemberRoles(teamID string, userID string, newRoles string) (*model.TeamMember, *model.AppError)

func (*App) UpdateTeamMemberSchemeRoles

func (a *App) UpdateTeamMemberSchemeRoles(teamID string, userID string, isSchemeGuest bool, isSchemeUser bool, isSchemeAdmin bool) (*model.TeamMember, *model.AppError)

func (*App) UpdateTeamPrivacy

func (a *App) UpdateTeamPrivacy(teamID string, teamType string, allowOpenInvite bool) *model.AppError

func (*App) UpdateTeamScheme

func (a *App) UpdateTeamScheme(team *model.Team) (*model.Team, *model.AppError)

func (*App) UpdateThreadFollowForUser

func (a *App) UpdateThreadFollowForUser(userID, teamID, threadID string, state bool) *model.AppError

func (*App) UpdateThreadFollowForUserFromChannelAdd added in v6.5.0

func (a *App) UpdateThreadFollowForUserFromChannelAdd(userID, teamID, threadID string) *model.AppError

func (*App) UpdateThreadReadForUser

func (a *App) UpdateThreadReadForUser(currentSessionId, userID, teamID, threadID string, timestamp int64) (*model.ThreadResponse, *model.AppError)

func (*App) UpdateThreadReadForUserByPost added in v6.7.0

func (a *App) UpdateThreadReadForUserByPost(currentSessionId, userID, teamID, threadID, postID string) (*model.ThreadResponse, *model.AppError)

func (*App) UpdateThreadsReadForUser

func (a *App) UpdateThreadsReadForUser(userID, teamID string) *model.AppError

func (*App) UpdateUser

func (a *App) UpdateUser(user *model.User, sendNotifications bool) (*model.User, *model.AppError)

func (*App) UpdateUserActive

func (a *App) UpdateUserActive(c *request.Context, userID string, active bool) *model.AppError

func (*App) UpdateUserAsUser

func (a *App) UpdateUserAsUser(user *model.User, asAdmin bool) (*model.User, *model.AppError)

func (*App) UpdateUserAuth

func (a *App) UpdateUserAuth(userID string, userAuth *model.UserAuth) (*model.UserAuth, *model.AppError)

func (*App) UpdateUserRoles

func (a *App) UpdateUserRoles(userID string, newRoles string, sendWebSocketEvent bool) (*model.User, *model.AppError)

func (*App) UpdateUserRolesWithUser

func (a *App) UpdateUserRolesWithUser(user *model.User, newRoles string, sendWebSocketEvent bool) (*model.User, *model.AppError)

func (*App) UpdateViewedProductNotices

func (a *App) UpdateViewedProductNotices(userID string, noticeIds []string) *model.AppError

UpdateViewedProductNotices is called from the frontend to mark a set of notices as 'viewed' by user

func (*App) UpdateViewedProductNoticesForNewUser

func (a *App) UpdateViewedProductNoticesForNewUser(userID string)

UpdateViewedProductNoticesForNewUser is called when new user is created to mark all current notices for this user as viewed in order to avoid showing them imminently on first login

func (*App) UpdateWebConnUserActivity

func (a *App) UpdateWebConnUserActivity(session model.Session, activityAt int64)

UpdateWebConnUserActivity sets the LastUserActivityAt of the hub for the given session.

func (*App) UploadData

func (a *App) UploadData(c *request.Context, us *model.UploadSession, rd io.Reader) (*model.FileInfo, *model.AppError)

func (*App) UploadEmojiImage

func (a *App) UploadEmojiImage(id string, imageData *multipart.FileHeader) *model.AppError

func (*App) UploadFile

func (a *App) UploadFile(c *request.Context, data []byte, channelID string, filename string) (*model.FileInfo, *model.AppError)

UploadFile uploads a single file in form of a completely constructed byte array for a channel.

func (*App) UploadFileX

func (a *App) UploadFileX(c *request.Context, channelID, name string, input io.Reader,
	opts ...func(*UploadFileTask)) (*model.FileInfo, *model.AppError)

UploadFileX uploads a single file as specified in t. It applies the upload constraints, executes plugins and image processing logic as needed. It returns a filled-out FileInfo and an optional error. A plugin may reject the upload, returning a rejection error. In this case FileInfo would have contained the last "good" FileInfo before the execution of that plugin.

func (*App) UploadFiles

func (a *App) UploadFiles(c *request.Context, teamID string, channelID string, userID string, files []io.ReadCloser, filenames []string, clientIds []string, now time.Time) (*model.FileUploadResponse, *model.AppError)

Uploads some files to the given team and channel as the given user. files and filenames should have the same length. clientIds should either not be provided or have the same length as files and filenames. The provided files should be closed by the caller so that they are not leaked.

func (*App) UploadMultipartFiles

func (a *App) UploadMultipartFiles(c *request.Context, teamID string, channelID string, userID string, fileHeaders []*multipart.FileHeader, clientIds []string, now time.Time) (*model.FileUploadResponse, *model.AppError)

func (*App) UpsertGroupMember

func (a *App) UpsertGroupMember(groupID string, userID string) (*model.GroupMember, *model.AppError)

func (*App) UpsertGroupMembers added in v6.5.0

func (a *App) UpsertGroupMembers(groupID string, userIDs []string) ([]*model.GroupMember, *model.AppError)

func (*App) UpsertGroupSyncable

func (a *App) UpsertGroupSyncable(groupSyncable *model.GroupSyncable) (*model.GroupSyncable, *model.AppError)

func (*App) UserCanSeeOtherUser

func (a *App) UserCanSeeOtherUser(userID string, otherUserId string) (bool, *model.AppError)

func (*App) UserIsInAdminRoleGroup

func (a *App) UserIsInAdminRoleGroup(userID, syncableID string, syncableType model.GroupSyncableType) (bool, *model.AppError)

UserIsInAdminRoleGroup returns true at least one of the user's groups are configured to set the members as admins in the given syncable.

func (*App) VerifyEmailFromToken

func (a *App) VerifyEmailFromToken(userSuppliedTokenString string) *model.AppError

func (*App) VerifyPlugin

func (a *App) VerifyPlugin(plugin, signature io.ReadSeeker) *model.AppError

VerifyPlugin checks that the given signature corresponds to the given plugin and matches a trusted certificate.

func (*App) VerifyUserEmail

func (a *App) VerifyUserEmail(userID, email string) *model.AppError

func (*App) ViewChannel

func (a *App) ViewChannel(view *model.ChannelView, userID string, currentSessionId string, collapsedThreadsSupported bool) (map[string]int64, *model.AppError)

func (*App) WriteFile

func (a *App) WriteFile(fr io.Reader, path string) (int64, *model.AppError)

type AppIface

type AppIface interface {
	// @openTracingParams args
	ExecuteCommand(c *request.Context, args *model.CommandArgs) (*model.CommandResponse, *model.AppError)
	// @openTracingParams teamID
	// previous ListCommands now ListAutocompleteCommands
	ListAutocompleteCommands(teamID string, T i18n.TranslateFunc) ([]*model.Command, *model.AppError)
	// @openTracingParams teamID, skipSlackParsing
	CreateCommandPost(c *request.Context, post *model.Post, teamID string, response *model.CommandResponse, skipSlackParsing bool) (*model.Post, *model.AppError)
	// AddChannelMember adds a user to a channel. It is a wrapper over AddUserToChannel.
	AddChannelMember(c *request.Context, userID string, channel *model.Channel, opts ChannelMemberOpts) (*model.ChannelMember, *model.AppError)
	// AddCursorIdsForPostList adds NextPostId and PrevPostId as cursor to the PostList.
	// The conditional blocks ensure that it sets those cursor IDs immediately as afterPost, beforePost or empty,
	// and only query to database whenever necessary.
	AddCursorIdsForPostList(originalList *model.PostList, afterPost, beforePost string, since int64, page, perPage int, collapsedThreads bool)
	// AddPublicKey will add plugin public key to the config. Overwrites the previous file
	AddPublicKey(name string, key io.Reader) *model.AppError
	// AddUserToChannel adds a user to a given channel.
	AddUserToChannel(user *model.User, channel *model.Channel, skipTeamMemberIntegrityCheck bool) (*model.ChannelMember, *model.AppError)
	// Caller must close the first return value
	FileReader(path string) (filestore.ReadCloseSeeker, *model.AppError)
	// ChannelMembersMinusGroupMembers returns the set of users in the given channel minus the set of users in the given
	// groups.
	//
	// The result can be used, for example, to determine the set of users who would be removed from a channel if the
	// channel were group-constrained with the given groups.
	ChannelMembersMinusGroupMembers(channelID string, groupIDs []string, page, perPage int) ([]*model.UserWithGroups, int64, *model.AppError)
	// ChannelMembersToAdd returns a slice of UserChannelIDPair that need newly created memberships
	// based on the groups configurations. The returned list can be optionally scoped to a single given channel.
	//
	// Typically since will be the last successful group sync time.
	// If includeRemovedMembers is true, then channel members who left or were removed from the channel will
	// be included; otherwise, they will be excluded.
	ChannelMembersToAdd(since int64, channelID *string, includeRemovedMembers bool) ([]*model.UserChannelIDPair, *model.AppError)
	// CheckProviderAttributes returns the empty string if the patch can be applied without
	// overriding attributes set by the user's login provider; otherwise, the name of the offending
	// field is returned.
	CheckProviderAttributes(user *model.User, patch *model.UserPatch) string
	// ClientConfigWithComputed gets the configuration in a format suitable for sending to the client.
	ClientConfigWithComputed() map[string]string
	// ConvertBotToUser converts a bot to user.
	ConvertBotToUser(bot *model.Bot, userPatch *model.UserPatch, sysadmin bool) (*model.User, *model.AppError)
	// ConvertUserToBot converts a user to bot.
	ConvertUserToBot(user *model.User) (*model.Bot, *model.AppError)
	// CreateBot creates the given bot and corresponding user.
	CreateBot(c *request.Context, bot *model.Bot) (*model.Bot, *model.AppError)
	// CreateChannelScheme creates a new Scheme of scope channel and assigns it to the channel.
	CreateChannelScheme(channel *model.Channel) (*model.Scheme, *model.AppError)
	// CreateDefaultMemberships adds users to teams and channels based on their group memberships and how those groups
	// are configured to sync with teams and channels for group members on or after the given timestamp.
	// If includeRemovedMembers is true, then members who left or were removed from a team/channel will
	// be re-added; otherwise, they will not be re-added.
	CreateDefaultMemberships(c *request.Context, since int64, includeRemovedMembers bool) error
	// CreateGuest creates a guest and sets several fields of the returned User struct to
	// their zero values.
	CreateGuest(c *request.Context, user *model.User) (*model.User, *model.AppError)
	// CreateUser creates a user and sets several fields of the returned User struct to
	// their zero values.
	CreateUser(c *request.Context, user *model.User) (*model.User, *model.AppError)
	// Creates and stores FileInfos for a post created before the FileInfos table existed.
	MigrateFilenamesToFileInfos(post *model.Post) []*model.FileInfo
	// DefaultChannelNames returns the list of system-wide default channel names.
	//
	// By default the list will be (not necessarily in this order):
	//	['town-square', 'off-topic']
	// However, if TeamSettings.ExperimentalDefaultChannels contains a list of channels then that list will replace
	// 'off-topic' and be included in the return results in addition to 'town-square'. For example:
	//	['town-square', 'game-of-thrones', 'wow']
	//
	DefaultChannelNames() []string
	// DeleteChannelScheme deletes a channels scheme and sets its SchemeId to nil.
	DeleteChannelScheme(channel *model.Channel) (*model.Channel, *model.AppError)
	// DeleteGroupConstrainedMemberships deletes team and channel memberships of users who aren't members of the allowed
	// groups of all group-constrained teams and channels.
	DeleteGroupConstrainedMemberships(c *request.Context) error
	// DeletePublicKey will delete plugin public key from the config.
	DeletePublicKey(name string) *model.AppError
	// DemoteUserToGuest Convert user's roles and all his membership's roles from
	// regular user roles to guest roles.
	DemoteUserToGuest(user *model.User) *model.AppError
	// DisablePlugin will set the config for an installed plugin to disabled, triggering deactivation if active.
	// Notifies cluster peers through config change.
	DisablePlugin(id string) *model.AppError
	// DoPermissionsMigrations execute all the permissions migrations need by the current version.
	DoPermissionsMigrations() error
	// EnablePlugin will set the config for an installed plugin to enabled, triggering asynchronous
	// activation if inactive anywhere in the cluster.
	// Notifies cluster peers through config change.
	EnablePlugin(id string) *model.AppError
	// Expand announcements in incoming webhooks from Slack. Those announcements
	// can be found in the text attribute, or in the pretext, text, title and value
	// attributes of the attachment structure. The Slack attachment structure is
	// documented here: https://api.slack.com/docs/attachments
	ProcessSlackAttachments(attachments []*model.SlackAttachment) []*model.SlackAttachment
	// ExtendSessionExpiryIfNeeded extends Session.ExpiresAt based on session lengths in config.
	// A new ExpiresAt is only written if enough time has elapsed since last update.
	// Returns true only if the session was extended.
	ExtendSessionExpiryIfNeeded(session *model.Session) bool
	// FillInPostProps should be invoked before saving posts to fill in properties such as
	// channel_mentions.
	//
	// If channel is nil, FillInPostProps will look up the channel corresponding to the post.
	FillInPostProps(post *model.Post, channel *model.Channel) *model.AppError
	// FilterNonGroupChannelMembers returns the subset of the given user IDs of the users who are not members of groups
	// associated to the channel excluding bots
	FilterNonGroupChannelMembers(userIDs []string, channel *model.Channel) ([]string, error)
	// FilterNonGroupTeamMembers returns the subset of the given user IDs of the users who are not members of groups
	// associated to the team excluding bots.
	FilterNonGroupTeamMembers(userIDs []string, team *model.Team) ([]string, error)
	// GetAllLdapGroupsPage retrieves all LDAP groups under the configured base DN using the default or configured group
	// filter.
	GetAllLdapGroupsPage(page int, perPage int, opts model.LdapGroupSearchOpts) ([]*model.Group, int, *model.AppError)
	// GetBot returns the given bot.
	GetBot(botUserId string, includeDeleted bool) (*model.Bot, *model.AppError)
	// GetBots returns the requested page of bots.
	GetBots(options *model.BotGetOptions) (model.BotList, *model.AppError)
	// GetChannelGroupUsers returns the users who are associated to the channel via GroupChannels and GroupMembers.
	GetChannelGroupUsers(channelID string) ([]*model.User, *model.AppError)
	// GetChannelModerationsForChannel Gets a channels ChannelModerations from either the higherScoped roles or from the channel scheme roles.
	GetChannelModerationsForChannel(channel *model.Channel) ([]*model.ChannelModeration, *model.AppError)
	// GetClusterPluginStatuses returns the status for plugins installed anywhere in the cluster.
	GetClusterPluginStatuses() (model.PluginStatuses, *model.AppError)
	// GetConfigFile proxies access to the given configuration file to the underlying config store.
	GetConfigFile(name string) ([]byte, error)
	// GetEmojiStaticURL returns a relative static URL for system default emojis,
	// and the API route for custom ones. Errors if not found or if custom and deleted.
	GetEmojiStaticURL(emojiName string) (string, *model.AppError)
	// GetEnvironmentConfig returns a map of configuration keys whose values have been overridden by an environment variable.
	// If filter is not nil and returns false for a struct field, that field will be omitted.
	GetEnvironmentConfig(filter func(reflect.StructField) bool) map[string]interface{}
	// GetFilteredUsersStats is used to get a count of users based on the set of filters supported by UserCountOptions.
	GetFilteredUsersStats(options *model.UserCountOptions) (*model.UsersStats, *model.AppError)
	// GetGroupsByTeam returns the paged list and the total count of group associated to the given team.
	GetGroupsByTeam(teamID string, opts model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, int, *model.AppError)
	// GetKnownUsers returns the list of user ids of users with any direct
	// relationship with a user. That means any user sharing any channel, including
	// direct and group channels.
	GetKnownUsers(userID string) ([]string, *model.AppError)
	// GetLdapGroup retrieves a single LDAP group by the given LDAP group id.
	GetLdapGroup(ldapGroupID string) (*model.Group, *model.AppError)
	// GetMarketplacePlugins returns a list of plugins from the marketplace-server,
	// and plugins that are installed locally.
	GetMarketplacePlugins(filter *model.MarketplacePluginFilter) ([]*model.MarketplacePlugin, *model.AppError)
	// GetPluginStatus returns the status for a plugin installed on this server.
	GetPluginStatus(id string) (*model.PluginStatus, *model.AppError)
	// GetPluginStatuses returns the status for plugins installed on this server.
	GetPluginStatuses() (model.PluginStatuses, *model.AppError)
	// GetPluginsEnvironment returns the plugin environment for use if plugins are enabled and
	// initialized.
	//
	// To get the plugins environment when the plugins are disabled, manually acquire the plugins
	// lock instead.
	GetPluginsEnvironment() *plugin.Environment
	// GetProductNotices is called from the frontend to fetch the product notices that are relevant to the caller
	GetProductNotices(c *request.Context, userID, teamID string, client model.NoticeClientType, clientVersion string, locale string) (model.NoticeMessages, *model.AppError)
	// GetPublicKey will return the actual public key saved in the `name` file.
	GetPublicKey(name string) ([]byte, *model.AppError)
	// GetSanitizedConfig gets the configuration for a system admin without any secrets.
	GetSanitizedConfig() *model.Config
	// GetSchemeRolesForChannel Checks if a channel or its team has an override scheme for channel roles and returns the scheme roles or default channel roles.
	GetSchemeRolesForChannel(channelID string) (guestRoleName string, userRoleName string, adminRoleName string, err *model.AppError)
	// GetSessionLengthInMillis returns the session length, in milliseconds,
	// based on the type of session (Mobile, SSO, Web/LDAP).
	GetSessionLengthInMillis(session *model.Session) int64
	// GetSuggestions returns suggestions for user input.
	GetSuggestions(c *request.Context, commandArgs *model.CommandArgs, commands []*model.Command, roleID string) []model.AutocompleteSuggestion
	// GetTeamGroupUsers returns the users who are associated to the team via GroupTeams and GroupMembers.
	GetTeamGroupUsers(teamID string) ([]*model.User, *model.AppError)
	// GetTeamSchemeChannelRoles Checks if a team has an override scheme and returns the scheme channel role names or default channel role names.
	GetTeamSchemeChannelRoles(teamID string) (guestRoleName string, userRoleName string, adminRoleName string, err *model.AppError)
	// GetTotalUsersStats is used for the DM list total
	GetTotalUsersStats(viewRestrictions *model.ViewUsersRestrictions) (*model.UsersStats, *model.AppError)
	// HasRemote returns whether a given channelID is present in the channel remotes or not.
	HasRemote(channelID string, remoteID string) (bool, error)
	// HubRegister registers a connection to a hub.
	HubRegister(webConn *WebConn)
	// HubUnregister unregisters a connection from a hub.
	HubUnregister(webConn *WebConn)
	// InstallPlugin unpacks and installs a plugin but does not enable or activate it.
	InstallPlugin(pluginFile io.ReadSeeker, replace bool) (*model.Manifest, *model.AppError)
	// LimitedClientConfigWithComputed gets the configuration in a format suitable for sending to the client.
	LimitedClientConfigWithComputed() map[string]string
	// LogAuditRec logs an audit record using default LvlAuditCLI.
	LogAuditRec(rec *audit.Record, err error)
	// LogAuditRecWithLevel logs an audit record using specified Level.
	LogAuditRecWithLevel(rec *audit.Record, level mlog.Level, err error)
	// MakeAuditRecord creates a audit record pre-populated with defaults.
	MakeAuditRecord(event string, initialStatus string) *audit.Record
	// MarkChanelAsUnreadFromPost will take a post and set the channel as unread from that one.
	MarkChannelAsUnreadFromPost(postID string, userID string, collapsedThreadsSupported bool) (*model.ChannelUnreadAt, *model.AppError)
	// MentionsToPublicChannels returns all the mentions to public channels,
	// linking them to their channels
	MentionsToPublicChannels(message, teamID string) model.ChannelMentionMap
	// MentionsToTeamMembers returns all the @ mentions found in message that
	// belong to users in the specified team, linking them to their users
	MentionsToTeamMembers(message, teamID string) model.UserMentionMap
	// MoveChannel method is prone to data races if someone joins to channel during the move process. However this
	// function is only exposed to sysadmins and the possibility of this edge case is relatively small.
	MoveChannel(c *request.Context, team *model.Team, channel *model.Channel, user *model.User) *model.AppError
	// NewWebConn returns a new WebConn instance.
	NewWebConn(cfg *WebConnConfig) *WebConn
	// NotifySessionsExpired is called periodically from the job server to notify any mobile sessions that have expired.
	NotifySessionsExpired() error
	// OverrideIconURLIfEmoji changes the post icon override URL prop, if it has an emoji icon,
	// so that it points to the URL (relative) of the emoji - static if emoji is default, /api if custom.
	OverrideIconURLIfEmoji(post *model.Post)
	// PatchBot applies the given patch to the bot and corresponding user.
	PatchBot(botUserId string, botPatch *model.BotPatch) (*model.Bot, *model.AppError)
	// PatchChannelModerationsForChannel Updates a channels scheme roles based on a given ChannelModerationPatch, if the permissions match the higher scoped role the scheme is deleted.
	PatchChannelModerationsForChannel(channel *model.Channel, channelModerationsPatch []*model.ChannelModerationPatch) ([]*model.ChannelModeration, *model.AppError)
	// Perform an HTTP POST request to an integration's action endpoint.
	// Caller must consume and close returned http.Response as necessary.
	// For internal requests, requests are routed directly to a plugin ServerHTTP hook
	DoActionRequest(c *request.Context, rawURL string, body []byte) (*http.Response, *model.AppError)
	// PermanentDeleteBot permanently deletes a bot and its corresponding user.
	PermanentDeleteBot(botUserId string) *model.AppError
	// PopulateWebConnConfig checks if the connection id already exists in the hub,
	// and if so, accordingly populates the other fields of the webconn.
	PopulateWebConnConfig(s *model.Session, cfg *WebConnConfig, seqVal string) (*WebConnConfig, error)
	// PromoteGuestToUser Convert user's roles and all his membership's roles from
	// guest roles to regular user roles.
	PromoteGuestToUser(c *request.Context, user *model.User, requestorId string) *model.AppError
	// RenameChannel is used to rename the channel Name and the DisplayName fields
	RenameChannel(channel *model.Channel, newChannelName string, newDisplayName string) (*model.Channel, *model.AppError)
	// RenameTeam is used to rename the team Name and the DisplayName fields
	RenameTeam(team *model.Team, newTeamName string, newDisplayName string) (*model.Team, *model.AppError)
	// RevokeSessionsFromAllUsers will go through all the sessions active
	// in the server and revoke them
	RevokeSessionsFromAllUsers() *model.AppError
	// SaveConfig replaces the active configuration, optionally notifying cluster peers.
	SaveConfig(newCfg *model.Config, sendConfigChangeClusterMessage bool) (*model.Config, *model.Config, *model.AppError)
	// SearchAllChannels returns a list of channels, the total count of the results of the search (if the paginate search option is true), and an error.
	SearchAllChannels(term string, opts model.ChannelSearchOpts) (model.ChannelListWithTeamData, int64, *model.AppError)
	// SearchAllTeams returns a team list and the total count of the results
	SearchAllTeams(searchOpts *model.TeamSearch) ([]*model.Team, int64, *model.AppError)
	// SendNoCardPaymentFailedEmail
	SendNoCardPaymentFailedEmail() *model.AppError
	// SessionHasPermissionToManageBot returns nil if the session has access to manage the given bot.
	// This function deviates from other authorization checks in returning an error instead of just
	// a boolean, allowing the permission failure to be exposed with more granularity.
	SessionHasPermissionToManageBot(session model.Session, botUserId string) *model.AppError
	// SessionIsRegistered determines if a specific session has been registered
	SessionIsRegistered(session model.Session) bool
	// SetSessionExpireInDays sets the session's expiry the specified number of days
	// relative to either the session creation date or the current time, depending
	// on the `ExtendSessionOnActivity` config setting.
	SetSessionExpireInDays(session *model.Session, days int)
	// SetStatusDoNotDisturbTimed takes endtime in unix epoch format in UTC
	// and sets status of given userId to dnd which will be restored back after endtime
	SetStatusDoNotDisturbTimed(userId string, endtime int64)
	// SetStatusLastActivityAt sets the last activity at for a user on the local app server and updates
	// status to away if needed. Used by the WS to set status to away if an 'online' device disconnects
	// while an 'away' device is still connected
	SetStatusLastActivityAt(userID string, activityAt int64)
	// SyncLdap starts an LDAP sync job.
	// If includeRemovedMembers is true, then members who left or were removed from a team/channel will
	// be re-added; otherwise, they will not be re-added.
	SyncLdap(includeRemovedMembers bool)
	// SyncPlugins synchronizes the plugins installed locally
	// with the plugin bundles available in the file store.
	SyncPlugins() *model.AppError
	// SyncRolesAndMembership updates the SchemeAdmin status and membership of all of the members of the given
	// syncable.
	SyncRolesAndMembership(c *request.Context, syncableID string, syncableType model.GroupSyncableType, includeRemovedMembers bool)
	// SyncSyncableRoles updates the SchemeAdmin field value of the given syncable's members based on the configuration of
	// the member's group memberships and the configuration of those groups to the syncable. This method should only
	// be invoked on group-synced (aka group-constrained) syncables.
	SyncSyncableRoles(syncableID string, syncableType model.GroupSyncableType) *model.AppError
	// TeamMembersMinusGroupMembers returns the set of users on the given team minus the set of users in the given
	// groups.
	//
	// The result can be used, for example, to determine the set of users who would be removed from a team if the team
	// were group-constrained with the given groups.
	TeamMembersMinusGroupMembers(teamID string, groupIDs []string, page, perPage int) ([]*model.UserWithGroups, int64, *model.AppError)
	// TeamMembersToAdd returns a slice of UserTeamIDPair that need newly created memberships
	// based on the groups configurations. The returned list can be optionally scoped to a single given team.
	//
	// Typically since will be the last successful group sync time.
	// If includeRemovedMembers is true, then team members who left or were removed from the team will
	// be included; otherwise, they will be excluded.
	TeamMembersToAdd(since int64, teamID *string, includeRemovedMembers bool) ([]*model.UserTeamIDPair, *model.AppError)
	// This function migrates the default built in roles from code/config to the database.
	DoAdvancedPermissionsMigration()
	// This function zip's up all the files in fileDatas array and then saves it to the directory specified with the specified zip file name
	// Ensure the zip file name ends with a .zip
	CreateZipFileAndAddFiles(fileBackend filestore.FileBackend, fileDatas []model.FileData, zipFileName, directory string) error
	// This to be used for places we check the users password when they are already logged in
	DoubleCheckPassword(user *model.User, password string) *model.AppError
	// UpdateBotActive marks a bot as active or inactive, along with its corresponding user.
	UpdateBotActive(c *request.Context, botUserId string, active bool) (*model.Bot, *model.AppError)
	// UpdateBotOwner changes a bot's owner to the given value.
	UpdateBotOwner(botUserId, newOwnerId string) (*model.Bot, *model.AppError)
	// UpdateChannel updates a given channel by its Id. It also publishes the CHANNEL_UPDATED event.
	UpdateChannel(channel *model.Channel) (*model.Channel, *model.AppError)
	// UpdateChannelScheme saves the new SchemeId of the channel passed.
	UpdateChannelScheme(channel *model.Channel) (*model.Channel, *model.AppError)
	// UpdateDNDStatusOfUsers is a recurring task which is started when server starts
	// which unsets dnd status of users if needed and saves and broadcasts it
	UpdateDNDStatusOfUsers()
	// UpdateProductNotices is called periodically from a scheduled worker to fetch new notices and update the cache
	UpdateProductNotices() *model.AppError
	// UpdateViewedProductNotices is called from the frontend to mark a set of notices as 'viewed' by user
	UpdateViewedProductNotices(userID string, noticeIds []string) *model.AppError
	// UpdateViewedProductNoticesForNewUser is called when new user is created to mark all current notices for this
	// user as viewed in order to avoid showing them imminently on first login
	UpdateViewedProductNoticesForNewUser(userID string)
	// UpdateWebConnUserActivity sets the LastUserActivityAt of the hub for the given session.
	UpdateWebConnUserActivity(session model.Session, activityAt int64)
	// UploadFile uploads a single file in form of a completely constructed byte array for a channel.
	UploadFile(c *request.Context, data []byte, channelID string, filename string) (*model.FileInfo, *model.AppError)
	// UploadFileX uploads a single file as specified in t. It applies the upload
	// constraints, executes plugins and image processing logic as needed. It
	// returns a filled-out FileInfo and an optional error. A plugin may reject the
	// upload, returning a rejection error. In this case FileInfo would have
	// contained the last "good" FileInfo before the execution of that plugin.
	UploadFileX(c *request.Context, channelID, name string, input io.Reader, opts ...func(*UploadFileTask)) (*model.FileInfo, *model.AppError)
	// Uploads some files to the given team and channel as the given user. files and filenames should have
	// the same length. clientIds should either not be provided or have the same length as files and filenames.
	// The provided files should be closed by the caller so that they are not leaked.
	UploadFiles(c *request.Context, teamID string, channelID string, userID string, files []io.ReadCloser, filenames []string, clientIds []string, now time.Time) (*model.FileUploadResponse, *model.AppError)
	// UserIsInAdminRoleGroup returns true at least one of the user's groups are configured to set the members as
	// admins in the given syncable.
	UserIsInAdminRoleGroup(userID, syncableID string, syncableType model.GroupSyncableType) (bool, *model.AppError)
	// VerifyPlugin checks that the given signature corresponds to the given plugin and matches a trusted certificate.
	VerifyPlugin(plugin, signature io.ReadSeeker) *model.AppError
	//GetUserStatusesByIds used by apiV4
	GetUserStatusesByIds(userIDs []string) ([]*model.Status, *model.AppError)
	AccountMigration() einterfaces.AccountMigrationInterface
	ActivateMfa(userID, token string) *model.AppError
	AddChannelsToRetentionPolicy(policyID string, channelIDs []string) *model.AppError
	AddConfigListener(listener func(*model.Config, *model.Config)) string
	AddDirectChannels(teamID string, user *model.User) *model.AppError
	AddLdapPrivateCertificate(fileData *multipart.FileHeader) *model.AppError
	AddLdapPublicCertificate(fileData *multipart.FileHeader) *model.AppError
	AddRemoteCluster(rc *model.RemoteCluster) (*model.RemoteCluster, *model.AppError)
	AddSamlIdpCertificate(fileData *multipart.FileHeader) *model.AppError
	AddSamlPrivateCertificate(fileData *multipart.FileHeader) *model.AppError
	AddSamlPublicCertificate(fileData *multipart.FileHeader) *model.AppError
	AddSessionToCache(session *model.Session)
	AddStatusCache(status *model.Status)
	AddStatusCacheSkipClusterSend(status *model.Status)
	AddTeamMember(c *request.Context, teamID, userID string) (*model.TeamMember, *model.AppError)
	AddTeamMemberByInviteId(c *request.Context, inviteId, userID string) (*model.TeamMember, *model.AppError)
	AddTeamMemberByToken(c *request.Context, userID, tokenID string) (*model.TeamMember, *model.AppError)
	AddTeamMembers(c *request.Context, teamID string, userIDs []string, userRequestorId string, graceful bool) ([]*model.TeamMemberWithError, *model.AppError)
	AddTeamsToRetentionPolicy(policyID string, teamIDs []string) *model.AppError
	AddUserToTeam(c *request.Context, teamID string, userID string, userRequestorId string) (*model.Team, *model.TeamMember, *model.AppError)
	AddUserToTeamByInviteId(c *request.Context, inviteId string, userID string) (*model.Team, *model.TeamMember, *model.AppError)
	AddUserToTeamByTeamId(c *request.Context, teamID string, user *model.User) *model.AppError
	AddUserToTeamByToken(c *request.Context, userID string, tokenID string) (*model.Team, *model.TeamMember, *model.AppError)
	AdjustImage(file io.Reader) (*bytes.Buffer, *model.AppError)
	AllowOAuthAppAccessToUser(userID string, authRequest *model.AuthorizeRequest) (string, *model.AppError)
	AppendFile(fr io.Reader, path string) (int64, *model.AppError)
	AsymmetricSigningKey() *ecdsa.PrivateKey
	AttachCloudSessionCookie(c *request.Context, w http.ResponseWriter, r *http.Request)
	AttachDeviceId(sessionID string, deviceID string, expiresAt int64) *model.AppError
	AttachSessionCookies(c *request.Context, w http.ResponseWriter, r *http.Request)
	AuthenticateUserForLogin(c *request.Context, id, loginId, password, mfaToken, cwsToken string, ldapOnly bool) (user *model.User, err *model.AppError)
	AuthorizeOAuthUser(w http.ResponseWriter, r *http.Request, service, code, state, redirectURI string) (io.ReadCloser, string, map[string]string, *model.User, *model.AppError)
	AutocompleteChannels(userID, term string) (model.ChannelListWithTeamData, *model.AppError)
	AutocompleteChannelsForSearch(teamID string, userID string, term string) (model.ChannelList, *model.AppError)
	AutocompleteChannelsForTeam(teamID, userID, term string) (model.ChannelList, *model.AppError)
	AutocompleteUsersInChannel(teamID string, channelID string, term string, options *model.UserSearchOptions) (*model.UserAutocompleteInChannel, *model.AppError)
	AutocompleteUsersInTeam(teamID string, term string, options *model.UserSearchOptions) (*model.UserAutocompleteInTeam, *model.AppError)
	BroadcastStatus(status *model.Status)
	BuildPostReactions(postID string) (*[]ReactionImportData, *model.AppError)
	BuildPushNotificationMessage(contentsConfig string, post *model.Post, user *model.User, channel *model.Channel, channelName string, senderName string, explicitMention bool, channelWideMention bool, replyToThreadType string) (*model.PushNotification, *model.AppError)
	BuildSamlMetadataObject(idpMetadata []byte) (*model.SamlMetadataResponse, *model.AppError)
	BulkExport(writer io.Writer, outPath string, opts model.BulkExportOpts) *model.AppError
	BulkImport(c *request.Context, jsonlReader io.Reader, attachmentsReader *zip.Reader, dryRun bool, workers int) (*model.AppError, int)
	BulkImportWithPath(c *request.Context, jsonlReader io.Reader, attachmentsReader *zip.Reader, dryRun bool, workers int, importPath string) (*model.AppError, int)
	CancelJob(jobId string) *model.AppError
	ChannelMembersToRemove(teamID *string) ([]*model.ChannelMember, *model.AppError)
	Channels() *Channels
	CheckCanInviteToSharedChannel(channelId string) error
	CheckForClientSideCert(r *http.Request) (string, string, string)
	CheckIntegrity() <-chan model.IntegrityCheckResult
	CheckMandatoryS3Fields(settings *model.FileSettings) *model.AppError
	CheckPasswordAndAllCriteria(user *model.User, password string, mfaToken string) *model.AppError
	CheckRolesExist(roleNames []string) *model.AppError
	CheckUserAllAuthenticationCriteria(user *model.User, mfaToken string) *model.AppError
	CheckUserMfa(user *model.User, token string) *model.AppError
	CheckUserPostflightAuthenticationCriteria(user *model.User) *model.AppError
	CheckUserPreflightAuthenticationCriteria(user *model.User, mfaToken string) *model.AppError
	CheckWebConn(userID, connectionID string) *CheckConnResult
	ClearChannelMembersCache(channelID string)
	ClearLatestVersionCache()
	ClearSessionCacheForAllUsers()
	ClearSessionCacheForAllUsersSkipClusterSend()
	ClearSessionCacheForUser(userID string)
	ClearSessionCacheForUserSkipClusterSend(userID string)
	ClearTeamMembersCache(teamID string)
	ClientConfig() map[string]string
	ClientConfigHash() string
	Cloud() einterfaces.CloudInterface
	Cluster() einterfaces.ClusterInterface
	CompareAndDeletePluginKey(pluginID string, key string, oldValue []byte) (bool, *model.AppError)
	CompareAndSetPluginKey(pluginID string, key string, oldValue, newValue []byte) (bool, *model.AppError)
	CompleteOAuth(c *request.Context, service string, body io.ReadCloser, teamID string, props map[string]string, tokenUser *model.User) (*model.User, *model.AppError)
	CompleteOnboarding(c *request.Context, request *model.CompleteOnboardingRequest) *model.AppError
	CompleteSwitchWithOAuth(service string, userData io.Reader, email string, tokenUser *model.User) (*model.User, *model.AppError)
	Compliance() einterfaces.ComplianceInterface
	Config() *model.Config
	CopyFileInfos(userID string, fileIDs []string) ([]string, *model.AppError)
	CreateChannel(c *request.Context, channel *model.Channel, addMember bool) (*model.Channel, *model.AppError)
	CreateChannelWithUser(c *request.Context, channel *model.Channel, userID string) (*model.Channel, *model.AppError)
	CreateCommand(cmd *model.Command) (*model.Command, *model.AppError)
	CreateCommandWebhook(commandID string, args *model.CommandArgs) (*model.CommandWebhook, *model.AppError)
	CreateEmoji(sessionUserId string, emoji *model.Emoji, multiPartImageData *multipart.Form) (*model.Emoji, *model.AppError)
	CreateGroup(group *model.Group) (*model.Group, *model.AppError)
	CreateGroupChannel(userIDs []string, creatorId string) (*model.Channel, *model.AppError)
	CreateGroupWithUserIds(group *model.GroupWithUserIds) (*model.Group, *model.AppError)
	CreateIncomingWebhookForChannel(creatorId string, channel *model.Channel, hook *model.IncomingWebhook) (*model.IncomingWebhook, *model.AppError)
	CreateJob(job *model.Job) (*model.Job, *model.AppError)
	CreateOAuthApp(app *model.OAuthApp) (*model.OAuthApp, *model.AppError)
	CreateOAuthStateToken(extra string) (*model.Token, *model.AppError)
	CreateOAuthUser(c *request.Context, service string, userData io.Reader, teamID string, tokenUser *model.User) (*model.User, *model.AppError)
	CreateOutgoingWebhook(hook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError)
	CreatePasswordRecoveryToken(userID, email string) (*model.Token, *model.AppError)
	CreatePost(c *request.Context, post *model.Post, channel *model.Channel, triggerWebhooks, setOnline bool) (savedPost *model.Post, err *model.AppError)
	CreatePostAsUser(c *request.Context, post *model.Post, currentSessionId string, setOnline bool) (*model.Post, *model.AppError)
	CreatePostMissingChannel(c *request.Context, post *model.Post, triggerWebhooks bool) (*model.Post, *model.AppError)
	CreateRetentionPolicy(policy *model.RetentionPolicyWithTeamAndChannelIDs) (*model.RetentionPolicyWithTeamAndChannelCounts, *model.AppError)
	CreateRole(role *model.Role) (*model.Role, *model.AppError)
	CreateScheme(scheme *model.Scheme) (*model.Scheme, *model.AppError)
	CreateSession(session *model.Session) (*model.Session, *model.AppError)
	CreateSidebarCategory(userID, teamID string, newCategory *model.SidebarCategoryWithChannels) (*model.SidebarCategoryWithChannels, *model.AppError)
	CreateTeam(c *request.Context, team *model.Team) (*model.Team, *model.AppError)
	CreateTeamWithUser(c *request.Context, team *model.Team, userID string) (*model.Team, *model.AppError)
	CreateTermsOfService(text, userID string) (*model.TermsOfService, *model.AppError)
	CreateUploadSession(us *model.UploadSession) (*model.UploadSession, *model.AppError)
	CreateUserAccessToken(token *model.UserAccessToken) (*model.UserAccessToken, *model.AppError)
	CreateUserAsAdmin(c *request.Context, user *model.User, redirect string) (*model.User, *model.AppError)
	CreateUserFromSignup(c *request.Context, user *model.User, redirect string) (*model.User, *model.AppError)
	CreateUserWithInviteId(c *request.Context, user *model.User, inviteId, redirect string) (*model.User, *model.AppError)
	CreateUserWithToken(c *request.Context, user *model.User, token *model.Token) (*model.User, *model.AppError)
	CreateWebhookPost(c *request.Context, userID string, channel *model.Channel, text, overrideUsername, overrideIconURL, overrideIconEmoji string, props model.StringInterface, postType string, postRootId string) (*model.Post, *model.AppError)
	DBHealthCheckDelete() error
	DBHealthCheckWrite() error
	DataRetention() einterfaces.DataRetentionInterface
	DeactivateGuests(c *request.Context) *model.AppError
	DeactivateMfa(userID string) *model.AppError
	DeauthorizeOAuthAppForUser(userID, appID string) *model.AppError
	DeleteAllExpiredPluginKeys() *model.AppError
	DeleteAllKeysForPlugin(pluginID string) *model.AppError
	DeleteBrandImage() *model.AppError
	DeleteChannel(c *request.Context, channel *model.Channel, userID string) *model.AppError
	DeleteCommand(commandID string) *model.AppError
	DeleteEmoji(emoji *model.Emoji) *model.AppError
	DeleteEphemeralPost(userID, postID string)
	DeleteExport(name string) *model.AppError
	DeleteGroup(groupID string) (*model.Group, *model.AppError)
	DeleteGroupMember(groupID string, userID string) (*model.GroupMember, *model.AppError)
	DeleteGroupMembers(groupID string, userIDs []string) ([]*model.GroupMember, *model.AppError)
	DeleteGroupSyncable(groupID string, syncableID string, syncableType model.GroupSyncableType) (*model.GroupSyncable, *model.AppError)
	DeleteIncomingWebhook(hookID string) *model.AppError
	DeleteOAuthApp(appID string) *model.AppError
	DeleteOutgoingWebhook(hookID string) *model.AppError
	DeletePluginKey(pluginID string, key string) *model.AppError
	DeletePost(postID, deleteByID string) (*model.Post, *model.AppError)
	DeletePreferences(userID string, preferences model.Preferences) *model.AppError
	DeleteReactionForPost(c *request.Context, reaction *model.Reaction) *model.AppError
	DeleteRemoteCluster(remoteClusterId string) (bool, *model.AppError)
	DeleteRetentionPolicy(policyID string) *model.AppError
	DeleteScheme(schemeId string) (*model.Scheme, *model.AppError)
	DeleteSharedChannel(channelID string) (bool, error)
	DeleteSharedChannelRemote(id string) (bool, error)
	DeleteSidebarCategory(userID, teamID, categoryId string) *model.AppError
	DeleteToken(token *model.Token) *model.AppError
	DisableAutoResponder(userID string, asAdmin bool) *model.AppError
	DisableUserAccessToken(token *model.UserAccessToken) *model.AppError
	DoAppMigrations()
	DoCommandRequest(cmd *model.Command, p url.Values) (*model.Command, *model.CommandResponse, *model.AppError)
	DoEmojisPermissionsMigration()
	DoGuestRolesCreationMigration()
	DoLocalRequest(c *request.Context, rawURL string, body []byte) (*http.Response, *model.AppError)
	DoLogin(c *request.Context, w http.ResponseWriter, r *http.Request, user *model.User, deviceID string, isMobile, isOAuthUser, isSaml bool) *model.AppError
	DoPostAction(c *request.Context, postID, actionId, userID, selectedOption string) (string, *model.AppError)
	DoPostActionWithCookie(c *request.Context, postID, actionId, userID, selectedOption string, cookie *model.PostActionCookie) (string, *model.AppError)
	DoSystemConsoleRolesCreationMigration()
	DoUploadFile(c *request.Context, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, *model.AppError)
	DoUploadFileExpectModification(c *request.Context, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError)
	DownloadFromURL(downloadURL string) ([]byte, error)
	EnableUserAccessToken(token *model.UserAccessToken) *model.AppError
	EnvironmentConfig(filter func(reflect.StructField) bool) map[string]interface{}
	ExportPermissions(w io.Writer) error
	ExtractContentFromFileInfo(fileInfo *model.FileInfo) error
	FetchSamlMetadataFromIdp(url string) ([]byte, *model.AppError)
	FileBackend() filestore.FileBackend
	FileExists(path string) (bool, *model.AppError)
	FileModTime(path string) (time.Time, *model.AppError)
	FileSize(path string) (int64, *model.AppError)
	FillInChannelProps(channel *model.Channel) *model.AppError
	FillInChannelsProps(channelList model.ChannelList) *model.AppError
	FilterUsersByVisible(viewer *model.User, otherUsers []*model.User) ([]*model.User, *model.AppError)
	FindTeamByName(name string) bool
	GenerateMfaSecret(userID string) (*model.MfaSecret, *model.AppError)
	GeneratePublicLink(siteURL string, info *model.FileInfo) string
	GenerateSupportPacket() []model.FileData
	GetActivePluginManifests() ([]*model.Manifest, *model.AppError)
	GetAllChannels(page, perPage int, opts model.ChannelSearchOpts) (model.ChannelListWithTeamData, *model.AppError)
	GetAllChannelsCount(opts model.ChannelSearchOpts) (int64, *model.AppError)
	GetAllPrivateTeams() ([]*model.Team, *model.AppError)
	GetAllPublicTeams() ([]*model.Team, *model.AppError)
	GetAllRemoteClusters(filter model.RemoteClusterQueryFilter) ([]*model.RemoteCluster, *model.AppError)
	GetAllRoles() ([]*model.Role, *model.AppError)
	GetAllStatuses() map[string]*model.Status
	GetAllTeams() ([]*model.Team, *model.AppError)
	GetAllTeamsPage(offset int, limit int, opts *model.TeamSearch) ([]*model.Team, *model.AppError)
	GetAllTeamsPageWithCount(offset int, limit int, opts *model.TeamSearch) (*model.TeamsWithCount, *model.AppError)
	GetAnalytics(name string, teamID string) (model.AnalyticsRows, *model.AppError)
	GetAppliedSchemaMigrations() ([]model.AppliedMigration, *model.AppError)
	GetAudits(userID string, limit int) (model.Audits, *model.AppError)
	GetAuditsPage(userID string, page int, perPage int) (model.Audits, *model.AppError)
	GetAuthorizationCode(w http.ResponseWriter, r *http.Request, service string, props map[string]string, loginHint string) (string, *model.AppError)
	GetAuthorizedAppsForUser(userID string, page, perPage int) ([]*model.OAuthApp, *model.AppError)
	GetBrandImage() ([]byte, *model.AppError)
	GetBulkReactionsForPosts(postIDs []string) (map[string][]*model.Reaction, *model.AppError)
	GetChannel(channelID string) (*model.Channel, *model.AppError)
	GetChannelByName(channelName, teamID string, includeDeleted bool) (*model.Channel, *model.AppError)
	GetChannelByNameForTeamName(channelName, teamName string, includeDeleted bool) (*model.Channel, *model.AppError)
	GetChannelCounts(teamID string, userID string) (*model.ChannelCounts, *model.AppError)
	GetChannelFileCount(channelID string) (int64, *model.AppError)
	GetChannelGuestCount(channelID string) (int64, *model.AppError)
	GetChannelMember(ctx context.Context, channelID string, userID string) (*model.ChannelMember, *model.AppError)
	GetChannelMemberCount(channelID string) (int64, *model.AppError)
	GetChannelMembersByIds(channelID string, userIDs []string) (model.ChannelMembers, *model.AppError)
	GetChannelMembersForUser(teamID string, userID string) (model.ChannelMembers, *model.AppError)
	GetChannelMembersForUserWithPagination(userID string, page, perPage int) ([]*model.ChannelMember, *model.AppError)
	GetChannelMembersPage(channelID string, page, perPage int) (model.ChannelMembers, *model.AppError)
	GetChannelMembersTimezones(channelID string) ([]string, *model.AppError)
	GetChannelMembersWithTeamDataForUserWithPagination(userID string, page, perPage int) (model.ChannelMembersWithTeamData, *model.AppError)
	GetChannelPinnedPostCount(channelID string) (int64, *model.AppError)
	GetChannelPoliciesForUser(userID string, offset, limit int) (*model.RetentionPolicyForChannelList, *model.AppError)
	GetChannelUnread(channelID, userID string) (*model.ChannelUnread, *model.AppError)
	GetChannels(channelIDs []string) ([]*model.Channel, *model.AppError)
	GetChannelsByNames(channelNames []string, teamID string) ([]*model.Channel, *model.AppError)
	GetChannelsForRetentionPolicy(policyID string, offset, limit int) (*model.ChannelsWithCount, *model.AppError)
	GetChannelsForScheme(scheme *model.Scheme, offset int, limit int) (model.ChannelList, *model.AppError)
	GetChannelsForSchemePage(scheme *model.Scheme, page int, perPage int) (model.ChannelList, *model.AppError)
	GetChannelsForTeamForUser(teamID string, userID string, opts *model.ChannelSearchOpts) (model.ChannelList, *model.AppError)
	GetChannelsForTeamForUserWithCursor(teamID string, userID string, opts *model.ChannelSearchOpts, afterChannelID string) (model.ChannelList, *model.AppError)
	GetChannelsForUser(userID string, includeDeleted bool, lastDeleteAt, pageSize int, fromChannelID string) (model.ChannelList, *model.AppError)
	GetChannelsUserNotIn(teamID string, userID string, offset int, limit int) (model.ChannelList, *model.AppError)
	GetCloudSession(token string) (*model.Session, *model.AppError)
	GetClusterId() string
	GetClusterStatus() []*model.ClusterInfo
	GetCommand(commandID string) (*model.Command, *model.AppError)
	GetCommonTeamIDsForTwoUsers(userID, otherUserID string) ([]string, *model.AppError)
	GetComplianceFile(job *model.Compliance) ([]byte, *model.AppError)
	GetComplianceReport(reportId string) (*model.Compliance, *model.AppError)
	GetComplianceReports(page, perPage int) (model.Compliances, *model.AppError)
	GetCookieDomain() string
	GetCustomStatus(userID string) (*model.CustomStatus, *model.AppError)
	GetDefaultProfileImage(user *model.User) ([]byte, *model.AppError)
	GetDeletedChannels(teamID string, offset int, limit int, userID string) (model.ChannelList, *model.AppError)
	GetEmoji(emojiId string) (*model.Emoji, *model.AppError)
	GetEmojiByName(emojiName string) (*model.Emoji, *model.AppError)
	GetEmojiImage(emojiId string) ([]byte, string, *model.AppError)
	GetEmojiList(page, perPage int, sort string) ([]*model.Emoji, *model.AppError)
	GetFile(fileID string) ([]byte, *model.AppError)
	GetFileInfo(fileID string) (*model.FileInfo, *model.AppError)
	GetFileInfos(page, perPage int, opt *model.GetFileInfosOptions) ([]*model.FileInfo, *model.AppError)
	GetFileInfosForPost(postID string, fromMaster bool) ([]*model.FileInfo, *model.AppError)
	GetFileInfosForPostWithMigration(postID string) ([]*model.FileInfo, *model.AppError)
	GetFlaggedPosts(userID string, offset int, limit int) (*model.PostList, *model.AppError)
	GetFlaggedPostsForChannel(userID, channelID string, offset int, limit int) (*model.PostList, *model.AppError)
	GetFlaggedPostsForTeam(userID, teamID string, offset int, limit int) (*model.PostList, *model.AppError)
	GetGlobalRetentionPolicy() (*model.GlobalRetentionPolicy, *model.AppError)
	GetGroup(id string, opts *model.GetGroupOpts) (*model.Group, *model.AppError)
	GetGroupByName(name string, opts model.GroupSearchOpts) (*model.Group, *model.AppError)
	GetGroupByRemoteID(remoteID string, groupSource model.GroupSource) (*model.Group, *model.AppError)
	GetGroupChannel(userIDs []string) (*model.Channel, *model.AppError)
	GetGroupMemberCount(groupID string) (int64, *model.AppError)
	GetGroupMemberUsers(groupID string) ([]*model.User, *model.AppError)
	GetGroupMemberUsersPage(groupID string, page int, perPage int) ([]*model.User, int, *model.AppError)
	GetGroupSyncable(groupID string, syncableID string, syncableType model.GroupSyncableType) (*model.GroupSyncable, *model.AppError)
	GetGroupSyncables(groupID string, syncableType model.GroupSyncableType) ([]*model.GroupSyncable, *model.AppError)
	GetGroups(page, perPage int, opts model.GroupSearchOpts) ([]*model.Group, *model.AppError)
	GetGroupsAssociatedToChannelsByTeam(teamID string, opts model.GroupSearchOpts) (map[string][]*model.GroupWithSchemeAdmin, *model.AppError)
	GetGroupsByChannel(channelID string, opts model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, int, *model.AppError)
	GetGroupsByIDs(groupIDs []string) ([]*model.Group, *model.AppError)
	GetGroupsBySource(groupSource model.GroupSource) ([]*model.Group, *model.AppError)
	GetGroupsByUserId(userID string) ([]*model.Group, *model.AppError)
	GetHubForUserId(userID string) *Hub
	GetIncomingWebhook(hookID string) (*model.IncomingWebhook, *model.AppError)
	GetIncomingWebhooksForTeamPage(teamID string, page, perPage int) ([]*model.IncomingWebhook, *model.AppError)
	GetIncomingWebhooksForTeamPageByUser(teamID string, userID string, page, perPage int) ([]*model.IncomingWebhook, *model.AppError)
	GetIncomingWebhooksPage(page, perPage int) ([]*model.IncomingWebhook, *model.AppError)
	GetIncomingWebhooksPageByUser(userID string, page, perPage int) ([]*model.IncomingWebhook, *model.AppError)
	GetJob(id string) (*model.Job, *model.AppError)
	GetJobs(offset int, limit int) ([]*model.Job, *model.AppError)
	GetJobsByType(jobType string, offset int, limit int) ([]*model.Job, *model.AppError)
	GetJobsByTypePage(jobType string, page int, perPage int) ([]*model.Job, *model.AppError)
	GetJobsByTypes(jobTypes []string, offset int, limit int) ([]*model.Job, *model.AppError)
	GetJobsByTypesPage(jobType []string, page int, perPage int) ([]*model.Job, *model.AppError)
	GetJobsPage(page int, perPage int) ([]*model.Job, *model.AppError)
	GetLatestTermsOfService() (*model.TermsOfService, *model.AppError)
	GetLatestVersion(latestVersionUrl string) (*model.GithubReleaseInfo, *model.AppError)
	GetLogs(page, perPage int) ([]string, *model.AppError)
	GetLogsSkipSend(page, perPage int) ([]string, *model.AppError)
	GetMemberCountsByGroup(ctx context.Context, channelID string, includeTimezones bool) ([]*model.ChannelMemberCountByGroup, *model.AppError)
	GetMessageForNotification(post *model.Post, translateFunc i18n.TranslateFunc) string
	GetMultipleEmojiByName(names []string) ([]*model.Emoji, *model.AppError)
	GetNewUsersForTeamPage(teamID string, page, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)
	GetNextPostIdFromPostList(postList *model.PostList, collapsedThreads bool) string
	GetNotificationNameFormat(user *model.User) string
	GetNumberOfChannelsOnTeam(teamID string) (int, *model.AppError)
	GetOAuthAccessTokenForCodeFlow(clientId, grantType, redirectURI, code, secret, refreshToken string) (*model.AccessResponse, *model.AppError)
	GetOAuthAccessTokenForImplicitFlow(userID string, authRequest *model.AuthorizeRequest) (*model.Session, *model.AppError)
	GetOAuthApp(appID string) (*model.OAuthApp, *model.AppError)
	GetOAuthApps(page, perPage int) ([]*model.OAuthApp, *model.AppError)
	GetOAuthAppsByCreator(userID string, page, perPage int) ([]*model.OAuthApp, *model.AppError)
	GetOAuthCodeRedirect(userID string, authRequest *model.AuthorizeRequest) (string, *model.AppError)
	GetOAuthImplicitRedirect(userID string, authRequest *model.AuthorizeRequest) (string, *model.AppError)
	GetOAuthLoginEndpoint(w http.ResponseWriter, r *http.Request, service, teamID, action, redirectTo, loginHint string, isMobile bool) (string, *model.AppError)
	GetOAuthSignupEndpoint(w http.ResponseWriter, r *http.Request, service, teamID string) (string, *model.AppError)
	GetOAuthStateToken(token string) (*model.Token, *model.AppError)
	GetOnboarding() (*model.System, *model.AppError)
	GetOpenGraphMetadata(requestURL string) ([]byte, error)
	GetOrCreateDirectChannel(c *request.Context, userID, otherUserID string, channelOptions ...model.ChannelOption) (*model.Channel, *model.AppError)
	GetOutgoingWebhook(hookID string) (*model.OutgoingWebhook, *model.AppError)
	GetOutgoingWebhooksForChannelPageByUser(channelID string, userID string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError)
	GetOutgoingWebhooksForTeamPage(teamID string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError)
	GetOutgoingWebhooksForTeamPageByUser(teamID string, userID string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError)
	GetOutgoingWebhooksPage(page, perPage int) ([]*model.OutgoingWebhook, *model.AppError)
	GetOutgoingWebhooksPageByUser(userID string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError)
	GetPasswordRecoveryToken(token string) (*model.Token, *model.AppError)
	GetPermalinkPost(c *request.Context, postID string, userID string) (*model.PostList, *model.AppError)
	GetPinnedPosts(channelID string) (*model.PostList, *model.AppError)
	GetPluginKey(pluginID string, key string) ([]byte, *model.AppError)
	GetPlugins() (*model.PluginsResponse, *model.AppError)
	GetPostAfterTime(channelID string, time int64, collapsedThreads bool) (*model.Post, *model.AppError)
	GetPostIdAfterTime(channelID string, time int64, collapsedThreads bool) (string, *model.AppError)
	GetPostIdBeforeTime(channelID string, time int64, collapsedThreads bool) (string, *model.AppError)
	GetPostIfAuthorized(postID string, session *model.Session) (*model.Post, *model.AppError)
	GetPostThread(postID string, opts model.GetPostsOptions, userID string) (*model.PostList, *model.AppError)
	GetPosts(channelID string, offset int, limit int) (*model.PostList, *model.AppError)
	GetPostsAfterPost(options model.GetPostsOptions) (*model.PostList, *model.AppError)
	GetPostsAroundPost(before bool, options model.GetPostsOptions) (*model.PostList, *model.AppError)
	GetPostsBeforePost(options model.GetPostsOptions) (*model.PostList, *model.AppError)
	GetPostsByIds(postIDs []string) ([]*model.Post, *model.AppError)
	GetPostsEtag(channelID string, collapsedThreads bool) string
	GetPostsForChannelAroundLastUnread(channelID, userID string, limitBefore, limitAfter int, skipFetchThreads bool, collapsedThreads, collapsedThreadsExtended bool) (*model.PostList, *model.AppError)
	GetPostsPage(options model.GetPostsOptions) (*model.PostList, *model.AppError)
	GetPostsSince(options model.GetPostsSinceOptions) (*model.PostList, *model.AppError)
	GetPreferenceByCategoryAndNameForUser(userID string, category string, preferenceName string) (*model.Preference, *model.AppError)
	GetPreferenceByCategoryForUser(userID string, category string) (model.Preferences, *model.AppError)
	GetPreferencesForUser(userID string) (model.Preferences, *model.AppError)
	GetPrevPostIdFromPostList(postList *model.PostList, collapsedThreads bool) string
	GetPrivateChannelsForTeam(teamID string, offset int, limit int) (model.ChannelList, *model.AppError)
	GetProfileImage(user *model.User) ([]byte, bool, *model.AppError)
	GetPublicChannelsByIdsForTeam(teamID string, channelIDs []string) (model.ChannelList, *model.AppError)
	GetPublicChannelsForTeam(teamID string, offset int, limit int) (model.ChannelList, *model.AppError)
	GetReactionsForPost(postID string) ([]*model.Reaction, *model.AppError)
	GetRecentlyActiveUsersForTeam(teamID string) (map[string]*model.User, *model.AppError)
	GetRecentlyActiveUsersForTeamPage(teamID string, page, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)
	GetRemoteCluster(remoteClusterId string) (*model.RemoteCluster, *model.AppError)
	GetRemoteClusterForUser(remoteID string, userID string) (*model.RemoteCluster, *model.AppError)
	GetRemoteClusterService() (remotecluster.RemoteClusterServiceIFace, *model.AppError)
	GetRemoteClusterSession(token string, remoteId string) (*model.Session, *model.AppError)
	GetRetentionPolicies(offset, limit int) (*model.RetentionPolicyWithTeamAndChannelCountsList, *model.AppError)
	GetRetentionPoliciesCount() (int64, *model.AppError)
	GetRetentionPolicy(policyID string) (*model.RetentionPolicyWithTeamAndChannelCounts, *model.AppError)
	GetRole(id string) (*model.Role, *model.AppError)
	GetRoleByName(ctx context.Context, name string) (*model.Role, *model.AppError)
	GetRolesByNames(names []string) ([]*model.Role, *model.AppError)
	GetSamlCertificateStatus() *model.SamlCertificateStatus
	GetSamlMetadata() (string, *model.AppError)
	GetSamlMetadataFromIdp(idpMetadataURL string) (*model.SamlMetadataResponse, *model.AppError)
	GetSanitizeOptions(asAdmin bool) map[string]bool
	GetScheme(id string) (*model.Scheme, *model.AppError)
	GetSchemeByName(name string) (*model.Scheme, *model.AppError)
	GetSchemeRolesForTeam(teamID string) (string, string, string, *model.AppError)
	GetSchemes(scope string, offset int, limit int) ([]*model.Scheme, *model.AppError)
	GetSchemesPage(scope string, page int, perPage int) ([]*model.Scheme, *model.AppError)
	GetSession(token string) (*model.Session, *model.AppError)
	GetSessionById(sessionID string) (*model.Session, *model.AppError)
	GetSessions(userID string) ([]*model.Session, *model.AppError)
	GetSharedChannel(channelID string) (*model.SharedChannel, error)
	GetSharedChannelRemote(id string) (*model.SharedChannelRemote, error)
	GetSharedChannelRemoteByIds(channelID string, remoteID string) (*model.SharedChannelRemote, error)
	GetSharedChannelRemotes(opts model.SharedChannelRemoteFilterOpts) ([]*model.SharedChannelRemote, error)
	GetSharedChannelRemotesStatus(channelID string) ([]*model.SharedChannelRemoteStatus, error)
	GetSharedChannels(page int, perPage int, opts model.SharedChannelFilterOpts) ([]*model.SharedChannel, *model.AppError)
	GetSharedChannelsCount(opts model.SharedChannelFilterOpts) (int64, error)
	GetSidebarCategories(userID, teamID string) (*model.OrderedSidebarCategories, *model.AppError)
	GetSidebarCategory(categoryId string) (*model.SidebarCategoryWithChannels, *model.AppError)
	GetSidebarCategoryOrder(userID, teamID string) ([]string, *model.AppError)
	GetSinglePost(postID string) (*model.Post, *model.AppError)
	GetSiteURL() string
	GetStatus(userID string) (*model.Status, *model.AppError)
	GetStatusFromCache(userID string) *model.Status
	GetStatusesByIds(userIDs []string) (map[string]interface{}, *model.AppError)
	GetSystemBot() (*model.Bot, *model.AppError)
	GetTeam(teamID string) (*model.Team, *model.AppError)
	GetTeamByInviteId(inviteId string) (*model.Team, *model.AppError)
	GetTeamByName(name string) (*model.Team, *model.AppError)
	GetTeamIcon(team *model.Team) ([]byte, *model.AppError)
	GetTeamIdFromQuery(query url.Values) (string, *model.AppError)
	GetTeamMember(teamID, userID string) (*model.TeamMember, *model.AppError)
	GetTeamMembers(teamID string, offset int, limit int, teamMembersGetOptions *model.TeamMembersGetOptions) ([]*model.TeamMember, *model.AppError)
	GetTeamMembersByIds(teamID string, userIDs []string, restrictions *model.ViewUsersRestrictions) ([]*model.TeamMember, *model.AppError)
	GetTeamMembersForUser(userID string) ([]*model.TeamMember, *model.AppError)
	GetTeamMembersForUserWithPagination(userID string, page, perPage int) ([]*model.TeamMember, *model.AppError)
	GetTeamPoliciesForUser(userID string, offset, limit int) (*model.RetentionPolicyForTeamList, *model.AppError)
	GetTeamStats(teamID string, restrictions *model.ViewUsersRestrictions) (*model.TeamStats, *model.AppError)
	GetTeamUnread(teamID, userID string) (*model.TeamUnread, *model.AppError)
	GetTeams(teamIDs []string) ([]*model.Team, *model.AppError)
	GetTeamsForRetentionPolicy(policyID string, offset, limit int) (*model.TeamsWithCount, *model.AppError)
	GetTeamsForScheme(scheme *model.Scheme, offset int, limit int) ([]*model.Team, *model.AppError)
	GetTeamsForSchemePage(scheme *model.Scheme, page int, perPage int) ([]*model.Team, *model.AppError)
	GetTeamsForUser(userID string) ([]*model.Team, *model.AppError)
	GetTeamsUnreadForUser(excludeTeamId string, userID string, includeCollapsedThreads bool) ([]*model.TeamUnread, *model.AppError)
	GetTermsOfService(id string) (*model.TermsOfService, *model.AppError)
	GetThreadForUser(teamID string, threadMembership *model.ThreadMembership, extended bool) (*model.ThreadResponse, *model.AppError)
	GetThreadMembershipForUser(userId, threadId string) (*model.ThreadMembership, *model.AppError)
	GetThreadMembershipsForUser(userID, teamID string) ([]*model.ThreadMembership, error)
	GetThreadsForUser(userID, teamID string, options model.GetUserThreadsOpts) (*model.Threads, *model.AppError)
	GetTokenById(token string) (*model.Token, *model.AppError)
	GetTopReactionsForTeamSince(teamID string, userID string, opts *model.InsightsOpts) (*model.TopReactionList, *model.AppError)
	GetTopReactionsForUserSince(userID string, teamID string, opts *model.InsightsOpts) (*model.TopReactionList, *model.AppError)
	GetUploadSession(uploadId string) (*model.UploadSession, *model.AppError)
	GetUploadSessionsForUser(userID string) ([]*model.UploadSession, *model.AppError)
	GetUser(userID string) (*model.User, *model.AppError)
	GetUserAccessToken(tokenID string, sanitize bool) (*model.UserAccessToken, *model.AppError)
	GetUserAccessTokens(page, perPage int) ([]*model.UserAccessToken, *model.AppError)
	GetUserAccessTokensForUser(userID string, page, perPage int) ([]*model.UserAccessToken, *model.AppError)
	GetUserByAuth(authData *string, authService string) (*model.User, *model.AppError)
	GetUserByEmail(email string) (*model.User, *model.AppError)
	GetUserByUsername(username string) (*model.User, *model.AppError)
	GetUserForLogin(id, loginId string) (*model.User, *model.AppError)
	GetUserTermsOfService(userID string) (*model.UserTermsOfService, *model.AppError)
	GetUsers(options *model.UserGetOptions) ([]*model.User, *model.AppError)
	GetUsersByGroupChannelIds(c *request.Context, channelIDs []string, asAdmin bool) (map[string][]*model.User, *model.AppError)
	GetUsersByIds(userIDs []string, options *store.UserGetByIdsOpts) ([]*model.User, *model.AppError)
	GetUsersByUsernames(usernames []string, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)
	GetUsersEtag(restrictionsHash string) string
	GetUsersInChannel(options *model.UserGetOptions) ([]*model.User, *model.AppError)
	GetUsersInChannelByStatus(options *model.UserGetOptions) ([]*model.User, *model.AppError)
	GetUsersInChannelMap(options *model.UserGetOptions, asAdmin bool) (map[string]*model.User, *model.AppError)
	GetUsersInChannelPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError)
	GetUsersInChannelPageByStatus(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError)
	GetUsersInTeam(options *model.UserGetOptions) ([]*model.User, *model.AppError)
	GetUsersInTeamEtag(teamID string, restrictionsHash string) string
	GetUsersInTeamPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError)
	GetUsersNotInChannel(teamID string, channelID string, groupConstrained bool, offset int, limit int, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)
	GetUsersNotInChannelMap(teamID string, channelID string, groupConstrained bool, offset int, limit int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) (map[string]*model.User, *model.AppError)
	GetUsersNotInChannelPage(teamID string, channelID string, groupConstrained bool, page int, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)
	GetUsersNotInGroupPage(groupID string, page int, perPage int) ([]*model.User, *model.AppError)
	GetUsersNotInTeam(teamID string, groupConstrained bool, offset int, limit int, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)
	GetUsersNotInTeamEtag(teamID string, restrictionsHash string) string
	GetUsersNotInTeamPage(teamID string, groupConstrained bool, page int, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)
	GetUsersPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError)
	GetUsersWithInvalidEmails(page int, perPage int) ([]*model.User, *model.AppError)
	GetUsersWithoutTeam(options *model.UserGetOptions) ([]*model.User, *model.AppError)
	GetUsersWithoutTeamPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError)
	GetVerifyEmailToken(token string) (*model.Token, *model.AppError)
	GetViewUsersRestrictions(userID string) (*model.ViewUsersRestrictions, *model.AppError)
	GetWarnMetricsBot() (*model.Bot, *model.AppError)
	GetWarnMetricsStatus() (map[string]*model.WarnMetricStatus, *model.AppError)
	HTTPService() httpservice.HTTPService
	Handle404(w http.ResponseWriter, r *http.Request)
	HandleCommandResponse(c *request.Context, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.CommandResponse, *model.AppError)
	HandleCommandResponsePost(c *request.Context, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.Post, *model.AppError)
	HandleCommandWebhook(c *request.Context, hookID string, response *model.CommandResponse) *model.AppError
	HandleImages(previewPathList []string, thumbnailPathList []string, fileData [][]byte)
	HandleIncomingWebhook(c *request.Context, hookID string, req *model.IncomingWebhookRequest) *model.AppError
	HandleMessageExportConfig(cfg *model.Config, appCfg *model.Config)
	HasPermissionTo(askingUserId string, permission *model.Permission) bool
	HasPermissionToChannel(askingUserId string, channelID string, permission *model.Permission) bool
	HasPermissionToChannelByPost(askingUserId string, postID string, permission *model.Permission) bool
	HasPermissionToReadChannel(userID string, channel *model.Channel) bool
	HasPermissionToTeam(askingUserId string, teamID string, permission *model.Permission) bool
	HasPermissionToUser(askingUserId string, userID string) bool
	HasSharedChannel(channelID string) (bool, error)
	ImageProxy() *imageproxy.ImageProxy
	ImageProxyAdder() func(string) string
	ImageProxyRemover() (f func(string) string)
	ImportPermissions(jsonl io.Reader) error
	InitPlugins(c *request.Context, pluginDir, webappPluginDir string)
	InvalidateAllEmailInvites() *model.AppError
	InvalidateAllResendInviteEmailJobs() *model.AppError
	InvalidateCacheForUser(userID string)
	InviteGuestsToChannels(teamID string, guestsInvite *model.GuestsInvite, senderId string) *model.AppError
	InviteGuestsToChannelsGracefully(teamID string, guestsInvite *model.GuestsInvite, senderId string) ([]*model.EmailInviteWithError, *model.AppError)
	InviteNewUsersToTeam(emailList []string, teamID, senderId string) *model.AppError
	InviteNewUsersToTeamGracefully(memberInvite *model.MemberInvite, teamID, senderId string, reminderInterval string) ([]*model.EmailInviteWithError, *model.AppError)
	IsCRTEnabledForUser(userID string) bool
	IsFirstUserAccount() bool
	IsLeader() bool
	IsPasswordValid(password string) *model.AppError
	IsPhase2MigrationCompleted() *model.AppError
	IsUserAway(lastActivityAt int64) bool
	IsUserSignUpAllowed() *model.AppError
	JoinChannel(c *request.Context, channel *model.Channel, userID string) *model.AppError
	JoinDefaultChannels(c *request.Context, teamID string, user *model.User, shouldBeAdmin bool, userRequestorId string) *model.AppError
	JoinUserToTeam(c *request.Context, team *model.Team, user *model.User, userRequestorId string) (*model.TeamMember, *model.AppError)
	Ldap() einterfaces.LdapInterface
	LeaveChannel(c *request.Context, channelID string, userID string) *model.AppError
	LeaveTeam(c *request.Context, team *model.Team, user *model.User, requestorId string) *model.AppError
	License() *model.License
	LimitedClientConfig() map[string]string
	ListAllCommands(teamID string, T i18n.TranslateFunc) ([]*model.Command, *model.AppError)
	ListDirectory(path string) ([]string, *model.AppError)
	ListDirectoryRecursively(path string) ([]string, *model.AppError)
	ListExports() ([]string, *model.AppError)
	ListImports() ([]string, *model.AppError)
	ListPluginKeys(pluginID string, page, perPage int) ([]string, *model.AppError)
	ListTeamCommands(teamID string) ([]*model.Command, *model.AppError)
	Log() *mlog.Logger
	LoginByOAuth(c *request.Context, service string, userData io.Reader, teamID string, tokenUser *model.User) (*model.User, *model.AppError)
	MakePermissionError(s *model.Session, permissions []*model.Permission) *model.AppError
	MarkChannelsAsViewed(channelIDs []string, userID string, currentSessionId string, collapsedThreadsSupported bool) (map[string]int64, *model.AppError)
	MaxPostSize() int
	MessageExport() einterfaces.MessageExportInterface
	Metrics() einterfaces.MetricsInterface
	MigrateIdLDAP(toAttribute string) *model.AppError
	MoveCommand(team *model.Team, command *model.Command) *model.AppError
	MoveFile(oldPath, newPath string) *model.AppError
	NewClusterDiscoveryService() *ClusterDiscoveryService
	NewPluginAPI(c *request.Context, manifest *model.Manifest) plugin.API
	Notification() einterfaces.NotificationInterface
	NotificationsLog() *mlog.Logger
	NotifyAndSetWarnMetricAck(warnMetricId string, sender *model.User, forceAck bool, isBot bool) *model.AppError
	NotifySharedChannelUserUpdate(user *model.User)
	OpenInteractiveDialog(request model.OpenDialogRequest) *model.AppError
	OriginChecker() func(*http.Request) bool
	PatchChannel(c *request.Context, channel *model.Channel, patch *model.ChannelPatch, userID string) (*model.Channel, *model.AppError)
	PatchPost(c *request.Context, postID string, patch *model.PostPatch) (*model.Post, *model.AppError)
	PatchRetentionPolicy(patch *model.RetentionPolicyWithTeamAndChannelIDs) (*model.RetentionPolicyWithTeamAndChannelCounts, *model.AppError)
	PatchRole(role *model.Role, patch *model.RolePatch) (*model.Role, *model.AppError)
	PatchScheme(scheme *model.Scheme, patch *model.SchemePatch) (*model.Scheme, *model.AppError)
	PatchTeam(teamID string, patch *model.TeamPatch) (*model.Team, *model.AppError)
	PatchUser(userID string, patch *model.UserPatch, asAdmin bool) (*model.User, *model.AppError)
	PermanentDeleteAllUsers(c *request.Context) *model.AppError
	PermanentDeleteChannel(channel *model.Channel) *model.AppError
	PermanentDeleteTeam(team *model.Team) *model.AppError
	PermanentDeleteTeamId(teamID string) *model.AppError
	PermanentDeleteUser(c *request.Context, user *model.User) *model.AppError
	PluginCommandsForTeam(teamID string) []*model.Command
	PostActionCookieSecret() []byte
	PostAddToChannelMessage(c *request.Context, user *model.User, addedUser *model.User, channel *model.Channel, postRootId string) *model.AppError
	PostPatchWithProxyRemovedFromImageURLs(patch *model.PostPatch) *model.PostPatch
	PostUpdateChannelDisplayNameMessage(c *request.Context, userID string, channel *model.Channel, oldChannelDisplayName, newChannelDisplayName string) *model.AppError
	PostUpdateChannelHeaderMessage(c *request.Context, userID string, channel *model.Channel, oldChannelHeader, newChannelHeader string) *model.AppError
	PostUpdateChannelPurposeMessage(c *request.Context, userID string, channel *model.Channel, oldChannelPurpose string, newChannelPurpose string) *model.AppError
	PostWithProxyAddedToImageURLs(post *model.Post) *model.Post
	PostWithProxyRemovedFromImageURLs(post *model.Post) *model.Post
	PreparePostForClient(originalPost *model.Post, isNewPost, isEditPost bool) *model.Post
	PreparePostForClientWithEmbedsAndImages(originalPost *model.Post, isNewPost, isEditPost bool) *model.Post
	PreparePostListForClient(originalList *model.PostList) *model.PostList
	ProcessSlackText(text string) string
	Publish(message *model.WebSocketEvent)
	PublishUserTyping(userID, channelID, parentId string) *model.AppError
	PurgeBleveIndexes() *model.AppError
	PurgeElasticsearchIndexes() *model.AppError
	ReadFile(path string) ([]byte, *model.AppError)
	RecycleDatabaseConnection()
	RegenCommandToken(cmd *model.Command) (*model.Command, *model.AppError)
	RegenOutgoingWebhookToken(hook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError)
	RegenerateOAuthAppSecret(app *model.OAuthApp) (*model.OAuthApp, *model.AppError)
	RegenerateTeamInviteId(teamID string) (*model.Team, *model.AppError)
	RegisterPluginCommand(pluginID string, command *model.Command) error
	ReloadConfig() error
	RemoveAllDeactivatedMembersFromChannel(channel *model.Channel) *model.AppError
	RemoveChannelsFromRetentionPolicy(policyID string, channelIDs []string) *model.AppError
	RemoveConfigListener(id string)
	RemoveCustomStatus(userID string) *model.AppError
	RemoveDirectory(path string) *model.AppError
	RemoveFile(path string) *model.AppError
	RemoveLdapPrivateCertificate() *model.AppError
	RemoveLdapPublicCertificate() *model.AppError
	RemoveRecentCustomStatus(userID string, status *model.CustomStatus) *model.AppError
	RemoveSamlIdpCertificate() *model.AppError
	RemoveSamlPrivateCertificate() *model.AppError
	RemoveSamlPublicCertificate() *model.AppError
	RemoveTeamIcon(teamID string) *model.AppError
	RemoveTeamsFromRetentionPolicy(policyID string, teamIDs []string) *model.AppError
	RemoveUserFromChannel(c *request.Context, userIDToRemove string, removerUserId string, channel *model.Channel) *model.AppError
	RemoveUserFromTeam(c *request.Context, teamID string, userID string, requestorId string) *model.AppError
	RemoveUsersFromChannelNotMemberOfTeam(c *request.Context, remover *model.User, channel *model.Channel, team *model.Team) *model.AppError
	RequestLicenseAndAckWarnMetric(c *request.Context, warnMetricId string, isBot bool) *model.AppError
	ResetPasswordFromToken(userSuppliedTokenString, newPassword string) *model.AppError
	ResetPermissionsSystem() *model.AppError
	ResetSamlAuthDataToEmail(includeDeleted bool, dryRun bool, userIDs []string) (numAffected int, appErr *model.AppError)
	RestoreChannel(c *request.Context, channel *model.Channel, userID string) (*model.Channel, *model.AppError)
	RestoreTeam(teamID string) *model.AppError
	RestrictUsersGetByPermissions(userID string, options *model.UserGetOptions) (*model.UserGetOptions, *model.AppError)
	RestrictUsersSearchByPermissions(userID string, options *model.UserSearchOptions) (*model.UserSearchOptions, *model.AppError)
	ReturnSessionToPool(session *model.Session)
	RevokeAccessToken(token string) *model.AppError
	RevokeAllSessions(userID string) *model.AppError
	RevokeSession(session *model.Session) *model.AppError
	RevokeSessionById(sessionID string) *model.AppError
	RevokeSessionsForDeviceId(userID string, deviceID string, currentSessionId string) *model.AppError
	RevokeUserAccessToken(token *model.UserAccessToken) *model.AppError
	RolesGrantPermission(roleNames []string, permissionId string) bool
	Saml() einterfaces.SamlInterface
	SanitizePostListMetadataForUser(postList *model.PostList, userID string) (*model.PostList, *model.AppError)
	SanitizePostMetadataForUser(post *model.Post, userID string) (*model.Post, *model.AppError)
	SanitizeProfile(user *model.User, asAdmin bool)
	SanitizeTeam(session model.Session, team *model.Team) *model.Team
	SanitizeTeams(session model.Session, teams []*model.Team) []*model.Team
	SaveAndBroadcastStatus(status *model.Status)
	SaveBrandImage(imageData *multipart.FileHeader) *model.AppError
	SaveComplianceReport(job *model.Compliance) (*model.Compliance, *model.AppError)
	SaveReactionForPost(c *request.Context, reaction *model.Reaction) (*model.Reaction, *model.AppError)
	SaveSharedChannel(sc *model.SharedChannel) (*model.SharedChannel, error)
	SaveSharedChannelRemote(remote *model.SharedChannelRemote) (*model.SharedChannelRemote, error)
	SaveUserTermsOfService(userID, termsOfServiceId string, accepted bool) *model.AppError
	SchemesIterator(scope string, batchSize int) func() []*model.Scheme
	SearchArchivedChannels(teamID string, term string, userID string) (model.ChannelList, *model.AppError)
	SearchChannels(teamID string, term string) (model.ChannelList, *model.AppError)
	SearchChannelsForUser(userID, teamID, term string) (model.ChannelList, *model.AppError)
	SearchChannelsUserNotIn(teamID string, userID string, term string) (model.ChannelList, *model.AppError)
	SearchEmoji(name string, prefixOnly bool, limit int) ([]*model.Emoji, *model.AppError)
	SearchEngine() *searchengine.Broker
	SearchFilesInTeamForUser(c *request.Context, terms string, userId string, teamId string, isOrSearch bool, includeDeletedChannels bool, timeZoneOffset int, page, perPage int) (*model.FileInfoList, *model.AppError)
	SearchGroupChannels(userID, term string) (model.ChannelList, *model.AppError)
	SearchPostsForUser(c *request.Context, terms string, userID string, teamID string, isOrSearch bool, includeDeletedChannels bool, timeZoneOffset int, page, perPage int) (*model.PostSearchResults, *model.AppError)
	SearchPostsInTeam(teamID string, paramsList []*model.SearchParams) (*model.PostList, *model.AppError)
	SearchPrivateTeams(searchOpts *model.TeamSearch) ([]*model.Team, *model.AppError)
	SearchPublicTeams(searchOpts *model.TeamSearch) ([]*model.Team, *model.AppError)
	SearchUserAccessTokens(term string) ([]*model.UserAccessToken, *model.AppError)
	SearchUsers(props *model.UserSearch, options *model.UserSearchOptions) ([]*model.User, *model.AppError)
	SearchUsersInChannel(channelID string, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)
	SearchUsersInGroup(groupID string, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)
	SearchUsersInTeam(teamID, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)
	SearchUsersNotInChannel(teamID string, channelID string, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)
	SearchUsersNotInGroup(groupID string, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)
	SearchUsersNotInTeam(notInTeamId string, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)
	SearchUsersWithoutTeam(term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)
	SendAckToPushProxy(ack *model.PushNotificationAck) error
	SendAutoResponse(c *request.Context, channel *model.Channel, receiver *model.User, post *model.Post) (bool, *model.AppError)
	SendAutoResponseIfNecessary(c *request.Context, channel *model.Channel, sender *model.User, post *model.Post) (bool, *model.AppError)
	SendCloudTrialEndWarningEmail(trialEndDate, siteURL string) *model.AppError
	SendCloudTrialEndedEmail() *model.AppError
	SendEmailVerification(user *model.User, newEmail, redirect string) *model.AppError
	SendEphemeralPost(userID string, post *model.Post) *model.Post
	SendNotifications(post *model.Post, team *model.Team, channel *model.Channel, sender *model.User, parentPostList *model.PostList, setOnline bool) ([]string, error)
	SendPasswordReset(email string, siteURL string) (bool, *model.AppError)
	SendPaymentFailedEmail(failedPayment *model.FailedPayment) *model.AppError
	SendTestPushNotification(deviceID string) string
	ServeInterPluginRequest(w http.ResponseWriter, r *http.Request, sourcePluginId, destinationPluginId string)
	SessionHasPermissionTo(session model.Session, permission *model.Permission) bool
	SessionHasPermissionToAny(session model.Session, permissions []*model.Permission) bool
	SessionHasPermissionToCategory(session model.Session, userID, teamID, categoryId string) bool
	SessionHasPermissionToChannel(session model.Session, channelID string, permission *model.Permission) bool
	SessionHasPermissionToChannelByPost(session model.Session, postID string, permission *model.Permission) bool
	SessionHasPermissionToCreateJob(session model.Session, job *model.Job) (bool, *model.Permission)
	SessionHasPermissionToGroup(session model.Session, groupID string, permission *model.Permission) bool
	SessionHasPermissionToReadJob(session model.Session, jobType string) (bool, *model.Permission)
	SessionHasPermissionToTeam(session model.Session, teamID string, permission *model.Permission) bool
	SessionHasPermissionToUser(session model.Session, userID string) bool
	SessionHasPermissionToUserOrBot(session model.Session, userID string) bool
	SetActiveChannel(userID string, channelID string) *model.AppError
	SetAutoResponderStatus(user *model.User, oldNotifyProps model.StringMap)
	SetChannels(ch *Channels)
	SetCustomStatus(userID string, cs *model.CustomStatus) *model.AppError
	SetDefaultProfileImage(user *model.User) *model.AppError
	SetPhase2PermissionsMigrationStatus(isComplete bool) error
	SetPluginKey(pluginID string, key string, value []byte) *model.AppError
	SetPluginKeyWithExpiry(pluginID string, key string, value []byte, expireInSeconds int64) *model.AppError
	SetPluginKeyWithOptions(pluginID string, key string, value []byte, options model.PluginKVSetOptions) (bool, *model.AppError)
	SetProfileImage(userID string, imageData *multipart.FileHeader) *model.AppError
	SetProfileImageFromFile(userID string, file io.Reader) *model.AppError
	SetProfileImageFromMultiPartFile(userID string, file multipart.File) *model.AppError
	SetRemoteClusterLastPingAt(remoteClusterId string) *model.AppError
	SetSamlIdpCertificateFromMetadata(data []byte) *model.AppError
	SetSearchEngine(se *searchengine.Broker)
	SetServer(srv *Server)
	SetStatusAwayIfNeeded(userID string, manual bool)
	SetStatusDoNotDisturb(userID string)
	SetStatusOffline(userID string, manual bool)
	SetStatusOnline(userID string, manual bool)
	SetStatusOutOfOffice(userID string)
	SetTeamIcon(teamID string, imageData *multipart.FileHeader) *model.AppError
	SetTeamIconFromFile(team *model.Team, file io.Reader) *model.AppError
	SetTeamIconFromMultiPartFile(teamID string, file multipart.File) *model.AppError
	SlackImport(c *request.Context, fileData multipart.File, fileSize int64, teamID string) (*model.AppError, *bytes.Buffer)
	SoftDeleteTeam(teamID string) *model.AppError
	Srv() *Server
	SubmitInteractiveDialog(c *request.Context, request model.SubmitDialogRequest) (*model.SubmitDialogResponse, *model.AppError)
	SwitchEmailToLdap(email, password, code, ldapLoginId, ldapPassword string) (string, *model.AppError)
	SwitchEmailToOAuth(w http.ResponseWriter, r *http.Request, email, password, code, service string) (string, *model.AppError)
	SwitchLdapToEmail(ldapPassword, code, email, newPassword string) (string, *model.AppError)
	SwitchOAuthToEmail(email, password, requesterId string) (string, *model.AppError)
	TeamMembersToRemove(teamID *string) ([]*model.TeamMember, *model.AppError)
	TelemetryId() string
	TestElasticsearch(cfg *model.Config) *model.AppError
	TestEmail(userID string, cfg *model.Config) *model.AppError
	TestFileStoreConnection() *model.AppError
	TestFileStoreConnectionWithConfig(cfg *model.FileSettings) *model.AppError
	TestLdap() *model.AppError
	TestSiteURL(siteURL string) *model.AppError
	Timezones() *timezones.Timezones
	ToggleMuteChannel(channelID, userID string) (*model.ChannelMember, *model.AppError)
	TotalWebsocketConnections() int
	TriggerWebhook(c *request.Context, payload *model.OutgoingWebhookPayload, hook *model.OutgoingWebhook, post *model.Post, channel *model.Channel)
	UnregisterPluginCommand(pluginID, teamID, trigger string)
	UpdateActive(c *request.Context, user *model.User, active bool) (*model.User, *model.AppError)
	UpdateChannelMemberNotifyProps(data map[string]string, channelID string, userID string) (*model.ChannelMember, *model.AppError)
	UpdateChannelMemberRoles(channelID string, userID string, newRoles string) (*model.ChannelMember, *model.AppError)
	UpdateChannelMemberSchemeRoles(channelID string, userID string, isSchemeGuest bool, isSchemeUser bool, isSchemeAdmin bool) (*model.ChannelMember, *model.AppError)
	UpdateChannelPrivacy(c *request.Context, oldChannel *model.Channel, user *model.User) (*model.Channel, *model.AppError)
	UpdateCommand(oldCmd, updatedCmd *model.Command) (*model.Command, *model.AppError)
	UpdateConfig(f func(*model.Config))
	UpdateEphemeralPost(userID string, post *model.Post) *model.Post
	UpdateExpiredDNDStatuses() ([]*model.Status, error)
	UpdateGroup(group *model.Group) (*model.Group, *model.AppError)
	UpdateGroupSyncable(groupSyncable *model.GroupSyncable) (*model.GroupSyncable, *model.AppError)
	UpdateHashedPassword(user *model.User, newHashedPassword string) *model.AppError
	UpdateHashedPasswordByUserId(userID, newHashedPassword string) *model.AppError
	UpdateIncomingWebhook(oldHook, updatedHook *model.IncomingWebhook) (*model.IncomingWebhook, *model.AppError)
	UpdateLastActivityAtIfNeeded(session model.Session)
	UpdateMfa(activate bool, userID, token string) *model.AppError
	UpdateMobileAppBadge(userID string)
	UpdateOAuthApp(oldApp, updatedApp *model.OAuthApp) (*model.OAuthApp, *model.AppError)
	UpdateOAuthUserAttrs(userData io.Reader, user *model.User, provider einterfaces.OAuthProvider, service string, tokenUser *model.User) *model.AppError
	UpdateOutgoingWebhook(oldHook, updatedHook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError)
	UpdatePassword(user *model.User, newPassword string) *model.AppError
	UpdatePasswordAsUser(userID, currentPassword, newPassword string) *model.AppError
	UpdatePasswordByUserIdSendEmail(userID, newPassword, method string) *model.AppError
	UpdatePasswordSendEmail(user *model.User, newPassword, method string) *model.AppError
	UpdatePost(c *request.Context, post *model.Post, safeUpdate bool) (*model.Post, *model.AppError)
	UpdatePreferences(userID string, preferences model.Preferences) *model.AppError
	UpdateRemoteCluster(rc *model.RemoteCluster) (*model.RemoteCluster, *model.AppError)
	UpdateRemoteClusterTopics(remoteClusterId string, topics string) (*model.RemoteCluster, *model.AppError)
	UpdateRole(role *model.Role) (*model.Role, *model.AppError)
	UpdateScheme(scheme *model.Scheme) (*model.Scheme, *model.AppError)
	UpdateSharedChannel(sc *model.SharedChannel) (*model.SharedChannel, error)
	UpdateSharedChannelRemoteCursor(id string, cursor model.GetPostsSinceForSyncCursor) error
	UpdateSidebarCategories(userID, teamID string, categories []*model.SidebarCategoryWithChannels) ([]*model.SidebarCategoryWithChannels, *model.AppError)
	UpdateSidebarCategoryOrder(userID, teamID string, categoryOrder []string) *model.AppError
	UpdateTeam(team *model.Team) (*model.Team, *model.AppError)
	UpdateTeamMemberRoles(teamID string, userID string, newRoles string) (*model.TeamMember, *model.AppError)
	UpdateTeamMemberSchemeRoles(teamID string, userID string, isSchemeGuest bool, isSchemeUser bool, isSchemeAdmin bool) (*model.TeamMember, *model.AppError)
	UpdateTeamPrivacy(teamID string, teamType string, allowOpenInvite bool) *model.AppError
	UpdateTeamScheme(team *model.Team) (*model.Team, *model.AppError)
	UpdateThreadFollowForUser(userID, teamID, threadID string, state bool) *model.AppError
	UpdateThreadFollowForUserFromChannelAdd(userID, teamID, threadID string) *model.AppError
	UpdateThreadReadForUser(currentSessionId, userID, teamID, threadID string, timestamp int64) (*model.ThreadResponse, *model.AppError)
	UpdateThreadReadForUserByPost(currentSessionId, userID, teamID, threadID, postID string) (*model.ThreadResponse, *model.AppError)
	UpdateThreadsReadForUser(userID, teamID string) *model.AppError
	UpdateUser(user *model.User, sendNotifications bool) (*model.User, *model.AppError)
	UpdateUserActive(c *request.Context, userID string, active bool) *model.AppError
	UpdateUserAsUser(user *model.User, asAdmin bool) (*model.User, *model.AppError)
	UpdateUserAuth(userID string, userAuth *model.UserAuth) (*model.UserAuth, *model.AppError)
	UpdateUserRoles(userID string, newRoles string, sendWebSocketEvent bool) (*model.User, *model.AppError)
	UpdateUserRolesWithUser(user *model.User, newRoles string, sendWebSocketEvent bool) (*model.User, *model.AppError)
	UploadData(c *request.Context, us *model.UploadSession, rd io.Reader) (*model.FileInfo, *model.AppError)
	UploadEmojiImage(id string, imageData *multipart.FileHeader) *model.AppError
	UploadMultipartFiles(c *request.Context, teamID string, channelID string, userID string, fileHeaders []*multipart.FileHeader, clientIds []string, now time.Time) (*model.FileUploadResponse, *model.AppError)
	UpsertGroupMember(groupID string, userID string) (*model.GroupMember, *model.AppError)
	UpsertGroupMembers(groupID string, userIDs []string) ([]*model.GroupMember, *model.AppError)
	UpsertGroupSyncable(groupSyncable *model.GroupSyncable) (*model.GroupSyncable, *model.AppError)
	UserCanSeeOtherUser(userID string, otherUserId string) (bool, *model.AppError)
	VerifyEmailFromToken(userSuppliedTokenString string) *model.AppError
	VerifyUserEmail(userID, email string) *model.AppError
	ViewChannel(view *model.ChannelView, userID string, currentSessionId string, collapsedThreadsSupported bool) (map[string]int64, *model.AppError)
	WriteFile(fr io.Reader, path string) (int64, *model.AppError)
}

AppIface is extracted from App struct and contains all it's exported methods. It's provided to allow partial interface passing and app layers creation.

type AppOption

type AppOption func(a *App)

func ServerConnector

func ServerConnector(ch *Channels) AppOption

type AppOptionCreator

type AppOptionCreator func() []AppOption

type AttachmentImportData

type AttachmentImportData struct {
	Path *string   `json:"path"`
	Data *zip.File `json:"-"`
}

type AutocompleteDynamicArgProvider

type AutocompleteDynamicArgProvider interface {
	GetAutoCompleteListItems(a *App, commandArgs *model.CommandArgs, arg *model.AutocompleteArg, parsed, toBeParsed string) ([]model.AutocompleteListItem, error)
}

AutocompleteDynamicArgProvider dynamically provides auto-completion args for built-in commands.

type Busy

type Busy struct {
	// contains filtered or unexported fields
}

Busy represents the busy state of the server. A server marked busy will have non-critical services disabled. If a Cluster is provided any changes will be propagated to each node.

func NewBusy

func NewBusy(cluster einterfaces.ClusterInterface) *Busy

NewBusy creates a new Busy instance with optional cluster which will be notified of busy state changes.

func (*Busy) Clear

func (b *Busy) Clear()

ClearBusy marks the server as not busy and notifies cluster nodes.

func (*Busy) ClusterEventChanged

func (b *Busy) ClusterEventChanged(sbs *model.ServerBusyState)

ClusterEventChanged is called when a CLUSTER_EVENT_BUSY_STATE_CHANGED is received.

func (*Busy) Expires

func (b *Busy) Expires() time.Time

Expires returns the expected time that the server will be marked not busy. This expiry can be extended via additional calls to SetBusy.

func (*Busy) IsBusy

func (b *Busy) IsBusy() bool

IsBusy returns true if the server has been marked as busy.

func (*Busy) Set

func (b *Busy) Set(dur time.Duration)

Set marks the server as busy for dur duration and notifies cluster nodes.

func (*Busy) ToJSON

func (b *Busy) ToJSON() ([]byte, error)

type CRTNotifiers

type CRTNotifiers struct {
	// Desktop contains the user IDs of thread followers to receive desktop notification
	Desktop model.StringArray

	// Email contains the user IDs of thread followers to receive email notification
	Email model.StringArray

	// Push contains the user IDs of thread followers to receive push notification
	Push model.StringArray
}

type ChannelImportData

type ChannelImportData struct {
	Team        *string            `json:"team"`
	Name        *string            `json:"name"`
	DisplayName *string            `json:"display_name"`
	Type        *model.ChannelType `json:"type"`
	Header      *string            `json:"header,omitempty"`
	Purpose     *string            `json:"purpose,omitempty"`
	Scheme      *string            `json:"scheme,omitempty"`
}

type ChannelMemberOpts

type ChannelMemberOpts struct {
	UserRequestorID string
	PostRootID      string
	// SkipTeamMemberIntegrityCheck is used to indicate whether it should be checked
	// that a user has already been removed from that team or not.
	// This is useful to avoid in scenarios when we just added the team member,
	// and thereby know that there is no need to check this.
	SkipTeamMemberIntegrityCheck bool
}

type Channels added in v6.1.0

type Channels struct {
	AccountMigration einterfaces.AccountMigrationInterface
	Compliance       einterfaces.ComplianceInterface
	DataRetention    einterfaces.DataRetentionInterface
	MessageExport    einterfaces.MessageExportInterface
	Saml             einterfaces.SamlInterface
	Notification     einterfaces.NotificationInterface
	Ldap             einterfaces.LdapInterface
	// contains filtered or unexported fields
}

Channels contains all channels related state.

func NewChannels added in v6.1.0

func NewChannels(s *Server, services map[ServiceKey]interface{}) (*Channels, error)

func (*Channels) AddConfigListener added in v6.2.0

func (ch *Channels) AddConfigListener(listener func(*model.Config, *model.Config)) string

func (*Channels) AsymmetricSigningKey added in v6.2.0

func (ch *Channels) AsymmetricSigningKey() *ecdsa.PrivateKey

AsymmetricSigningKey will return a private key that can be used for asymmetric signing.

func (*Channels) ClientConfigHash added in v6.2.0

func (ch *Channels) ClientConfigHash() string

func (*Channels) GetPluginStatus added in v6.2.0

func (ch *Channels) GetPluginStatus(id string) (*model.PluginStatus, *model.AppError)

GetPluginStatus returns the status for a plugin installed on this server.

func (*Channels) GetPluginStatuses added in v6.2.0

func (ch *Channels) GetPluginStatuses() (model.PluginStatuses, *model.AppError)

GetPluginStatuses returns the status for plugins installed on this server.

func (*Channels) GetPluginsEnvironment added in v6.2.0

func (ch *Channels) GetPluginsEnvironment() *plugin.Environment

GetPluginsEnvironment returns the plugin environment for use if plugins are enabled and initialized.

To get the plugins environment when the plugins are disabled, manually acquire the plugins lock instead.

func (*Channels) InstallMarketplacePlugin added in v6.2.0

func (ch *Channels) InstallMarketplacePlugin(request *model.InstallMarketplacePluginRequest) (*model.Manifest, *model.AppError)

InstallMarketplacePlugin installs a plugin listed in the marketplace server. It will get the plugin bundle from the prepackaged folder, if available, or remotely if EnableRemoteMarketplace is true.

func (*Channels) License added in v6.6.0

func (ch *Channels) License() *model.License

func (*Channels) PostActionCookieSecret added in v6.3.0

func (ch *Channels) PostActionCookieSecret() []byte

func (*Channels) RemoveConfigListener added in v6.2.0

func (ch *Channels) RemoveConfigListener(id string)

func (*Channels) RemovePlugin added in v6.2.0

func (ch *Channels) RemovePlugin(id string) *model.AppError

func (*Channels) RequestTrialLicense added in v6.6.0

func (ch *Channels) RequestTrialLicense(requesterID string, users int, termsAccepted bool, receiveEmailsAccepted bool) *model.AppError

func (*Channels) ServePluginPublicRequest added in v6.2.0

func (ch *Channels) ServePluginPublicRequest(w http.ResponseWriter, r *http.Request)

ServePluginPublicRequest serves public plugin files at the URL http(s)://$SITE_URL/plugins/$PLUGIN_ID/public/{anything}

func (*Channels) ServePluginRequest added in v6.2.0

func (ch *Channels) ServePluginRequest(w http.ResponseWriter, r *http.Request)

func (*Channels) SetPluginsEnvironment added in v6.2.0

func (ch *Channels) SetPluginsEnvironment(pluginsEnvironment *plugin.Environment)

func (*Channels) ShutDownPlugins added in v6.2.0

func (ch *Channels) ShutDownPlugins()

func (*Channels) Start added in v6.1.0

func (ch *Channels) Start() error

func (*Channels) Stop added in v6.1.0

func (ch *Channels) Stop() error

type CheckConnResult

type CheckConnResult struct {
	ConnectionID     string
	UserID           string
	ActiveQueue      chan model.WebSocketMessage
	DeadQueue        []*model.WebSocketEvent
	DeadQueuePointer int
	ReuseCount       int
}

CheckConnResult indicates whether a connectionID was present in the hub or not. And if so, contains the active and dead queue details.

type ClusterDiscoveryService

type ClusterDiscoveryService struct {
	model.ClusterDiscovery
	// contains filtered or unexported fields
}

func (*ClusterDiscoveryService) Start

func (cds *ClusterDiscoveryService) Start()

func (*ClusterDiscoveryService) Stop

func (cds *ClusterDiscoveryService) Stop()

type CommandProvider

type CommandProvider interface {
	GetTrigger() string
	GetCommand(a *App, T i18n.TranslateFunc) *model.Command
	DoCommand(a *App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse
}

func GetCommandProvider

func GetCommandProvider(name string) CommandProvider

type ComparablePreference

type ComparablePreference struct {
	Category string
	Name     string
}

type DirectChannelImportData

type DirectChannelImportData struct {
	Members     *[]string `json:"members"`
	FavoritedBy *[]string `json:"favorited_by"`

	Header *string `json:"header"`
}

type DirectPostImportData

type DirectPostImportData struct {
	ChannelMembers *[]string `json:"channel_members"`
	User           *string   `json:"user"`

	Type     *string                `json:"type"`
	Message  *string                `json:"message"`
	Props    *model.StringInterface `json:"props"`
	CreateAt *int64                 `json:"create_at"`
	EditAt   *int64                 `json:"edit_at"`

	FlaggedBy   *[]string               `json:"flagged_by"`
	Reactions   *[]ReactionImportData   `json:"reactions"`
	Replies     *[]ReplyImportData      `json:"replies"`
	Attachments *[]AttachmentImportData `json:"attachments"`
	IsPinned    *bool                   `json:"is_pinned,omitempty"`
}

type DriverImpl

type DriverImpl struct {
	// contains filtered or unexported fields
}

DriverImpl implements the plugin.Driver interface on the server-side. Each new request for a connection/statement/transaction etc, generates a new entry tracked centrally in a map. Further requests operate on the object ID.

func NewDriverImpl

func NewDriverImpl(s *Server) *DriverImpl

func (*DriverImpl) Conn

func (d *DriverImpl) Conn(isMaster bool) (string, error)

func (*DriverImpl) ConnClose

func (d *DriverImpl) ConnClose(connID string) error

func (*DriverImpl) ConnExec

func (d *DriverImpl) ConnExec(connID, q string, args []driver.NamedValue) (_ plugin.ResultContainer, err error)

func (*DriverImpl) ConnPing

func (d *DriverImpl) ConnPing(connID string) error

func (*DriverImpl) ConnQuery

func (d *DriverImpl) ConnQuery(connID, q string, args []driver.NamedValue) (_ string, err error)

func (*DriverImpl) RowsClose

func (d *DriverImpl) RowsClose(rowsID string) error

func (*DriverImpl) RowsColumnTypeDatabaseTypeName

func (d *DriverImpl) RowsColumnTypeDatabaseTypeName(rowsID string, index int) string

func (*DriverImpl) RowsColumnTypePrecisionScale

func (d *DriverImpl) RowsColumnTypePrecisionScale(rowsID string, index int) (int64, int64, bool)

func (*DriverImpl) RowsColumns

func (d *DriverImpl) RowsColumns(rowsID string) []string

func (*DriverImpl) RowsHasNextResultSet

func (d *DriverImpl) RowsHasNextResultSet(rowsID string) bool

func (*DriverImpl) RowsNext

func (d *DriverImpl) RowsNext(rowsID string, dest []driver.Value) error

func (*DriverImpl) RowsNextResultSet

func (d *DriverImpl) RowsNextResultSet(rowsID string) error

func (*DriverImpl) Stmt

func (d *DriverImpl) Stmt(connID, q string) (_ string, err error)

func (*DriverImpl) StmtClose

func (d *DriverImpl) StmtClose(stID string) error

func (*DriverImpl) StmtExec

func (d *DriverImpl) StmtExec(stID string, args []driver.NamedValue) (plugin.ResultContainer, error)

func (*DriverImpl) StmtNumInput

func (d *DriverImpl) StmtNumInput(stID string) int

func (*DriverImpl) StmtQuery

func (d *DriverImpl) StmtQuery(stID string, args []driver.NamedValue) (string, error)

func (*DriverImpl) Tx

func (d *DriverImpl) Tx(connID string, opts driver.TxOptions) (_ string, err error)

func (*DriverImpl) TxCommit

func (d *DriverImpl) TxCommit(txID string) error

func (*DriverImpl) TxRollback

func (d *DriverImpl) TxRollback(txID string) error

type EmojiImportData

type EmojiImportData struct {
	Name  *string   `json:"name"`
	Image *string   `json:"image"`
	Data  *zip.File `json:"-"`
}

type ExplicitMentions

type ExplicitMentions struct {
	// Mentions contains the ID of each user that was mentioned and how they were mentioned.
	Mentions map[string]MentionType

	// Contains a map of groups that were mentioned
	GroupMentions map[string]*model.Group

	// OtherPotentialMentions contains a list of strings that looked like mentions, but didn't have
	// a corresponding keyword.
	OtherPotentialMentions []string

	// HereMentioned is true if the message contained @here.
	HereMentioned bool

	// AllMentioned is true if the message contained @all.
	AllMentioned bool

	// ChannelMentioned is true if the message contained @channel.
	ChannelMentioned bool
}

type Hub

type Hub struct {
	// contains filtered or unexported fields
}

Hub is the central place to manage all websocket connections in the server. It handles different websocket events and sending messages to individual user connections.

func (*Hub) Broadcast

func (h *Hub) Broadcast(message *model.WebSocketEvent)

Broadcast broadcasts the message to all connections in the hub.

func (*Hub) CheckConn

func (h *Hub) CheckConn(userID, connectionID string) *CheckConnResult

func (*Hub) InvalidateUser

func (h *Hub) InvalidateUser(userID string)

InvalidateUser invalidates the cache for the given user.

func (*Hub) IsRegistered

func (h *Hub) IsRegistered(userID, sessionToken string) bool

Determines if a user's session is registered a connection from the hub.

func (*Hub) Register

func (h *Hub) Register(webConn *WebConn)

Register registers a connection to the hub.

func (*Hub) SendMessage

func (h *Hub) SendMessage(conn *WebConn, msg model.WebSocketMessage)

SendMessage sends the given message to the given connection.

func (*Hub) Start

func (h *Hub) Start()

Start starts the hub.

func (*Hub) Stop

func (h *Hub) Stop()

Stop stops the hub.

func (*Hub) Unregister

func (h *Hub) Unregister(webConn *WebConn)

Unregister unregisters a connection from the hub.

func (*Hub) UpdateActivity

func (h *Hub) UpdateActivity(userID, sessionToken string, activityAt int64)

UpdateActivity sets the LastUserActivityAt field for the connection of the user.

type JWTClaims

type JWTClaims struct {
	LicenseID   string `json:"license_id"`
	ActiveUsers int64  `json:"active_users"`
	jwt.StandardClaims
}

JWTClaims custom JWT claims with the needed information for the renewal process

type LineImportData

type LineImportData struct {
	Type          string                   `json:"type"`
	Scheme        *SchemeImportData        `json:"scheme,omitempty"`
	Team          *TeamImportData          `json:"team,omitempty"`
	Channel       *ChannelImportData       `json:"channel,omitempty"`
	User          *UserImportData          `json:"user,omitempty"`
	Post          *PostImportData          `json:"post,omitempty"`
	DirectChannel *DirectChannelImportData `json:"direct_channel,omitempty"`
	DirectPost    *DirectPostImportData    `json:"direct_post,omitempty"`
	Emoji         *EmojiImportData         `json:"emoji,omitempty"`
	Version       *int                     `json:"version,omitempty"`
}

func ImportLineForDirectPost

func ImportLineForDirectPost(post *model.DirectPostForExport) *LineImportData

func ImportLineForPost

func ImportLineForPost(post *model.PostForExport) *LineImportData

func ImportLineFromChannel

func ImportLineFromChannel(channel *model.ChannelForExport) *LineImportData

func ImportLineFromDirectChannel

func ImportLineFromDirectChannel(channel *model.DirectChannelForExport) *LineImportData

func ImportLineFromEmoji

func ImportLineFromEmoji(emoji *model.Emoji, filePath string) *LineImportData

func ImportLineFromTeam

func ImportLineFromTeam(team *model.TeamForExport) *LineImportData

func ImportLineFromUser

func ImportLineFromUser(user *model.User, exportedPrefs map[string]*string) *LineImportData

type LineImportWorkerData

type LineImportWorkerData struct {
	LineImportData
	LineNumber int
}

type LineImportWorkerError

type LineImportWorkerError struct {
	Error      *model.AppError
	LineNumber int
}

type LocalResponseWriter

type LocalResponseWriter struct {
	// contains filtered or unexported fields
}

func (*LocalResponseWriter) Header

func (w *LocalResponseWriter) Header() http.Header

func (*LocalResponseWriter) Write

func (w *LocalResponseWriter) Write(bytes []byte) (int, error)

func (*LocalResponseWriter) WriteHeader

func (w *LocalResponseWriter) WriteHeader(statusCode int)

type MailToLinkContent

type MailToLinkContent struct {
	MetricId      string `json:"metric_id"`
	MailRecipient string `json:"mail_recipient"`
	MailCC        string `json:"mail_cc"`
	MailSubject   string `json:"mail_subject"`
	MailBody      string `json:"mail_body"`
}

func (*MailToLinkContent) ToJSON

func (mlc *MailToLinkContent) ToJSON() string

type MentionType

type MentionType int
const (

	// A placeholder that should never be used in practice
	NoMention MentionType = iota

	// The post is in a thread that the user has commented on
	ThreadMention

	// The post is a comment on a thread started by the user
	CommentMention

	// The post contains an at-channel, at-all, or at-here
	ChannelMention

	// The post is a DM
	DMMention

	// The post contains an at-mention for the user
	KeywordMention

	// The post contains a group mention for the user
	GroupMention
)

type MockOptionRemoteClusterService

type MockOptionRemoteClusterService func(service *mockRemoteClusterService)

MockOptionRemoteClusterService a mock of the remote cluster service

func MockOptionRemoteClusterServiceWithActive

func MockOptionRemoteClusterServiceWithActive(active bool) MockOptionRemoteClusterService

type MockOptionSharedChannelService

type MockOptionSharedChannelService func(service *mockSharedChannelService)

func MockOptionSharedChannelServiceWithActive

func MockOptionSharedChannelServiceWithActive(active bool) MockOptionSharedChannelService

type Option

type Option func(s *Server) error

func Config

func Config(dsn string, readOnly bool, configDefaults *model.Config) Option

Config applies the given config dsn, whether a path to config.json or a database connection string. It receives as well a set of custom defaults that will be applied for any unset property of the config loaded from the dsn on top of the normal defaults

func ConfigStore

func ConfigStore(configStore *config.Store) Option

ConfigStore applies the given config store, typically to replace the traditional sources with a memory store for testing.

func SetFileStore added in v6.6.0

func SetFileStore(filestore filestore.FileBackend) Option

func SetLogger

func SetLogger(logger *mlog.Logger) Option

func SkipPostInitialization added in v6.7.0

func SkipPostInitialization() Option

func StoreOverride

func StoreOverride(override interface{}) Option

By default, the app will use the store specified by the configuration. This allows you to construct an app with a different store.

The override parameter must be either a store.Store or func(App) store.Store().

type PluginAPI

type PluginAPI struct {
	// contains filtered or unexported fields
}

func NewPluginAPI

func NewPluginAPI(a *App, c *request.Context, manifest *model.Manifest) *PluginAPI

func (*PluginAPI) AddChannelMember

func (api *PluginAPI) AddChannelMember(channelID, userID string) (*model.ChannelMember, *model.AppError)

func (*PluginAPI) AddReaction

func (api *PluginAPI) AddReaction(reaction *model.Reaction) (*model.Reaction, *model.AppError)

func (*PluginAPI) AddUserToChannel

func (api *PluginAPI) AddUserToChannel(channelID, userID, asUserID string) (*model.ChannelMember, *model.AppError)

func (*PluginAPI) CopyFileInfos

func (api *PluginAPI) CopyFileInfos(userID string, fileIDs []string) ([]string, *model.AppError)

func (*PluginAPI) CreateBot

func (api *PluginAPI) CreateBot(bot *model.Bot) (*model.Bot, *model.AppError)

func (*PluginAPI) CreateChannel

func (api *PluginAPI) CreateChannel(channel *model.Channel) (*model.Channel, *model.AppError)

func (*PluginAPI) CreateChannelSidebarCategory

func (api *PluginAPI) CreateChannelSidebarCategory(userID, teamID string, newCategory *model.SidebarCategoryWithChannels) (*model.SidebarCategoryWithChannels, *model.AppError)

func (*PluginAPI) CreateCommand

func (api *PluginAPI) CreateCommand(cmd *model.Command) (*model.Command, error)

func (*PluginAPI) CreateOAuthApp

func (api *PluginAPI) CreateOAuthApp(app *model.OAuthApp) (*model.OAuthApp, *model.AppError)

func (*PluginAPI) CreatePost

func (api *PluginAPI) CreatePost(post *model.Post) (*model.Post, *model.AppError)

func (*PluginAPI) CreateSession added in v6.2.0

func (api *PluginAPI) CreateSession(session *model.Session) (*model.Session, *model.AppError)

func (*PluginAPI) CreateTeam

func (api *PluginAPI) CreateTeam(team *model.Team) (*model.Team, *model.AppError)

func (*PluginAPI) CreateTeamMember

func (api *PluginAPI) CreateTeamMember(teamID, userID string) (*model.TeamMember, *model.AppError)

func (*PluginAPI) CreateTeamMembers

func (api *PluginAPI) CreateTeamMembers(teamID string, userIDs []string, requestorId string) ([]*model.TeamMember, *model.AppError)

func (*PluginAPI) CreateTeamMembersGracefully

func (api *PluginAPI) CreateTeamMembersGracefully(teamID string, userIDs []string, requestorId string) ([]*model.TeamMemberWithError, *model.AppError)

func (*PluginAPI) CreateUser

func (api *PluginAPI) CreateUser(user *model.User) (*model.User, *model.AppError)

func (*PluginAPI) CreateUserAccessToken

func (api *PluginAPI) CreateUserAccessToken(token *model.UserAccessToken) (*model.UserAccessToken, *model.AppError)

func (*PluginAPI) DeleteChannel

func (api *PluginAPI) DeleteChannel(channelID string) *model.AppError

func (*PluginAPI) DeleteChannelMember

func (api *PluginAPI) DeleteChannelMember(channelID, userID string) *model.AppError

func (*PluginAPI) DeleteCommand

func (api *PluginAPI) DeleteCommand(commandID string) error

func (*PluginAPI) DeleteEphemeralPost

func (api *PluginAPI) DeleteEphemeralPost(userID, postID string)

func (*PluginAPI) DeleteOAuthApp

func (api *PluginAPI) DeleteOAuthApp(appID string) *model.AppError

func (*PluginAPI) DeletePost

func (api *PluginAPI) DeletePost(postID string) *model.AppError

func (*PluginAPI) DeletePreferencesForUser

func (api *PluginAPI) DeletePreferencesForUser(userID string, preferences []model.Preference) *model.AppError

func (*PluginAPI) DeleteTeam

func (api *PluginAPI) DeleteTeam(teamID string) *model.AppError

func (*PluginAPI) DeleteTeamMember

func (api *PluginAPI) DeleteTeamMember(teamID, userID, requestorId string) *model.AppError

func (*PluginAPI) DeleteUser

func (api *PluginAPI) DeleteUser(userID string) *model.AppError

func (*PluginAPI) DisablePlugin

func (api *PluginAPI) DisablePlugin(id string) *model.AppError

func (*PluginAPI) EnablePlugin

func (api *PluginAPI) EnablePlugin(id string) *model.AppError

func (*PluginAPI) ExecuteSlashCommand

func (api *PluginAPI) ExecuteSlashCommand(commandArgs *model.CommandArgs) (*model.CommandResponse, error)

func (*PluginAPI) ExtendSessionExpiry added in v6.2.0

func (api *PluginAPI) ExtendSessionExpiry(sessionID string, expiresAt int64) *model.AppError

func (*PluginAPI) GetBot

func (api *PluginAPI) GetBot(userID string, includeDeleted bool) (*model.Bot, *model.AppError)

func (*PluginAPI) GetBots

func (api *PluginAPI) GetBots(options *model.BotGetOptions) ([]*model.Bot, *model.AppError)

func (*PluginAPI) GetBundlePath

func (api *PluginAPI) GetBundlePath() (string, error)

func (*PluginAPI) GetChannel

func (api *PluginAPI) GetChannel(channelID string) (*model.Channel, *model.AppError)

func (*PluginAPI) GetChannelByName

func (api *PluginAPI) GetChannelByName(teamID, name string, includeDeleted bool) (*model.Channel, *model.AppError)

func (*PluginAPI) GetChannelByNameForTeamName

func (api *PluginAPI) GetChannelByNameForTeamName(teamName, channelName string, includeDeleted bool) (*model.Channel, *model.AppError)

func (*PluginAPI) GetChannelMember

func (api *PluginAPI) GetChannelMember(channelID, userID string) (*model.ChannelMember, *model.AppError)

func (*PluginAPI) GetChannelMembers

func (api *PluginAPI) GetChannelMembers(channelID string, page, perPage int) (model.ChannelMembers, *model.AppError)

func (*PluginAPI) GetChannelMembersByIds

func (api *PluginAPI) GetChannelMembersByIds(channelID string, userIDs []string) (model.ChannelMembers, *model.AppError)

func (*PluginAPI) GetChannelMembersForUser

func (api *PluginAPI) GetChannelMembersForUser(_, userID string, page, perPage int) ([]*model.ChannelMember, *model.AppError)

func (*PluginAPI) GetChannelSidebarCategories

func (api *PluginAPI) GetChannelSidebarCategories(userID, teamID string) (*model.OrderedSidebarCategories, *model.AppError)

func (*PluginAPI) GetChannelStats

func (api *PluginAPI) GetChannelStats(channelID string) (*model.ChannelStats, *model.AppError)

func (*PluginAPI) GetChannelsForTeamForUser

func (api *PluginAPI) GetChannelsForTeamForUser(teamID, userID string, includeDeleted bool) ([]*model.Channel, *model.AppError)

func (*PluginAPI) GetCommand

func (api *PluginAPI) GetCommand(commandID string) (*model.Command, error)

func (*PluginAPI) GetConfig

func (api *PluginAPI) GetConfig() *model.Config

func (*PluginAPI) GetDiagnosticId

func (api *PluginAPI) GetDiagnosticId() string

func (*PluginAPI) GetDirectChannel

func (api *PluginAPI) GetDirectChannel(userID1, userID2 string) (*model.Channel, *model.AppError)

func (*PluginAPI) GetEmoji

func (api *PluginAPI) GetEmoji(emojiId string) (*model.Emoji, *model.AppError)

func (*PluginAPI) GetEmojiByName

func (api *PluginAPI) GetEmojiByName(name string) (*model.Emoji, *model.AppError)

func (*PluginAPI) GetEmojiImage

func (api *PluginAPI) GetEmojiImage(emojiId string) ([]byte, string, *model.AppError)

func (*PluginAPI) GetEmojiList

func (api *PluginAPI) GetEmojiList(sortBy string, page, perPage int) ([]*model.Emoji, *model.AppError)

func (*PluginAPI) GetFile

func (api *PluginAPI) GetFile(fileID string) ([]byte, *model.AppError)

func (*PluginAPI) GetFileInfo

func (api *PluginAPI) GetFileInfo(fileID string) (*model.FileInfo, *model.AppError)

func (*PluginAPI) GetFileInfos

func (api *PluginAPI) GetFileInfos(page, perPage int, opt *model.GetFileInfosOptions) ([]*model.FileInfo, *model.AppError)
func (api *PluginAPI) GetFileLink(fileID string) (string, *model.AppError)

func (*PluginAPI) GetGroup

func (api *PluginAPI) GetGroup(groupId string) (*model.Group, *model.AppError)

func (*PluginAPI) GetGroupByName

func (api *PluginAPI) GetGroupByName(name string) (*model.Group, *model.AppError)

func (*PluginAPI) GetGroupChannel

func (api *PluginAPI) GetGroupChannel(userIDs []string) (*model.Channel, *model.AppError)

func (*PluginAPI) GetGroupMemberUsers

func (api *PluginAPI) GetGroupMemberUsers(groupID string, page, perPage int) ([]*model.User, *model.AppError)

func (*PluginAPI) GetGroupsBySource

func (api *PluginAPI) GetGroupsBySource(groupSource model.GroupSource) ([]*model.Group, *model.AppError)

func (*PluginAPI) GetGroupsForUser

func (api *PluginAPI) GetGroupsForUser(userID string) ([]*model.Group, *model.AppError)

func (*PluginAPI) GetLDAPUserAttributes

func (api *PluginAPI) GetLDAPUserAttributes(userID string, attributes []string) (map[string]string, *model.AppError)

func (*PluginAPI) GetLicense

func (api *PluginAPI) GetLicense() *model.License

func (*PluginAPI) GetOAuthApp

func (api *PluginAPI) GetOAuthApp(appID string) (*model.OAuthApp, *model.AppError)

func (*PluginAPI) GetPluginConfig

func (api *PluginAPI) GetPluginConfig() map[string]interface{}

func (*PluginAPI) GetPluginStatus

func (api *PluginAPI) GetPluginStatus(id string) (*model.PluginStatus, *model.AppError)

func (*PluginAPI) GetPlugins

func (api *PluginAPI) GetPlugins() ([]*model.Manifest, *model.AppError)

func (*PluginAPI) GetPost

func (api *PluginAPI) GetPost(postID string) (*model.Post, *model.AppError)

func (*PluginAPI) GetPostThread

func (api *PluginAPI) GetPostThread(postID string) (*model.PostList, *model.AppError)

func (*PluginAPI) GetPostsAfter

func (api *PluginAPI) GetPostsAfter(channelID, postID string, page, perPage int) (*model.PostList, *model.AppError)

func (*PluginAPI) GetPostsBefore

func (api *PluginAPI) GetPostsBefore(channelID, postID string, page, perPage int) (*model.PostList, *model.AppError)

func (*PluginAPI) GetPostsForChannel

func (api *PluginAPI) GetPostsForChannel(channelID string, page, perPage int) (*model.PostList, *model.AppError)

func (*PluginAPI) GetPostsSince

func (api *PluginAPI) GetPostsSince(channelID string, time int64) (*model.PostList, *model.AppError)

func (*PluginAPI) GetPreferencesForUser

func (api *PluginAPI) GetPreferencesForUser(userID string) ([]model.Preference, *model.AppError)

func (*PluginAPI) GetProfileImage

func (api *PluginAPI) GetProfileImage(userID string) ([]byte, *model.AppError)

func (*PluginAPI) GetPublicChannelsForTeam

func (api *PluginAPI) GetPublicChannelsForTeam(teamID string, page, perPage int) ([]*model.Channel, *model.AppError)

func (*PluginAPI) GetReactions

func (api *PluginAPI) GetReactions(postID string) ([]*model.Reaction, *model.AppError)

func (*PluginAPI) GetServerVersion

func (api *PluginAPI) GetServerVersion() string

func (*PluginAPI) GetSession

func (api *PluginAPI) GetSession(sessionID string) (*model.Session, *model.AppError)

func (*PluginAPI) GetSystemInstallDate

func (api *PluginAPI) GetSystemInstallDate() (int64, *model.AppError)

func (*PluginAPI) GetTeam

func (api *PluginAPI) GetTeam(teamID string) (*model.Team, *model.AppError)

func (*PluginAPI) GetTeamByName

func (api *PluginAPI) GetTeamByName(name string) (*model.Team, *model.AppError)

func (*PluginAPI) GetTeamIcon

func (api *PluginAPI) GetTeamIcon(teamID string) ([]byte, *model.AppError)

func (*PluginAPI) GetTeamMember

func (api *PluginAPI) GetTeamMember(teamID, userID string) (*model.TeamMember, *model.AppError)

func (*PluginAPI) GetTeamMembers

func (api *PluginAPI) GetTeamMembers(teamID string, page, perPage int) ([]*model.TeamMember, *model.AppError)

func (*PluginAPI) GetTeamMembersForUser

func (api *PluginAPI) GetTeamMembersForUser(userID string, page int, perPage int) ([]*model.TeamMember, *model.AppError)

func (*PluginAPI) GetTeamStats

func (api *PluginAPI) GetTeamStats(teamID string) (*model.TeamStats, *model.AppError)

func (*PluginAPI) GetTeams

func (api *PluginAPI) GetTeams() ([]*model.Team, *model.AppError)

func (*PluginAPI) GetTeamsForUser

func (api *PluginAPI) GetTeamsForUser(userID string) ([]*model.Team, *model.AppError)

func (*PluginAPI) GetTeamsUnreadForUser

func (api *PluginAPI) GetTeamsUnreadForUser(userID string) ([]*model.TeamUnread, *model.AppError)

func (*PluginAPI) GetTelemetryId

func (api *PluginAPI) GetTelemetryId() string

func (*PluginAPI) GetUnsanitizedConfig

func (api *PluginAPI) GetUnsanitizedConfig() *model.Config

GetUnsanitizedConfig gets the configuration for a system admin without removing secrets.

func (*PluginAPI) GetUser

func (api *PluginAPI) GetUser(userID string) (*model.User, *model.AppError)

func (*PluginAPI) GetUserByEmail

func (api *PluginAPI) GetUserByEmail(email string) (*model.User, *model.AppError)

func (*PluginAPI) GetUserByUsername

func (api *PluginAPI) GetUserByUsername(name string) (*model.User, *model.AppError)

func (*PluginAPI) GetUserCustomStatus added in v6.2.0

func (api *PluginAPI) GetUserCustomStatus(userID string) (*model.CustomStatus, *model.AppError)

func (*PluginAPI) GetUserStatus

func (api *PluginAPI) GetUserStatus(userID string) (*model.Status, *model.AppError)

func (*PluginAPI) GetUserStatusesByIds

func (api *PluginAPI) GetUserStatusesByIds(userIDs []string) ([]*model.Status, *model.AppError)

func (*PluginAPI) GetUsers

func (api *PluginAPI) GetUsers(options *model.UserGetOptions) ([]*model.User, *model.AppError)

func (*PluginAPI) GetUsersByUsernames

func (api *PluginAPI) GetUsersByUsernames(usernames []string) ([]*model.User, *model.AppError)

func (*PluginAPI) GetUsersInChannel

func (api *PluginAPI) GetUsersInChannel(channelID, sortBy string, page, perPage int) ([]*model.User, *model.AppError)

func (*PluginAPI) GetUsersInTeam

func (api *PluginAPI) GetUsersInTeam(teamID string, page int, perPage int) ([]*model.User, *model.AppError)

func (*PluginAPI) HasPermissionTo

func (api *PluginAPI) HasPermissionTo(userID string, permission *model.Permission) bool

func (*PluginAPI) HasPermissionToChannel

func (api *PluginAPI) HasPermissionToChannel(userID, channelID string, permission *model.Permission) bool

func (*PluginAPI) HasPermissionToTeam

func (api *PluginAPI) HasPermissionToTeam(userID, teamID string, permission *model.Permission) bool

func (*PluginAPI) InstallPlugin

func (api *PluginAPI) InstallPlugin(file io.Reader, replace bool) (*model.Manifest, *model.AppError)

func (*PluginAPI) IsEnterpriseReady added in v6.2.0

func (api *PluginAPI) IsEnterpriseReady() bool

func (*PluginAPI) KVCompareAndDelete

func (api *PluginAPI) KVCompareAndDelete(key string, oldValue []byte) (bool, *model.AppError)

func (*PluginAPI) KVCompareAndSet

func (api *PluginAPI) KVCompareAndSet(key string, oldValue, newValue []byte) (bool, *model.AppError)

func (*PluginAPI) KVDelete

func (api *PluginAPI) KVDelete(key string) *model.AppError

func (*PluginAPI) KVDeleteAll

func (api *PluginAPI) KVDeleteAll() *model.AppError

func (*PluginAPI) KVGet

func (api *PluginAPI) KVGet(key string) ([]byte, *model.AppError)

func (*PluginAPI) KVList

func (api *PluginAPI) KVList(page, perPage int) ([]string, *model.AppError)

func (*PluginAPI) KVSet

func (api *PluginAPI) KVSet(key string, value []byte) *model.AppError

func (*PluginAPI) KVSetWithExpiry

func (api *PluginAPI) KVSetWithExpiry(key string, value []byte, expireInSeconds int64) *model.AppError

func (*PluginAPI) KVSetWithOptions

func (api *PluginAPI) KVSetWithOptions(key string, value []byte, options model.PluginKVSetOptions) (bool, *model.AppError)

func (*PluginAPI) ListBuiltInCommands

func (api *PluginAPI) ListBuiltInCommands() ([]*model.Command, error)

func (*PluginAPI) ListCommands

func (api *PluginAPI) ListCommands(teamID string) ([]*model.Command, error)

func (*PluginAPI) ListCustomCommands

func (api *PluginAPI) ListCustomCommands(teamID string) ([]*model.Command, error)

func (*PluginAPI) ListPluginCommands

func (api *PluginAPI) ListPluginCommands(teamID string) ([]*model.Command, error)

func (*PluginAPI) LoadPluginConfiguration

func (api *PluginAPI) LoadPluginConfiguration(dest interface{}) error

func (*PluginAPI) LogDebug

func (api *PluginAPI) LogDebug(msg string, keyValuePairs ...interface{})

func (*PluginAPI) LogError

func (api *PluginAPI) LogError(msg string, keyValuePairs ...interface{})

func (*PluginAPI) LogInfo

func (api *PluginAPI) LogInfo(msg string, keyValuePairs ...interface{})

func (*PluginAPI) LogWarn

func (api *PluginAPI) LogWarn(msg string, keyValuePairs ...interface{})

func (*PluginAPI) OpenInteractiveDialog

func (api *PluginAPI) OpenInteractiveDialog(dialog model.OpenDialogRequest) *model.AppError

func (*PluginAPI) PatchBot

func (api *PluginAPI) PatchBot(userID string, botPatch *model.BotPatch) (*model.Bot, *model.AppError)

func (*PluginAPI) PermanentDeleteBot

func (api *PluginAPI) PermanentDeleteBot(userID string) *model.AppError

func (*PluginAPI) PluginHTTP

func (api *PluginAPI) PluginHTTP(request *http.Request) *http.Response

func (*PluginAPI) PublishPluginClusterEvent

func (api *PluginAPI) PublishPluginClusterEvent(ev model.PluginClusterEvent,
	opts model.PluginClusterEventSendOptions) error

PublishPluginClusterEvent broadcasts a plugin event to all other running instances of the calling plugin.

func (*PluginAPI) PublishUserTyping

func (api *PluginAPI) PublishUserTyping(userID, channelID, parentId string) *model.AppError

func (*PluginAPI) PublishWebSocketEvent

func (api *PluginAPI) PublishWebSocketEvent(event string, payload map[string]interface{}, broadcast *model.WebsocketBroadcast)

func (*PluginAPI) ReadFile

func (api *PluginAPI) ReadFile(path string) ([]byte, *model.AppError)

func (*PluginAPI) RegisterCommand

func (api *PluginAPI) RegisterCommand(command *model.Command) error

func (*PluginAPI) RemovePlugin

func (api *PluginAPI) RemovePlugin(id string) *model.AppError

func (*PluginAPI) RemoveReaction

func (api *PluginAPI) RemoveReaction(reaction *model.Reaction) *model.AppError

func (*PluginAPI) RemoveTeamIcon

func (api *PluginAPI) RemoveTeamIcon(teamID string) *model.AppError

func (*PluginAPI) RemoveUserCustomStatus added in v6.2.0

func (api *PluginAPI) RemoveUserCustomStatus(userID string) *model.AppError

func (*PluginAPI) RequestTrialLicense

func (api *PluginAPI) RequestTrialLicense(requesterID string, users int, termsAccepted bool, receiveEmailsAccepted bool) *model.AppError

RequestTrialLicense requests a trial license and installs it in the server

func (*PluginAPI) RevokeSession added in v6.2.0

func (api *PluginAPI) RevokeSession(sessionID string) *model.AppError

func (*PluginAPI) RevokeUserAccessToken

func (api *PluginAPI) RevokeUserAccessToken(tokenID string) *model.AppError

func (*PluginAPI) RolesGrantPermission added in v6.3.0

func (api *PluginAPI) RolesGrantPermission(roleNames []string, permissionId string) bool

func (*PluginAPI) SaveConfig

func (api *PluginAPI) SaveConfig(config *model.Config) *model.AppError

func (*PluginAPI) SavePluginConfig

func (api *PluginAPI) SavePluginConfig(pluginConfig map[string]interface{}) *model.AppError

func (*PluginAPI) SearchChannels

func (api *PluginAPI) SearchChannels(teamID string, term string) ([]*model.Channel, *model.AppError)

func (*PluginAPI) SearchPostsInTeam

func (api *PluginAPI) SearchPostsInTeam(teamID string, paramsList []*model.SearchParams) ([]*model.Post, *model.AppError)

func (*PluginAPI) SearchPostsInTeamForUser

func (api *PluginAPI) SearchPostsInTeamForUser(teamID string, userID string, searchParams model.SearchParameter) (*model.PostSearchResults, *model.AppError)

func (*PluginAPI) SearchTeams

func (api *PluginAPI) SearchTeams(term string) ([]*model.Team, *model.AppError)

func (*PluginAPI) SearchUsers

func (api *PluginAPI) SearchUsers(search *model.UserSearch) ([]*model.User, *model.AppError)

func (*PluginAPI) SendEphemeralPost

func (api *PluginAPI) SendEphemeralPost(userID string, post *model.Post) *model.Post

func (*PluginAPI) SendMail

func (api *PluginAPI) SendMail(to, subject, htmlBody string) *model.AppError

func (*PluginAPI) SetProfileImage

func (api *PluginAPI) SetProfileImage(userID string, data []byte) *model.AppError

func (*PluginAPI) SetTeamIcon

func (api *PluginAPI) SetTeamIcon(teamID string, data []byte) *model.AppError

func (*PluginAPI) SetUserStatusTimedDND

func (api *PluginAPI) SetUserStatusTimedDND(userID string, endTime int64) (*model.Status, *model.AppError)

func (*PluginAPI) UnregisterCommand

func (api *PluginAPI) UnregisterCommand(teamID, trigger string) error

func (*PluginAPI) UpdateBotActive

func (api *PluginAPI) UpdateBotActive(userID string, active bool) (*model.Bot, *model.AppError)

func (*PluginAPI) UpdateChannel

func (api *PluginAPI) UpdateChannel(channel *model.Channel) (*model.Channel, *model.AppError)

func (*PluginAPI) UpdateChannelMemberNotifications

func (api *PluginAPI) UpdateChannelMemberNotifications(channelID, userID string, notifications map[string]string) (*model.ChannelMember, *model.AppError)

func (*PluginAPI) UpdateChannelMemberRoles

func (api *PluginAPI) UpdateChannelMemberRoles(channelID, userID, newRoles string) (*model.ChannelMember, *model.AppError)

func (*PluginAPI) UpdateChannelSidebarCategories

func (api *PluginAPI) UpdateChannelSidebarCategories(userID, teamID string, categories []*model.SidebarCategoryWithChannels) ([]*model.SidebarCategoryWithChannels, *model.AppError)

func (*PluginAPI) UpdateCommand

func (api *PluginAPI) UpdateCommand(commandID string, updatedCmd *model.Command) (*model.Command, error)

func (*PluginAPI) UpdateEphemeralPost

func (api *PluginAPI) UpdateEphemeralPost(userID string, post *model.Post) *model.Post

func (*PluginAPI) UpdateOAuthApp

func (api *PluginAPI) UpdateOAuthApp(app *model.OAuthApp) (*model.OAuthApp, *model.AppError)

func (*PluginAPI) UpdatePost

func (api *PluginAPI) UpdatePost(post *model.Post) (*model.Post, *model.AppError)

func (*PluginAPI) UpdatePreferencesForUser

func (api *PluginAPI) UpdatePreferencesForUser(userID string, preferences []model.Preference) *model.AppError

func (*PluginAPI) UpdateTeam

func (api *PluginAPI) UpdateTeam(team *model.Team) (*model.Team, *model.AppError)

func (*PluginAPI) UpdateTeamMemberRoles

func (api *PluginAPI) UpdateTeamMemberRoles(teamID, userID, newRoles string) (*model.TeamMember, *model.AppError)

func (*PluginAPI) UpdateUser

func (api *PluginAPI) UpdateUser(user *model.User) (*model.User, *model.AppError)

func (*PluginAPI) UpdateUserActive

func (api *PluginAPI) UpdateUserActive(userID string, active bool) *model.AppError

func (*PluginAPI) UpdateUserCustomStatus added in v6.2.0

func (api *PluginAPI) UpdateUserCustomStatus(userID string, customStatus *model.CustomStatus) *model.AppError

func (*PluginAPI) UpdateUserStatus

func (api *PluginAPI) UpdateUserStatus(userID, status string) (*model.Status, *model.AppError)

func (*PluginAPI) UploadFile

func (api *PluginAPI) UploadFile(data []byte, channelID string, filename string) (*model.FileInfo, *model.AppError)

type PluginCommand

type PluginCommand struct {
	Command  *model.Command
	PluginId string
}

type PluginResponseWriter

type PluginResponseWriter struct {
	bytes.Buffer
	// contains filtered or unexported fields
}

func (*PluginResponseWriter) GenerateResponse

func (rt *PluginResponseWriter) GenerateResponse() *http.Response

func (*PluginResponseWriter) Header

func (rt *PluginResponseWriter) Header() http.Header

func (*PluginResponseWriter) WriteHeader

func (rt *PluginResponseWriter) WriteHeader(statusCode int)

type PostImportData

type PostImportData struct {
	Team    *string `json:"team"`
	Channel *string `json:"channel"`
	User    *string `json:"user"`

	Type     *string                `json:"type"`
	Message  *string                `json:"message"`
	Props    *model.StringInterface `json:"props"`
	CreateAt *int64                 `json:"create_at"`
	EditAt   *int64                 `json:"edit_at"`

	FlaggedBy   *[]string               `json:"flagged_by,omitempty"`
	Reactions   *[]ReactionImportData   `json:"reactions,omitempty"`
	Replies     *[]ReplyImportData      `json:"replies,omitempty"`
	Attachments *[]AttachmentImportData `json:"attachments,omitempty"`
	IsPinned    *bool                   `json:"is_pinned,omitempty"`
}

type PostNotification

type PostNotification struct {
	Channel    *model.Channel
	Post       *model.Post
	ProfileMap map[string]*model.User
	Sender     *model.User
}

Represents either an email or push notification and contains the fields required to send it to any user.

func (*PostNotification) GetChannelName

func (n *PostNotification) GetChannelName(userNameFormat, excludeId string) string

Returns the name of the channel for this notification. For direct messages, this is the sender's name preceded by an at sign. For group messages, this is a comma-separated list of the members of the channel, with an option to exclude the recipient of the message from that list.

func (*PostNotification) GetSenderName

func (n *PostNotification) GetSenderName(userNameFormat string, overridesAllowed bool) string

Returns the name of the sender of this notification, accounting for things like system messages and whether or not the username has been overridden by an integration.

type Product added in v6.1.0

type Product interface {
	Start() error
	Stop() error
}

type ProductManifest added in v6.7.0

type ProductManifest struct {
	Initializer  func(*Server, map[ServiceKey]interface{}) (Product, error)
	Dependencies map[ServiceKey]struct{}
}

type PushNotification

type PushNotification struct {
	// contains filtered or unexported fields
}

type PushNotificationsHub

type PushNotificationsHub struct {
	// contains filtered or unexported fields
}

type RateLimiter

type RateLimiter struct {
	// contains filtered or unexported fields
}

func NewRateLimiter

func NewRateLimiter(settings *model.RateLimitSettings, trustedProxyIPHeader []string) (*RateLimiter, error)

func (*RateLimiter) GenerateKey

func (rl *RateLimiter) GenerateKey(r *http.Request) string

func (*RateLimiter) RateLimitHandler

func (rl *RateLimiter) RateLimitHandler(wrappedHandler http.Handler) http.Handler

func (*RateLimiter) RateLimitWriter

func (rl *RateLimiter) RateLimitWriter(key string, w http.ResponseWriter) bool

func (*RateLimiter) UserIdRateLimit

func (rl *RateLimiter) UserIdRateLimit(userID string, w http.ResponseWriter) bool

type ReactionImportData

type ReactionImportData struct {
	User      *string `json:"user"`
	CreateAt  *int64  `json:"create_at"`
	EmojiName *string `json:"emoji_name"`
}

func ImportReactionFromPost

func ImportReactionFromPost(user *model.User, reaction *model.Reaction) *ReactionImportData

type ReplyImportData

type ReplyImportData struct {
	User *string `json:"user"`

	Type     *string `json:"type"`
	Message  *string `json:"message"`
	CreateAt *int64  `json:"create_at"`
	EditAt   *int64  `json:"edit_at"`

	FlaggedBy   *[]string               `json:"flagged_by,omitempty"`
	Reactions   *[]ReactionImportData   `json:"reactions,omitempty"`
	Attachments *[]AttachmentImportData `json:"attachments,omitempty"`
}

func ImportReplyFromPost

func ImportReplyFromPost(post *model.ReplyForExport) *ReplyImportData

type RoleImportData

type RoleImportData struct {
	Name        *string   `json:"name"`
	DisplayName *string   `json:"display_name"`
	Description *string   `json:"description"`
	Permissions *[]string `json:"permissions"`
}

type SchemeImportData

type SchemeImportData struct {
	Name                    *string         `json:"name"`
	DisplayName             *string         `json:"display_name"`
	Description             *string         `json:"description"`
	Scope                   *string         `json:"scope"`
	DefaultTeamAdminRole    *RoleImportData `json:"default_team_admin_role"`
	DefaultTeamUserRole     *RoleImportData `json:"default_team_user_role"`
	DefaultChannelAdminRole *RoleImportData `json:"default_channel_admin_role"`
	DefaultChannelUserRole  *RoleImportData `json:"default_channel_user_role"`
	DefaultTeamGuestRole    *RoleImportData `json:"default_team_guest_role"`
	DefaultChannelGuestRole *RoleImportData `json:"default_channel_guest_role"`
}

type Server

type Server struct {
	Store           store.Store
	WebSocketRouter *WebSocketRouter

	// RootRouter is the starting point for all HTTP requests to the server.
	RootRouter *mux.Router

	// LocalRouter is the starting point for all the local UNIX socket
	// requests to the server
	LocalRouter *mux.Router

	// Router is the starting point for all web, api4 and ws requests to the server. It differs
	// from RootRouter only if the SiteURL contains a /subpath.
	Router *mux.Router

	Server      *http.Server
	ListenAddr  *net.TCPAddr
	RateLimiter *RateLimiter
	Busy        *Busy

	EmailService email.ServiceInterface

	PushNotificationsHub PushNotificationsHub

	Jobs *jobs.JobServer

	Audit            *audit.Audit
	Log              *mlog.Logger
	NotificationsLog *mlog.Logger

	SearchEngine *searchengine.Broker

	Cluster        einterfaces.ClusterInterface
	Cloud          einterfaces.CloudInterface
	Metrics        einterfaces.MetricsInterface
	LicenseManager einterfaces.LicenseInterface

	CacheProvider cache.Provider
	// contains filtered or unexported fields
}

func NewServer

func NewServer(options ...Option) (*Server, error)

func (*Server) AddClusterLeaderChangedListener

func (s *Server) AddClusterLeaderChangedListener(listener func()) string

Registers a given function to be called when the cluster leader may have changed. Returns a unique ID for the listener which can later be used to remove it. If clustering is not enabled in this build, the callback will never be called.

func (*Server) AddConfigListener

func (s *Server) AddConfigListener(listener func(*model.Config, *model.Config)) string

Registers a function with a given listener to be called when the config is reloaded and may have changed. The function will be called with two arguments: the old config and the new config. AddConfigListener returns a unique ID for the listener that can later be used to remove it.

func (*Server) AddLicenseListener

func (s *Server) AddLicenseListener(listener func(oldLicense, newLicense *model.License)) string

func (*Server) AppOptions

func (s *Server) AppOptions() []AppOption

Global app options that should be applied to apps created by this server

func (*Server) CanIUpgradeToE0

func (s *Server) CanIUpgradeToE0() error

func (*Server) Channels added in v6.1.0

func (s *Server) Channels() *Channels

func (*Server) ClientLicense

func (s *Server) ClientLicense() map[string]string

func (*Server) ClusterHealthScore

func (s *Server) ClusterHealthScore() int

func (*Server) Config

func (s *Server) Config() *model.Config

func (*Server) ConfigStore added in v6.5.0

func (s *Server) ConfigStore() *configWrapper

func (*Server) DatabaseTypeAndSchemaVersion added in v6.6.0

func (s *Server) DatabaseTypeAndSchemaVersion() (string, string)

Return Database type (postgres or mysql) and current version of the schema

func (*Server) DoSecurityUpdateCheck

func (s *Server) DoSecurityUpdateCheck()

func (*Server) EnvironmentConfig

func (s *Server) EnvironmentConfig(filter func(reflect.StructField) bool) map[string]interface{}

func (*Server) FileBackend

func (s *Server) FileBackend() filestore.FileBackend
func (s *Server) GenerateLicenseRenewalLink() (string, string, *model.AppError)

GenerateLicenseRenewalLink returns a link that points to the CWS where clients can renew license

func (*Server) GenerateRenewalToken

func (s *Server) GenerateRenewalToken(expiration time.Duration) (string, *model.AppError)

GenerateRenewalToken returns a renewal token that expires after duration expiration

func (*Server) GetDefaultProfileImage

func (s *Server) GetDefaultProfileImage(user *model.User) ([]byte, *model.AppError)

func (*Server) GetHubForUserId

func (s *Server) GetHubForUserId(userID string) *Hub

GetHubForUserId returns the hub for a given user id.

func (*Server) GetLogger

func (s *Server) GetLogger() mlog.LoggerIFace

func (*Server) GetLogs

func (s *Server) GetLogs(page, perPage int) ([]string, *model.AppError)

func (*Server) GetLogsSkipSend

func (s *Server) GetLogsSkipSend(page, perPage int) ([]string, *model.AppError)

func (*Server) GetMetrics

func (s *Server) GetMetrics() einterfaces.MetricsInterface

GetMetrics returns the server's Metrics interface. Exposing via a method allows interfaces to be created with subsets of server APIs.

func (*Server) GetProfileImage

func (s *Server) GetProfileImage(user *model.User) ([]byte, bool, *model.AppError)

func (*Server) GetRemoteClusterService

func (s *Server) GetRemoteClusterService() remotecluster.RemoteClusterServiceIFace

GetRemoteClusterService returns the `RemoteClusterService` instantiated by the server. May be nil if the service is not enabled via license.

func (*Server) GetRoleByName

func (s *Server) GetRoleByName(ctx context.Context, name string) (*model.Role, *model.AppError)

func (*Server) GetSanitizedClientLicense

func (s *Server) GetSanitizedClientLicense() map[string]string

func (*Server) GetSchemes

func (s *Server) GetSchemes(scope string, offset int, limit int) ([]*model.Scheme, *model.AppError)

func (*Server) GetSharedChannelSyncService

func (s *Server) GetSharedChannelSyncService() SharedChannelServiceIFace

GetSharedChannelSyncService returns the `SharedChannelSyncService` instantiated by the server. May be nil if the service is not enabled via license.

func (*Server) GetStore

func (s *Server) GetStore() store.Store

GetStore returns the server's Store. Exposing via a method allows interfaces to be created with subsets of server APIs.

func (*Server) GetTelemetryService added in v6.2.0

func (s *Server) GetTelemetryService() *telemetry.TelemetryService

func (*Server) Go

func (s *Server) Go(f func())

Go creates a goroutine, but maintains a record of it to ensure that execution completes before the server is shutdown.

func (*Server) HTTPService

func (s *Server) HTTPService() httpservice.HTTPService

func (*Server) HandleMetrics

func (s *Server) HandleMetrics(route string, h http.Handler)

func (*Server) HubStart added in v6.1.0

func (s *Server) HubStart()

HubStart starts all the hubs.

func (*Server) HubStop

func (s *Server) HubStop()

HubStop stops all the hubs.

func (*Server) InitMetricsRouter

func (s *Server) InitMetricsRouter() error

func (*Server) InvalidateAllCaches

func (s *Server) InvalidateAllCaches() *model.AppError

func (*Server) InvalidateAllCachesSkipSend

func (s *Server) InvalidateAllCachesSkipSend()

func (*Server) InvokeClusterLeaderChangedListeners

func (s *Server) InvokeClusterLeaderChangedListeners()

func (*Server) IsLeader

func (s *Server) IsLeader() bool

func (*Server) IsPhase2MigrationCompleted

func (s *Server) IsPhase2MigrationCompleted() *model.AppError

func (*Server) License

func (s *Server) License() *model.License

func (*Server) LoadLicense

func (s *Server) LoadLicense()

func (*Server) MailServiceConfig

func (s *Server) MailServiceConfig() *mail.SMTPConfig

func (*Server) MaxPostSize

func (s *Server) MaxPostSize() int

func (*Server) NewClusterDiscoveryService

func (s *Server) NewClusterDiscoveryService() *ClusterDiscoveryService

func (*Server) Publish

func (s *Server) Publish(message *model.WebSocketEvent)

func (*Server) PublishSkipClusterSend

func (s *Server) PublishSkipClusterSend(event *model.WebSocketEvent)

func (*Server) ReadFile

func (s *Server) ReadFile(path string) ([]byte, *model.AppError)

func (*Server) ReloadConfig

func (s *Server) ReloadConfig() error

func (*Server) RemoveClusterLeaderChangedListener

func (s *Server) RemoveClusterLeaderChangedListener(id string)

Removes a listener function by the unique ID returned when AddConfigListener was called

func (*Server) RemoveConfigListener

func (s *Server) RemoveConfigListener(id string)

Removes a listener function by the unique ID returned when AddConfigListener was called

func (*Server) RemoveLicense

func (s *Server) RemoveLicense() *model.AppError

func (*Server) RemoveLicenseListener

func (s *Server) RemoveLicenseListener(id string)

func (*Server) RequestTrialLicense

func (s *Server) RequestTrialLicense(trialRequest *model.TrialLicenseRequest) *model.AppError

RequestTrialLicense request a trial license from the mattermost official license server

func (*Server) Restart

func (s *Server) Restart() error

func (*Server) SaveConfig

func (s *Server) SaveConfig(newCfg *model.Config, sendConfigChangeClusterMessage bool) (*model.Config, *model.Config, *model.AppError)

SaveConfig replaces the active configuration, optionally notifying cluster peers. It returns both the previous and current configs.

func (*Server) SaveLicense

func (s *Server) SaveLicense(licenseBytes []byte) (*model.License, *model.AppError)

func (*Server) SendRemoveExpiredLicenseEmail

func (s *Server) SendRemoveExpiredLicenseEmail(email string, renewalLink, locale, siteURL string) *model.AppError

SendRemoveExpiredLicenseEmail formats an email and uses the email service to send the email to user with link pointing to CWS to renew the user license

func (*Server) SetClientLicense

func (s *Server) SetClientLicense(m map[string]string)

func (*Server) SetLicense

func (s *Server) SetLicense(license *model.License) bool

func (*Server) SetLog

func (s *Server) SetLog(l *mlog.Logger)

func (*Server) SetRemoteClusterService

func (s *Server) SetRemoteClusterService(remoteClusterService remotecluster.RemoteClusterServiceIFace)

SetRemoteClusterService sets the `RemoteClusterService` to be used by the server. For testing only.

func (*Server) SetSharedChannelSyncService

func (s *Server) SetSharedChannelSyncService(sharedChannelService SharedChannelServiceIFace)

SetSharedChannelSyncService sets the `SharedChannelSyncService` to be used by the server. For testing only.

func (*Server) SetupMetricsServer

func (s *Server) SetupMetricsServer()

func (*Server) SharedChannelSyncHandler

func (s *Server) SharedChannelSyncHandler(event *model.WebSocketEvent)

SharedChannelSyncHandler is called when a websocket event is received by a cluster node. Only on the leader node it will notify the sync service to perform necessary updates to the remote for the given shared channel.

func (*Server) Shutdown

func (s *Server) Shutdown()

func (*Server) Start

func (s *Server) Start() error

func (*Server) StartSearchEngine

func (s *Server) StartSearchEngine() (string, string)

func (*Server) StopHTTPServer

func (s *Server) StopHTTPServer()

func (*Server) StopMetricsServer

func (s *Server) StopMetricsServer()

func (*Server) StopPushNotificationsHubWorkers

func (s *Server) StopPushNotificationsHubWorkers()

func (*Server) TelemetryId

func (s *Server) TelemetryId() string

func (*Server) TemplatesContainer

func (s *Server) TemplatesContainer() *templates.Container

func (*Server) TotalWebsocketConnections

func (s *Server) TotalWebsocketConnections() int

func (*Server) UpdateConfig

func (s *Server) UpdateConfig(f func(*model.Config))

func (*Server) UpgradeToE0

func (s *Server) UpgradeToE0() error

func (*Server) UpgradeToE0Status

func (s *Server) UpgradeToE0Status() (int64, error)

func (*Server) ValidateAndSetLicenseBytes

func (s *Server) ValidateAndSetLicenseBytes(b []byte) bool

func (*Server) WaitForGoroutines

func (s *Server) WaitForGoroutines()

WaitForGoroutines blocks until all goroutines created by App.Go exit.

type ServiceKey added in v6.5.0

type ServiceKey string
const (
	ChannelKey   ServiceKey = "channel"
	ConfigKey    ServiceKey = "config"
	LicenseKey   ServiceKey = "license"
	FilestoreKey ServiceKey = "filestore"
	ClusterKey   ServiceKey = "cluster"
	PostKey      ServiceKey = "post"
	TeamKey      ServiceKey = "team"
)

type SharedChannelServiceIFace

type SharedChannelServiceIFace interface {
	Shutdown() error
	Start() error
	NotifyChannelChanged(channelId string)
	NotifyUserProfileChanged(userID string)
	SendChannelInvite(channel *model.Channel, userId string, rc *model.RemoteCluster, options ...sharedchannel.InviteOption) error
	Active() bool
}

SharedChannelServiceIFace is the interface to the shared channel service

type TeamImportData

type TeamImportData struct {
	Name            *string `json:"name"`
	DisplayName     *string `json:"display_name"`
	Type            *string `json:"type"`
	Description     *string `json:"description,omitempty"`
	AllowOpenInvite *bool   `json:"allow_open_invite,omitempty"`
	Scheme          *string `json:"scheme,omitempty"`
}

type TokenLocation

type TokenLocation int
const (
	TokenLocationNotFound TokenLocation = iota
	TokenLocationHeader
	TokenLocationCookie
	TokenLocationQueryString
	TokenLocationCloudHeader
	TokenLocationRemoteClusterHeader
)

func ParseAuthTokenFromRequest

func ParseAuthTokenFromRequest(r *http.Request) (string, TokenLocation)

func (TokenLocation) String

func (tl TokenLocation) String() string

type UploadFileTask

type UploadFileTask struct {
	// File name.
	Name string

	ChannelId string
	TeamId    string
	UserId    string

	// Time stamp to use when creating the file.
	Timestamp time.Time

	// The value of the Content-Length http header, when available.
	ContentLength int64

	// The file data stream.
	Input io.Reader

	// An optional, client-assigned Id field.
	ClientId string

	// If Raw, do not execute special processing for images, just upload
	// the file.  Plugins are still invoked.
	Raw bool
	// contains filtered or unexported fields
}

type UserChannelImportData

type UserChannelImportData struct {
	Name        *string                           `json:"name"`
	Roles       *string                           `json:"roles"`
	NotifyProps *UserChannelNotifyPropsImportData `json:"notify_props,omitempty"`
	Favorite    *bool                             `json:"favorite,omitempty"`
}

func ImportUserChannelDataFromChannelMemberAndPreferences

func ImportUserChannelDataFromChannelMemberAndPreferences(member *model.ChannelMemberForExport, preferences *model.Preferences) *UserChannelImportData

type UserChannelNotifyPropsImportData

type UserChannelNotifyPropsImportData struct {
	Desktop    *string `json:"desktop"`
	Mobile     *string `json:"mobile"`
	MarkUnread *string `json:"mark_unread"`
}

type UserImportData

type UserImportData struct {
	ProfileImage       *string   `json:"profile_image,omitempty"`
	ProfileImageData   *zip.File `json:"-"`
	Username           *string   `json:"username"`
	Email              *string   `json:"email"`
	AuthService        *string   `json:"auth_service"`
	AuthData           *string   `json:"auth_data,omitempty"`
	Password           *string   `json:"password,omitempty"`
	Nickname           *string   `json:"nickname"`
	FirstName          *string   `json:"first_name"`
	LastName           *string   `json:"last_name"`
	Position           *string   `json:"position"`
	Roles              *string   `json:"roles"`
	Locale             *string   `json:"locale"`
	UseMarkdownPreview *string   `json:"feature_enabled_markdown_preview,omitempty"`
	UseFormatting      *string   `json:"formatting,omitempty"`
	ShowUnreadSection  *string   `json:"show_unread_section,omitempty"`
	DeleteAt           *int64    `json:"delete_at,omitempty"`

	Teams *[]UserTeamImportData `json:"teams,omitempty"`

	Theme              *string `json:"theme,omitempty"`
	UseMilitaryTime    *string `json:"military_time,omitempty"`
	CollapsePreviews   *string `json:"link_previews,omitempty"`
	MessageDisplay     *string `json:"message_display,omitempty"`
	ChannelDisplayMode *string `json:"channel_display_mode,omitempty"`
	TutorialStep       *string `json:"tutorial_step,omitempty"`
	EmailInterval      *string `json:"email_interval,omitempty"`

	NotifyProps *UserNotifyPropsImportData `json:"notify_props,omitempty"`
}

type UserNotifyPropsImportData

type UserNotifyPropsImportData struct {
	Desktop      *string `json:"desktop"`
	DesktopSound *string `json:"desktop_sound"`

	Email *string `json:"email"`

	Mobile           *string `json:"mobile"`
	MobilePushStatus *string `json:"mobile_push_status"`

	ChannelTrigger  *string `json:"channel"`
	CommentsTrigger *string `json:"comments"`
	MentionKeys     *string `json:"mention_keys"`
}

type UserTeamImportData

type UserTeamImportData struct {
	Name     *string                  `json:"name"`
	Roles    *string                  `json:"roles"`
	Theme    *string                  `json:"theme,omitempty"`
	Channels *[]UserChannelImportData `json:"channels,omitempty"`
}

func ImportUserTeamDataFromTeamMember

func ImportUserTeamDataFromTeamMember(member *model.TeamMemberForExport) *UserTeamImportData

type WebConn

type WebConn struct {
	App       *App
	WebSocket *websocket.Conn
	T         i18n.TranslateFunc
	Locale    string
	Sequence  int64
	UserId    string
	// contains filtered or unexported fields
}

WebConn represents a single websocket connection to a user. It contains all the necessary state to manage sending/receiving data to/from a websocket.

func (*WebConn) Close

func (wc *WebConn) Close()

Close closes the WebConn.

func (*WebConn) GetConnectionID

func (wc *WebConn) GetConnectionID() string

GetConnectionID returns the connection id of the connection.

func (*WebConn) GetSession

func (wc *WebConn) GetSession() *model.Session

GetSession returns the session of the connection.

func (*WebConn) GetSessionExpiresAt

func (wc *WebConn) GetSessionExpiresAt() int64

GetSessionExpiresAt returns the time at which the session expires.

func (*WebConn) GetSessionToken

func (wc *WebConn) GetSessionToken() string

GetSessionToken returns the session token of the connection.

func (*WebConn) InvalidateCache

func (wc *WebConn) InvalidateCache()

InvalidateCache resets all internal data of the WebConn.

func (*WebConn) IsAuthenticated

func (wc *WebConn) IsAuthenticated() bool

IsAuthenticated returns whether the given WebConn is authenticated or not.

func (*WebConn) Pump

func (wc *WebConn) Pump()

Pump starts the WebConn instance. After this, the websocket is ready to send/receive messages.

func (*WebConn) SetConnectionID

func (wc *WebConn) SetConnectionID(id string)

SetConnectionID sets the connection id of the connection.

func (*WebConn) SetSession

func (wc *WebConn) SetSession(v *model.Session)

SetSession sets the session of the connection.

func (*WebConn) SetSessionExpiresAt

func (wc *WebConn) SetSessionExpiresAt(v int64)

SetSessionExpiresAt sets the time at which the session expires.

func (*WebConn) SetSessionToken

func (wc *WebConn) SetSessionToken(v string)

SetSessionToken sets the session token of the connection.

type WebConnConfig

type WebConnConfig struct {
	WebSocket    *websocket.Conn
	Session      model.Session
	TFunc        i18n.TranslateFunc
	Locale       string
	ConnectionID string
	Active       bool
	ReuseCount   int
	// contains filtered or unexported fields
}

type WebSocketRouter

type WebSocketRouter struct {
	// contains filtered or unexported fields
}

func (*WebSocketRouter) Handle

func (wr *WebSocketRouter) Handle(action string, handler webSocketHandler)

func (*WebSocketRouter) ServeWebSocket

func (wr *WebSocketRouter) ServeWebSocket(conn *WebConn, r *model.WebSocketRequest)

Source Files

Jump to

Keyboard shortcuts

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