Automatic Merge
Этот коммит содержится в:
SimonSimonB
2021-02-05 11:22:27 +01:00
коммит произвёл GitHub
родитель 4a8496ef7c
Коммит ffebfbf56f
55 изменённых файлов: 1885 добавлений и 1885 удалений

Просмотреть файл

@@ -203,7 +203,7 @@ func (a *App) TestSiteURL(siteURL string) *model.AppError {
return nil return nil
} }
func (a *App) TestEmail(userId string, cfg *model.Config) *model.AppError { func (a *App) TestEmail(userID string, cfg *model.Config) *model.AppError {
if *cfg.EmailSettings.SMTPServer == "" { if *cfg.EmailSettings.SMTPServer == "" {
return model.NewAppError("testEmail", "api.admin.test_email.missing_server", nil, utils.T("api.context.invalid_param.app_error", map[string]interface{}{"Name": "SMTPServer"}), http.StatusBadRequest) return model.NewAppError("testEmail", "api.admin.test_email.missing_server", nil, utils.T("api.context.invalid_param.app_error", map[string]interface{}{"Name": "SMTPServer"}), http.StatusBadRequest)
} }
@@ -219,7 +219,7 @@ func (a *App) TestEmail(userId string, cfg *model.Config) *model.AppError {
return model.NewAppError("testEmail", "api.admin.test_email.reenter_password", nil, "", http.StatusBadRequest) return model.NewAppError("testEmail", "api.admin.test_email.reenter_password", nil, "", http.StatusBadRequest)
} }
} }
user, err := a.GetUser(userId) user, err := a.GetUser(userID)
if err != nil { if err != nil {
return err return err
} }

Просмотреть файл

@@ -16,7 +16,7 @@ const (
MonthMilliseconds = 31 * DayMilliseconds MonthMilliseconds = 31 * DayMilliseconds
) )
func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *model.AppError) { func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *model.AppError) {
skipIntensiveQueries := false skipIntensiveQueries := false
var systemUserCount int64 var systemUserCount int64
systemUserCount, err := a.Srv().Store.User().Count(model.UserCountOptions{}) systemUserCount, err := a.Srv().Store.User().Count(model.UserCountOptions{})
@@ -46,19 +46,19 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
openChan := make(chan store.StoreResult, 1) openChan := make(chan store.StoreResult, 1)
privateChan := make(chan store.StoreResult, 1) privateChan := make(chan store.StoreResult, 1)
go func() { go func() {
count, err2 := a.Srv().Store.Channel().AnalyticsTypeCount(teamId, model.CHANNEL_OPEN) count, err2 := a.Srv().Store.Channel().AnalyticsTypeCount(teamID, model.CHANNEL_OPEN)
openChan <- store.StoreResult{Data: count, NErr: err2} openChan <- store.StoreResult{Data: count, NErr: err2}
close(openChan) close(openChan)
}() }()
go func() { go func() {
count, err2 := a.Srv().Store.Channel().AnalyticsTypeCount(teamId, model.CHANNEL_PRIVATE) count, err2 := a.Srv().Store.Channel().AnalyticsTypeCount(teamID, model.CHANNEL_PRIVATE)
privateChan <- store.StoreResult{Data: count, NErr: err2} privateChan <- store.StoreResult{Data: count, NErr: err2}
close(privateChan) close(privateChan)
}() }()
var userChan chan store.StoreResult var userChan chan store.StoreResult
var userInactiveChan chan store.StoreResult var userInactiveChan chan store.StoreResult
if teamId == "" { if teamID == "" {
userInactiveChan = make(chan store.StoreResult, 1) userInactiveChan = make(chan store.StoreResult, 1)
go func() { go func() {
count, err2 := a.Srv().Store.User().AnalyticsGetInactiveUsersCount() count, err2 := a.Srv().Store.User().AnalyticsGetInactiveUsersCount()
@@ -68,7 +68,7 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
} else { } else {
userChan = make(chan store.StoreResult, 1) userChan = make(chan store.StoreResult, 1)
go func() { go func() {
count, err2 := a.Srv().Store.User().Count(model.UserCountOptions{TeamId: teamId}) count, err2 := a.Srv().Store.User().Count(model.UserCountOptions{TeamId: teamID})
userChan <- store.StoreResult{Data: count, NErr: err2} userChan <- store.StoreResult{Data: count, NErr: err2}
close(userChan) close(userChan)
}() }()
@@ -78,7 +78,7 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
if !skipIntensiveQueries { if !skipIntensiveQueries {
postChan = make(chan store.StoreResult, 1) postChan = make(chan store.StoreResult, 1)
go func() { go func() {
count, err2 := a.Srv().Store.Post().AnalyticsPostCount(teamId, false, false) count, err2 := a.Srv().Store.Post().AnalyticsPostCount(teamID, false, false)
postChan <- store.StoreResult{Data: count, NErr: err2} postChan <- store.StoreResult{Data: count, NErr: err2}
close(postChan) close(postChan)
}() }()
@@ -199,7 +199,7 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
return rows, nil return rows, nil
} }
analyticsRows, nErr := a.Srv().Store.Post().AnalyticsPostCountsByDay(&model.AnalyticsPostCountsOptions{ analyticsRows, nErr := a.Srv().Store.Post().AnalyticsPostCountsByDay(&model.AnalyticsPostCountsOptions{
TeamId: teamId, TeamId: teamID,
BotsOnly: true, BotsOnly: true,
YesterdayOnly: false, YesterdayOnly: false,
}) })
@@ -214,7 +214,7 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
return rows, nil return rows, nil
} }
analyticsRows, nErr := a.Srv().Store.Post().AnalyticsPostCountsByDay(&model.AnalyticsPostCountsOptions{ analyticsRows, nErr := a.Srv().Store.Post().AnalyticsPostCountsByDay(&model.AnalyticsPostCountsOptions{
TeamId: teamId, TeamId: teamID,
BotsOnly: false, BotsOnly: false,
YesterdayOnly: false, YesterdayOnly: false,
}) })
@@ -229,7 +229,7 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
return rows, nil return rows, nil
} }
analyticsRows, nErr := a.Srv().Store.Post().AnalyticsUserCountsWithPostsByDay(teamId) analyticsRows, nErr := a.Srv().Store.Post().AnalyticsUserCountsWithPostsByDay(teamID)
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("GetAnalytics", "app.post.analytics_user_counts_posts_by_day.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetAnalytics", "app.post.analytics_user_counts_posts_by_day.app_error", nil, nErr.Error(), http.StatusInternalServerError)
} }
@@ -246,21 +246,21 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
iHookChan := make(chan store.StoreResult, 1) iHookChan := make(chan store.StoreResult, 1)
go func() { go func() {
c, err2 := a.Srv().Store.Webhook().AnalyticsIncomingCount(teamId) c, err2 := a.Srv().Store.Webhook().AnalyticsIncomingCount(teamID)
iHookChan <- store.StoreResult{Data: c, NErr: err2} iHookChan <- store.StoreResult{Data: c, NErr: err2}
close(iHookChan) close(iHookChan)
}() }()
oHookChan := make(chan store.StoreResult, 1) oHookChan := make(chan store.StoreResult, 1)
go func() { go func() {
c, err2 := a.Srv().Store.Webhook().AnalyticsOutgoingCount(teamId) c, err2 := a.Srv().Store.Webhook().AnalyticsOutgoingCount(teamID)
oHookChan <- store.StoreResult{Data: c, NErr: err2} oHookChan <- store.StoreResult{Data: c, NErr: err2}
close(oHookChan) close(oHookChan)
}() }()
commandChan := make(chan store.StoreResult, 1) commandChan := make(chan store.StoreResult, 1)
go func() { go func() {
c, nErr := a.Srv().Store.Command().AnalyticsCommandCount(teamId) c, nErr := a.Srv().Store.Command().AnalyticsCommandCount(teamID)
commandChan <- store.StoreResult{Data: c, NErr: nErr} commandChan <- store.StoreResult{Data: c, NErr: nErr}
close(commandChan) close(commandChan)
}() }()
@@ -278,14 +278,14 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
if !skipIntensiveQueries { if !skipIntensiveQueries {
fileChan = make(chan store.StoreResult, 1) fileChan = make(chan store.StoreResult, 1)
go func() { go func() {
count, err2 := a.Srv().Store.Post().AnalyticsPostCount(teamId, true, false) count, err2 := a.Srv().Store.Post().AnalyticsPostCount(teamID, true, false)
fileChan <- store.StoreResult{Data: count, NErr: err2} fileChan <- store.StoreResult{Data: count, NErr: err2}
close(fileChan) close(fileChan)
}() }()
hashtagChan = make(chan store.StoreResult, 1) hashtagChan = make(chan store.StoreResult, 1)
go func() { go func() {
count, err2 := a.Srv().Store.Post().AnalyticsPostCount(teamId, false, true) count, err2 := a.Srv().Store.Post().AnalyticsPostCount(teamID, false, true)
hashtagChan <- store.StoreResult{Data: count, NErr: err2} hashtagChan <- store.StoreResult{Data: count, NErr: err2}
close(hashtagChan) close(hashtagChan)
}() }()
@@ -341,8 +341,8 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
return nil, nil return nil, nil
} }
func (a *App) GetRecentlyActiveUsersForTeam(teamId string) (map[string]*model.User, *model.AppError) { func (a *App) GetRecentlyActiveUsersForTeam(teamID string) (map[string]*model.User, *model.AppError) {
users, err := a.Srv().Store.User().GetRecentlyActiveUsersForTeam(teamId, 0, 100, nil) users, err := a.Srv().Store.User().GetRecentlyActiveUsersForTeam(teamID, 0, 100, nil)
if err != nil { if err != nil {
return nil, model.NewAppError("GetRecentlyActiveUsersForTeam", "app.user.get_recently_active_users.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetRecentlyActiveUsersForTeam", "app.user.get_recently_active_users.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -356,8 +356,8 @@ func (a *App) GetRecentlyActiveUsersForTeam(teamId string) (map[string]*model.Us
return userMap, nil return userMap, nil
} }
func (a *App) GetRecentlyActiveUsersForTeamPage(teamId string, page, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError) { func (a *App) GetRecentlyActiveUsersForTeamPage(teamID string, page, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError) {
users, err := a.Srv().Store.User().GetRecentlyActiveUsersForTeam(teamId, page*perPage, perPage, viewRestrictions) users, err := a.Srv().Store.User().GetRecentlyActiveUsersForTeam(teamID, page*perPage, perPage, viewRestrictions)
if err != nil { if err != nil {
return nil, model.NewAppError("GetRecentlyActiveUsersForTeamPage", "app.user.get_recently_active_users.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetRecentlyActiveUsersForTeamPage", "app.user.get_recently_active_users.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -365,8 +365,8 @@ func (a *App) GetRecentlyActiveUsersForTeamPage(teamId string, page, perPage int
return a.sanitizeProfiles(users, asAdmin), nil return a.sanitizeProfiles(users, asAdmin), nil
} }
func (a *App) GetNewUsersForTeamPage(teamId string, page, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError) { func (a *App) GetNewUsersForTeamPage(teamID string, page, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError) {
users, err := a.Srv().Store.User().GetNewUsersForTeam(teamId, page*perPage, perPage, viewRestrictions) users, err := a.Srv().Store.User().GetNewUsersForTeam(teamID, page*perPage, perPage, viewRestrictions)
if err != nil { if err != nil {
return nil, model.NewAppError("GetNewUsersForTeamPage", "app.user.get_new_users.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetNewUsersForTeamPage", "app.user.get_new_users.app_error", nil, err.Error(), http.StatusInternalServerError)
} }

Просмотреть файл

@@ -37,11 +37,11 @@ import (
type AppIface interface { type AppIface interface {
// @openTracingParams args // @openTracingParams args
ExecuteCommand(args *model.CommandArgs) (*model.CommandResponse, *model.AppError) ExecuteCommand(args *model.CommandArgs) (*model.CommandResponse, *model.AppError)
// @openTracingParams teamId // @openTracingParams teamID
// previous ListCommands now ListAutocompleteCommands // previous ListCommands now ListAutocompleteCommands
ListAutocompleteCommands(teamId string, T goi18n.TranslateFunc) ([]*model.Command, *model.AppError) ListAutocompleteCommands(teamID string, T goi18n.TranslateFunc) ([]*model.Command, *model.AppError)
// @openTracingParams teamId, skipSlackParsing // @openTracingParams teamID, skipSlackParsing
CreateCommandPost(post *model.Post, teamId string, response *model.CommandResponse, skipSlackParsing bool) (*model.Post, *model.AppError) CreateCommandPost(post *model.Post, teamID string, response *model.CommandResponse, skipSlackParsing bool) (*model.Post, *model.AppError)
// AddCursorIdsForPostList adds NextPostId and PrevPostId as cursor to the PostList. // 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, // The conditional blocks ensure that it sets those cursor IDs immediately as afterPost, beforePost or empty,
// and only query to database whenever necessary. // and only query to database whenever necessary.
@@ -126,10 +126,10 @@ type AppIface interface {
FillInPostProps(post *model.Post, channel *model.Channel) *model.AppError 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 // FilterNonGroupChannelMembers returns the subset of the given user IDs of the users who are not members of groups
// associated to the channel excluding bots // associated to the channel excluding bots
FilterNonGroupChannelMembers(userIds []string, channel *model.Channel) ([]string, error) 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 // FilterNonGroupTeamMembers returns the subset of the given user IDs of the users who are not members of groups
// associated to the team excluding bots. // associated to the team excluding bots.
FilterNonGroupTeamMembers(userIds []string, team *model.Team) ([]string, error) FilterNonGroupTeamMembers(userIDs []string, team *model.Team) ([]string, error)
// GetAllLdapGroupsPage retrieves all LDAP groups under the configured base DN using the default or configured group // GetAllLdapGroupsPage retrieves all LDAP groups under the configured base DN using the default or configured group
// filter. // filter.
GetAllLdapGroupsPage(page int, perPage int, opts model.LdapGroupSearchOpts) ([]*model.Group, int, *model.AppError) GetAllLdapGroupsPage(page int, perPage int, opts model.LdapGroupSearchOpts) ([]*model.Group, int, *model.AppError)
@@ -155,7 +155,7 @@ type AppIface interface {
// GetFilteredUsersStats is used to get a count of users based on the set of filters supported by UserCountOptions. // 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) 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 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) GetGroupsByTeam(teamID string, opts model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, int, *model.AppError)
// GetKnownUsers returns the list of user ids of users with any direct // GetKnownUsers returns the list of user ids of users with any direct
// relationship with a user. That means any user sharing any channel, including // relationship with a user. That means any user sharing any channel, including
// direct and group channels. // direct and group channels.
@@ -178,7 +178,7 @@ type AppIface interface {
// lock instead. // lock instead.
GetPluginsEnvironment() *plugin.Environment GetPluginsEnvironment() *plugin.Environment
// GetProductNotices is called from the frontend to fetch the product notices that are relevant to the caller // GetProductNotices is called from the frontend to fetch the product notices that are relevant to the caller
GetProductNotices(userId, teamId string, client model.NoticeClientType, clientVersion string, locale string) (model.NoticeMessages, *model.AppError) GetProductNotices(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 will return the actual public key saved in the `name` file.
GetPublicKey(name string) ([]byte, *model.AppError) GetPublicKey(name string) ([]byte, *model.AppError)
// GetSanitizedConfig gets the configuration for a system admin without any secrets. // GetSanitizedConfig gets the configuration for a system admin without any secrets.
@@ -193,7 +193,7 @@ type AppIface interface {
// GetTeamGroupUsers returns the users who are associated to the team via GroupTeams and GroupMembers. // GetTeamGroupUsers returns the users who are associated to the team via GroupTeams and GroupMembers.
GetTeamGroupUsers(teamID string) ([]*model.User, *model.AppError) 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 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) GetTeamSchemeChannelRoles(teamID string) (guestRoleName string, userRoleName string, adminRoleName string, err *model.AppError)
// GetTotalUsersStats is used for the DM list total // GetTotalUsersStats is used for the DM list total
GetTotalUsersStats(viewRestrictions *model.ViewUsersRestrictions) (*model.UsersStats, *model.AppError) GetTotalUsersStats(viewRestrictions *model.ViewUsersRestrictions) (*model.UsersStats, *model.AppError)
// HubRegister registers a connection to a hub. // HubRegister registers a connection to a hub.
@@ -223,10 +223,10 @@ type AppIface interface {
MarkChannelAsUnreadFromPost(postID string, userID string) (*model.ChannelUnreadAt, *model.AppError) MarkChannelAsUnreadFromPost(postID string, userID string) (*model.ChannelUnreadAt, *model.AppError)
// MentionsToPublicChannels returns all the mentions to public channels, // MentionsToPublicChannels returns all the mentions to public channels,
// linking them to their channels // linking them to their channels
MentionsToPublicChannels(message, teamId string) model.ChannelMentionMap MentionsToPublicChannels(message, teamID string) model.ChannelMentionMap
// MentionsToTeamMembers returns all the @ mentions found in message that // MentionsToTeamMembers returns all the @ mentions found in message that
// belong to users in the specified team, linking them to their users // belong to users in the specified team, linking them to their users
MentionsToTeamMembers(message, teamId string) model.UserMentionMap MentionsToTeamMembers(message, teamID string) model.UserMentionMap
// MoveChannel method is prone to data races if someone joins to channel during the move process. However this // 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. // function is only exposed to sysadmins and the possibility of this edge case is relatively small.
MoveChannel(team *model.Team, channel *model.Channel, user *model.User) *model.AppError MoveChannel(team *model.Team, channel *model.Channel, user *model.User) *model.AppError
@@ -289,7 +289,7 @@ type AppIface interface {
// SetStatusLastActivityAt sets the last activity at for a user on the local app server and updates // 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 // 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 // while an 'away' device is still connected
SetStatusLastActivityAt(userId string, activityAt int64) SetStatusLastActivityAt(userID string, activityAt int64)
// SyncPlugins synchronizes the plugins installed locally // SyncPlugins synchronizes the plugins installed locally
// with the plugin bundles available in the file store. // with the plugin bundles available in the file store.
SyncPlugins() *model.AppError SyncPlugins() *model.AppError
@@ -324,10 +324,10 @@ type AppIface interface {
// UpdateProductNotices is called periodically from a scheduled worker to fetch new notices and update the cache // UpdateProductNotices is called periodically from a scheduled worker to fetch new notices and update the cache
UpdateProductNotices() *model.AppError UpdateProductNotices() *model.AppError
// UpdateViewedProductNotices is called from the frontend to mark a set of notices as 'viewed' by user // UpdateViewedProductNotices is called from the frontend to mark a set of notices as 'viewed' by user
UpdateViewedProductNotices(userId string, noticeIds []string) *model.AppError UpdateViewedProductNotices(userID string, noticeIds []string) *model.AppError
// UpdateViewedProductNoticesForNewUser is called when new user is created to mark all current notices for this // 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 // user as viewed in order to avoid showing them imminently on first login
UpdateViewedProductNoticesForNewUser(userId string) UpdateViewedProductNoticesForNewUser(userID string)
// UpdateWebConnUserActivity sets the LastUserActivityAt of the hub for the given session. // UpdateWebConnUserActivity sets the LastUserActivityAt of the hub for the given session.
UpdateWebConnUserActivity(session model.Session, activityAt int64) UpdateWebConnUserActivity(session model.Session, activityAt int64)
// UploadFile uploads a single file in form of a completely constructed byte array for a channel. // UploadFile uploads a single file in form of a completely constructed byte array for a channel.
@@ -341,20 +341,20 @@ type AppIface interface {
// Uploads some files to the given team and channel as the given user. files and filenames should have // 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 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. // The provided files should be closed by the caller so that they are not leaked.
UploadFiles(teamId string, channelId string, userId string, files []io.ReadCloser, filenames []string, clientIds []string, now time.Time) (*model.FileUploadResponse, *model.AppError) UploadFiles(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 // UserIsInAdminRoleGroup returns true at least one of the user's groups are configured to set the members as
// admins in the given syncable. // admins in the given syncable.
UserIsInAdminRoleGroup(userID, syncableID string, syncableType model.GroupSyncableType) (bool, *model.AppError) 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 checks that the given signature corresponds to the given plugin and matches a trusted certificate.
VerifyPlugin(plugin, signature io.ReadSeeker) *model.AppError VerifyPlugin(plugin, signature io.ReadSeeker) *model.AppError
//GetUserStatusesByIds used by apiV4 //GetUserStatusesByIds used by apiV4
GetUserStatusesByIds(userIds []string) ([]*model.Status, *model.AppError) GetUserStatusesByIds(userIDs []string) ([]*model.Status, *model.AppError)
AcceptLanguage() string AcceptLanguage() string
AccountMigration() einterfaces.AccountMigrationInterface AccountMigration() einterfaces.AccountMigrationInterface
ActivateMfa(userId, token string) *model.AppError ActivateMfa(userID, token string) *model.AppError
AddChannelMember(userId string, channel *model.Channel, userRequestorId string, postRootId string) (*model.ChannelMember, *model.AppError) AddChannelMember(userID string, channel *model.Channel, userRequestorId string, postRootId string) (*model.ChannelMember, *model.AppError)
AddConfigListener(listener func(*model.Config, *model.Config)) string AddConfigListener(listener func(*model.Config, *model.Config)) string
AddDirectChannels(teamId string, user *model.User) *model.AppError AddDirectChannels(teamID string, user *model.User) *model.AppError
AddLdapPrivateCertificate(fileData *multipart.FileHeader) *model.AppError AddLdapPrivateCertificate(fileData *multipart.FileHeader) *model.AppError
AddLdapPublicCertificate(fileData *multipart.FileHeader) *model.AppError AddLdapPublicCertificate(fileData *multipart.FileHeader) *model.AppError
AddSamlIdpCertificate(fileData *multipart.FileHeader) *model.AppError AddSamlIdpCertificate(fileData *multipart.FileHeader) *model.AppError
@@ -363,27 +363,27 @@ type AppIface interface {
AddSessionToCache(session *model.Session) AddSessionToCache(session *model.Session)
AddStatusCache(status *model.Status) AddStatusCache(status *model.Status)
AddStatusCacheSkipClusterSend(status *model.Status) AddStatusCacheSkipClusterSend(status *model.Status)
AddTeamMember(teamId, userId string) (*model.TeamMember, *model.AppError) AddTeamMember(teamID, userID string) (*model.TeamMember, *model.AppError)
AddTeamMemberByInviteId(inviteId, userId string) (*model.TeamMember, *model.AppError) AddTeamMemberByInviteId(inviteId, userID string) (*model.TeamMember, *model.AppError)
AddTeamMemberByToken(userId, tokenId string) (*model.TeamMember, *model.AppError) AddTeamMemberByToken(userID, tokenID string) (*model.TeamMember, *model.AppError)
AddTeamMembers(teamId string, userIds []string, userRequestorId string, graceful bool) ([]*model.TeamMemberWithError, *model.AppError) AddTeamMembers(teamID string, userIDs []string, userRequestorId string, graceful bool) ([]*model.TeamMemberWithError, *model.AppError)
AddUserToChannel(user *model.User, channel *model.Channel) (*model.ChannelMember, *model.AppError) AddUserToChannel(user *model.User, channel *model.Channel) (*model.ChannelMember, *model.AppError)
AddUserToTeam(teamId string, userId string, userRequestorId string) (*model.Team, *model.AppError) AddUserToTeam(teamID string, userID string, userRequestorId string) (*model.Team, *model.AppError)
AddUserToTeamByInviteId(inviteId string, userId string) (*model.Team, *model.AppError) AddUserToTeamByInviteId(inviteId string, userID string) (*model.Team, *model.AppError)
AddUserToTeamByTeamId(teamId string, user *model.User) *model.AppError AddUserToTeamByTeamId(teamID string, user *model.User) *model.AppError
AddUserToTeamByToken(userId string, tokenId string) (*model.Team, *model.AppError) AddUserToTeamByToken(userID string, tokenID string) (*model.Team, *model.AppError)
AdjustImage(file io.Reader) (*bytes.Buffer, *model.AppError) AdjustImage(file io.Reader) (*bytes.Buffer, *model.AppError)
AllowOAuthAppAccessToUser(userId string, authRequest *model.AuthorizeRequest) (string, *model.AppError) AllowOAuthAppAccessToUser(userID string, authRequest *model.AuthorizeRequest) (string, *model.AppError)
AppendFile(fr io.Reader, path string) (int64, *model.AppError) AppendFile(fr io.Reader, path string) (int64, *model.AppError)
AsymmetricSigningKey() *ecdsa.PrivateKey AsymmetricSigningKey() *ecdsa.PrivateKey
AttachDeviceId(sessionId string, deviceId string, expiresAt int64) *model.AppError AttachDeviceId(sessionId string, deviceId string, expiresAt int64) *model.AppError
AttachSessionCookies(w http.ResponseWriter, r *http.Request) AttachSessionCookies(w http.ResponseWriter, r *http.Request)
AuthenticateUserForLogin(id, loginId, password, mfaToken, cwsToken string, ldapOnly bool) (user *model.User, err *model.AppError) AuthenticateUserForLogin(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) AuthorizeOAuthUser(w http.ResponseWriter, r *http.Request, service, code, state, redirectUri string) (io.ReadCloser, string, map[string]string, *model.User, *model.AppError)
AutocompleteChannels(teamId string, term string) (*model.ChannelList, *model.AppError) AutocompleteChannels(teamID string, term string) (*model.ChannelList, *model.AppError)
AutocompleteChannelsForSearch(teamId string, userId string, term string) (*model.ChannelList, *model.AppError) AutocompleteChannelsForSearch(teamID string, userID string, term string) (*model.ChannelList, *model.AppError)
AutocompleteUsersInChannel(teamId string, channelId string, term string, options *model.UserSearchOptions) (*model.UserAutocompleteInChannel, *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) AutocompleteUsersInTeam(teamID string, term string, options *model.UserSearchOptions) (*model.UserAutocompleteInTeam, *model.AppError)
BroadcastStatus(status *model.Status) BroadcastStatus(status *model.Status)
BuildPostReactions(postId string) (*[]ReactionImportData, *model.AppError) 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) 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)
@@ -407,8 +407,8 @@ type AppIface interface {
ClearChannelMembersCache(channelID string) ClearChannelMembersCache(channelID string)
ClearSessionCacheForAllUsers() ClearSessionCacheForAllUsers()
ClearSessionCacheForAllUsersSkipClusterSend() ClearSessionCacheForAllUsersSkipClusterSend()
ClearSessionCacheForUser(userId string) ClearSessionCacheForUser(userID string)
ClearSessionCacheForUserSkipClusterSend(userId string) ClearSessionCacheForUserSkipClusterSend(userID string)
ClearTeamMembersCache(teamID string) ClearTeamMembersCache(teamID string)
ClientConfig() map[string]string ClientConfig() map[string]string
ClientConfigHash() string ClientConfigHash() string
@@ -416,72 +416,72 @@ type AppIface interface {
Cluster() einterfaces.ClusterInterface Cluster() einterfaces.ClusterInterface
CompareAndDeletePluginKey(pluginId string, key string, oldValue []byte) (bool, *model.AppError) CompareAndDeletePluginKey(pluginId string, key string, oldValue []byte) (bool, *model.AppError)
CompareAndSetPluginKey(pluginId string, key string, oldValue, newValue []byte) (bool, *model.AppError) CompareAndSetPluginKey(pluginId string, key string, oldValue, newValue []byte) (bool, *model.AppError)
CompleteOAuth(service string, body io.ReadCloser, teamId string, props map[string]string, tokenUser *model.User) (*model.User, *model.AppError) CompleteOAuth(service string, body io.ReadCloser, teamID string, props map[string]string, tokenUser *model.User) (*model.User, *model.AppError)
CompleteSwitchWithOAuth(service string, userData io.Reader, email string, tokenUser *model.User) (*model.User, *model.AppError) CompleteSwitchWithOAuth(service string, userData io.Reader, email string, tokenUser *model.User) (*model.User, *model.AppError)
Compliance() einterfaces.ComplianceInterface Compliance() einterfaces.ComplianceInterface
Config() *model.Config Config() *model.Config
Context() context.Context Context() context.Context
CopyFileInfos(userId string, fileIds []string) ([]string, *model.AppError) CopyFileInfos(userID string, fileIds []string) ([]string, *model.AppError)
CreateChannel(channel *model.Channel, addMember bool) (*model.Channel, *model.AppError) CreateChannel(channel *model.Channel, addMember bool) (*model.Channel, *model.AppError)
CreateChannelWithUser(channel *model.Channel, userId string) (*model.Channel, *model.AppError) CreateChannelWithUser(channel *model.Channel, userID string) (*model.Channel, *model.AppError)
CreateCommand(cmd *model.Command) (*model.Command, *model.AppError) CreateCommand(cmd *model.Command) (*model.Command, *model.AppError)
CreateCommandWebhook(commandId string, args *model.CommandArgs) (*model.CommandWebhook, *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) CreateEmoji(sessionUserId string, emoji *model.Emoji, multiPartImageData *multipart.Form) (*model.Emoji, *model.AppError)
CreateGroup(group *model.Group) (*model.Group, *model.AppError) CreateGroup(group *model.Group) (*model.Group, *model.AppError)
CreateGroupChannel(userIds []string, creatorId string) (*model.Channel, *model.AppError) CreateGroupChannel(userIDs []string, creatorId string) (*model.Channel, *model.AppError)
CreateIncomingWebhookForChannel(creatorId string, channel *model.Channel, hook *model.IncomingWebhook) (*model.IncomingWebhook, *model.AppError) CreateIncomingWebhookForChannel(creatorId string, channel *model.Channel, hook *model.IncomingWebhook) (*model.IncomingWebhook, *model.AppError)
CreateJob(job *model.Job) (*model.Job, *model.AppError) CreateJob(job *model.Job) (*model.Job, *model.AppError)
CreateOAuthApp(app *model.OAuthApp) (*model.OAuthApp, *model.AppError) CreateOAuthApp(app *model.OAuthApp) (*model.OAuthApp, *model.AppError)
CreateOAuthStateToken(extra string) (*model.Token, *model.AppError) CreateOAuthStateToken(extra string) (*model.Token, *model.AppError)
CreateOAuthUser(service string, userData io.Reader, teamId string, tokenUser *model.User) (*model.User, *model.AppError) CreateOAuthUser(service string, userData io.Reader, teamID string, tokenUser *model.User) (*model.User, *model.AppError)
CreateOutgoingWebhook(hook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError) CreateOutgoingWebhook(hook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError)
CreatePasswordRecoveryToken(userId, email string) (*model.Token, *model.AppError) CreatePasswordRecoveryToken(userID, email string) (*model.Token, *model.AppError)
CreatePost(post *model.Post, channel *model.Channel, triggerWebhooks, setOnline bool) (savedPost *model.Post, err *model.AppError) CreatePost(post *model.Post, channel *model.Channel, triggerWebhooks, setOnline bool) (savedPost *model.Post, err *model.AppError)
CreatePostAsUser(post *model.Post, currentSessionId string, setOnline bool) (*model.Post, *model.AppError) CreatePostAsUser(post *model.Post, currentSessionId string, setOnline bool) (*model.Post, *model.AppError)
CreatePostMissingChannel(post *model.Post, triggerWebhooks bool) (*model.Post, *model.AppError) CreatePostMissingChannel(post *model.Post, triggerWebhooks bool) (*model.Post, *model.AppError)
CreateRole(role *model.Role) (*model.Role, *model.AppError) CreateRole(role *model.Role) (*model.Role, *model.AppError)
CreateScheme(scheme *model.Scheme) (*model.Scheme, *model.AppError) CreateScheme(scheme *model.Scheme) (*model.Scheme, *model.AppError)
CreateSession(session *model.Session) (*model.Session, *model.AppError) CreateSession(session *model.Session) (*model.Session, *model.AppError)
CreateSidebarCategory(userId, teamId string, newCategory *model.SidebarCategoryWithChannels) (*model.SidebarCategoryWithChannels, *model.AppError) CreateSidebarCategory(userID, teamID string, newCategory *model.SidebarCategoryWithChannels) (*model.SidebarCategoryWithChannels, *model.AppError)
CreateTeam(team *model.Team) (*model.Team, *model.AppError) CreateTeam(team *model.Team) (*model.Team, *model.AppError)
CreateTeamWithUser(team *model.Team, userId string) (*model.Team, *model.AppError) CreateTeamWithUser(team *model.Team, userID string) (*model.Team, *model.AppError)
CreateTermsOfService(text, userId string) (*model.TermsOfService, *model.AppError) CreateTermsOfService(text, userID string) (*model.TermsOfService, *model.AppError)
CreateUploadSession(us *model.UploadSession) (*model.UploadSession, *model.AppError) CreateUploadSession(us *model.UploadSession) (*model.UploadSession, *model.AppError)
CreateUserAccessToken(token *model.UserAccessToken) (*model.UserAccessToken, *model.AppError) CreateUserAccessToken(token *model.UserAccessToken) (*model.UserAccessToken, *model.AppError)
CreateUserAsAdmin(user *model.User, redirect string) (*model.User, *model.AppError) CreateUserAsAdmin(user *model.User, redirect string) (*model.User, *model.AppError)
CreateUserFromSignup(user *model.User, redirect string) (*model.User, *model.AppError) CreateUserFromSignup(user *model.User, redirect string) (*model.User, *model.AppError)
CreateUserWithInviteId(user *model.User, inviteId, redirect string) (*model.User, *model.AppError) CreateUserWithInviteId(user *model.User, inviteId, redirect string) (*model.User, *model.AppError)
CreateUserWithToken(user *model.User, token *model.Token) (*model.User, *model.AppError) CreateUserWithToken(user *model.User, token *model.Token) (*model.User, *model.AppError)
CreateWebhookPost(userId string, channel *model.Channel, text, overrideUsername, overrideIconUrl, overrideIconEmoji string, props model.StringInterface, postType string, postRootId string) (*model.Post, *model.AppError) CreateWebhookPost(userID string, channel *model.Channel, text, overrideUsername, overrideIconURL, overrideIconEmoji string, props model.StringInterface, postType string, postRootId string) (*model.Post, *model.AppError)
DBHealthCheckDelete() error DBHealthCheckDelete() error
DBHealthCheckWrite() error DBHealthCheckWrite() error
DataRetention() einterfaces.DataRetentionInterface DataRetention() einterfaces.DataRetentionInterface
DeactivateGuests() *model.AppError DeactivateGuests() *model.AppError
DeactivateMfa(userId string) *model.AppError DeactivateMfa(userID string) *model.AppError
DeauthorizeOAuthAppForUser(userId, appId string) *model.AppError DeauthorizeOAuthAppForUser(userID, appId string) *model.AppError
DeleteAllExpiredPluginKeys() *model.AppError DeleteAllExpiredPluginKeys() *model.AppError
DeleteAllKeysForPlugin(pluginId string) *model.AppError DeleteAllKeysForPlugin(pluginId string) *model.AppError
DeleteBrandImage() *model.AppError DeleteBrandImage() *model.AppError
DeleteChannel(channel *model.Channel, userId string) *model.AppError DeleteChannel(channel *model.Channel, userID string) *model.AppError
DeleteCommand(commandId string) *model.AppError DeleteCommand(commandID string) *model.AppError
DeleteEmoji(emoji *model.Emoji) *model.AppError DeleteEmoji(emoji *model.Emoji) *model.AppError
DeleteEphemeralPost(userId, postId string) DeleteEphemeralPost(userID, postId string)
DeleteFlaggedPosts(postId string) DeleteFlaggedPosts(postId string)
DeleteGroup(groupID string) (*model.Group, *model.AppError) DeleteGroup(groupID string) (*model.Group, *model.AppError)
DeleteGroupMember(groupID string, userID string) (*model.GroupMember, *model.AppError) DeleteGroupMember(groupID string, userID string) (*model.GroupMember, *model.AppError)
DeleteGroupSyncable(groupID string, syncableID string, syncableType model.GroupSyncableType) (*model.GroupSyncable, *model.AppError) DeleteGroupSyncable(groupID string, syncableID string, syncableType model.GroupSyncableType) (*model.GroupSyncable, *model.AppError)
DeleteIncomingWebhook(hookId string) *model.AppError DeleteIncomingWebhook(hookID string) *model.AppError
DeleteOAuthApp(appId string) *model.AppError DeleteOAuthApp(appId string) *model.AppError
DeleteOutgoingWebhook(hookId string) *model.AppError DeleteOutgoingWebhook(hookID string) *model.AppError
DeletePluginKey(pluginId string, key string) *model.AppError DeletePluginKey(pluginId string, key string) *model.AppError
DeletePost(postId, deleteByID string) (*model.Post, *model.AppError) DeletePost(postId, deleteByID string) (*model.Post, *model.AppError)
DeletePostFiles(post *model.Post) DeletePostFiles(post *model.Post)
DeletePreferences(userId string, preferences model.Preferences) *model.AppError DeletePreferences(userID string, preferences model.Preferences) *model.AppError
DeleteReactionForPost(reaction *model.Reaction) *model.AppError DeleteReactionForPost(reaction *model.Reaction) *model.AppError
DeleteScheme(schemeId string) (*model.Scheme, *model.AppError) DeleteScheme(schemeId string) (*model.Scheme, *model.AppError)
DeleteSidebarCategory(userId, teamId, categoryId string) *model.AppError DeleteSidebarCategory(userID, teamID, categoryId string) *model.AppError
DeleteToken(token *model.Token) *model.AppError DeleteToken(token *model.Token) *model.AppError
DisableAutoResponder(userId string, asAdmin bool) *model.AppError DisableAutoResponder(userID string, asAdmin bool) *model.AppError
DisableUserAccessToken(token *model.UserAccessToken) *model.AppError DisableUserAccessToken(token *model.UserAccessToken) *model.AppError
DoAppMigrations() DoAppMigrations()
DoCommandRequest(cmd *model.Command, p url.Values) (*model.Command, *model.CommandResponse, *model.AppError) DoCommandRequest(cmd *model.Command, p url.Values) (*model.Command, *model.CommandResponse, *model.AppError)
@@ -489,8 +489,8 @@ type AppIface interface {
DoGuestRolesCreationMigration() DoGuestRolesCreationMigration()
DoLocalRequest(rawURL string, body []byte) (*http.Response, *model.AppError) DoLocalRequest(rawURL string, body []byte) (*http.Response, *model.AppError)
DoLogin(w http.ResponseWriter, r *http.Request, user *model.User, deviceId string, isMobile, isOAuthUser, isSaml bool) *model.AppError DoLogin(w http.ResponseWriter, r *http.Request, user *model.User, deviceId string, isMobile, isOAuthUser, isSaml bool) *model.AppError
DoPostAction(postId, actionId, userId, selectedOption string) (string, *model.AppError) DoPostAction(postId, actionId, userID, selectedOption string) (string, *model.AppError)
DoPostActionWithCookie(postId, actionId, userId, selectedOption string, cookie *model.PostActionCookie) (string, *model.AppError) DoPostActionWithCookie(postId, actionId, userID, selectedOption string, cookie *model.PostActionCookie) (string, *model.AppError)
DoSystemConsoleRolesCreationMigration() DoSystemConsoleRolesCreationMigration()
DoUploadFile(now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, *model.AppError) DoUploadFile(now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, *model.AppError)
DoUploadFileExpectModification(now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError) DoUploadFileExpectModification(now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError)
@@ -507,7 +507,7 @@ type AppIface interface {
FillInChannelsProps(channelList *model.ChannelList) *model.AppError FillInChannelsProps(channelList *model.ChannelList) *model.AppError
FilterUsersByVisible(viewer *model.User, otherUsers []*model.User) ([]*model.User, *model.AppError) FilterUsersByVisible(viewer *model.User, otherUsers []*model.User) ([]*model.User, *model.AppError)
FindTeamByName(name string) bool FindTeamByName(name string) bool
GenerateMfaSecret(userId string) (*model.MfaSecret, *model.AppError) GenerateMfaSecret(userID string) (*model.MfaSecret, *model.AppError)
GeneratePublicLink(siteURL string, info *model.FileInfo) string GeneratePublicLink(siteURL string, info *model.FileInfo) string
GenerateSupportPacket() []model.FileData GenerateSupportPacket() []model.FileData
GetActivePluginManifests() ([]*model.Manifest, *model.AppError) GetActivePluginManifests() ([]*model.Manifest, *model.AppError)
@@ -524,43 +524,43 @@ type AppIface interface {
GetAllTeams() ([]*model.Team, *model.AppError) GetAllTeams() ([]*model.Team, *model.AppError)
GetAllTeamsPage(offset int, limit int) ([]*model.Team, *model.AppError) GetAllTeamsPage(offset int, limit int) ([]*model.Team, *model.AppError)
GetAllTeamsPageWithCount(offset int, limit int) (*model.TeamsWithCount, *model.AppError) GetAllTeamsPageWithCount(offset int, limit int) (*model.TeamsWithCount, *model.AppError)
GetAnalytics(name string, teamId string) (model.AnalyticsRows, *model.AppError) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *model.AppError)
GetAudits(userId string, limit int) (model.Audits, *model.AppError) GetAudits(userID string, limit int) (model.Audits, *model.AppError)
GetAuditsPage(userId string, page int, perPage 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) 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) GetAuthorizedAppsForUser(userID string, page, perPage int) ([]*model.OAuthApp, *model.AppError)
GetBrandImage() ([]byte, *model.AppError) GetBrandImage() ([]byte, *model.AppError)
GetBulkReactionsForPosts(postIds []string) (map[string][]*model.Reaction, *model.AppError) GetBulkReactionsForPosts(postIds []string) (map[string][]*model.Reaction, *model.AppError)
GetChannel(channelId string) (*model.Channel, *model.AppError) GetChannel(channelId string) (*model.Channel, *model.AppError)
GetChannelByName(channelName, teamId string, includeDeleted bool) (*model.Channel, *model.AppError) GetChannelByName(channelName, teamID string, includeDeleted bool) (*model.Channel, *model.AppError)
GetChannelByNameForTeamName(channelName, teamName 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) GetChannelCounts(teamID string, userID string) (*model.ChannelCounts, *model.AppError)
GetChannelGuestCount(channelId string) (int64, *model.AppError) GetChannelGuestCount(channelId string) (int64, *model.AppError)
GetChannelMember(channelId string, userId string) (*model.ChannelMember, *model.AppError) GetChannelMember(channelId string, userID string) (*model.ChannelMember, *model.AppError)
GetChannelMemberCount(channelId string) (int64, *model.AppError) GetChannelMemberCount(channelId string) (int64, *model.AppError)
GetChannelMembersByIds(channelId string, userIds []string) (*model.ChannelMembers, *model.AppError) GetChannelMembersByIds(channelId string, userIDs []string) (*model.ChannelMembers, *model.AppError)
GetChannelMembersForUser(teamId string, userId string) (*model.ChannelMembers, *model.AppError) GetChannelMembersForUser(teamID string, userID string) (*model.ChannelMembers, *model.AppError)
GetChannelMembersForUserWithPagination(teamId, userId string, page, perPage int) ([]*model.ChannelMember, *model.AppError) GetChannelMembersForUserWithPagination(teamID, userID string, page, perPage int) ([]*model.ChannelMember, *model.AppError)
GetChannelMembersPage(channelId string, page, perPage int) (*model.ChannelMembers, *model.AppError) GetChannelMembersPage(channelId string, page, perPage int) (*model.ChannelMembers, *model.AppError)
GetChannelMembersTimezones(channelId string) ([]string, *model.AppError) GetChannelMembersTimezones(channelId string) ([]string, *model.AppError)
GetChannelPinnedPostCount(channelId string) (int64, *model.AppError) GetChannelPinnedPostCount(channelId string) (int64, *model.AppError)
GetChannelUnread(channelId, userId string) (*model.ChannelUnread, *model.AppError) GetChannelUnread(channelId, userID string) (*model.ChannelUnread, *model.AppError)
GetChannelsByNames(channelNames []string, teamId string) ([]*model.Channel, *model.AppError) GetChannelsByNames(channelNames []string, teamID string) ([]*model.Channel, *model.AppError)
GetChannelsForScheme(scheme *model.Scheme, offset int, limit int) (model.ChannelList, *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) GetChannelsForSchemePage(scheme *model.Scheme, page int, perPage int) (model.ChannelList, *model.AppError)
GetChannelsForUser(teamId string, userId string, includeDeleted bool, lastDeleteAt int) (*model.ChannelList, *model.AppError) GetChannelsForUser(teamID string, userID string, includeDeleted bool, lastDeleteAt int) (*model.ChannelList, *model.AppError)
GetChannelsUserNotIn(teamId string, userId string, offset int, limit int) (*model.ChannelList, *model.AppError) GetChannelsUserNotIn(teamID string, userID string, offset int, limit int) (*model.ChannelList, *model.AppError)
GetCloudSession(token string) (*model.Session, *model.AppError) GetCloudSession(token string) (*model.Session, *model.AppError)
GetClusterId() string GetClusterId() string
GetClusterStatus() []*model.ClusterInfo GetClusterStatus() []*model.ClusterInfo
GetCommand(commandId string) (*model.Command, *model.AppError) GetCommand(commandID string) (*model.Command, *model.AppError)
GetComplianceFile(job *model.Compliance) ([]byte, *model.AppError) GetComplianceFile(job *model.Compliance) ([]byte, *model.AppError)
GetComplianceReport(reportId string) (*model.Compliance, *model.AppError) GetComplianceReport(reportId string) (*model.Compliance, *model.AppError)
GetComplianceReports(page, perPage int) (model.Compliances, *model.AppError) GetComplianceReports(page, perPage int) (model.Compliances, *model.AppError)
GetCookieDomain() string GetCookieDomain() string
GetDataRetentionPolicy() (*model.DataRetentionPolicy, *model.AppError) GetDataRetentionPolicy() (*model.DataRetentionPolicy, *model.AppError)
GetDefaultProfileImage(user *model.User) ([]byte, *model.AppError) GetDefaultProfileImage(user *model.User) ([]byte, *model.AppError)
GetDeletedChannels(teamId string, offset int, limit int, userId string) (*model.ChannelList, *model.AppError) GetDeletedChannels(teamID string, offset int, limit int, userID string) (*model.ChannelList, *model.AppError)
GetEmoji(emojiId string) (*model.Emoji, *model.AppError) GetEmoji(emojiId string) (*model.Emoji, *model.AppError)
GetEmojiByName(emojiName string) (*model.Emoji, *model.AppError) GetEmojiByName(emojiName string) (*model.Emoji, *model.AppError)
GetEmojiImage(emojiId string) ([]byte, string, *model.AppError) GetEmojiImage(emojiId string) ([]byte, string, *model.AppError)
@@ -571,30 +571,30 @@ type AppIface interface {
GetFileInfos(page, perPage int, opt *model.GetFileInfosOptions) ([]*model.FileInfo, *model.AppError) GetFileInfos(page, perPage int, opt *model.GetFileInfosOptions) ([]*model.FileInfo, *model.AppError)
GetFileInfosForPost(postId string, fromMaster bool) ([]*model.FileInfo, *model.AppError) GetFileInfosForPost(postId string, fromMaster bool) ([]*model.FileInfo, *model.AppError)
GetFileInfosForPostWithMigration(postId string) ([]*model.FileInfo, *model.AppError) GetFileInfosForPostWithMigration(postId string) ([]*model.FileInfo, *model.AppError)
GetFlaggedPosts(userId string, offset int, limit int) (*model.PostList, *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) GetFlaggedPostsForChannel(userID, channelId string, offset int, limit int) (*model.PostList, *model.AppError)
GetFlaggedPostsForTeam(userId, teamId string, offset int, limit int) (*model.PostList, *model.AppError) GetFlaggedPostsForTeam(userID, teamID string, offset int, limit int) (*model.PostList, *model.AppError)
GetGroup(id string) (*model.Group, *model.AppError) GetGroup(id string) (*model.Group, *model.AppError)
GetGroupByName(name string, opts model.GroupSearchOpts) (*model.Group, *model.AppError) GetGroupByName(name string, opts model.GroupSearchOpts) (*model.Group, *model.AppError)
GetGroupByRemoteID(remoteID string, groupSource model.GroupSource) (*model.Group, *model.AppError) GetGroupByRemoteID(remoteID string, groupSource model.GroupSource) (*model.Group, *model.AppError)
GetGroupChannel(userIds []string) (*model.Channel, *model.AppError) GetGroupChannel(userIDs []string) (*model.Channel, *model.AppError)
GetGroupMemberCount(groupID string) (int64, *model.AppError) GetGroupMemberCount(groupID string) (int64, *model.AppError)
GetGroupMemberUsers(groupID string) ([]*model.User, *model.AppError) GetGroupMemberUsers(groupID string) ([]*model.User, *model.AppError)
GetGroupMemberUsersPage(groupID string, page int, perPage int) ([]*model.User, int, *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) GetGroupSyncable(groupID string, syncableID string, syncableType model.GroupSyncableType) (*model.GroupSyncable, *model.AppError)
GetGroupSyncables(groupID 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) GetGroups(page, perPage int, opts model.GroupSearchOpts) ([]*model.Group, *model.AppError)
GetGroupsAssociatedToChannelsByTeam(teamId string, opts model.GroupSearchOpts) (map[string][]*model.GroupWithSchemeAdmin, *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) GetGroupsByChannel(channelId string, opts model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, int, *model.AppError)
GetGroupsByIDs(groupIDs []string) ([]*model.Group, *model.AppError) GetGroupsByIDs(groupIDs []string) ([]*model.Group, *model.AppError)
GetGroupsBySource(groupSource model.GroupSource) ([]*model.Group, *model.AppError) GetGroupsBySource(groupSource model.GroupSource) ([]*model.Group, *model.AppError)
GetGroupsByUserId(userId string) ([]*model.Group, *model.AppError) GetGroupsByUserId(userID string) ([]*model.Group, *model.AppError)
GetHubForUserId(userId string) *Hub GetHubForUserId(userID string) *Hub
GetIncomingWebhook(hookId string) (*model.IncomingWebhook, *model.AppError) GetIncomingWebhook(hookID string) (*model.IncomingWebhook, *model.AppError)
GetIncomingWebhooksForTeamPage(teamId string, page, perPage int) ([]*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) GetIncomingWebhooksForTeamPageByUser(teamID string, userID string, page, perPage int) ([]*model.IncomingWebhook, *model.AppError)
GetIncomingWebhooksPage(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) GetIncomingWebhooksPageByUser(userID string, page, perPage int) ([]*model.IncomingWebhook, *model.AppError)
GetJob(id string) (*model.Job, *model.AppError) GetJob(id string) (*model.Job, *model.AppError)
GetJobs(offset int, limit int) ([]*model.Job, *model.AppError) GetJobs(offset int, limit int) ([]*model.Job, *model.AppError)
GetJobsByType(jobType string, offset int, limit int) ([]*model.Job, *model.AppError) GetJobsByType(jobType string, offset int, limit int) ([]*model.Job, *model.AppError)
@@ -606,30 +606,30 @@ type AppIface interface {
GetMemberCountsByGroup(channelID string, includeTimezones bool) ([]*model.ChannelMemberCountByGroup, *model.AppError) GetMemberCountsByGroup(channelID string, includeTimezones bool) ([]*model.ChannelMemberCountByGroup, *model.AppError)
GetMessageForNotification(post *model.Post, translateFunc i18n.TranslateFunc) string GetMessageForNotification(post *model.Post, translateFunc i18n.TranslateFunc) string
GetMultipleEmojiByName(names []string) ([]*model.Emoji, *model.AppError) GetMultipleEmojiByName(names []string) ([]*model.Emoji, *model.AppError)
GetNewUsersForTeamPage(teamId string, page, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError) GetNewUsersForTeamPage(teamID string, page, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)
GetNextPostIdFromPostList(postList *model.PostList) string GetNextPostIdFromPostList(postList *model.PostList) string
GetNotificationNameFormat(user *model.User) string GetNotificationNameFormat(user *model.User) string
GetNumberOfChannelsOnTeam(teamId string) (int, *model.AppError) GetNumberOfChannelsOnTeam(teamID string) (int, *model.AppError)
GetOAuthAccessTokenForCodeFlow(clientId, grantType, redirectUri, code, secret, refreshToken string) (*model.AccessResponse, *model.AppError) GetOAuthAccessTokenForCodeFlow(clientId, grantType, redirectUri, code, secret, refreshToken string) (*model.AccessResponse, *model.AppError)
GetOAuthAccessTokenForImplicitFlow(userId string, authRequest *model.AuthorizeRequest) (*model.Session, *model.AppError) GetOAuthAccessTokenForImplicitFlow(userID string, authRequest *model.AuthorizeRequest) (*model.Session, *model.AppError)
GetOAuthApp(appId string) (*model.OAuthApp, *model.AppError) GetOAuthApp(appId string) (*model.OAuthApp, *model.AppError)
GetOAuthApps(page, perPage int) ([]*model.OAuthApp, *model.AppError) GetOAuthApps(page, perPage int) ([]*model.OAuthApp, *model.AppError)
GetOAuthAppsByCreator(userId string, 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) GetOAuthCodeRedirect(userID string, authRequest *model.AuthorizeRequest) (string, *model.AppError)
GetOAuthImplicitRedirect(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) 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) GetOAuthSignupEndpoint(w http.ResponseWriter, r *http.Request, service, teamID string) (string, *model.AppError)
GetOAuthStateToken(token string) (*model.Token, *model.AppError) GetOAuthStateToken(token string) (*model.Token, *model.AppError)
GetOpenGraphMetadata(requestURL string) *opengraph.OpenGraph GetOpenGraphMetadata(requestURL string) *opengraph.OpenGraph
GetOrCreateDirectChannel(userId, otherUserId string) (*model.Channel, *model.AppError) GetOrCreateDirectChannel(userID, otherUserId string) (*model.Channel, *model.AppError)
GetOutgoingWebhook(hookId string) (*model.OutgoingWebhook, *model.AppError) GetOutgoingWebhook(hookID string) (*model.OutgoingWebhook, *model.AppError)
GetOutgoingWebhooksForChannelPageByUser(channelId string, userId string, page, perPage int) ([]*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) GetOutgoingWebhooksForTeamPage(teamID string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError)
GetOutgoingWebhooksForTeamPageByUser(teamId string, userId 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) GetOutgoingWebhooksPage(page, perPage int) ([]*model.OutgoingWebhook, *model.AppError)
GetOutgoingWebhooksPageByUser(userId string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError) GetOutgoingWebhooksPageByUser(userID string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError)
GetPasswordRecoveryToken(token string) (*model.Token, *model.AppError) GetPasswordRecoveryToken(token string) (*model.Token, *model.AppError)
GetPermalinkPost(postId string, userId string) (*model.PostList, *model.AppError) GetPermalinkPost(postId string, userID string) (*model.PostList, *model.AppError)
GetPinnedPosts(channelId string) (*model.PostList, *model.AppError) GetPinnedPosts(channelId string) (*model.PostList, *model.AppError)
GetPluginKey(pluginId string, key string) ([]byte, *model.AppError) GetPluginKey(pluginId string, key string) ([]byte, *model.AppError)
GetPlugins() (*model.PluginsResponse, *model.AppError) GetPlugins() (*model.PluginsResponse, *model.AppError)
@@ -642,20 +642,20 @@ type AppIface interface {
GetPostsAroundPost(before bool, 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) GetPostsBeforePost(options model.GetPostsOptions) (*model.PostList, *model.AppError)
GetPostsEtag(channelId string, collapsedThreads bool) string GetPostsEtag(channelId string, collapsedThreads bool) string
GetPostsForChannelAroundLastUnread(channelId, userId string, limitBefore, limitAfter int, skipFetchThreads bool, collapsedThreads, collapsedThreadsExtended bool) (*model.PostList, *model.AppError) GetPostsForChannelAroundLastUnread(channelId, userID string, limitBefore, limitAfter int, skipFetchThreads bool, collapsedThreads, collapsedThreadsExtended bool) (*model.PostList, *model.AppError)
GetPostsPage(options model.GetPostsOptions) (*model.PostList, *model.AppError) GetPostsPage(options model.GetPostsOptions) (*model.PostList, *model.AppError)
GetPostsSince(options model.GetPostsSinceOptions) (*model.PostList, *model.AppError) GetPostsSince(options model.GetPostsSinceOptions) (*model.PostList, *model.AppError)
GetPreferenceByCategoryAndNameForUser(userId string, category string, preferenceName string) (*model.Preference, *model.AppError) GetPreferenceByCategoryAndNameForUser(userID string, category string, preferenceName string) (*model.Preference, *model.AppError)
GetPreferenceByCategoryForUser(userId string, category string) (model.Preferences, *model.AppError) GetPreferenceByCategoryForUser(userID string, category string) (model.Preferences, *model.AppError)
GetPreferencesForUser(userId string) (model.Preferences, *model.AppError) GetPreferencesForUser(userID string) (model.Preferences, *model.AppError)
GetPrevPostIdFromPostList(postList *model.PostList) string GetPrevPostIdFromPostList(postList *model.PostList) string
GetPrivateChannelsForTeam(teamId string, offset int, limit int) (*model.ChannelList, *model.AppError) GetPrivateChannelsForTeam(teamID string, offset int, limit int) (*model.ChannelList, *model.AppError)
GetProfileImage(user *model.User) ([]byte, bool, *model.AppError) GetProfileImage(user *model.User) ([]byte, bool, *model.AppError)
GetPublicChannelsByIdsForTeam(teamId string, channelIds []string) (*model.ChannelList, *model.AppError) GetPublicChannelsByIdsForTeam(teamID string, channelIds []string) (*model.ChannelList, *model.AppError)
GetPublicChannelsForTeam(teamId string, offset int, limit int) (*model.ChannelList, *model.AppError) GetPublicChannelsForTeam(teamID string, offset int, limit int) (*model.ChannelList, *model.AppError)
GetReactionsForPost(postId string) ([]*model.Reaction, *model.AppError) GetReactionsForPost(postId string) ([]*model.Reaction, *model.AppError)
GetRecentlyActiveUsersForTeam(teamId string) (map[string]*model.User, *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) GetRecentlyActiveUsersForTeamPage(teamID string, page, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)
GetRole(id string) (*model.Role, *model.AppError) GetRole(id string) (*model.Role, *model.AppError)
GetRoleByName(name string) (*model.Role, *model.AppError) GetRoleByName(name string) (*model.Role, *model.AppError)
GetRolesByNames(names []string) ([]*model.Role, *model.AppError) GetRolesByNames(names []string) ([]*model.Role, *model.AppError)
@@ -665,55 +665,55 @@ type AppIface interface {
GetSanitizeOptions(asAdmin bool) map[string]bool GetSanitizeOptions(asAdmin bool) map[string]bool
GetScheme(id string) (*model.Scheme, *model.AppError) GetScheme(id string) (*model.Scheme, *model.AppError)
GetSchemeByName(name string) (*model.Scheme, *model.AppError) GetSchemeByName(name string) (*model.Scheme, *model.AppError)
GetSchemeRolesForTeam(teamId string) (string, string, string, *model.AppError) GetSchemeRolesForTeam(teamID string) (string, string, string, *model.AppError)
GetSchemes(scope string, offset int, limit int) ([]*model.Scheme, *model.AppError) GetSchemes(scope string, offset int, limit int) ([]*model.Scheme, *model.AppError)
GetSchemesPage(scope string, page int, perPage int) ([]*model.Scheme, *model.AppError) GetSchemesPage(scope string, page int, perPage int) ([]*model.Scheme, *model.AppError)
GetSession(token string) (*model.Session, *model.AppError) GetSession(token string) (*model.Session, *model.AppError)
GetSessionById(sessionId string) (*model.Session, *model.AppError) GetSessionById(sessionId string) (*model.Session, *model.AppError)
GetSessions(userId string) ([]*model.Session, *model.AppError) GetSessions(userID string) ([]*model.Session, *model.AppError)
GetSidebarCategories(userId, teamId string) (*model.OrderedSidebarCategories, *model.AppError) GetSidebarCategories(userID, teamID string) (*model.OrderedSidebarCategories, *model.AppError)
GetSidebarCategory(categoryId string) (*model.SidebarCategoryWithChannels, *model.AppError) GetSidebarCategory(categoryId string) (*model.SidebarCategoryWithChannels, *model.AppError)
GetSidebarCategoryOrder(userId, teamId string) ([]string, *model.AppError) GetSidebarCategoryOrder(userID, teamID string) ([]string, *model.AppError)
GetSinglePost(postId string) (*model.Post, *model.AppError) GetSinglePost(postId string) (*model.Post, *model.AppError)
GetSiteURL() string GetSiteURL() string
GetStatus(userId string) (*model.Status, *model.AppError) GetStatus(userID string) (*model.Status, *model.AppError)
GetStatusFromCache(userId string) *model.Status GetStatusFromCache(userID string) *model.Status
GetStatusesByIds(userIds []string) (map[string]interface{}, *model.AppError) GetStatusesByIds(userIDs []string) (map[string]interface{}, *model.AppError)
GetT() goi18n.TranslateFunc GetT() goi18n.TranslateFunc
GetTeam(teamId string) (*model.Team, *model.AppError) GetTeam(teamID string) (*model.Team, *model.AppError)
GetTeamByInviteId(inviteId string) (*model.Team, *model.AppError) GetTeamByInviteId(inviteId string) (*model.Team, *model.AppError)
GetTeamByName(name string) (*model.Team, *model.AppError) GetTeamByName(name string) (*model.Team, *model.AppError)
GetTeamIcon(team *model.Team) ([]byte, *model.AppError) GetTeamIcon(team *model.Team) ([]byte, *model.AppError)
GetTeamIdFromQuery(query url.Values) (string, *model.AppError) GetTeamIdFromQuery(query url.Values) (string, *model.AppError)
GetTeamMember(teamId, userId string) (*model.TeamMember, *model.AppError) GetTeamMember(teamID, userID string) (*model.TeamMember, *model.AppError)
GetTeamMembers(teamId string, offset int, limit int, teamMembersGetOptions *model.TeamMembersGetOptions) ([]*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) GetTeamMembersByIds(teamID string, userIDs []string, restrictions *model.ViewUsersRestrictions) ([]*model.TeamMember, *model.AppError)
GetTeamMembersForUser(userId string) ([]*model.TeamMember, *model.AppError) GetTeamMembersForUser(userID string) ([]*model.TeamMember, *model.AppError)
GetTeamMembersForUserWithPagination(userId string, page, perPage int) ([]*model.TeamMember, *model.AppError) GetTeamMembersForUserWithPagination(userID string, page, perPage int) ([]*model.TeamMember, *model.AppError)
GetTeamStats(teamId string, restrictions *model.ViewUsersRestrictions) (*model.TeamStats, *model.AppError) GetTeamStats(teamID string, restrictions *model.ViewUsersRestrictions) (*model.TeamStats, *model.AppError)
GetTeamUnread(teamId, userId string) (*model.TeamUnread, *model.AppError) GetTeamUnread(teamID, userID string) (*model.TeamUnread, *model.AppError)
GetTeamsForScheme(scheme *model.Scheme, offset int, limit int) ([]*model.Team, *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) GetTeamsForSchemePage(scheme *model.Scheme, page int, perPage int) ([]*model.Team, *model.AppError)
GetTeamsForUser(userId string) ([]*model.Team, *model.AppError) GetTeamsForUser(userID string) ([]*model.Team, *model.AppError)
GetTeamsUnreadForUser(excludeTeamId string, userId string) ([]*model.TeamUnread, *model.AppError) GetTeamsUnreadForUser(excludeTeamId string, userID string) ([]*model.TeamUnread, *model.AppError)
GetTermsOfService(id string) (*model.TermsOfService, *model.AppError) GetTermsOfService(id string) (*model.TermsOfService, *model.AppError)
GetThreadForUser(userId, teamId, threadId string, extended bool) (*model.ThreadResponse, *model.AppError) GetThreadForUser(userID, teamID, threadId string, extended bool) (*model.ThreadResponse, *model.AppError)
GetThreadMembershipsForUser(userId, teamId string) ([]*model.ThreadMembership, error) GetThreadMembershipsForUser(userID, teamID string) ([]*model.ThreadMembership, error)
GetThreadsForUser(userId, teamId string, options model.GetUserThreadsOpts) (*model.Threads, *model.AppError) GetThreadsForUser(userID, teamID string, options model.GetUserThreadsOpts) (*model.Threads, *model.AppError)
GetUploadSession(uploadId string) (*model.UploadSession, *model.AppError) GetUploadSession(uploadId string) (*model.UploadSession, *model.AppError)
GetUploadSessionsForUser(userId string) ([]*model.UploadSession, *model.AppError) GetUploadSessionsForUser(userID string) ([]*model.UploadSession, *model.AppError)
GetUser(userId string) (*model.User, *model.AppError) GetUser(userID string) (*model.User, *model.AppError)
GetUserAccessToken(tokenId string, sanitize bool) (*model.UserAccessToken, *model.AppError) GetUserAccessToken(tokenID string, sanitize bool) (*model.UserAccessToken, *model.AppError)
GetUserAccessTokens(page, perPage int) ([]*model.UserAccessToken, *model.AppError) GetUserAccessTokens(page, perPage int) ([]*model.UserAccessToken, *model.AppError)
GetUserAccessTokensForUser(userId string, 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) GetUserByAuth(authData *string, authService string) (*model.User, *model.AppError)
GetUserByEmail(email string) (*model.User, *model.AppError) GetUserByEmail(email string) (*model.User, *model.AppError)
GetUserByUsername(username string) (*model.User, *model.AppError) GetUserByUsername(username string) (*model.User, *model.AppError)
GetUserForLogin(id, loginId string) (*model.User, *model.AppError) GetUserForLogin(id, loginId string) (*model.User, *model.AppError)
GetUserTermsOfService(userId string) (*model.UserTermsOfService, *model.AppError) GetUserTermsOfService(userID string) (*model.UserTermsOfService, *model.AppError)
GetUsers(options *model.UserGetOptions) ([]*model.User, *model.AppError) GetUsers(options *model.UserGetOptions) ([]*model.User, *model.AppError)
GetUsersByGroupChannelIds(channelIds []string, asAdmin bool) (map[string][]*model.User, *model.AppError) GetUsersByGroupChannelIds(channelIds []string, asAdmin bool) (map[string][]*model.User, *model.AppError)
GetUsersByIds(userIds []string, options *store.UserGetByIdsOpts) ([]*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) GetUsersByUsernames(usernames []string, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)
GetUsersEtag(restrictionsHash string) string GetUsersEtag(restrictionsHash string) string
GetUsersInChannel(options *model.UserGetOptions) ([]*model.User, *model.AppError) GetUsersInChannel(options *model.UserGetOptions) ([]*model.User, *model.AppError)
@@ -722,33 +722,33 @@ type AppIface interface {
GetUsersInChannelPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError) GetUsersInChannelPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError)
GetUsersInChannelPageByStatus(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) GetUsersInTeam(options *model.UserGetOptions) ([]*model.User, *model.AppError)
GetUsersInTeamEtag(teamId string, restrictionsHash string) string GetUsersInTeamEtag(teamID string, restrictionsHash string) string
GetUsersInTeamPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError) 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) 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) 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) GetUsersNotInChannelPage(teamID string, channelId string, groupConstrained bool, page int, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)
GetUsersNotInTeam(teamId string, groupConstrained bool, offset int, limit int, viewRestrictions *model.ViewUsersRestrictions) ([]*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 GetUsersNotInTeamEtag(teamID string, restrictionsHash string) string
GetUsersNotInTeamPage(teamId string, groupConstrained bool, page int, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError) 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) GetUsersPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError)
GetUsersWithoutTeam(options *model.UserGetOptions) ([]*model.User, *model.AppError) GetUsersWithoutTeam(options *model.UserGetOptions) ([]*model.User, *model.AppError)
GetUsersWithoutTeamPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError) GetUsersWithoutTeamPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError)
GetVerifyEmailToken(token string) (*model.Token, *model.AppError) GetVerifyEmailToken(token string) (*model.Token, *model.AppError)
GetViewUsersRestrictions(userId string) (*model.ViewUsersRestrictions, *model.AppError) GetViewUsersRestrictions(userID string) (*model.ViewUsersRestrictions, *model.AppError)
GetWarnMetricsStatus() (map[string]*model.WarnMetricStatus, *model.AppError) GetWarnMetricsStatus() (map[string]*model.WarnMetricStatus, *model.AppError)
HTTPService() httpservice.HTTPService HTTPService() httpservice.HTTPService
Handle404(w http.ResponseWriter, r *http.Request) Handle404(w http.ResponseWriter, r *http.Request)
HandleCommandResponse(command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.CommandResponse, *model.AppError) HandleCommandResponse(command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.CommandResponse, *model.AppError)
HandleCommandResponsePost(command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.Post, *model.AppError) HandleCommandResponsePost(command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.Post, *model.AppError)
HandleCommandWebhook(hookId string, response *model.CommandResponse) *model.AppError HandleCommandWebhook(hookID string, response *model.CommandResponse) *model.AppError
HandleImages(previewPathList []string, thumbnailPathList []string, fileData [][]byte) HandleImages(previewPathList []string, thumbnailPathList []string, fileData [][]byte)
HandleIncomingWebhook(hookId string, req *model.IncomingWebhookRequest) *model.AppError HandleIncomingWebhook(hookID string, req *model.IncomingWebhookRequest) *model.AppError
HandleMessageExportConfig(cfg *model.Config, appCfg *model.Config) HandleMessageExportConfig(cfg *model.Config, appCfg *model.Config)
HasPermissionTo(askingUserId string, permission *model.Permission) bool HasPermissionTo(askingUserId string, permission *model.Permission) bool
HasPermissionToChannel(askingUserId string, channelId string, permission *model.Permission) bool HasPermissionToChannel(askingUserId string, channelId string, permission *model.Permission) bool
HasPermissionToChannelByPost(askingUserId string, postId string, permission *model.Permission) bool HasPermissionToChannelByPost(askingUserId string, postId string, permission *model.Permission) bool
HasPermissionToTeam(askingUserId string, teamId string, permission *model.Permission) bool HasPermissionToTeam(askingUserId string, teamID string, permission *model.Permission) bool
HasPermissionToUser(askingUserId string, userId string) bool HasPermissionToUser(askingUserId string, userID string) bool
HubStop() HubStop()
ImageProxy() *imageproxy.ImageProxy ImageProxy() *imageproxy.ImageProxy
ImageProxyAdder() func(string) string ImageProxyAdder() func(string) string
@@ -759,12 +759,12 @@ type AppIface interface {
InitServer() InitServer()
InstallPluginFromData(data model.PluginEventData) InstallPluginFromData(data model.PluginEventData)
InvalidateAllEmailInvites() *model.AppError InvalidateAllEmailInvites() *model.AppError
InvalidateCacheForUser(userId string) InvalidateCacheForUser(userID string)
InvalidateWebConnSessionCacheForUser(userId string) InvalidateWebConnSessionCacheForUser(userID string)
InviteGuestsToChannels(teamId string, guestsInvite *model.GuestsInvite, senderId string) *model.AppError InviteGuestsToChannels(teamID string, guestsInvite *model.GuestsInvite, senderId string) *model.AppError
InviteGuestsToChannelsGracefully(teamId string, guestsInvite *model.GuestsInvite, senderId string) ([]*model.EmailInviteWithError, *model.AppError) InviteGuestsToChannelsGracefully(teamID string, guestsInvite *model.GuestsInvite, senderId string) ([]*model.EmailInviteWithError, *model.AppError)
InviteNewUsersToTeam(emailList []string, teamId, senderId string) *model.AppError InviteNewUsersToTeam(emailList []string, teamID, senderId string) *model.AppError
InviteNewUsersToTeamGracefully(emailList []string, teamId, senderId string) ([]*model.EmailInviteWithError, *model.AppError) InviteNewUsersToTeamGracefully(emailList []string, teamID, senderId string) ([]*model.EmailInviteWithError, *model.AppError)
IpAddress() string IpAddress() string
IsFirstUserAccount() bool IsFirstUserAccount() bool
IsLeader() bool IsLeader() bool
@@ -772,22 +772,22 @@ type AppIface interface {
IsPhase2MigrationCompleted() *model.AppError IsPhase2MigrationCompleted() *model.AppError
IsUserAway(lastActivityAt int64) bool IsUserAway(lastActivityAt int64) bool
IsUserSignUpAllowed() *model.AppError IsUserSignUpAllowed() *model.AppError
JoinChannel(channel *model.Channel, userId string) *model.AppError JoinChannel(channel *model.Channel, userID string) *model.AppError
JoinDefaultChannels(teamId string, user *model.User, shouldBeAdmin bool, userRequestorId string) *model.AppError JoinDefaultChannels(teamID string, user *model.User, shouldBeAdmin bool, userRequestorId string) *model.AppError
JoinUserToTeam(team *model.Team, user *model.User, userRequestorId string) *model.AppError JoinUserToTeam(team *model.Team, user *model.User, userRequestorId string) *model.AppError
Ldap() einterfaces.LdapInterface Ldap() einterfaces.LdapInterface
LeaveChannel(channelId string, userId string) *model.AppError LeaveChannel(channelId string, userID string) *model.AppError
LeaveTeam(team *model.Team, user *model.User, requestorId string) *model.AppError LeaveTeam(team *model.Team, user *model.User, requestorId string) *model.AppError
LimitedClientConfig() map[string]string LimitedClientConfig() map[string]string
ListAllCommands(teamId string, T goi18n.TranslateFunc) ([]*model.Command, *model.AppError) ListAllCommands(teamID string, T goi18n.TranslateFunc) ([]*model.Command, *model.AppError)
ListDirectory(path string) ([]string, *model.AppError) ListDirectory(path string) ([]string, *model.AppError)
ListImports() ([]string, *model.AppError) ListImports() ([]string, *model.AppError)
ListPluginKeys(pluginId string, page, perPage int) ([]string, *model.AppError) ListPluginKeys(pluginId string, page, perPage int) ([]string, *model.AppError)
ListTeamCommands(teamId string) ([]*model.Command, *model.AppError) ListTeamCommands(teamID string) ([]*model.Command, *model.AppError)
Log() *mlog.Logger Log() *mlog.Logger
LoginByOAuth(service string, userData io.Reader, teamId string, tokenUser *model.User) (*model.User, *model.AppError) LoginByOAuth(service string, userData io.Reader, teamID string, tokenUser *model.User) (*model.User, *model.AppError)
MakePermissionError(permissions []*model.Permission) *model.AppError MakePermissionError(permissions []*model.Permission) *model.AppError
MarkChannelsAsViewed(channelIds []string, userId string, currentSessionId string) (map[string]int64, *model.AppError) MarkChannelsAsViewed(channelIds []string, userID string, currentSessionId string) (map[string]int64, *model.AppError)
MaxPostSize() int MaxPostSize() int
MessageExport() einterfaces.MessageExportInterface MessageExport() einterfaces.MessageExportInterface
Metrics() einterfaces.MetricsInterface Metrics() einterfaces.MetricsInterface
@@ -801,26 +801,26 @@ type AppIface interface {
NotifyAndSetWarnMetricAck(warnMetricId string, sender *model.User, forceAck bool, isBot bool) *model.AppError NotifyAndSetWarnMetricAck(warnMetricId string, sender *model.User, forceAck bool, isBot bool) *model.AppError
OpenInteractiveDialog(request model.OpenDialogRequest) *model.AppError OpenInteractiveDialog(request model.OpenDialogRequest) *model.AppError
OriginChecker() func(*http.Request) bool OriginChecker() func(*http.Request) bool
PatchChannel(channel *model.Channel, patch *model.ChannelPatch, userId string) (*model.Channel, *model.AppError) PatchChannel(channel *model.Channel, patch *model.ChannelPatch, userID string) (*model.Channel, *model.AppError)
PatchPost(postId string, patch *model.PostPatch) (*model.Post, *model.AppError) PatchPost(postId string, patch *model.PostPatch) (*model.Post, *model.AppError)
PatchRole(role *model.Role, patch *model.RolePatch) (*model.Role, *model.AppError) PatchRole(role *model.Role, patch *model.RolePatch) (*model.Role, *model.AppError)
PatchScheme(scheme *model.Scheme, patch *model.SchemePatch) (*model.Scheme, *model.AppError) PatchScheme(scheme *model.Scheme, patch *model.SchemePatch) (*model.Scheme, *model.AppError)
PatchTeam(teamId string, patch *model.TeamPatch) (*model.Team, *model.AppError) PatchTeam(teamID string, patch *model.TeamPatch) (*model.Team, *model.AppError)
PatchUser(userId string, patch *model.UserPatch, asAdmin bool) (*model.User, *model.AppError) PatchUser(userID string, patch *model.UserPatch, asAdmin bool) (*model.User, *model.AppError)
Path() string Path() string
PermanentDeleteAllUsers() *model.AppError PermanentDeleteAllUsers() *model.AppError
PermanentDeleteChannel(channel *model.Channel) *model.AppError PermanentDeleteChannel(channel *model.Channel) *model.AppError
PermanentDeleteTeam(team *model.Team) *model.AppError PermanentDeleteTeam(team *model.Team) *model.AppError
PermanentDeleteTeamId(teamId string) *model.AppError PermanentDeleteTeamId(teamID string) *model.AppError
PermanentDeleteUser(user *model.User) *model.AppError PermanentDeleteUser(user *model.User) *model.AppError
PluginCommandsForTeam(teamId string) []*model.Command PluginCommandsForTeam(teamID string) []*model.Command
PluginContext() *plugin.Context PluginContext() *plugin.Context
PostActionCookieSecret() []byte PostActionCookieSecret() []byte
PostAddToChannelMessage(user *model.User, addedUser *model.User, channel *model.Channel, postRootId string) *model.AppError PostAddToChannelMessage(user *model.User, addedUser *model.User, channel *model.Channel, postRootId string) *model.AppError
PostPatchWithProxyRemovedFromImageURLs(patch *model.PostPatch) *model.PostPatch PostPatchWithProxyRemovedFromImageURLs(patch *model.PostPatch) *model.PostPatch
PostUpdateChannelDisplayNameMessage(userId string, channel *model.Channel, oldChannelDisplayName, newChannelDisplayName string) *model.AppError PostUpdateChannelDisplayNameMessage(userID string, channel *model.Channel, oldChannelDisplayName, newChannelDisplayName string) *model.AppError
PostUpdateChannelHeaderMessage(userId string, channel *model.Channel, oldChannelHeader, newChannelHeader string) *model.AppError PostUpdateChannelHeaderMessage(userID string, channel *model.Channel, oldChannelHeader, newChannelHeader string) *model.AppError
PostUpdateChannelPurposeMessage(userId string, channel *model.Channel, oldChannelPurpose string, newChannelPurpose string) *model.AppError PostUpdateChannelPurposeMessage(userID string, channel *model.Channel, oldChannelPurpose string, newChannelPurpose string) *model.AppError
PostWithProxyAddedToImageURLs(post *model.Post) *model.Post PostWithProxyAddedToImageURLs(post *model.Post) *model.Post
PostWithProxyRemovedFromImageURLs(post *model.Post) *model.Post PostWithProxyRemovedFromImageURLs(post *model.Post) *model.Post
PreparePostForClient(originalPost *model.Post, isNewPost bool, isEditPost bool) *model.Post PreparePostForClient(originalPost *model.Post, isNewPost bool, isEditPost bool) *model.Post
@@ -828,7 +828,7 @@ type AppIface interface {
ProcessSlackText(text string) string ProcessSlackText(text string) string
Publish(message *model.WebSocketEvent) Publish(message *model.WebSocketEvent)
PublishSkipClusterSend(message *model.WebSocketEvent) PublishSkipClusterSend(message *model.WebSocketEvent)
PublishUserTyping(userId, channelId, parentId string) *model.AppError PublishUserTyping(userID, channelId, parentId string) *model.AppError
PurgeBleveIndexes() *model.AppError PurgeBleveIndexes() *model.AppError
PurgeElasticsearchIndexes() *model.AppError PurgeElasticsearchIndexes() *model.AppError
ReadFile(path string) ([]byte, *model.AppError) ReadFile(path string) ([]byte, *model.AppError)
@@ -836,7 +836,7 @@ type AppIface interface {
RegenCommandToken(cmd *model.Command) (*model.Command, *model.AppError) RegenCommandToken(cmd *model.Command) (*model.Command, *model.AppError)
RegenOutgoingWebhookToken(hook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError) RegenOutgoingWebhookToken(hook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError)
RegenerateOAuthAppSecret(app *model.OAuthApp) (*model.OAuthApp, *model.AppError) RegenerateOAuthAppSecret(app *model.OAuthApp) (*model.OAuthApp, *model.AppError)
RegenerateTeamInviteId(teamId string) (*model.Team, *model.AppError) RegenerateTeamInviteId(teamID string) (*model.Team, *model.AppError)
RegisterPluginCommand(pluginId string, command *model.Command) error RegisterPluginCommand(pluginId string, command *model.Command) error
ReloadConfig() error ReloadConfig() error
RemoveAllDeactivatedMembersFromChannel(channel *model.Channel) *model.AppError RemoveAllDeactivatedMembersFromChannel(channel *model.Channel) *model.AppError
@@ -850,24 +850,24 @@ type AppIface interface {
RemoveSamlIdpCertificate() *model.AppError RemoveSamlIdpCertificate() *model.AppError
RemoveSamlPrivateCertificate() *model.AppError RemoveSamlPrivateCertificate() *model.AppError
RemoveSamlPublicCertificate() *model.AppError RemoveSamlPublicCertificate() *model.AppError
RemoveTeamIcon(teamId string) *model.AppError RemoveTeamIcon(teamID string) *model.AppError
RemoveTeamMemberFromTeam(teamMember *model.TeamMember, requestorId string) *model.AppError RemoveTeamMemberFromTeam(teamMember *model.TeamMember, requestorId string) *model.AppError
RemoveUserFromChannel(userIdToRemove string, removerUserId string, channel *model.Channel) *model.AppError RemoveUserFromChannel(userIDToRemove string, removerUserId string, channel *model.Channel) *model.AppError
RemoveUserFromTeam(teamId string, userId string, requestorId string) *model.AppError RemoveUserFromTeam(teamID string, userID string, requestorId string) *model.AppError
RemoveUsersFromChannelNotMemberOfTeam(remover *model.User, channel *model.Channel, team *model.Team) *model.AppError RemoveUsersFromChannelNotMemberOfTeam(remover *model.User, channel *model.Channel, team *model.Team) *model.AppError
RequestId() string RequestId() string
RequestLicenseAndAckWarnMetric(warnMetricId string, isBot bool) *model.AppError RequestLicenseAndAckWarnMetric(warnMetricId string, isBot bool) *model.AppError
ResetPasswordFromToken(userSuppliedTokenString, newPassword string) *model.AppError ResetPasswordFromToken(userSuppliedTokenString, newPassword string) *model.AppError
ResetPermissionsSystem() *model.AppError ResetPermissionsSystem() *model.AppError
RestoreChannel(channel *model.Channel, userId string) (*model.Channel, *model.AppError) RestoreChannel(channel *model.Channel, userID string) (*model.Channel, *model.AppError)
RestoreTeam(teamId string) *model.AppError RestoreTeam(teamID string) *model.AppError
RestrictUsersGetByPermissions(userId string, options *model.UserGetOptions) (*model.UserGetOptions, *model.AppError) RestrictUsersGetByPermissions(userID string, options *model.UserGetOptions) (*model.UserGetOptions, *model.AppError)
RestrictUsersSearchByPermissions(userId string, options *model.UserSearchOptions) (*model.UserSearchOptions, *model.AppError) RestrictUsersSearchByPermissions(userID string, options *model.UserSearchOptions) (*model.UserSearchOptions, *model.AppError)
RevokeAccessToken(token string) *model.AppError RevokeAccessToken(token string) *model.AppError
RevokeAllSessions(userId string) *model.AppError RevokeAllSessions(userID string) *model.AppError
RevokeSession(session *model.Session) *model.AppError RevokeSession(session *model.Session) *model.AppError
RevokeSessionById(sessionId string) *model.AppError RevokeSessionById(sessionId string) *model.AppError
RevokeSessionsForDeviceId(userId string, deviceId string, currentSessionId string) *model.AppError RevokeSessionsForDeviceId(userID string, deviceId string, currentSessionId string) *model.AppError
RevokeUserAccessToken(token *model.UserAccessToken) *model.AppError RevokeUserAccessToken(token *model.UserAccessToken) *model.AppError
RolesGrantPermission(roleNames []string, permissionId string) bool RolesGrantPermission(roleNames []string, permissionId string) bool
Saml() einterfaces.SamlInterface Saml() einterfaces.SamlInterface
@@ -878,32 +878,32 @@ type AppIface interface {
SaveBrandImage(imageData *multipart.FileHeader) *model.AppError SaveBrandImage(imageData *multipart.FileHeader) *model.AppError
SaveComplianceReport(job *model.Compliance) (*model.Compliance, *model.AppError) SaveComplianceReport(job *model.Compliance) (*model.Compliance, *model.AppError)
SaveReactionForPost(reaction *model.Reaction) (*model.Reaction, *model.AppError) SaveReactionForPost(reaction *model.Reaction) (*model.Reaction, *model.AppError)
SaveUserTermsOfService(userId, termsOfServiceId string, accepted bool) *model.AppError SaveUserTermsOfService(userID, termsOfServiceId string, accepted bool) *model.AppError
SchemesIterator(scope string, batchSize int) func() []*model.Scheme SchemesIterator(scope string, batchSize int) func() []*model.Scheme
SearchArchivedChannels(teamId string, term string, userId string) (*model.ChannelList, *model.AppError) SearchArchivedChannels(teamID string, term string, userID string) (*model.ChannelList, *model.AppError)
SearchChannels(teamId string, term string) (*model.ChannelList, *model.AppError) SearchChannels(teamID string, term string) (*model.ChannelList, *model.AppError)
SearchChannelsForUser(userId, teamId, 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) SearchChannelsUserNotIn(teamID string, userID string, term string) (*model.ChannelList, *model.AppError)
SearchEmoji(name string, prefixOnly bool, limit int) ([]*model.Emoji, *model.AppError) SearchEmoji(name string, prefixOnly bool, limit int) ([]*model.Emoji, *model.AppError)
SearchEngine() *searchengine.Broker SearchEngine() *searchengine.Broker
SearchGroupChannels(userId, term string) (*model.ChannelList, *model.AppError) SearchGroupChannels(userID, term string) (*model.ChannelList, *model.AppError)
SearchPostsInTeam(teamId string, paramsList []*model.SearchParams) (*model.PostList, *model.AppError) SearchPostsInTeam(teamID string, paramsList []*model.SearchParams) (*model.PostList, *model.AppError)
SearchPostsInTeamForUser(terms string, userId string, teamId string, isOrSearch bool, includeDeletedChannels bool, timeZoneOffset int, page, perPage int) (*model.PostSearchResults, *model.AppError) SearchPostsInTeamForUser(terms string, userID string, teamID string, isOrSearch bool, includeDeletedChannels bool, timeZoneOffset int, page, perPage int) (*model.PostSearchResults, *model.AppError)
SearchPrivateTeams(term string) ([]*model.Team, *model.AppError) SearchPrivateTeams(term string) ([]*model.Team, *model.AppError)
SearchPublicTeams(term string) ([]*model.Team, *model.AppError) SearchPublicTeams(term string) ([]*model.Team, *model.AppError)
SearchUserAccessTokens(term string) ([]*model.UserAccessToken, *model.AppError) SearchUserAccessTokens(term string) ([]*model.UserAccessToken, *model.AppError)
SearchUsers(props *model.UserSearch, options *model.UserSearchOptions) ([]*model.User, *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) SearchUsersInChannel(channelId string, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)
SearchUsersInGroup(groupID 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) 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) SearchUsersNotInChannel(teamID string, channelId string, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)
SearchUsersNotInTeam(notInTeamId 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) SearchUsersWithoutTeam(term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)
SendAckToPushProxy(ack *model.PushNotificationAck) error SendAckToPushProxy(ack *model.PushNotificationAck) error
SendAutoResponse(channel *model.Channel, receiver *model.User, post *model.Post) (bool, *model.AppError) SendAutoResponse(channel *model.Channel, receiver *model.User, post *model.Post) (bool, *model.AppError)
SendAutoResponseIfNecessary(channel *model.Channel, sender *model.User, post *model.Post) (bool, *model.AppError) SendAutoResponseIfNecessary(channel *model.Channel, sender *model.User, post *model.Post) (bool, *model.AppError)
SendEmailVerification(user *model.User, newEmail, redirect string) *model.AppError SendEmailVerification(user *model.User, newEmail, redirect string) *model.AppError
SendEphemeralPost(userId string, post *model.Post) *model.Post 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) 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) SendPasswordReset(email string, siteURL string) (bool, *model.AppError)
SendPaymentFailedEmail(failedPayment *model.FailedPayment) *model.AppError SendPaymentFailedEmail(failedPayment *model.FailedPayment) *model.AppError
@@ -913,14 +913,14 @@ type AppIface interface {
SessionCacheLength() int SessionCacheLength() int
SessionHasPermissionTo(session model.Session, permission *model.Permission) bool SessionHasPermissionTo(session model.Session, permission *model.Permission) bool
SessionHasPermissionToAny(session model.Session, permissions []*model.Permission) bool SessionHasPermissionToAny(session model.Session, permissions []*model.Permission) bool
SessionHasPermissionToCategory(session model.Session, userId, teamId, categoryId string) bool SessionHasPermissionToCategory(session model.Session, userID, teamID, categoryId string) bool
SessionHasPermissionToChannel(session model.Session, channelId string, permission *model.Permission) bool SessionHasPermissionToChannel(session model.Session, channelId string, permission *model.Permission) bool
SessionHasPermissionToChannelByPost(session model.Session, postId string, permission *model.Permission) bool SessionHasPermissionToChannelByPost(session model.Session, postId string, permission *model.Permission) bool
SessionHasPermissionToTeam(session model.Session, teamId string, permission *model.Permission) bool SessionHasPermissionToTeam(session model.Session, teamID string, permission *model.Permission) bool
SessionHasPermissionToUser(session model.Session, userId string) bool SessionHasPermissionToUser(session model.Session, userID string) bool
SessionHasPermissionToUserOrBot(session model.Session, userId string) bool SessionHasPermissionToUserOrBot(session model.Session, userID string) bool
SetAcceptLanguage(s string) SetAcceptLanguage(s string)
SetActiveChannel(userId string, channelId string) *model.AppError SetActiveChannel(userID string, channelId string) *model.AppError
SetAutoResponderStatus(user *model.User, oldNotifyProps model.StringMap) SetAutoResponderStatus(user *model.User, oldNotifyProps model.StringMap)
SetContext(c context.Context) SetContext(c context.Context)
SetDefaultProfileImage(user *model.User) *model.AppError SetDefaultProfileImage(user *model.User) *model.AppError
@@ -931,26 +931,26 @@ type AppIface interface {
SetPluginKeyWithExpiry(pluginId string, key string, value []byte, expireInSeconds int64) *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) SetPluginKeyWithOptions(pluginId string, key string, value []byte, options model.PluginKVSetOptions) (bool, *model.AppError)
SetPluginsEnvironment(pluginsEnvironment *plugin.Environment) SetPluginsEnvironment(pluginsEnvironment *plugin.Environment)
SetProfileImage(userId string, imageData *multipart.FileHeader) *model.AppError SetProfileImage(userID string, imageData *multipart.FileHeader) *model.AppError
SetProfileImageFromFile(userId string, file io.Reader) *model.AppError SetProfileImageFromFile(userID string, file io.Reader) *model.AppError
SetProfileImageFromMultiPartFile(userId string, file multipart.File) *model.AppError SetProfileImageFromMultiPartFile(userID string, file multipart.File) *model.AppError
SetRequestId(s string) SetRequestId(s string)
SetSamlIdpCertificateFromMetadata(data []byte) *model.AppError SetSamlIdpCertificateFromMetadata(data []byte) *model.AppError
SetSearchEngine(se *searchengine.Broker) SetSearchEngine(se *searchengine.Broker)
SetServer(srv *Server) SetServer(srv *Server)
SetSession(s *model.Session) SetSession(s *model.Session)
SetStatusAwayIfNeeded(userId string, manual bool) SetStatusAwayIfNeeded(userID string, manual bool)
SetStatusDoNotDisturb(userId string) SetStatusDoNotDisturb(userID string)
SetStatusOffline(userId string, manual bool) SetStatusOffline(userID string, manual bool)
SetStatusOnline(userId string, manual bool) SetStatusOnline(userID string, manual bool)
SetStatusOutOfOffice(userId string) SetStatusOutOfOffice(userID string)
SetT(t goi18n.TranslateFunc) SetT(t goi18n.TranslateFunc)
SetTeamIcon(teamId string, imageData *multipart.FileHeader) *model.AppError SetTeamIcon(teamID string, imageData *multipart.FileHeader) *model.AppError
SetTeamIconFromFile(team *model.Team, file io.Reader) *model.AppError SetTeamIconFromFile(team *model.Team, file io.Reader) *model.AppError
SetTeamIconFromMultiPartFile(teamId string, file multipart.File) *model.AppError SetTeamIconFromMultiPartFile(teamID string, file multipart.File) *model.AppError
SetUserAgent(s string) SetUserAgent(s string)
SlackImport(fileData multipart.File, fileSize int64, teamID string) (*model.AppError, *bytes.Buffer) SlackImport(fileData multipart.File, fileSize int64, teamID string) (*model.AppError, *bytes.Buffer)
SoftDeleteTeam(teamId string) *model.AppError SoftDeleteTeam(teamID string) *model.AppError
Srv() *Server Srv() *Server
SubmitInteractiveDialog(request model.SubmitDialogRequest) (*model.SubmitDialogResponse, *model.AppError) SubmitInteractiveDialog(request model.SubmitDialogRequest) (*model.SubmitDialogResponse, *model.AppError)
SwitchEmailToLdap(email, password, code, ldapLoginId, ldapPassword string) (string, *model.AppError) SwitchEmailToLdap(email, password, code, ldapLoginId, ldapPassword string) (string, *model.AppError)
@@ -964,72 +964,72 @@ type AppIface interface {
TeamMembersToRemove(teamID *string) ([]*model.TeamMember, *model.AppError) TeamMembersToRemove(teamID *string) ([]*model.TeamMember, *model.AppError)
TelemetryId() string TelemetryId() string
TestElasticsearch(cfg *model.Config) *model.AppError TestElasticsearch(cfg *model.Config) *model.AppError
TestEmail(userId string, cfg *model.Config) *model.AppError TestEmail(userID string, cfg *model.Config) *model.AppError
TestFilesStoreConnection() *model.AppError TestFilesStoreConnection() *model.AppError
TestFilesStoreConnectionWithConfig(cfg *model.FileSettings) *model.AppError TestFilesStoreConnectionWithConfig(cfg *model.FileSettings) *model.AppError
TestLdap() *model.AppError TestLdap() *model.AppError
TestSiteURL(siteURL string) *model.AppError TestSiteURL(siteURL string) *model.AppError
Timezones() *timezones.Timezones Timezones() *timezones.Timezones
ToggleMuteChannel(channelId, userId string) (*model.ChannelMember, *model.AppError) ToggleMuteChannel(channelId, userID string) (*model.ChannelMember, *model.AppError)
TotalWebsocketConnections() int TotalWebsocketConnections() int
TriggerWebhook(payload *model.OutgoingWebhookPayload, hook *model.OutgoingWebhook, post *model.Post, channel *model.Channel) TriggerWebhook(payload *model.OutgoingWebhookPayload, hook *model.OutgoingWebhook, post *model.Post, channel *model.Channel)
UnregisterPluginCommand(pluginId, teamId, trigger string) UnregisterPluginCommand(pluginId, teamID, trigger string)
UnregisterPluginCommands(pluginId string) UnregisterPluginCommands(pluginId string)
UpdateActive(user *model.User, active bool) (*model.User, *model.AppError) UpdateActive(user *model.User, active bool) (*model.User, *model.AppError)
UpdateChannelLastViewedAt(channelIds []string, userId string) *model.AppError UpdateChannelLastViewedAt(channelIds []string, userID string) *model.AppError
UpdateChannelMemberNotifyProps(data map[string]string, channelId string, userId string) (*model.ChannelMember, *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) 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) UpdateChannelMemberSchemeRoles(channelId string, userID string, isSchemeGuest bool, isSchemeUser bool, isSchemeAdmin bool) (*model.ChannelMember, *model.AppError)
UpdateChannelPrivacy(oldChannel *model.Channel, user *model.User) (*model.Channel, *model.AppError) UpdateChannelPrivacy(oldChannel *model.Channel, user *model.User) (*model.Channel, *model.AppError)
UpdateCommand(oldCmd, updatedCmd *model.Command) (*model.Command, *model.AppError) UpdateCommand(oldCmd, updatedCmd *model.Command) (*model.Command, *model.AppError)
UpdateConfig(f func(*model.Config)) UpdateConfig(f func(*model.Config))
UpdateEphemeralPost(userId string, post *model.Post) *model.Post UpdateEphemeralPost(userID string, post *model.Post) *model.Post
UpdateGroup(group *model.Group) (*model.Group, *model.AppError) UpdateGroup(group *model.Group) (*model.Group, *model.AppError)
UpdateGroupSyncable(groupSyncable *model.GroupSyncable) (*model.GroupSyncable, *model.AppError) UpdateGroupSyncable(groupSyncable *model.GroupSyncable) (*model.GroupSyncable, *model.AppError)
UpdateHashedPassword(user *model.User, newHashedPassword string) *model.AppError UpdateHashedPassword(user *model.User, newHashedPassword string) *model.AppError
UpdateHashedPasswordByUserId(userId, newHashedPassword string) *model.AppError UpdateHashedPasswordByUserId(userID, newHashedPassword string) *model.AppError
UpdateIncomingWebhook(oldHook, updatedHook *model.IncomingWebhook) (*model.IncomingWebhook, *model.AppError) UpdateIncomingWebhook(oldHook, updatedHook *model.IncomingWebhook) (*model.IncomingWebhook, *model.AppError)
UpdateLastActivityAtIfNeeded(session model.Session) UpdateLastActivityAtIfNeeded(session model.Session)
UpdateMfa(activate bool, userId, token string) *model.AppError UpdateMfa(activate bool, userID, token string) *model.AppError
UpdateMobileAppBadge(userId string) UpdateMobileAppBadge(userID string)
UpdateOAuthUserAttrs(userData io.Reader, user *model.User, provider einterfaces.OauthProvider, service string, tokenUser *model.User) *model.AppError UpdateOAuthUserAttrs(userData io.Reader, user *model.User, provider einterfaces.OauthProvider, service string, tokenUser *model.User) *model.AppError
UpdateOauthApp(oldApp, updatedApp *model.OAuthApp) (*model.OAuthApp, *model.AppError) UpdateOauthApp(oldApp, updatedApp *model.OAuthApp) (*model.OAuthApp, *model.AppError)
UpdateOutgoingWebhook(oldHook, updatedHook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError) UpdateOutgoingWebhook(oldHook, updatedHook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError)
UpdatePassword(user *model.User, newPassword string) *model.AppError UpdatePassword(user *model.User, newPassword string) *model.AppError
UpdatePasswordAsUser(userId, currentPassword, newPassword string) *model.AppError UpdatePasswordAsUser(userID, currentPassword, newPassword string) *model.AppError
UpdatePasswordByUserIdSendEmail(userId, newPassword, method string) *model.AppError UpdatePasswordByUserIdSendEmail(userID, newPassword, method string) *model.AppError
UpdatePasswordSendEmail(user *model.User, newPassword, method string) *model.AppError UpdatePasswordSendEmail(user *model.User, newPassword, method string) *model.AppError
UpdatePost(post *model.Post, safeUpdate bool) (*model.Post, *model.AppError) UpdatePost(post *model.Post, safeUpdate bool) (*model.Post, *model.AppError)
UpdatePreferences(userId string, preferences model.Preferences) *model.AppError UpdatePreferences(userID string, preferences model.Preferences) *model.AppError
UpdateRole(role *model.Role) (*model.Role, *model.AppError) UpdateRole(role *model.Role) (*model.Role, *model.AppError)
UpdateScheme(scheme *model.Scheme) (*model.Scheme, *model.AppError) UpdateScheme(scheme *model.Scheme) (*model.Scheme, *model.AppError)
UpdateSessionsIsGuest(userId string, isGuest bool) UpdateSessionsIsGuest(userID string, isGuest bool)
UpdateSidebarCategories(userId, teamId string, categories []*model.SidebarCategoryWithChannels) ([]*model.SidebarCategoryWithChannels, *model.AppError) UpdateSidebarCategories(userID, teamID string, categories []*model.SidebarCategoryWithChannels) ([]*model.SidebarCategoryWithChannels, *model.AppError)
UpdateSidebarCategoryOrder(userId, teamId string, categoryOrder []string) *model.AppError UpdateSidebarCategoryOrder(userID, teamID string, categoryOrder []string) *model.AppError
UpdateTeam(team *model.Team) (*model.Team, *model.AppError) UpdateTeam(team *model.Team) (*model.Team, *model.AppError)
UpdateTeamMemberRoles(teamId string, userId string, newRoles string) (*model.TeamMember, *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) UpdateTeamMemberSchemeRoles(teamID string, userID string, isSchemeGuest bool, isSchemeUser bool, isSchemeAdmin bool) (*model.TeamMember, *model.AppError)
UpdateTeamPrivacy(teamId string, teamType string, allowOpenInvite bool) *model.AppError UpdateTeamPrivacy(teamID string, teamType string, allowOpenInvite bool) *model.AppError
UpdateTeamScheme(team *model.Team) (*model.Team, *model.AppError) UpdateTeamScheme(team *model.Team) (*model.Team, *model.AppError)
UpdateThreadFollowForUser(userId, threadId string, state bool) *model.AppError UpdateThreadFollowForUser(userID, threadId string, state bool) *model.AppError
UpdateThreadReadForUser(userId, teamId, threadId string, timestamp int64) *model.AppError UpdateThreadReadForUser(userID, teamID, threadId string, timestamp int64) *model.AppError
UpdateThreadsReadForUser(userId, teamId string) *model.AppError UpdateThreadsReadForUser(userID, teamID string) *model.AppError
UpdateUser(user *model.User, sendNotifications bool) (*model.User, *model.AppError) UpdateUser(user *model.User, sendNotifications bool) (*model.User, *model.AppError)
UpdateUserActive(userId string, active bool) *model.AppError UpdateUserActive(userID string, active bool) *model.AppError
UpdateUserAsUser(user *model.User, asAdmin bool) (*model.User, *model.AppError) UpdateUserAsUser(user *model.User, asAdmin bool) (*model.User, *model.AppError)
UpdateUserAuth(userId string, userAuth *model.UserAuth) (*model.UserAuth, *model.AppError) UpdateUserAuth(userID string, userAuth *model.UserAuth) (*model.UserAuth, *model.AppError)
UpdateUserNotifyProps(userId string, props map[string]string, sendNotifications bool) (*model.User, *model.AppError) UpdateUserNotifyProps(userID string, props map[string]string, sendNotifications bool) (*model.User, *model.AppError)
UpdateUserRoles(userId string, newRoles string, sendWebSocketEvent bool) (*model.User, *model.AppError) UpdateUserRoles(userID string, newRoles string, sendWebSocketEvent bool) (*model.User, *model.AppError)
UploadData(us *model.UploadSession, rd io.Reader) (*model.FileInfo, *model.AppError) UploadData(us *model.UploadSession, rd io.Reader) (*model.FileInfo, *model.AppError)
UploadEmojiImage(id string, imageData *multipart.FileHeader) *model.AppError UploadEmojiImage(id string, imageData *multipart.FileHeader) *model.AppError
UploadMultipartFiles(teamId string, channelId string, userId string, fileHeaders []*multipart.FileHeader, clientIds []string, now time.Time) (*model.FileUploadResponse, *model.AppError) UploadMultipartFiles(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) UpsertGroupMember(groupID string, userID string) (*model.GroupMember, *model.AppError)
UpsertGroupSyncable(groupSyncable *model.GroupSyncable) (*model.GroupSyncable, *model.AppError) UpsertGroupSyncable(groupSyncable *model.GroupSyncable) (*model.GroupSyncable, *model.AppError)
UserAgent() string UserAgent() string
UserCanSeeOtherUser(userId string, otherUserId string) (bool, *model.AppError) UserCanSeeOtherUser(userID string, otherUserId string) (bool, *model.AppError)
VerifyEmailFromToken(userSuppliedTokenString string) *model.AppError VerifyEmailFromToken(userSuppliedTokenString string) *model.AppError
VerifyUserEmail(userId, email string) *model.AppError VerifyUserEmail(userID, email string) *model.AppError
ViewChannel(view *model.ChannelView, userId string, currentSessionId string) (map[string]int64, *model.AppError) ViewChannel(view *model.ChannelView, userID string, currentSessionId string) (map[string]int64, *model.AppError)
WaitForChannelMembership(channelId string, userId string) WaitForChannelMembership(channelId string, userID string)
WriteFile(fr io.Reader, path string) (int64, *model.AppError) WriteFile(fr io.Reader, path string) (int64, *model.AppError)
} }

Просмотреть файл

@@ -32,8 +32,8 @@ var (
LevelCLI = mlog.LvlAuditCLI LevelCLI = mlog.LvlAuditCLI
) )
func (a *App) GetAudits(userId string, limit int) (model.Audits, *model.AppError) { func (a *App) GetAudits(userID string, limit int) (model.Audits, *model.AppError) {
audits, err := a.Srv().Store.Audit().Get(userId, 0, limit) audits, err := a.Srv().Store.Audit().Get(userID, 0, limit)
if err != nil { if err != nil {
var outErr *store.ErrOutOfBounds var outErr *store.ErrOutOfBounds
switch { switch {
@@ -46,8 +46,8 @@ func (a *App) GetAudits(userId string, limit int) (model.Audits, *model.AppError
return audits, nil return audits, nil
} }
func (a *App) GetAuditsPage(userId string, page int, perPage int) (model.Audits, *model.AppError) { func (a *App) GetAuditsPage(userID string, page int, perPage int) (model.Audits, *model.AppError) {
audits, err := a.Srv().Store.Audit().Get(userId, page*perPage, perPage) audits, err := a.Srv().Store.Audit().Get(userID, page*perPage, perPage)
if err != nil { if err != nil {
var outErr *store.ErrOutOfBounds var outErr *store.ErrOutOfBounds
switch { switch {

Просмотреть файл

@@ -36,15 +36,15 @@ func (a *App) SessionHasPermissionToAny(session model.Session, permissions []*mo
return false return false
} }
func (a *App) SessionHasPermissionToTeam(session model.Session, teamId string, permission *model.Permission) bool { func (a *App) SessionHasPermissionToTeam(session model.Session, teamID string, permission *model.Permission) bool {
if teamId == "" { if teamID == "" {
return false return false
} }
if session.IsUnrestricted() { if session.IsUnrestricted() {
return true return true
} }
teamMember := session.GetTeamByTeamId(teamId) teamMember := session.GetTeamByTeamId(teamID)
if teamMember != nil { if teamMember != nil {
if a.RolesGrantPermission(teamMember.GetRoles(), permission.Id) { if a.RolesGrantPermission(teamMember.GetRoles(), permission.Id) {
return true return true
@@ -104,23 +104,23 @@ func (a *App) SessionHasPermissionToChannelByPost(session model.Session, postId
return a.SessionHasPermissionTo(session, permission) return a.SessionHasPermissionTo(session, permission)
} }
func (a *App) SessionHasPermissionToCategory(session model.Session, userId, teamId, categoryId string) bool { func (a *App) SessionHasPermissionToCategory(session model.Session, userID, teamID, categoryId string) bool {
if a.SessionHasPermissionTo(session, model.PERMISSION_EDIT_OTHER_USERS) { if a.SessionHasPermissionTo(session, model.PERMISSION_EDIT_OTHER_USERS) {
return true return true
} }
category, err := a.GetSidebarCategory(categoryId) category, err := a.GetSidebarCategory(categoryId)
return err == nil && category != nil && category.UserId == session.UserId && category.UserId == userId && category.TeamId == teamId return err == nil && category != nil && category.UserId == session.UserId && category.UserId == userID && category.TeamId == teamID
} }
func (a *App) SessionHasPermissionToUser(session model.Session, userId string) bool { func (a *App) SessionHasPermissionToUser(session model.Session, userID string) bool {
if userId == "" { if userID == "" {
return false return false
} }
if session.IsUnrestricted() { if session.IsUnrestricted() {
return true return true
} }
if session.UserId == userId { if session.UserId == userID {
return true return true
} }
@@ -131,15 +131,15 @@ func (a *App) SessionHasPermissionToUser(session model.Session, userId string) b
return false return false
} }
func (a *App) SessionHasPermissionToUserOrBot(session model.Session, userId string) bool { func (a *App) SessionHasPermissionToUserOrBot(session model.Session, userID string) bool {
if session.IsUnrestricted() { if session.IsUnrestricted() {
return true return true
} }
if a.SessionHasPermissionToUser(session, userId) { if a.SessionHasPermissionToUser(session, userID) {
return true return true
} }
if err := a.SessionHasPermissionToManageBot(session, userId); err == nil { if err := a.SessionHasPermissionToManageBot(session, userID); err == nil {
return true return true
} }
@@ -157,11 +157,11 @@ func (a *App) HasPermissionTo(askingUserId string, permission *model.Permission)
return a.RolesGrantPermission(roles, permission.Id) return a.RolesGrantPermission(roles, permission.Id)
} }
func (a *App) HasPermissionToTeam(askingUserId string, teamId string, permission *model.Permission) bool { func (a *App) HasPermissionToTeam(askingUserId string, teamID string, permission *model.Permission) bool {
if teamId == "" || askingUserId == "" { if teamID == "" || askingUserId == "" {
return false return false
} }
teamMember, _ := a.GetTeamMember(teamId, askingUserId) teamMember, _ := a.GetTeamMember(teamID, askingUserId)
if teamMember != nil && teamMember.DeleteAt == 0 { if teamMember != nil && teamMember.DeleteAt == 0 {
if a.RolesGrantPermission(teamMember.GetRoles(), permission.Id) { if a.RolesGrantPermission(teamMember.GetRoles(), permission.Id) {
return true return true
@@ -206,8 +206,8 @@ func (a *App) HasPermissionToChannelByPost(askingUserId string, postId string, p
return a.HasPermissionTo(askingUserId, permission) return a.HasPermissionTo(askingUserId, permission)
} }
func (a *App) HasPermissionToUser(askingUserId string, userId string) bool { func (a *App) HasPermissionToUser(askingUserId string, userID string) bool {
if askingUserId == userId { if askingUserId == userID {
return true return true
} }

Просмотреть файл

@@ -76,8 +76,8 @@ func (a *App) SetAutoResponderStatus(user *model.User, oldNotifyProps model.Stri
} }
} }
func (a *App) DisableAutoResponder(userId string, asAdmin bool) *model.AppError { func (a *App) DisableAutoResponder(userID string, asAdmin bool) *model.AppError {
user, err := a.GetUser(userId) user, err := a.GetUser(userID)
if err != nil { if err != nil {
return err return err
} }
@@ -89,7 +89,7 @@ func (a *App) DisableAutoResponder(userId string, asAdmin bool) *model.AppError
patch.NotifyProps = user.NotifyProps patch.NotifyProps = user.NotifyProps
patch.NotifyProps[model.AUTO_RESPONDER_ACTIVE_NOTIFY_PROP] = "false" patch.NotifyProps[model.AUTO_RESPONDER_ACTIVE_NOTIFY_PROP] = "false"
_, err := a.PatchUser(userId, patch, asAdmin) _, err := a.PatchUser(userID, patch, asAdmin)
if err != nil { if err != nil {
return err return err
} }

Просмотреть файл

@@ -335,11 +335,11 @@ func (a *App) UpdateBotOwner(botUserId, newOwnerId string) (*model.Bot, *model.A
} }
// disableUserBots disables all bots owned by the given user. // disableUserBots disables all bots owned by the given user.
func (a *App) disableUserBots(userId string) *model.AppError { func (a *App) disableUserBots(userID string) *model.AppError {
perPage := 20 perPage := 20
for { for {
options := &model.BotGetOptions{ options := &model.BotGetOptions{
OwnerId: userId, OwnerId: userID,
IncludeDeleted: false, IncludeDeleted: false,
OnlyOrphaned: false, OnlyOrphaned: false,
Page: 0, Page: 0,
@@ -368,10 +368,10 @@ func (a *App) disableUserBots(userId string) *model.AppError {
return nil return nil
} }
func (a *App) notifySysadminsBotOwnerDeactivated(userId string) *model.AppError { func (a *App) notifySysadminsBotOwnerDeactivated(userID string) *model.AppError {
perPage := 25 perPage := 25
botOptions := &model.BotGetOptions{ botOptions := &model.BotGetOptions{
OwnerId: userId, OwnerId: userID,
IncludeDeleted: false, IncludeDeleted: false,
OnlyOrphaned: false, OnlyOrphaned: false,
Page: 0, Page: 0,
@@ -423,7 +423,7 @@ func (a *App) notifySysadminsBotOwnerDeactivated(userId string) *model.AppError
} }
// user being disabled // user being disabled
user, err := a.GetUser(userId) user, err := a.GetUser(userID)
if err != nil { if err != nil {
return err return err
} }

Просмотреть файл

@@ -63,7 +63,7 @@ func (a *App) DefaultChannelNames() []string {
return names return names
} }
func (a *App) JoinDefaultChannels(teamId string, user *model.User, shouldBeAdmin bool, userRequestorId string) *model.AppError { func (a *App) JoinDefaultChannels(teamID string, user *model.User, shouldBeAdmin bool, userRequestorId string) *model.AppError {
var requestor *model.User var requestor *model.User
var nErr error var nErr error
if userRequestorId != "" { if userRequestorId != "" {
@@ -81,7 +81,7 @@ func (a *App) JoinDefaultChannels(teamId string, user *model.User, shouldBeAdmin
var err *model.AppError var err *model.AppError
for _, channelName := range a.DefaultChannelNames() { for _, channelName := range a.DefaultChannelNames() {
channel, channelErr := a.Srv().Store.Channel().GetByName(teamId, channelName, true) channel, channelErr := a.Srv().Store.Channel().GetByName(teamID, channelName, true)
if channelErr != nil { if channelErr != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -170,7 +170,7 @@ func (a *App) postJoinMessageForDefaultChannel(user *model.User, requestor *mode
return nil return nil
} }
func (a *App) CreateChannelWithUser(channel *model.Channel, userId string) (*model.Channel, *model.AppError) { func (a *App) CreateChannelWithUser(channel *model.Channel, userID string) (*model.Channel, *model.AppError) {
if channel.IsGroupOrDirect() { if channel.IsGroupOrDirect() {
return nil, model.NewAppError("CreateChannelWithUser", "api.channel.create_channel.direct_channel.app_error", nil, "", http.StatusBadRequest) return nil, model.NewAppError("CreateChannelWithUser", "api.channel.create_channel.direct_channel.app_error", nil, "", http.StatusBadRequest)
} }
@@ -189,7 +189,7 @@ func (a *App) CreateChannelWithUser(channel *model.Channel, userId string) (*mod
return nil, model.NewAppError("CreateChannelWithUser", "api.channel.create_channel.max_channel_limit.app_error", map[string]interface{}{"MaxChannelsPerTeam": *a.Config().TeamSettings.MaxChannelsPerTeam}, "", http.StatusBadRequest) return nil, model.NewAppError("CreateChannelWithUser", "api.channel.create_channel.max_channel_limit.app_error", map[string]interface{}{"MaxChannelsPerTeam": *a.Config().TeamSettings.MaxChannelsPerTeam}, "", http.StatusBadRequest)
} }
channel.CreatorId = userId channel.CreatorId = userID
rchannel, err := a.CreateChannel(channel, true) rchannel, err := a.CreateChannel(channel, true)
if err != nil { if err != nil {
@@ -197,13 +197,13 @@ func (a *App) CreateChannelWithUser(channel *model.Channel, userId string) (*mod
} }
var user *model.User var user *model.User
if user, err = a.GetUser(userId); err != nil { if user, err = a.GetUser(userID); err != nil {
return nil, err return nil, err
} }
a.postJoinChannelMessage(user, channel) a.postJoinChannelMessage(user, channel)
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_CHANNEL_CREATED, "", "", userId, nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_CHANNEL_CREATED, "", "", userID, nil)
message.Add("channel_id", channel.Id) message.Add("channel_id", channel.Id)
message.Add("team_id", channel.TeamId) message.Add("team_id", channel.TeamId)
a.Publish(message) a.Publish(message)
@@ -320,13 +320,13 @@ func (a *App) CreateChannel(channel *model.Channel, addMember bool) (*model.Chan
return sc, nil return sc, nil
} }
func (a *App) GetOrCreateDirectChannel(userId, otherUserId string) (*model.Channel, *model.AppError) { func (a *App) GetOrCreateDirectChannel(userID, otherUserId string) (*model.Channel, *model.AppError) {
channel, nErr := a.Srv().Store.Channel().GetByName("", model.GetDMNameFromIds(userId, otherUserId), true) channel, nErr := a.Srv().Store.Channel().GetByName("", model.GetDMNameFromIds(userID, otherUserId), true)
if nErr != nil { if nErr != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
if errors.As(nErr, &nfErr) { if errors.As(nErr, &nfErr) {
var err *model.AppError var err *model.AppError
channel, err = a.createDirectChannel(userId, otherUserId) channel, err = a.createDirectChannel(userID, otherUserId)
if err != nil { if err != nil {
if err.Id == store.ChannelExistsError { if err.Id == store.ChannelExistsError {
return channel, nil return channel, nil
@@ -334,9 +334,9 @@ func (a *App) GetOrCreateDirectChannel(userId, otherUserId string) (*model.Chann
return nil, err return nil, err
} }
a.WaitForChannelMembership(channel.Id, userId) a.WaitForChannelMembership(channel.Id, userID)
a.InvalidateCacheForUser(userId) a.InvalidateCacheForUser(userID)
a.InvalidateCacheForUser(otherUserId) a.InvalidateCacheForUser(otherUserId)
if pluginsEnvironment := a.GetPluginsEnvironment(); pluginsEnvironment != nil { if pluginsEnvironment := a.GetPluginsEnvironment(); pluginsEnvironment != nil {
@@ -360,11 +360,11 @@ func (a *App) GetOrCreateDirectChannel(userId, otherUserId string) (*model.Chann
return channel, nil return channel, nil
} }
func (a *App) createDirectChannel(userId string, otherUserId string) (*model.Channel, *model.AppError) { func (a *App) createDirectChannel(userID string, otherUserId string) (*model.Channel, *model.AppError) {
uc1 := make(chan store.StoreResult, 1) uc1 := make(chan store.StoreResult, 1)
uc2 := make(chan store.StoreResult, 1) uc2 := make(chan store.StoreResult, 1)
go func() { go func() {
user, err := a.Srv().Store.User().Get(userId) user, err := a.Srv().Store.User().Get(userID)
uc1 <- store.StoreResult{Data: user, NErr: err} uc1 <- store.StoreResult{Data: user, NErr: err}
close(uc1) close(uc1)
}() }()
@@ -376,7 +376,7 @@ func (a *App) createDirectChannel(userId string, otherUserId string) (*model.Cha
result := <-uc1 result := <-uc1
if result.NErr != nil { if result.NErr != nil {
return nil, model.NewAppError("CreateDirectChannel", "api.channel.create_direct_channel.invalid_user.app_error", nil, userId, http.StatusBadRequest) return nil, model.NewAppError("CreateDirectChannel", "api.channel.create_direct_channel.invalid_user.app_error", nil, userID, http.StatusBadRequest)
} }
user := result.Data.(*model.User) user := result.Data.(*model.User)
@@ -418,10 +418,10 @@ func (a *App) createDirectChannel(userId string, otherUserId string) (*model.Cha
} }
} }
if err := a.Srv().Store.ChannelMemberHistory().LogJoinEvent(userId, channel.Id, model.GetMillis()); err != nil { if err := a.Srv().Store.ChannelMemberHistory().LogJoinEvent(userID, channel.Id, model.GetMillis()); err != nil {
return nil, model.NewAppError("CreateDirectChannel", "app.channel_member_history.log_join_event.internal_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateDirectChannel", "app.channel_member_history.log_join_event.internal_error", nil, err.Error(), http.StatusInternalServerError)
} }
if userId != otherUserId { if userID != otherUserId {
if err := a.Srv().Store.ChannelMemberHistory().LogJoinEvent(otherUserId, channel.Id, model.GetMillis()); err != nil { if err := a.Srv().Store.ChannelMemberHistory().LogJoinEvent(otherUserId, channel.Id, model.GetMillis()); err != nil {
return nil, model.NewAppError("CreateDirectChannel", "app.channel_member_history.log_join_event.internal_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateDirectChannel", "app.channel_member_history.log_join_event.internal_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -430,7 +430,7 @@ func (a *App) createDirectChannel(userId string, otherUserId string) (*model.Cha
return channel, nil return channel, nil
} }
func (a *App) WaitForChannelMembership(channelId string, userId string) { func (a *App) WaitForChannelMembership(channelId string, userID string) {
if len(a.Config().SqlSettings.DataSourceReplicas) == 0 { if len(a.Config().SqlSettings.DataSourceReplicas) == 0 {
return return
} }
@@ -441,7 +441,7 @@ func (a *App) WaitForChannelMembership(channelId string, userId string) {
time.Sleep(100 * time.Millisecond) time.Sleep(100 * time.Millisecond)
_, err := a.Srv().Store.Channel().GetMember(channelId, userId) _, err := a.Srv().Store.Channel().GetMember(channelId, userID)
// If the membership was found then return // If the membership was found then return
if err == nil { if err == nil {
@@ -455,11 +455,11 @@ func (a *App) WaitForChannelMembership(channelId string, userId string) {
} }
} }
mlog.Error("WaitForChannelMembership giving up", mlog.String("channel_id", channelId), mlog.String("user_id", userId)) mlog.Error("WaitForChannelMembership giving up", mlog.String("channel_id", channelId), mlog.String("user_id", userID))
} }
func (a *App) CreateGroupChannel(userIds []string, creatorId string) (*model.Channel, *model.AppError) { func (a *App) CreateGroupChannel(userIDs []string, creatorId string) (*model.Channel, *model.AppError) {
channel, err := a.createGroupChannel(userIds) channel, err := a.createGroupChannel(userIDs)
if err != nil { if err != nil {
if err.Id == store.ChannelExistsError { if err.Id == store.ChannelExistsError {
return channel, nil return channel, nil
@@ -467,37 +467,37 @@ func (a *App) CreateGroupChannel(userIds []string, creatorId string) (*model.Cha
return nil, err return nil, err
} }
for _, userId := range userIds { for _, userID := range userIDs {
if userId == creatorId { if userID == creatorId {
a.WaitForChannelMembership(channel.Id, creatorId) a.WaitForChannelMembership(channel.Id, creatorId)
} }
a.InvalidateCacheForUser(userId) a.InvalidateCacheForUser(userID)
} }
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_GROUP_ADDED, "", channel.Id, "", nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_GROUP_ADDED, "", channel.Id, "", nil)
message.Add("teammate_ids", model.ArrayToJson(userIds)) message.Add("teammate_ids", model.ArrayToJson(userIDs))
a.Publish(message) a.Publish(message)
return channel, nil return channel, nil
} }
func (a *App) createGroupChannel(userIds []string) (*model.Channel, *model.AppError) { func (a *App) createGroupChannel(userIDs []string) (*model.Channel, *model.AppError) {
if len(userIds) > model.CHANNEL_GROUP_MAX_USERS || len(userIds) < model.CHANNEL_GROUP_MIN_USERS { if len(userIDs) > model.CHANNEL_GROUP_MAX_USERS || len(userIDs) < model.CHANNEL_GROUP_MIN_USERS {
return nil, model.NewAppError("CreateGroupChannel", "api.channel.create_group.bad_size.app_error", nil, "", http.StatusBadRequest) return nil, model.NewAppError("CreateGroupChannel", "api.channel.create_group.bad_size.app_error", nil, "", http.StatusBadRequest)
} }
users, err := a.Srv().Store.User().GetProfileByIds(userIds, nil, true) users, err := a.Srv().Store.User().GetProfileByIds(userIDs, nil, true)
if err != nil { if err != nil {
return nil, model.NewAppError("createGroupChannel", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("createGroupChannel", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
if len(users) != len(userIds) { if len(users) != len(userIDs) {
return nil, model.NewAppError("CreateGroupChannel", "api.channel.create_group.bad_user.app_error", nil, "user_ids="+model.ArrayToJson(userIds), http.StatusBadRequest) return nil, model.NewAppError("CreateGroupChannel", "api.channel.create_group.bad_user.app_error", nil, "user_ids="+model.ArrayToJson(userIDs), http.StatusBadRequest)
} }
group := &model.Channel{ group := &model.Channel{
Name: model.GetGroupNameFromUserIds(userIds), Name: model.GetGroupNameFromUserIds(userIDs),
DisplayName: model.GetGroupDisplayNameFromUsers(users, true), DisplayName: model.GetGroupDisplayNameFromUsers(users, true),
Type: model.CHANNEL_GROUP, Type: model.CHANNEL_GROUP,
} }
@@ -561,21 +561,21 @@ func (a *App) createGroupChannel(userIds []string) (*model.Channel, *model.AppEr
return channel, nil return channel, nil
} }
func (a *App) GetGroupChannel(userIds []string) (*model.Channel, *model.AppError) { func (a *App) GetGroupChannel(userIDs []string) (*model.Channel, *model.AppError) {
if len(userIds) > model.CHANNEL_GROUP_MAX_USERS || len(userIds) < model.CHANNEL_GROUP_MIN_USERS { if len(userIDs) > model.CHANNEL_GROUP_MAX_USERS || len(userIDs) < model.CHANNEL_GROUP_MIN_USERS {
return nil, model.NewAppError("GetGroupChannel", "api.channel.create_group.bad_size.app_error", nil, "", http.StatusBadRequest) return nil, model.NewAppError("GetGroupChannel", "api.channel.create_group.bad_size.app_error", nil, "", http.StatusBadRequest)
} }
users, err := a.Srv().Store.User().GetProfileByIds(userIds, nil, true) users, err := a.Srv().Store.User().GetProfileByIds(userIDs, nil, true)
if err != nil { if err != nil {
return nil, model.NewAppError("GetGroupChannel", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetGroupChannel", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
if len(users) != len(userIds) { if len(users) != len(userIDs) {
return nil, model.NewAppError("GetGroupChannel", "api.channel.create_group.bad_user.app_error", nil, "user_ids="+model.ArrayToJson(userIds), http.StatusBadRequest) return nil, model.NewAppError("GetGroupChannel", "api.channel.create_group.bad_user.app_error", nil, "user_ids="+model.ArrayToJson(userIDs), http.StatusBadRequest)
} }
channel, appErr := a.GetChannelByName(model.GetGroupNameFromUserIds(userIds), "", true) channel, appErr := a.GetChannelByName(model.GetGroupNameFromUserIds(userIDs), "", true)
if appErr != nil { if appErr != nil {
return nil, appErr return nil, appErr
} }
@@ -697,7 +697,7 @@ func (a *App) postChannelPrivacyMessage(user *model.User, channel *model.Channel
return nil return nil
} }
func (a *App) RestoreChannel(channel *model.Channel, userId string) (*model.Channel, *model.AppError) { func (a *App) RestoreChannel(channel *model.Channel, userID string) (*model.Channel, *model.AppError) {
if channel.DeleteAt == 0 { if channel.DeleteAt == 0 {
return nil, model.NewAppError("restoreChannel", "api.channel.restore_channel.restored.app_error", nil, "", http.StatusBadRequest) return nil, model.NewAppError("restoreChannel", "api.channel.restore_channel.restored.app_error", nil, "", http.StatusBadRequest)
} }
@@ -712,7 +712,7 @@ func (a *App) RestoreChannel(channel *model.Channel, userId string) (*model.Chan
message.Add("channel_id", channel.Id) message.Add("channel_id", channel.Id)
a.Publish(message) a.Publish(message)
user, nErr := a.Srv().Store.User().Get(userId) user, nErr := a.Srv().Store.User().Get(userID)
if nErr != nil { if nErr != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -730,7 +730,7 @@ func (a *App) RestoreChannel(channel *model.Channel, userId string) (*model.Chan
ChannelId: channel.Id, ChannelId: channel.Id,
Message: T("api.channel.restore_channel.unarchived", map[string]interface{}{"Username": user.Username}), Message: T("api.channel.restore_channel.unarchived", map[string]interface{}{"Username": user.Username}),
Type: model.POST_CHANNEL_RESTORED, Type: model.POST_CHANNEL_RESTORED,
UserId: userId, UserId: userID,
Props: model.StringInterface{ Props: model.StringInterface{
"username": user.Username, "username": user.Username,
}, },
@@ -744,7 +744,7 @@ func (a *App) RestoreChannel(channel *model.Channel, userId string) (*model.Chan
return channel, nil return channel, nil
} }
func (a *App) PatchChannel(channel *model.Channel, patch *model.ChannelPatch, userId string) (*model.Channel, *model.AppError) { func (a *App) PatchChannel(channel *model.Channel, patch *model.ChannelPatch, userID string) (*model.Channel, *model.AppError) {
oldChannelDisplayName := channel.DisplayName oldChannelDisplayName := channel.DisplayName
oldChannelHeader := channel.Header oldChannelHeader := channel.Header
oldChannelPurpose := channel.Purpose oldChannelPurpose := channel.Purpose
@@ -756,19 +756,19 @@ func (a *App) PatchChannel(channel *model.Channel, patch *model.ChannelPatch, us
} }
if oldChannelDisplayName != channel.DisplayName { if oldChannelDisplayName != channel.DisplayName {
if err = a.PostUpdateChannelDisplayNameMessage(userId, channel, oldChannelDisplayName, channel.DisplayName); err != nil { if err = a.PostUpdateChannelDisplayNameMessage(userID, channel, oldChannelDisplayName, channel.DisplayName); err != nil {
mlog.Warn(err.Error()) mlog.Warn(err.Error())
} }
} }
if channel.Header != oldChannelHeader { if channel.Header != oldChannelHeader {
if err = a.PostUpdateChannelHeaderMessage(userId, channel, oldChannelHeader, channel.Header); err != nil { if err = a.PostUpdateChannelHeaderMessage(userID, channel, oldChannelHeader, channel.Header); err != nil {
mlog.Warn(err.Error()) mlog.Warn(err.Error())
} }
} }
if channel.Purpose != oldChannelPurpose { if channel.Purpose != oldChannelPurpose {
if err = a.PostUpdateChannelPurposeMessage(userId, channel, oldChannelPurpose, channel.Purpose); err != nil { if err = a.PostUpdateChannelPurposeMessage(userID, channel, oldChannelPurpose, channel.Purpose); err != nil {
mlog.Warn(err.Error()) mlog.Warn(err.Error())
} }
} }
@@ -801,8 +801,8 @@ func (a *App) GetSchemeRolesForChannel(channelId string) (guestRoleName, userRol
} }
// GetTeamSchemeChannelRoles Checks if a team has an override scheme and returns the scheme channel role names or default channel role names. // GetTeamSchemeChannelRoles Checks if a team has an override scheme and returns the scheme channel role names or default channel role names.
func (a *App) GetTeamSchemeChannelRoles(teamId string) (guestRoleName, userRoleName, adminRoleName string, err *model.AppError) { func (a *App) GetTeamSchemeChannelRoles(teamID string) (guestRoleName, userRoleName, adminRoleName string, err *model.AppError) {
team, err := a.GetTeam(teamId) team, err := a.GetTeam(teamID)
if err != nil { if err != nil {
return return
} }
@@ -1040,10 +1040,10 @@ func buildChannelModerations(channelType string, memberRole *model.Role, guestRo
return channelModerations return channelModerations
} }
func (a *App) UpdateChannelMemberRoles(channelId string, userId string, newRoles string) (*model.ChannelMember, *model.AppError) { func (a *App) UpdateChannelMemberRoles(channelId string, userID string, newRoles string) (*model.ChannelMember, *model.AppError) {
var member *model.ChannelMember var member *model.ChannelMember
var err *model.AppError var err *model.AppError
if member, err = a.GetChannelMember(channelId, userId); err != nil { if member, err = a.GetChannelMember(channelId, userID); err != nil {
return nil, err return nil, err
} }
@@ -1099,8 +1099,8 @@ func (a *App) UpdateChannelMemberRoles(channelId string, userId string, newRoles
return a.updateChannelMember(member) return a.updateChannelMember(member)
} }
func (a *App) UpdateChannelMemberSchemeRoles(channelId string, userId string, isSchemeGuest bool, isSchemeUser bool, isSchemeAdmin bool) (*model.ChannelMember, *model.AppError) { func (a *App) UpdateChannelMemberSchemeRoles(channelId string, userID string, isSchemeGuest bool, isSchemeUser bool, isSchemeAdmin bool) (*model.ChannelMember, *model.AppError) {
member, err := a.GetChannelMember(channelId, userId) member, err := a.GetChannelMember(channelId, userID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -1121,10 +1121,10 @@ func (a *App) UpdateChannelMemberSchemeRoles(channelId string, userId string, is
return a.updateChannelMember(member) return a.updateChannelMember(member)
} }
func (a *App) UpdateChannelMemberNotifyProps(data map[string]string, channelId string, userId string) (*model.ChannelMember, *model.AppError) { func (a *App) UpdateChannelMemberNotifyProps(data map[string]string, channelId string, userID string) (*model.ChannelMember, *model.AppError) {
var member *model.ChannelMember var member *model.ChannelMember
var err *model.AppError var err *model.AppError
if member, err = a.GetChannelMember(channelId, userId); err != nil { if member, err = a.GetChannelMember(channelId, userID); err != nil {
return nil, err return nil, err
} }
@@ -1184,7 +1184,7 @@ func (a *App) updateChannelMember(member *model.ChannelMember) (*model.ChannelMe
return member, nil return member, nil
} }
func (a *App) DeleteChannel(channel *model.Channel, userId string) *model.AppError { func (a *App) DeleteChannel(channel *model.Channel, userID string) *model.AppError {
ihc := make(chan store.StoreResult, 1) ihc := make(chan store.StoreResult, 1)
ohc := make(chan store.StoreResult, 1) ohc := make(chan store.StoreResult, 1)
@@ -1201,9 +1201,9 @@ func (a *App) DeleteChannel(channel *model.Channel, userId string) *model.AppErr
}() }()
var user *model.User var user *model.User
if userId != "" { if userID != "" {
var nErr error var nErr error
user, nErr = a.Srv().Store.User().Get(userId) user, nErr = a.Srv().Store.User().Get(userID)
if nErr != nil { if nErr != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -1245,7 +1245,7 @@ func (a *App) DeleteChannel(channel *model.Channel, userId string) *model.AppErr
ChannelId: channel.Id, ChannelId: channel.Id,
Message: fmt.Sprintf(T("api.channel.delete_channel.archived"), user.Username), Message: fmt.Sprintf(T("api.channel.delete_channel.archived"), user.Username),
Type: model.POST_CHANNEL_DELETED, Type: model.POST_CHANNEL_DELETED,
UserId: userId, UserId: userID,
Props: model.StringInterface{ Props: model.StringInterface{
"username": user.Username, "username": user.Username,
}, },
@@ -1372,8 +1372,8 @@ func (a *App) AddUserToChannel(user *model.User, channel *model.Channel) (*model
return newMember, nil return newMember, nil
} }
func (a *App) AddChannelMember(userId string, channel *model.Channel, userRequestorId string, postRootId string) (*model.ChannelMember, *model.AppError) { func (a *App) AddChannelMember(userID string, channel *model.Channel, userRequestorId string, postRootId string) (*model.ChannelMember, *model.AppError) {
if member, err := a.Srv().Store.Channel().GetMember(channel.Id, userId); err != nil { if member, err := a.Srv().Store.Channel().GetMember(channel.Id, userID); err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
if !errors.As(err, &nfErr) { if !errors.As(err, &nfErr) {
return nil, model.NewAppError("AddChannelMember", "app.channel.get_member.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("AddChannelMember", "app.channel.get_member.app_error", nil, err.Error(), http.StatusInternalServerError)
@@ -1385,7 +1385,7 @@ func (a *App) AddChannelMember(userId string, channel *model.Channel, userReques
var user *model.User var user *model.User
var err *model.AppError var err *model.AppError
if user, err = a.GetUser(userId); err != nil { if user, err = a.GetUser(userID); err != nil {
return nil, err return nil, err
} }
@@ -1411,7 +1411,7 @@ func (a *App) AddChannelMember(userId string, channel *model.Channel, userReques
}) })
} }
if userRequestorId == "" || userId == userRequestorId { if userRequestorId == "" || userID == userRequestorId {
a.postJoinChannelMessage(user, channel) a.postJoinChannelMessage(user, channel)
} else { } else {
a.Srv().Go(func() { a.Srv().Go(func() {
@@ -1422,12 +1422,12 @@ func (a *App) AddChannelMember(userId string, channel *model.Channel, userReques
return cm, nil return cm, nil
} }
func (a *App) AddDirectChannels(teamId string, user *model.User) *model.AppError { func (a *App) AddDirectChannels(teamID string, user *model.User) *model.AppError {
var profiles []*model.User var profiles []*model.User
options := &model.UserGetOptions{InTeamId: teamId, Page: 0, PerPage: 100} options := &model.UserGetOptions{InTeamId: teamID, Page: 0, PerPage: 100}
profiles, err := a.Srv().Store.User().GetProfiles(options) profiles, err := a.Srv().Store.User().GetProfiles(options)
if err != nil { if err != nil {
return model.NewAppError("AddDirectChannels", "api.user.add_direct_channels_and_forget.failed.error", map[string]interface{}{"UserId": user.Id, "TeamId": teamId, "Error": err.Error()}, "", http.StatusInternalServerError) return model.NewAppError("AddDirectChannels", "api.user.add_direct_channels_and_forget.failed.error", map[string]interface{}{"UserId": user.Id, "TeamId": teamID, "Error": err.Error()}, "", http.StatusInternalServerError)
} }
var preferences model.Preferences var preferences model.Preferences
@@ -1452,14 +1452,14 @@ func (a *App) AddDirectChannels(teamId string, user *model.User) *model.AppError
} }
if err := a.Srv().Store.Preference().Save(&preferences); err != nil { if err := a.Srv().Store.Preference().Save(&preferences); err != nil {
return model.NewAppError("AddDirectChannels", "api.user.add_direct_channels_and_forget.failed.error", map[string]interface{}{"UserId": user.Id, "TeamId": teamId, "Error": err.Error()}, "", http.StatusInternalServerError) return model.NewAppError("AddDirectChannels", "api.user.add_direct_channels_and_forget.failed.error", map[string]interface{}{"UserId": user.Id, "TeamId": teamID, "Error": err.Error()}, "", http.StatusInternalServerError)
} }
return nil return nil
} }
func (a *App) PostUpdateChannelHeaderMessage(userId string, channel *model.Channel, oldChannelHeader, newChannelHeader string) *model.AppError { func (a *App) PostUpdateChannelHeaderMessage(userID string, channel *model.Channel, oldChannelHeader, newChannelHeader string) *model.AppError {
user, err := a.Srv().Store.User().Get(userId) user, err := a.Srv().Store.User().Get(userID)
if err != nil { if err != nil {
return model.NewAppError("PostUpdateChannelHeaderMessage", "api.channel.post_update_channel_header_message_and_forget.retrieve_user.error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("PostUpdateChannelHeaderMessage", "api.channel.post_update_channel_header_message_and_forget.retrieve_user.error", nil, err.Error(), http.StatusBadRequest)
} }
@@ -1477,7 +1477,7 @@ func (a *App) PostUpdateChannelHeaderMessage(userId string, channel *model.Chann
ChannelId: channel.Id, ChannelId: channel.Id,
Message: message, Message: message,
Type: model.POST_HEADER_CHANGE, Type: model.POST_HEADER_CHANGE,
UserId: userId, UserId: userID,
Props: model.StringInterface{ Props: model.StringInterface{
"username": user.Username, "username": user.Username,
"old_header": oldChannelHeader, "old_header": oldChannelHeader,
@@ -1492,8 +1492,8 @@ func (a *App) PostUpdateChannelHeaderMessage(userId string, channel *model.Chann
return nil return nil
} }
func (a *App) PostUpdateChannelPurposeMessage(userId string, channel *model.Channel, oldChannelPurpose string, newChannelPurpose string) *model.AppError { func (a *App) PostUpdateChannelPurposeMessage(userID string, channel *model.Channel, oldChannelPurpose string, newChannelPurpose string) *model.AppError {
user, err := a.Srv().Store.User().Get(userId) user, err := a.Srv().Store.User().Get(userID)
if err != nil { if err != nil {
return model.NewAppError("PostUpdateChannelPurposeMessage", "app.channel.post_update_channel_purpose_message.retrieve_user.error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("PostUpdateChannelPurposeMessage", "app.channel.post_update_channel_purpose_message.retrieve_user.error", nil, err.Error(), http.StatusBadRequest)
} }
@@ -1511,7 +1511,7 @@ func (a *App) PostUpdateChannelPurposeMessage(userId string, channel *model.Chan
ChannelId: channel.Id, ChannelId: channel.Id,
Message: message, Message: message,
Type: model.POST_PURPOSE_CHANGE, Type: model.POST_PURPOSE_CHANGE,
UserId: userId, UserId: userID,
Props: model.StringInterface{ Props: model.StringInterface{
"username": user.Username, "username": user.Username,
"old_purpose": oldChannelPurpose, "old_purpose": oldChannelPurpose,
@@ -1525,8 +1525,8 @@ func (a *App) PostUpdateChannelPurposeMessage(userId string, channel *model.Chan
return nil return nil
} }
func (a *App) PostUpdateChannelDisplayNameMessage(userId string, channel *model.Channel, oldChannelDisplayName, newChannelDisplayName string) *model.AppError { func (a *App) PostUpdateChannelDisplayNameMessage(userID string, channel *model.Channel, oldChannelDisplayName, newChannelDisplayName string) *model.AppError {
user, err := a.Srv().Store.User().Get(userId) user, err := a.Srv().Store.User().Get(userID)
if err != nil { if err != nil {
return model.NewAppError("PostUpdateChannelDisplayNameMessage", "api.channel.post_update_channel_displayname_message_and_forget.retrieve_user.error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("PostUpdateChannelDisplayNameMessage", "api.channel.post_update_channel_displayname_message_and_forget.retrieve_user.error", nil, err.Error(), http.StatusBadRequest)
} }
@@ -1537,7 +1537,7 @@ func (a *App) PostUpdateChannelDisplayNameMessage(userId string, channel *model.
ChannelId: channel.Id, ChannelId: channel.Id,
Message: message, Message: message,
Type: model.POST_DISPLAYNAME_CHANGE, Type: model.POST_DISPLAYNAME_CHANGE,
UserId: userId, UserId: userID,
Props: model.StringInterface{ Props: model.StringInterface{
"username": user.Username, "username": user.Username,
"old_displayname": oldChannelDisplayName, "old_displayname": oldChannelDisplayName,
@@ -1566,14 +1566,14 @@ func (a *App) GetChannel(channelId string) (*model.Channel, *model.AppError) {
return channel, nil return channel, nil
} }
func (a *App) GetChannelByName(channelName, teamId string, includeDeleted bool) (*model.Channel, *model.AppError) { func (a *App) GetChannelByName(channelName, teamID string, includeDeleted bool) (*model.Channel, *model.AppError) {
var channel *model.Channel var channel *model.Channel
var err error var err error
if includeDeleted { if includeDeleted {
channel, err = a.Srv().Store.Channel().GetByNameIncludeDeleted(teamId, channelName, false) channel, err = a.Srv().Store.Channel().GetByNameIncludeDeleted(teamID, channelName, false)
} else { } else {
channel, err = a.Srv().Store.Channel().GetByName(teamId, channelName, false) channel, err = a.Srv().Store.Channel().GetByName(teamID, channelName, false)
} }
if err != nil { if err != nil {
@@ -1589,8 +1589,8 @@ func (a *App) GetChannelByName(channelName, teamId string, includeDeleted bool)
return channel, nil return channel, nil
} }
func (a *App) GetChannelsByNames(channelNames []string, teamId string) ([]*model.Channel, *model.AppError) { func (a *App) GetChannelsByNames(channelNames []string, teamID string) ([]*model.Channel, *model.AppError) {
channels, err := a.Srv().Store.Channel().GetByNames(teamId, channelNames, true) channels, err := a.Srv().Store.Channel().GetByNames(teamID, channelNames, true)
if err != nil { if err != nil {
return nil, model.NewAppError("GetChannelsByNames", "app.channel.get_by_name.existing.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetChannelsByNames", "app.channel.get_by_name.existing.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -1633,8 +1633,8 @@ func (a *App) GetChannelByNameForTeamName(channelName, teamName string, includeD
return result, nil return result, nil
} }
func (a *App) GetChannelsForUser(teamId string, userId string, includeDeleted bool, lastDeleteAt int) (*model.ChannelList, *model.AppError) { func (a *App) GetChannelsForUser(teamID string, userID string, includeDeleted bool, lastDeleteAt int) (*model.ChannelList, *model.AppError) {
list, err := a.Srv().Store.Channel().GetChannels(teamId, userId, includeDeleted, lastDeleteAt) list, err := a.Srv().Store.Channel().GetChannels(teamID, userID, includeDeleted, lastDeleteAt)
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -1682,8 +1682,8 @@ func (a *App) GetAllChannelsCount(opts model.ChannelSearchOpts) (int64, *model.A
return count, nil return count, nil
} }
func (a *App) GetDeletedChannels(teamId string, offset int, limit int, userId string) (*model.ChannelList, *model.AppError) { func (a *App) GetDeletedChannels(teamID string, offset int, limit int, userID string) (*model.ChannelList, *model.AppError) {
list, err := a.Srv().Store.Channel().GetDeleted(teamId, offset, limit, userId) list, err := a.Srv().Store.Channel().GetDeleted(teamID, offset, limit, userID)
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -1697,16 +1697,16 @@ func (a *App) GetDeletedChannels(teamId string, offset int, limit int, userId st
return list, nil return list, nil
} }
func (a *App) GetChannelsUserNotIn(teamId string, userId string, offset int, limit int) (*model.ChannelList, *model.AppError) { func (a *App) GetChannelsUserNotIn(teamID string, userID string, offset int, limit int) (*model.ChannelList, *model.AppError) {
channels, err := a.Srv().Store.Channel().GetMoreChannels(teamId, userId, offset, limit) channels, err := a.Srv().Store.Channel().GetMoreChannels(teamID, userID, offset, limit)
if err != nil { if err != nil {
return nil, model.NewAppError("GetChannelsUserNotIn", "app.channel.get_more_channels.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetChannelsUserNotIn", "app.channel.get_more_channels.get.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
return channels, nil return channels, nil
} }
func (a *App) GetPublicChannelsByIdsForTeam(teamId string, channelIds []string) (*model.ChannelList, *model.AppError) { func (a *App) GetPublicChannelsByIdsForTeam(teamID string, channelIds []string) (*model.ChannelList, *model.AppError) {
list, err := a.Srv().Store.Channel().GetPublicChannelsByIdsForTeam(teamId, channelIds) list, err := a.Srv().Store.Channel().GetPublicChannelsByIdsForTeam(teamID, channelIds)
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -1720,8 +1720,8 @@ func (a *App) GetPublicChannelsByIdsForTeam(teamId string, channelIds []string)
return list, nil return list, nil
} }
func (a *App) GetPublicChannelsForTeam(teamId string, offset int, limit int) (*model.ChannelList, *model.AppError) { func (a *App) GetPublicChannelsForTeam(teamID string, offset int, limit int) (*model.ChannelList, *model.AppError) {
list, err := a.Srv().Store.Channel().GetPublicChannelsForTeam(teamId, offset, limit) list, err := a.Srv().Store.Channel().GetPublicChannelsForTeam(teamID, offset, limit)
if err != nil { if err != nil {
return nil, model.NewAppError("GetPublicChannelsForTeam", "app.channel.get_public_channels.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetPublicChannelsForTeam", "app.channel.get_public_channels.get.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -1729,8 +1729,8 @@ func (a *App) GetPublicChannelsForTeam(teamId string, offset int, limit int) (*m
return list, nil return list, nil
} }
func (a *App) GetPrivateChannelsForTeam(teamId string, offset int, limit int) (*model.ChannelList, *model.AppError) { func (a *App) GetPrivateChannelsForTeam(teamID string, offset int, limit int) (*model.ChannelList, *model.AppError) {
list, err := a.Srv().Store.Channel().GetPrivateChannelsForTeam(teamId, offset, limit) list, err := a.Srv().Store.Channel().GetPrivateChannelsForTeam(teamID, offset, limit)
if err != nil { if err != nil {
return nil, model.NewAppError("GetPrivateChannelsForTeam", "app.channel.get_private_channels.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetPrivateChannelsForTeam", "app.channel.get_private_channels.get.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -1738,8 +1738,8 @@ func (a *App) GetPrivateChannelsForTeam(teamId string, offset int, limit int) (*
return list, nil return list, nil
} }
func (a *App) GetChannelMember(channelId string, userId string) (*model.ChannelMember, *model.AppError) { func (a *App) GetChannelMember(channelId string, userID string) (*model.ChannelMember, *model.AppError) {
channelMember, err := a.Srv().Store.Channel().GetMember(channelId, userId) channelMember, err := a.Srv().Store.Channel().GetMember(channelId, userID)
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -1779,8 +1779,8 @@ func (a *App) GetChannelMembersTimezones(channelId string) ([]string, *model.App
return model.RemoveDuplicateStrings(timezones), nil return model.RemoveDuplicateStrings(timezones), nil
} }
func (a *App) GetChannelMembersByIds(channelId string, userIds []string) (*model.ChannelMembers, *model.AppError) { func (a *App) GetChannelMembersByIds(channelId string, userIDs []string) (*model.ChannelMembers, *model.AppError) {
members, err := a.Srv().Store.Channel().GetMembersByIds(channelId, userIds) members, err := a.Srv().Store.Channel().GetMembersByIds(channelId, userIDs)
if err != nil { if err != nil {
return nil, model.NewAppError("GetChannelMembersByIds", "app.channel.get_members_by_ids.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetChannelMembersByIds", "app.channel.get_members_by_ids.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -1788,8 +1788,8 @@ func (a *App) GetChannelMembersByIds(channelId string, userIds []string) (*model
return members, nil return members, nil
} }
func (a *App) GetChannelMembersForUser(teamId string, userId string) (*model.ChannelMembers, *model.AppError) { func (a *App) GetChannelMembersForUser(teamID string, userID string) (*model.ChannelMembers, *model.AppError) {
channelMembers, err := a.Srv().Store.Channel().GetMembersForUser(teamId, userId) channelMembers, err := a.Srv().Store.Channel().GetMembersForUser(teamID, userID)
if err != nil { if err != nil {
return nil, model.NewAppError("GetChannelMembersForUser", "app.channel.get_members.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetChannelMembersForUser", "app.channel.get_members.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -1797,8 +1797,8 @@ func (a *App) GetChannelMembersForUser(teamId string, userId string) (*model.Cha
return channelMembers, nil return channelMembers, nil
} }
func (a *App) GetChannelMembersForUserWithPagination(teamId, userId string, page, perPage int) ([]*model.ChannelMember, *model.AppError) { func (a *App) GetChannelMembersForUserWithPagination(teamID, userID string, page, perPage int) ([]*model.ChannelMember, *model.AppError) {
m, err := a.Srv().Store.Channel().GetMembersForUserWithPagination(teamId, userId, page, perPage) m, err := a.Srv().Store.Channel().GetMembersForUserWithPagination(teamID, userID, page, perPage)
if err != nil { if err != nil {
return nil, model.NewAppError("GetChannelMembersForUserWithPagination", "app.channel.get_members.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetChannelMembersForUserWithPagination", "app.channel.get_members.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -1840,8 +1840,8 @@ func (a *App) GetChannelPinnedPostCount(channelId string) (int64, *model.AppErro
return count, nil return count, nil
} }
func (a *App) GetChannelCounts(teamId string, userId string) (*model.ChannelCounts, *model.AppError) { func (a *App) GetChannelCounts(teamID string, userID string) (*model.ChannelCounts, *model.AppError) {
counts, err := a.Srv().Store.Channel().GetChannelCounts(teamId, userId) counts, err := a.Srv().Store.Channel().GetChannelCounts(teamID, userID)
if err != nil { if err != nil {
return nil, model.NewAppError("SqlChannelStore.GetChannelCounts", "app.channel.get_channel_counts.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SqlChannelStore.GetChannelCounts", "app.channel.get_channel_counts.get.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -1849,8 +1849,8 @@ func (a *App) GetChannelCounts(teamId string, userId string) (*model.ChannelCoun
return counts, nil return counts, nil
} }
func (a *App) GetChannelUnread(channelId, userId string) (*model.ChannelUnread, *model.AppError) { func (a *App) GetChannelUnread(channelId, userID string) (*model.ChannelUnread, *model.AppError) {
channelUnread, err := a.Srv().Store.Channel().GetChannelUnread(channelId, userId) channelUnread, err := a.Srv().Store.Channel().GetChannelUnread(channelId, userID)
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -1868,16 +1868,16 @@ func (a *App) GetChannelUnread(channelId, userId string) (*model.ChannelUnread,
return channelUnread, nil return channelUnread, nil
} }
func (a *App) JoinChannel(channel *model.Channel, userId string) *model.AppError { func (a *App) JoinChannel(channel *model.Channel, userID string) *model.AppError {
userChan := make(chan store.StoreResult, 1) userChan := make(chan store.StoreResult, 1)
memberChan := make(chan store.StoreResult, 1) memberChan := make(chan store.StoreResult, 1)
go func() { go func() {
user, err := a.Srv().Store.User().Get(userId) user, err := a.Srv().Store.User().Get(userID)
userChan <- store.StoreResult{Data: user, NErr: err} userChan <- store.StoreResult{Data: user, NErr: err}
close(userChan) close(userChan)
}() }()
go func() { go func() {
member, err := a.Srv().Store.Channel().GetMember(channel.Id, userId) member, err := a.Srv().Store.Channel().GetMember(channel.Id, userID)
memberChan <- store.StoreResult{Data: member, NErr: err} memberChan <- store.StoreResult{Data: member, NErr: err}
close(memberChan) close(memberChan)
}() }()
@@ -1971,7 +1971,7 @@ func (a *App) postJoinTeamMessage(user *model.User, channel *model.Channel) *mod
return nil return nil
} }
func (a *App) LeaveChannel(channelId string, userId string) *model.AppError { func (a *App) LeaveChannel(channelId string, userID string) *model.AppError {
sc := make(chan store.StoreResult, 1) sc := make(chan store.StoreResult, 1)
go func() { go func() {
channel, err := a.Srv().Store.Channel().Get(channelId, true) channel, err := a.Srv().Store.Channel().Get(channelId, true)
@@ -1981,7 +1981,7 @@ func (a *App) LeaveChannel(channelId string, userId string) *model.AppError {
uc := make(chan store.StoreResult, 1) uc := make(chan store.StoreResult, 1)
go func() { go func() {
user, err := a.Srv().Store.User().Get(userId) user, err := a.Srv().Store.User().Get(userID)
uc <- store.StoreResult{Data: user, NErr: err} uc <- store.StoreResult{Data: user, NErr: err}
close(uc) close(uc)
}() }()
@@ -2032,7 +2032,7 @@ func (a *App) LeaveChannel(channelId string, userId string) *model.AppError {
return err return err
} }
if err := a.removeUserFromChannel(userId, userId, channel); err != nil { if err := a.removeUserFromChannel(userID, userID, channel); err != nil {
return err return err
} }
@@ -2142,8 +2142,8 @@ func (a *App) postRemoveFromChannelMessage(removerUserId string, removedUser *mo
return nil return nil
} }
func (a *App) removeUserFromChannel(userIdToRemove string, removerUserId string, channel *model.Channel) *model.AppError { func (a *App) removeUserFromChannel(userIDToRemove string, removerUserId string, channel *model.Channel) *model.AppError {
user, nErr := a.Srv().Store.User().Get(userIdToRemove) user, nErr := a.Srv().Store.User().Get(userIDToRemove)
if nErr != nil { if nErr != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -2161,8 +2161,8 @@ func (a *App) removeUserFromChannel(userIdToRemove string, removerUserId string,
} }
} }
if channel.IsGroupConstrained() && userIdToRemove != removerUserId && !user.IsBot { if channel.IsGroupConstrained() && userIDToRemove != removerUserId && !user.IsBot {
nonMembers, err := a.FilterNonGroupChannelMembers([]string{userIdToRemove}, channel) nonMembers, err := a.FilterNonGroupChannelMembers([]string{userIDToRemove}, channel)
if err != nil { if err != nil {
return model.NewAppError("removeUserFromChannel", "api.channel.remove_user_from_channel.app_error", nil, "", http.StatusInternalServerError) return model.NewAppError("removeUserFromChannel", "api.channel.remove_user_from_channel.app_error", nil, "", http.StatusInternalServerError)
} }
@@ -2171,25 +2171,25 @@ func (a *App) removeUserFromChannel(userIdToRemove string, removerUserId string,
} }
} }
cm, err := a.GetChannelMember(channel.Id, userIdToRemove) cm, err := a.GetChannelMember(channel.Id, userIDToRemove)
if err != nil { if err != nil {
return err return err
} }
if err := a.Srv().Store.Channel().RemoveMember(channel.Id, userIdToRemove); err != nil { if err := a.Srv().Store.Channel().RemoveMember(channel.Id, userIDToRemove); err != nil {
return model.NewAppError("removeUserFromChannel", "app.channel.remove_member.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("removeUserFromChannel", "app.channel.remove_member.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
if err := a.Srv().Store.ChannelMemberHistory().LogLeaveEvent(userIdToRemove, channel.Id, model.GetMillis()); err != nil { if err := a.Srv().Store.ChannelMemberHistory().LogLeaveEvent(userIDToRemove, channel.Id, model.GetMillis()); err != nil {
return model.NewAppError("removeUserFromChannel", "app.channel_member_history.log_leave_event.internal_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("removeUserFromChannel", "app.channel_member_history.log_leave_event.internal_error", nil, err.Error(), http.StatusInternalServerError)
} }
if isGuest { if isGuest {
currentMembers, err := a.GetChannelMembersForUser(channel.TeamId, userIdToRemove) currentMembers, err := a.GetChannelMembersForUser(channel.TeamId, userIDToRemove)
if err != nil { if err != nil {
return err return err
} }
if len(*currentMembers) == 0 { if len(*currentMembers) == 0 {
teamMember, err := a.GetTeamMember(channel.TeamId, userIdToRemove) teamMember, err := a.GetTeamMember(channel.TeamId, userIDToRemove)
if err != nil { if err != nil {
return model.NewAppError("removeUserFromChannel", "api.team.remove_user_from_team.missing.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("removeUserFromChannel", "api.team.remove_user_from_team.missing.app_error", nil, err.Error(), http.StatusBadRequest)
} }
@@ -2200,7 +2200,7 @@ func (a *App) removeUserFromChannel(userIdToRemove string, removerUserId string,
} }
} }
a.InvalidateCacheForUser(userIdToRemove) a.InvalidateCacheForUser(userIDToRemove)
a.invalidateCacheForChannelMembers(channel.Id) a.invalidateCacheForChannelMembers(channel.Id)
if pluginsEnvironment := a.GetPluginsEnvironment(); pluginsEnvironment != nil { if pluginsEnvironment := a.GetPluginsEnvironment(); pluginsEnvironment != nil {
@@ -2219,12 +2219,12 @@ func (a *App) removeUserFromChannel(userIdToRemove string, removerUserId string,
} }
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_USER_REMOVED, "", channel.Id, "", nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_USER_REMOVED, "", channel.Id, "", nil)
message.Add("user_id", userIdToRemove) message.Add("user_id", userIDToRemove)
message.Add("remover_id", removerUserId) message.Add("remover_id", removerUserId)
a.Publish(message) a.Publish(message)
// because the removed user no longer belongs to the channel we need to send a separate websocket event // because the removed user no longer belongs to the channel we need to send a separate websocket event
userMsg := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_USER_REMOVED, "", "", userIdToRemove, nil) userMsg := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_USER_REMOVED, "", "", userIDToRemove, nil)
userMsg.Add("channel_id", channel.Id) userMsg.Add("channel_id", channel.Id)
userMsg.Add("remover_id", removerUserId) userMsg.Add("remover_id", removerUserId)
a.Publish(userMsg) a.Publish(userMsg)
@@ -2232,19 +2232,19 @@ func (a *App) removeUserFromChannel(userIdToRemove string, removerUserId string,
return nil return nil
} }
func (a *App) RemoveUserFromChannel(userIdToRemove string, removerUserId string, channel *model.Channel) *model.AppError { func (a *App) RemoveUserFromChannel(userIDToRemove string, removerUserId string, channel *model.Channel) *model.AppError {
var err *model.AppError var err *model.AppError
if err = a.removeUserFromChannel(userIdToRemove, removerUserId, channel); err != nil { if err = a.removeUserFromChannel(userIDToRemove, removerUserId, channel); err != nil {
return err return err
} }
var user *model.User var user *model.User
if user, err = a.GetUser(userIdToRemove); err != nil { if user, err = a.GetUser(userIDToRemove); err != nil {
return err return err
} }
if userIdToRemove == removerUserId { if userIDToRemove == removerUserId {
a.postLeaveChannelMessage(user, channel) a.postLeaveChannelMessage(user, channel)
} else { } else {
a.Srv().Go(func() { a.Srv().Go(func() {
@@ -2255,9 +2255,9 @@ func (a *App) RemoveUserFromChannel(userIdToRemove string, removerUserId string,
return nil return nil
} }
func (a *App) GetNumberOfChannelsOnTeam(teamId string) (int, *model.AppError) { func (a *App) GetNumberOfChannelsOnTeam(teamID string) (int, *model.AppError) {
// Get total number of channels on current team // Get total number of channels on current team
list, err := a.Srv().Store.Channel().GetTeamChannels(teamId) list, err := a.Srv().Store.Channel().GetTeamChannels(teamID)
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -2270,13 +2270,13 @@ func (a *App) GetNumberOfChannelsOnTeam(teamId string) (int, *model.AppError) {
return len(*list), nil return len(*list), nil
} }
func (a *App) SetActiveChannel(userId string, channelId string) *model.AppError { func (a *App) SetActiveChannel(userID string, channelId string) *model.AppError {
status, err := a.GetStatus(userId) status, err := a.GetStatus(userID)
oldStatus := model.STATUS_OFFLINE oldStatus := model.STATUS_OFFLINE
if err != nil { if err != nil {
status = &model.Status{UserId: userId, Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: channelId} status = &model.Status{UserId: userID, Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: channelId}
} else { } else {
oldStatus = status.Status oldStatus = status.Status
status.ActiveChannel = channelId status.ActiveChannel = channelId
@@ -2295,8 +2295,8 @@ func (a *App) SetActiveChannel(userId string, channelId string) *model.AppError
return nil return nil
} }
func (a *App) UpdateChannelLastViewedAt(channelIds []string, userId string) *model.AppError { func (a *App) UpdateChannelLastViewedAt(channelIds []string, userID string) *model.AppError {
if _, err := a.Srv().Store.Channel().UpdateLastViewedAt(channelIds, userId, *a.Config().ServiceSettings.ThreadAutoFollow); err != nil { if _, err := a.Srv().Store.Channel().UpdateLastViewedAt(channelIds, userID, *a.Config().ServiceSettings.ThreadAutoFollow); err != nil {
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
@@ -2308,7 +2308,7 @@ func (a *App) UpdateChannelLastViewedAt(channelIds []string, userId string) *mod
if *a.Config().ServiceSettings.EnableChannelViewedMessages { if *a.Config().ServiceSettings.EnableChannelViewedMessages {
for _, channelId := range channelIds { for _, channelId := range channelIds {
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_CHANNEL_VIEWED, "", "", userId, nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_CHANNEL_VIEWED, "", "", userID, nil)
message.Add("channel_id", channelId) message.Add("channel_id", channelId)
a.Publish(message) a.Publish(message)
} }
@@ -2369,11 +2369,11 @@ func (a *App) MarkChannelAsUnreadFromPost(postID string, userID string) (*model.
return channelUnread, nil return channelUnread, nil
} }
func (a *App) AutocompleteChannels(teamId string, term string) (*model.ChannelList, *model.AppError) { func (a *App) AutocompleteChannels(teamID string, term string) (*model.ChannelList, *model.AppError) {
includeDeleted := *a.Config().TeamSettings.ExperimentalViewArchivedChannels includeDeleted := *a.Config().TeamSettings.ExperimentalViewArchivedChannels
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
channelList, err := a.Srv().Store.Channel().AutocompleteInTeam(teamId, term, includeDeleted) channelList, err := a.Srv().Store.Channel().AutocompleteInTeam(teamID, term, includeDeleted)
if err != nil { if err != nil {
return nil, model.NewAppError("AutocompleteChannels", "app.channel.search.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("AutocompleteChannels", "app.channel.search.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -2381,12 +2381,12 @@ func (a *App) AutocompleteChannels(teamId string, term string) (*model.ChannelLi
return channelList, nil return channelList, nil
} }
func (a *App) AutocompleteChannelsForSearch(teamId string, userId string, term string) (*model.ChannelList, *model.AppError) { func (a *App) AutocompleteChannelsForSearch(teamID string, userID string, term string) (*model.ChannelList, *model.AppError) {
includeDeleted := *a.Config().TeamSettings.ExperimentalViewArchivedChannels includeDeleted := *a.Config().TeamSettings.ExperimentalViewArchivedChannels
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
channelList, err := a.Srv().Store.Channel().AutocompleteInTeamForSearch(teamId, userId, term, includeDeleted) channelList, err := a.Srv().Store.Channel().AutocompleteInTeamForSearch(teamID, userID, term, includeDeleted)
if err != nil { if err != nil {
return nil, model.NewAppError("AutocompleteChannelsForSearch", "app.channel.search.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("AutocompleteChannelsForSearch", "app.channel.search.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -2423,12 +2423,12 @@ func (a *App) SearchAllChannels(term string, opts model.ChannelSearchOpts) (*mod
return channelList, totalCount, nil return channelList, totalCount, nil
} }
func (a *App) SearchChannels(teamId string, term string) (*model.ChannelList, *model.AppError) { func (a *App) SearchChannels(teamID string, term string) (*model.ChannelList, *model.AppError) {
includeDeleted := *a.Config().TeamSettings.ExperimentalViewArchivedChannels includeDeleted := *a.Config().TeamSettings.ExperimentalViewArchivedChannels
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
channelList, err := a.Srv().Store.Channel().SearchInTeam(teamId, term, includeDeleted) channelList, err := a.Srv().Store.Channel().SearchInTeam(teamID, term, includeDeleted)
if err != nil { if err != nil {
return nil, model.NewAppError("SearchChannels", "app.channel.search.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SearchChannels", "app.channel.search.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -2436,10 +2436,10 @@ func (a *App) SearchChannels(teamId string, term string) (*model.ChannelList, *m
return channelList, nil return channelList, nil
} }
func (a *App) SearchArchivedChannels(teamId string, term string, userId string) (*model.ChannelList, *model.AppError) { func (a *App) SearchArchivedChannels(teamID string, term string, userID string) (*model.ChannelList, *model.AppError) {
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
channelList, err := a.Srv().Store.Channel().SearchArchivedInTeam(teamId, term, userId) channelList, err := a.Srv().Store.Channel().SearchArchivedInTeam(teamID, term, userID)
if err != nil { if err != nil {
return nil, model.NewAppError("SearchArchivedChannels", "app.channel.search.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SearchArchivedChannels", "app.channel.search.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -2447,12 +2447,12 @@ func (a *App) SearchArchivedChannels(teamId string, term string, userId string)
return channelList, nil return channelList, nil
} }
func (a *App) SearchChannelsForUser(userId, teamId, term string) (*model.ChannelList, *model.AppError) { func (a *App) SearchChannelsForUser(userID, teamID, term string) (*model.ChannelList, *model.AppError) {
includeDeleted := *a.Config().TeamSettings.ExperimentalViewArchivedChannels includeDeleted := *a.Config().TeamSettings.ExperimentalViewArchivedChannels
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
channelList, err := a.Srv().Store.Channel().SearchForUserInTeam(userId, teamId, term, includeDeleted) channelList, err := a.Srv().Store.Channel().SearchForUserInTeam(userID, teamID, term, includeDeleted)
if err != nil { if err != nil {
return nil, model.NewAppError("SearchChannelsForUser", "app.channel.search.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SearchChannelsForUser", "app.channel.search.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -2460,21 +2460,21 @@ func (a *App) SearchChannelsForUser(userId, teamId, term string) (*model.Channel
return channelList, nil return channelList, nil
} }
func (a *App) SearchGroupChannels(userId, term string) (*model.ChannelList, *model.AppError) { func (a *App) SearchGroupChannels(userID, term string) (*model.ChannelList, *model.AppError) {
if term == "" { if term == "" {
return &model.ChannelList{}, nil return &model.ChannelList{}, nil
} }
channelList, err := a.Srv().Store.Channel().SearchGroupChannels(userId, term) channelList, err := a.Srv().Store.Channel().SearchGroupChannels(userID, term)
if err != nil { if err != nil {
return nil, model.NewAppError("SearchGroupChannels", "app.channel.search_group_channels.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SearchGroupChannels", "app.channel.search_group_channels.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
return channelList, nil return channelList, nil
} }
func (a *App) SearchChannelsUserNotIn(teamId string, userId string, term string) (*model.ChannelList, *model.AppError) { func (a *App) SearchChannelsUserNotIn(teamID string, userID string, term string) (*model.ChannelList, *model.AppError) {
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
channelList, err := a.Srv().Store.Channel().SearchMore(userId, teamId, term) channelList, err := a.Srv().Store.Channel().SearchMore(userID, teamID, term)
if err != nil { if err != nil {
return nil, model.NewAppError("SearchChannelsUserNotIn", "app.channel.search.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SearchChannelsUserNotIn", "app.channel.search.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -2482,7 +2482,7 @@ func (a *App) SearchChannelsUserNotIn(teamId string, userId string, term string)
return channelList, nil return channelList, nil
} }
func (a *App) MarkChannelsAsViewed(channelIds []string, userId string, currentSessionId string) (map[string]int64, *model.AppError) { func (a *App) MarkChannelsAsViewed(channelIds []string, userID string, currentSessionId string) (map[string]int64, *model.AppError) {
// I start looking for channels with notifications before I mark it as read, to clear the push notifications if needed // I start looking for channels with notifications before I mark it as read, to clear the push notifications if needed
channelsToClearPushNotifications := []string{} channelsToClearPushNotifications := []string{}
if *a.Config().EmailSettings.SendPushNotifications { if *a.Config().EmailSettings.SendPushNotifications {
@@ -2493,7 +2493,7 @@ func (a *App) MarkChannelsAsViewed(channelIds []string, userId string, currentSe
continue continue
} }
member, err := a.Srv().Store.Channel().GetMember(channelId, userId) member, err := a.Srv().Store.Channel().GetMember(channelId, userID)
if err != nil { if err != nil {
mlog.Warn("Failed to get membership", mlog.Err(err)) mlog.Warn("Failed to get membership", mlog.Err(err))
continue continue
@@ -2501,21 +2501,21 @@ func (a *App) MarkChannelsAsViewed(channelIds []string, userId string, currentSe
notify := member.NotifyProps[model.PUSH_NOTIFY_PROP] notify := member.NotifyProps[model.PUSH_NOTIFY_PROP]
if notify == model.CHANNEL_NOTIFY_DEFAULT { if notify == model.CHANNEL_NOTIFY_DEFAULT {
user, err := a.GetUser(userId) user, err := a.GetUser(userID)
if err != nil { if err != nil {
mlog.Warn("Failed to get user", mlog.String("user_id", userId), mlog.Err(err)) mlog.Warn("Failed to get user", mlog.String("user_id", userID), mlog.Err(err))
continue continue
} }
notify = user.NotifyProps[model.PUSH_NOTIFY_PROP] notify = user.NotifyProps[model.PUSH_NOTIFY_PROP]
} }
if notify == model.USER_NOTIFY_ALL { if notify == model.USER_NOTIFY_ALL {
if count, err := a.Srv().Store.User().GetAnyUnreadPostCountForChannel(userId, channelId); err == nil { if count, err := a.Srv().Store.User().GetAnyUnreadPostCountForChannel(userID, channelId); err == nil {
if count > 0 { if count > 0 {
channelsToClearPushNotifications = append(channelsToClearPushNotifications, channelId) channelsToClearPushNotifications = append(channelsToClearPushNotifications, channelId)
} }
} }
} else if notify == model.USER_NOTIFY_MENTION || channel.Type == model.CHANNEL_DIRECT { } else if notify == model.USER_NOTIFY_MENTION || channel.Type == model.CHANNEL_DIRECT {
if count, err := a.Srv().Store.User().GetUnreadCountForChannel(userId, channelId); err == nil { if count, err := a.Srv().Store.User().GetUnreadCountForChannel(userID, channelId); err == nil {
if count > 0 { if count > 0 {
channelsToClearPushNotifications = append(channelsToClearPushNotifications, channelId) channelsToClearPushNotifications = append(channelsToClearPushNotifications, channelId)
} }
@@ -2523,7 +2523,7 @@ func (a *App) MarkChannelsAsViewed(channelIds []string, userId string, currentSe
} }
} }
} }
times, err := a.Srv().Store.Channel().UpdateLastViewedAt(channelIds, userId, *a.Config().ServiceSettings.ThreadAutoFollow) times, err := a.Srv().Store.Channel().UpdateLastViewedAt(channelIds, userID, *a.Config().ServiceSettings.ThreadAutoFollow)
if err != nil { if err != nil {
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
@@ -2536,19 +2536,19 @@ func (a *App) MarkChannelsAsViewed(channelIds []string, userId string, currentSe
if *a.Config().ServiceSettings.EnableChannelViewedMessages { if *a.Config().ServiceSettings.EnableChannelViewedMessages {
for _, channelId := range channelIds { for _, channelId := range channelIds {
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_CHANNEL_VIEWED, "", "", userId, nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_CHANNEL_VIEWED, "", "", userID, nil)
message.Add("channel_id", channelId) message.Add("channel_id", channelId)
a.Publish(message) a.Publish(message)
} }
} }
for _, channelId := range channelsToClearPushNotifications { for _, channelId := range channelsToClearPushNotifications {
a.clearPushNotification(currentSessionId, userId, channelId) a.clearPushNotification(currentSessionId, userID, channelId)
} }
return times, nil return times, nil
} }
func (a *App) ViewChannel(view *model.ChannelView, userId string, currentSessionId string) (map[string]int64, *model.AppError) { func (a *App) ViewChannel(view *model.ChannelView, userID string, currentSessionId string) (map[string]int64, *model.AppError) {
if err := a.SetActiveChannel(userId, view.ChannelId); err != nil { if err := a.SetActiveChannel(userID, view.ChannelId); err != nil {
return nil, err return nil, err
} }
@@ -2566,7 +2566,7 @@ func (a *App) ViewChannel(view *model.ChannelView, userId string, currentSession
return map[string]int64{}, nil return map[string]int64{}, nil
} }
return a.MarkChannelsAsViewed(channelIds, userId, currentSessionId) return a.MarkChannelsAsViewed(channelIds, userID, currentSessionId)
} }
func (a *App) PermanentDeleteChannel(channel *model.Channel) *model.AppError { func (a *App) PermanentDeleteChannel(channel *model.Channel) *model.AppError {
@@ -2760,8 +2760,8 @@ func (a *App) RemoveUsersFromChannelNotMemberOfTeam(remover *model.User, channel
if remover != nil { if remover != nil {
removerId = remover.Id removerId = remover.Id
} }
for userId := range channelMemberMap { for userID := range channelMemberMap {
if err := a.removeUserFromChannel(userId, removerId, channel); err != nil { if err := a.removeUserFromChannel(userID, removerId, channel); err != nil {
return err return err
} }
} }
@@ -2780,8 +2780,8 @@ func (a *App) GetPinnedPosts(channelId string) (*model.PostList, *model.AppError
return posts, nil return posts, nil
} }
func (a *App) ToggleMuteChannel(channelId, userId string) (*model.ChannelMember, *model.AppError) { func (a *App) ToggleMuteChannel(channelId, userID string) (*model.ChannelMember, *model.AppError) {
member, nErr := a.Srv().Store.Channel().GetMember(channelId, userId) member, nErr := a.Srv().Store.Channel().GetMember(channelId, userID)
if nErr != nil { if nErr != nil {
var appErr *model.AppError var appErr *model.AppError
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
@@ -2807,8 +2807,8 @@ func (a *App) ToggleMuteChannel(channelId, userId string) (*model.ChannelMember,
return member, nil return member, nil
} }
func (a *App) setChannelsMuted(channelIds []string, userId string, muted bool) ([]*model.ChannelMember, *model.AppError) { func (a *App) setChannelsMuted(channelIds []string, userID string, muted bool) ([]*model.ChannelMember, *model.AppError) {
members, nErr := a.Srv().Store.Channel().GetMembersByChannelIds(channelIds, userId) members, nErr := a.Srv().Store.Channel().GetMembersByChannelIds(channelIds, userID)
if nErr != nil { if nErr != nil {
var appErr *model.AppError var appErr *model.AppError
switch { switch {
@@ -2871,7 +2871,7 @@ func (a *App) FillInChannelsProps(channelList *model.ChannelList) *model.AppErro
channelsByTeam[channel.TeamId] = append(channelsByTeam[channel.TeamId], channel) channelsByTeam[channel.TeamId] = append(channelsByTeam[channel.TeamId], channel)
} }
for teamId, channelList := range channelsByTeam { for teamID, channelList := range channelsByTeam {
allChannelMentions := make(map[string]bool) allChannelMentions := make(map[string]bool)
channelMentions := make(map[*model.Channel][]string, len(channelList)) channelMentions := make(map[*model.Channel][]string, len(channelList))
@@ -2890,7 +2890,7 @@ func (a *App) FillInChannelsProps(channelList *model.ChannelList) *model.AppErro
} }
if len(allChannelMentionNames) > 0 { if len(allChannelMentionNames) > 0 {
mentionedChannels, err := a.GetChannelsByNames(allChannelMentionNames, teamId) mentionedChannels, err := a.GetChannelsByNames(allChannelMentionNames, teamID)
if err != nil { if err != nil {
return err return err
} }

Просмотреть файл

@@ -13,8 +13,8 @@ import (
"github.com/mattermost/mattermost-server/v5/store" "github.com/mattermost/mattermost-server/v5/store"
) )
func (a *App) createInitialSidebarCategories(userId, teamId string) *model.AppError { func (a *App) createInitialSidebarCategories(userID, teamID string) *model.AppError {
nErr := a.Srv().Store.Channel().CreateInitialSidebarCategories(userId, teamId) nErr := a.Srv().Store.Channel().CreateInitialSidebarCategories(userID, teamID)
if nErr != nil { if nErr != nil {
return model.NewAppError("createInitialSidebarCategories", "app.channel.create_initial_sidebar_categories.internal_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("createInitialSidebarCategories", "app.channel.create_initial_sidebar_categories.internal_error", nil, nErr.Error(), http.StatusInternalServerError)
@@ -23,17 +23,17 @@ func (a *App) createInitialSidebarCategories(userId, teamId string) *model.AppEr
return nil return nil
} }
func (a *App) GetSidebarCategories(userId, teamId string) (*model.OrderedSidebarCategories, *model.AppError) { func (a *App) GetSidebarCategories(userID, teamID string) (*model.OrderedSidebarCategories, *model.AppError) {
categories, err := a.Srv().Store.Channel().GetSidebarCategories(userId, teamId) categories, err := a.Srv().Store.Channel().GetSidebarCategories(userID, teamID)
if err == nil && len(categories.Categories) == 0 { if err == nil && len(categories.Categories) == 0 {
// A user must always have categories, so migration must not have happened yet, and we should run it ourselves // A user must always have categories, so migration must not have happened yet, and we should run it ourselves
appErr := a.createInitialSidebarCategories(userId, teamId) appErr := a.createInitialSidebarCategories(userID, teamID)
if appErr != nil { if appErr != nil {
return nil, appErr return nil, appErr
} }
categories, err = a.waitForSidebarCategories(userId, teamId) categories, err = a.waitForSidebarCategories(userID, teamID)
} }
if err != nil { if err != nil {
@@ -51,10 +51,10 @@ func (a *App) GetSidebarCategories(userId, teamId string) (*model.OrderedSidebar
// waitForSidebarCategories is used to get a user's sidebar categories after they've been created since there may be // waitForSidebarCategories is used to get a user's sidebar categories after they've been created since there may be
// replication lag if any database replicas exist. It will wait until results are available to return them. // replication lag if any database replicas exist. It will wait until results are available to return them.
func (a *App) waitForSidebarCategories(userId, teamId string) (*model.OrderedSidebarCategories, error) { func (a *App) waitForSidebarCategories(userID, teamID string) (*model.OrderedSidebarCategories, error) {
if len(a.Config().SqlSettings.DataSourceReplicas) == 0 { if len(a.Config().SqlSettings.DataSourceReplicas) == 0 {
// The categories should be available immediately on a single database // The categories should be available immediately on a single database
return a.Srv().Store.Channel().GetSidebarCategories(userId, teamId) return a.Srv().Store.Channel().GetSidebarCategories(userID, teamID)
} }
now := model.GetMillis() now := model.GetMillis()
@@ -62,7 +62,7 @@ func (a *App) waitForSidebarCategories(userId, teamId string) (*model.OrderedSid
for model.GetMillis()-now < 12000 { for model.GetMillis()-now < 12000 {
time.Sleep(100 * time.Millisecond) time.Sleep(100 * time.Millisecond)
categories, err := a.Srv().Store.Channel().GetSidebarCategories(userId, teamId) categories, err := a.Srv().Store.Channel().GetSidebarCategories(userID, teamID)
if err != nil || len(categories.Categories) > 0 { if err != nil || len(categories.Categories) > 0 {
// We've found something, so return // We've found something, so return
@@ -70,13 +70,13 @@ func (a *App) waitForSidebarCategories(userId, teamId string) (*model.OrderedSid
} }
} }
mlog.Error("waitForSidebarCategories giving up", mlog.String("user_id", userId), mlog.String("team_id", teamId)) mlog.Error("waitForSidebarCategories giving up", mlog.String("user_id", userID), mlog.String("team_id", teamID))
return &model.OrderedSidebarCategories{}, nil return &model.OrderedSidebarCategories{}, nil
} }
func (a *App) GetSidebarCategoryOrder(userId, teamId string) ([]string, *model.AppError) { func (a *App) GetSidebarCategoryOrder(userID, teamID string) ([]string, *model.AppError) {
categories, err := a.Srv().Store.Channel().GetSidebarCategoryOrder(userId, teamId) categories, err := a.Srv().Store.Channel().GetSidebarCategoryOrder(userID, teamID)
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -105,8 +105,8 @@ func (a *App) GetSidebarCategory(categoryId string) (*model.SidebarCategoryWithC
return category, nil return category, nil
} }
func (a *App) CreateSidebarCategory(userId, teamId string, newCategory *model.SidebarCategoryWithChannels) (*model.SidebarCategoryWithChannels, *model.AppError) { func (a *App) CreateSidebarCategory(userID, teamID string, newCategory *model.SidebarCategoryWithChannels) (*model.SidebarCategoryWithChannels, *model.AppError) {
category, err := a.Srv().Store.Channel().CreateSidebarCategory(userId, teamId, newCategory) category, err := a.Srv().Store.Channel().CreateSidebarCategory(userID, teamID, newCategory)
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -116,14 +116,14 @@ func (a *App) CreateSidebarCategory(userId, teamId string, newCategory *model.Si
return nil, model.NewAppError("CreateSidebarCategory", "app.channel.sidebar_categories.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateSidebarCategory", "app.channel.sidebar_categories.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
} }
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_SIDEBAR_CATEGORY_CREATED, teamId, "", userId, nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_SIDEBAR_CATEGORY_CREATED, teamID, "", userID, nil)
message.Add("category_id", category.Id) message.Add("category_id", category.Id)
a.Publish(message) a.Publish(message)
return category, nil return category, nil
} }
func (a *App) UpdateSidebarCategoryOrder(userId, teamId string, categoryOrder []string) *model.AppError { func (a *App) UpdateSidebarCategoryOrder(userID, teamID string, categoryOrder []string) *model.AppError {
err := a.Srv().Store.Channel().UpdateSidebarCategoryOrder(userId, teamId, categoryOrder) err := a.Srv().Store.Channel().UpdateSidebarCategoryOrder(userID, teamID, categoryOrder)
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
@@ -136,27 +136,27 @@ func (a *App) UpdateSidebarCategoryOrder(userId, teamId string, categoryOrder []
return model.NewAppError("UpdateSidebarCategoryOrder", "app.channel.sidebar_categories.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("UpdateSidebarCategoryOrder", "app.channel.sidebar_categories.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
} }
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_SIDEBAR_CATEGORY_ORDER_UPDATED, teamId, "", userId, nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_SIDEBAR_CATEGORY_ORDER_UPDATED, teamID, "", userID, nil)
message.Add("order", categoryOrder) message.Add("order", categoryOrder)
a.Publish(message) a.Publish(message)
return nil return nil
} }
func (a *App) UpdateSidebarCategories(userId, teamId string, categories []*model.SidebarCategoryWithChannels) ([]*model.SidebarCategoryWithChannels, *model.AppError) { func (a *App) UpdateSidebarCategories(userID, teamID string, categories []*model.SidebarCategoryWithChannels) ([]*model.SidebarCategoryWithChannels, *model.AppError) {
updatedCategories, originalCategories, err := a.Srv().Store.Channel().UpdateSidebarCategories(userId, teamId, categories) updatedCategories, originalCategories, err := a.Srv().Store.Channel().UpdateSidebarCategories(userID, teamID, categories)
if err != nil { if err != nil {
return nil, model.NewAppError("UpdateSidebarCategories", "app.channel.sidebar_categories.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateSidebarCategories", "app.channel.sidebar_categories.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_SIDEBAR_CATEGORY_UPDATED, teamId, "", userId, nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_SIDEBAR_CATEGORY_UPDATED, teamID, "", userID, nil)
a.Publish(message) a.Publish(message)
a.muteChannelsForUpdatedCategories(userId, updatedCategories, originalCategories) a.muteChannelsForUpdatedCategories(userID, updatedCategories, originalCategories)
return updatedCategories, nil return updatedCategories, nil
} }
func (a *App) muteChannelsForUpdatedCategories(userId string, updatedCategories []*model.SidebarCategoryWithChannels, originalCategories []*model.SidebarCategoryWithChannels) { func (a *App) muteChannelsForUpdatedCategories(userID string, updatedCategories []*model.SidebarCategoryWithChannels, originalCategories []*model.SidebarCategoryWithChannels) {
var channelsToMute []string var channelsToMute []string
var channelsToUnmute []string var channelsToUnmute []string
@@ -204,22 +204,22 @@ func (a *App) muteChannelsForUpdatedCategories(userId string, updatedCategories
} }
if len(channelsToMute) > 0 { if len(channelsToMute) > 0 {
_, err := a.setChannelsMuted(channelsToMute, userId, true) _, err := a.setChannelsMuted(channelsToMute, userID, true)
if err != nil { if err != nil {
mlog.Error( mlog.Error(
"Failed to mute channels to match category", "Failed to mute channels to match category",
mlog.String("user_id", userId), mlog.String("user_id", userID),
mlog.Err(err), mlog.Err(err),
) )
} }
} }
if len(channelsToUnmute) > 0 { if len(channelsToUnmute) > 0 {
_, err := a.setChannelsMuted(channelsToUnmute, userId, false) _, err := a.setChannelsMuted(channelsToUnmute, userID, false)
if err != nil { if err != nil {
mlog.Error( mlog.Error(
"Failed to unmute channels to match category", "Failed to unmute channels to match category",
mlog.String("user_id", userId), mlog.String("user_id", userID),
mlog.Err(err), mlog.Err(err),
) )
} }
@@ -261,7 +261,7 @@ func diffChannelsBetweenCategories(updatedCategories []*model.SidebarCategoryWit
return channelsDiff return channelsDiff
} }
func (a *App) DeleteSidebarCategory(userId, teamId, categoryId string) *model.AppError { func (a *App) DeleteSidebarCategory(userID, teamID, categoryId string) *model.AppError {
err := a.Srv().Store.Channel().DeleteSidebarCategory(categoryId) err := a.Srv().Store.Channel().DeleteSidebarCategory(categoryId)
if err != nil { if err != nil {
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
@@ -273,7 +273,7 @@ func (a *App) DeleteSidebarCategory(userId, teamId, categoryId string) *model.Ap
} }
} }
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_SIDEBAR_CATEGORY_DELETED, teamId, "", userId, nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_SIDEBAR_CATEGORY_DELETED, teamID, "", userID, nil)
message.Add("category_id", categoryId) message.Add("category_id", categoryId)
a.Publish(message) a.Publish(message)

Просмотреть файл

@@ -42,8 +42,8 @@ func GetCommandProvider(name string) CommandProvider {
return nil return nil
} }
// @openTracingParams teamId, skipSlackParsing // @openTracingParams teamID, skipSlackParsing
func (a *App) CreateCommandPost(post *model.Post, teamId string, response *model.CommandResponse, skipSlackParsing bool) (*model.Post, *model.AppError) { func (a *App) CreateCommandPost(post *model.Post, teamID string, response *model.CommandResponse, skipSlackParsing bool) (*model.Post, *model.AppError) {
if skipSlackParsing { if skipSlackParsing {
post.Message = response.Text post.Message = response.Text
} else { } else {
@@ -73,13 +73,13 @@ func (a *App) CreateCommandPost(post *model.Post, teamId string, response *model
return post, nil return post, nil
} }
// @openTracingParams teamId // @openTracingParams teamID
// previous ListCommands now ListAutocompleteCommands // previous ListCommands now ListAutocompleteCommands
func (a *App) ListAutocompleteCommands(teamId string, T goi18n.TranslateFunc) ([]*model.Command, *model.AppError) { func (a *App) ListAutocompleteCommands(teamID string, T goi18n.TranslateFunc) ([]*model.Command, *model.AppError) {
commands := make([]*model.Command, 0, 32) commands := make([]*model.Command, 0, 32)
seen := make(map[string]bool) seen := make(map[string]bool)
for _, cmd := range a.PluginCommandsForTeam(teamId) { for _, cmd := range a.PluginCommandsForTeam(teamID) {
if cmd.AutoComplete && !seen[cmd.Trigger] { if cmd.AutoComplete && !seen[cmd.Trigger] {
seen[cmd.Trigger] = true seen[cmd.Trigger] = true
commands = append(commands, cmd) commands = append(commands, cmd)
@@ -87,7 +87,7 @@ func (a *App) ListAutocompleteCommands(teamId string, T goi18n.TranslateFunc) ([
} }
if *a.Config().ServiceSettings.EnableCommands { if *a.Config().ServiceSettings.EnableCommands {
teamCmds, err := a.Srv().Store.Command().GetByTeam(teamId) teamCmds, err := a.Srv().Store.Command().GetByTeam(teamID)
if err != nil { if err != nil {
return nil, model.NewAppError("ListAutocompleteCommands", "app.command.listautocompletecommands.internal_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("ListAutocompleteCommands", "app.command.listautocompletecommands.internal_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -115,12 +115,12 @@ func (a *App) ListAutocompleteCommands(teamId string, T goi18n.TranslateFunc) ([
return commands, nil return commands, nil
} }
func (a *App) ListTeamCommands(teamId string) ([]*model.Command, *model.AppError) { func (a *App) ListTeamCommands(teamID string) ([]*model.Command, *model.AppError) {
if !*a.Config().ServiceSettings.EnableCommands { if !*a.Config().ServiceSettings.EnableCommands {
return nil, model.NewAppError("ListTeamCommands", "api.command.disabled.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("ListTeamCommands", "api.command.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
teamCmds, err := a.Srv().Store.Command().GetByTeam(teamId) teamCmds, err := a.Srv().Store.Command().GetByTeam(teamID)
if err != nil { if err != nil {
return nil, model.NewAppError("ListTeamCommands", "app.command.listteamcommands.internal_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("ListTeamCommands", "app.command.listteamcommands.internal_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -128,7 +128,7 @@ func (a *App) ListTeamCommands(teamId string) ([]*model.Command, *model.AppError
return teamCmds, nil return teamCmds, nil
} }
func (a *App) ListAllCommands(teamId string, T goi18n.TranslateFunc) ([]*model.Command, *model.AppError) { func (a *App) ListAllCommands(teamID string, T goi18n.TranslateFunc) ([]*model.Command, *model.AppError) {
commands := make([]*model.Command, 0, 32) commands := make([]*model.Command, 0, 32)
seen := make(map[string]bool) seen := make(map[string]bool)
for _, value := range commandProviders { for _, value := range commandProviders {
@@ -142,7 +142,7 @@ func (a *App) ListAllCommands(teamId string, T goi18n.TranslateFunc) ([]*model.C
} }
} }
for _, cmd := range a.PluginCommandsForTeam(teamId) { for _, cmd := range a.PluginCommandsForTeam(teamID) {
if !seen[cmd.Trigger] { if !seen[cmd.Trigger] {
seen[cmd.Trigger] = true seen[cmd.Trigger] = true
commands = append(commands, cmd) commands = append(commands, cmd)
@@ -150,7 +150,7 @@ func (a *App) ListAllCommands(teamId string, T goi18n.TranslateFunc) ([]*model.C
} }
if *a.Config().ServiceSettings.EnableCommands { if *a.Config().ServiceSettings.EnableCommands {
teamCmds, err := a.Srv().Store.Command().GetByTeam(teamId) teamCmds, err := a.Srv().Store.Command().GetByTeam(teamID)
if err != nil { if err != nil {
return nil, model.NewAppError("ListAllCommands", "app.command.listallcommands.internal_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("ListAllCommands", "app.command.listallcommands.internal_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -218,7 +218,7 @@ func (a *App) ExecuteCommand(args *model.CommandArgs) (*model.CommandResponse, *
// MentionsToTeamMembers returns all the @ mentions found in message that // MentionsToTeamMembers returns all the @ mentions found in message that
// belong to users in the specified team, linking them to their users // belong to users in the specified team, linking them to their users
func (a *App) MentionsToTeamMembers(message, teamId string) model.UserMentionMap { func (a *App) MentionsToTeamMembers(message, teamID string) model.UserMentionMap {
type mentionMapItem struct { type mentionMapItem struct {
Name string Name string
Id string Id string
@@ -254,7 +254,7 @@ func (a *App) MentionsToTeamMembers(message, teamId string) model.UserMentionMap
continue continue
} }
_, err := a.GetTeamMember(teamId, userFromTrimmed.Id) _, err := a.GetTeamMember(teamID, userFromTrimmed.Id)
if err != nil { if err != nil {
// The user is not in the team, so we should ignore it // The user is not in the team, so we should ignore it
return return
@@ -267,7 +267,7 @@ func (a *App) MentionsToTeamMembers(message, teamId string) model.UserMentionMap
return return
} }
_, err := a.GetTeamMember(teamId, user.Id) _, err := a.GetTeamMember(teamID, user.Id)
if err != nil { if err != nil {
// The user is not in the team, so we should ignore it // The user is not in the team, so we should ignore it
return return
@@ -290,7 +290,7 @@ func (a *App) MentionsToTeamMembers(message, teamId string) model.UserMentionMap
// MentionsToPublicChannels returns all the mentions to public channels, // MentionsToPublicChannels returns all the mentions to public channels,
// linking them to their channels // linking them to their channels
func (a *App) MentionsToPublicChannels(message, teamId string) model.ChannelMentionMap { func (a *App) MentionsToPublicChannels(message, teamID string) model.ChannelMentionMap {
type mentionMapItem struct { type mentionMapItem struct {
Name string Name string
Id string Id string
@@ -304,7 +304,7 @@ func (a *App) MentionsToPublicChannels(message, teamId string) model.ChannelMent
wg.Add(1) wg.Add(1)
go func(channelName string) { go func(channelName string) {
defer wg.Done() defer wg.Done()
channel, err := a.GetChannelByName(channelName, teamId, false) channel, err := a.GetChannelByName(channelName, teamID, false)
if err != nil { if err != nil {
return return
} }
@@ -655,17 +655,17 @@ func (a *App) createCommand(cmd *model.Command) (*model.Command, *model.AppError
return command, nil return command, nil
} }
func (a *App) GetCommand(commandId string) (*model.Command, *model.AppError) { func (a *App) GetCommand(commandID string) (*model.Command, *model.AppError) {
if !*a.Config().ServiceSettings.EnableCommands { if !*a.Config().ServiceSettings.EnableCommands {
return nil, model.NewAppError("GetCommand", "api.command.disabled.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("GetCommand", "api.command.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
command, err := a.Srv().Store.Command().Get(commandId) command, err := a.Srv().Store.Command().Get(commandID)
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("SqlCommandStore.Get", "store.sql_command.get.missing.app_error", map[string]interface{}{"command_id": commandId}, "", http.StatusNotFound) return nil, model.NewAppError("SqlCommandStore.Get", "store.sql_command.get.missing.app_error", map[string]interface{}{"command_id": commandID}, "", http.StatusNotFound)
default: default:
return nil, model.NewAppError("GetCommand", "app.command.getcommand.internal_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetCommand", "app.command.getcommand.internal_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -749,12 +749,12 @@ func (a *App) RegenCommandToken(cmd *model.Command) (*model.Command, *model.AppE
return command, nil return command, nil
} }
func (a *App) DeleteCommand(commandId string) *model.AppError { func (a *App) DeleteCommand(commandID string) *model.AppError {
if !*a.Config().ServiceSettings.EnableCommands { if !*a.Config().ServiceSettings.EnableCommands {
return model.NewAppError("DeleteCommand", "api.command.disabled.app_error", nil, "", http.StatusNotImplemented) return model.NewAppError("DeleteCommand", "api.command.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
err := a.Srv().Store.Command().Delete(commandId, model.GetMillis()) err := a.Srv().Store.Command().Delete(commandID, model.GetMillis())
if err != nil { if err != nil {
return model.NewAppError("DeleteCommand", "app.command.deletecommand.internal_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DeleteCommand", "app.command.deletecommand.internal_error", nil, err.Error(), http.StatusInternalServerError)
} }

Просмотреть файл

@@ -188,7 +188,7 @@ func (es *EmailService) SendSignInChangeEmail(email, method, locale, siteURL str
return nil return nil
} }
func (es *EmailService) sendWelcomeEmail(userId string, email string, verified bool, locale, siteURL, redirect string) *model.AppError { func (es *EmailService) sendWelcomeEmail(userID string, email string, verified bool, locale, siteURL, redirect string) *model.AppError {
if !*es.srv.Config().EmailSettings.SendEmailNotifications && !*es.srv.Config().EmailSettings.RequireEmailVerification { if !*es.srv.Config().EmailSettings.SendEmailNotifications && !*es.srv.Config().EmailSettings.RequireEmailVerification {
return model.NewAppError("SendWelcomeEmail", "api.user.send_welcome_email_and_forget.failed.error", nil, "Send Email Notifications and Require Email Verification is disabled in the system console", http.StatusInternalServerError) return model.NewAppError("SendWelcomeEmail", "api.user.send_welcome_email_and_forget.failed.error", nil, "Send Email Notifications and Require Email Verification is disabled in the system console", http.StatusInternalServerError)
} }
@@ -216,7 +216,7 @@ func (es *EmailService) sendWelcomeEmail(userId string, email string, verified b
} }
if !verified && *es.srv.Config().EmailSettings.RequireEmailVerification { if !verified && *es.srv.Config().EmailSettings.RequireEmailVerification {
token, err := es.CreateVerifyEmailToken(userId, email) token, err := es.CreateVerifyEmailToken(userID, email)
if err != nil { if err != nil {
return err return err
} }
@@ -568,12 +568,12 @@ func (es *EmailService) sendMailWithEmbeddedFiles(to, subject, htmlBody string,
return mailservice.SendMailWithEmbeddedFilesUsingConfig(to, subject, htmlBody, embeddedFiles, config, license != nil && *license.Features.Compliance, "") return mailservice.SendMailWithEmbeddedFilesUsingConfig(to, subject, htmlBody, embeddedFiles, config, license != nil && *license.Features.Compliance, "")
} }
func (es *EmailService) CreateVerifyEmailToken(userId string, newEmail string) (*model.Token, *model.AppError) { func (es *EmailService) CreateVerifyEmailToken(userID string, newEmail string) (*model.Token, *model.AppError) {
tokenExtra := struct { tokenExtra := struct {
UserId string UserId string
Email string Email string
}{ }{
userId, userID,
newEmail, newEmail,
} }
jsonData, err := json.Marshal(tokenExtra) jsonData, err := json.Marshal(tokenExtra)

Просмотреть файл

@@ -48,7 +48,7 @@ func (es *EmailService) AddNotificationEmailToBatch(user *model.User, post *mode
} }
type batchedNotification struct { type batchedNotification struct {
userId string userID string
post *model.Post post *model.Post
teamName string teamName string
} }
@@ -85,7 +85,7 @@ func (job *EmailBatchingJob) Start() {
func (job *EmailBatchingJob) Add(user *model.User, post *model.Post, team *model.Team) bool { func (job *EmailBatchingJob) Add(user *model.User, post *model.Post, team *model.Team) bool {
notification := &batchedNotification{ notification := &batchedNotification{
userId: user.Id, userID: user.Id,
post: post, post: post,
teamName: team.Name, teamName: team.Name,
} }
@@ -116,12 +116,12 @@ func (job *EmailBatchingJob) handleNewNotifications() {
for receiving { for receiving {
select { select {
case notification := <-job.newNotifications: case notification := <-job.newNotifications:
userId := notification.userId userID := notification.userID
if _, ok := job.pendingNotifications[userId]; !ok { if _, ok := job.pendingNotifications[userID]; !ok {
job.pendingNotifications[userId] = []*batchedNotification{notification} job.pendingNotifications[userID] = []*batchedNotification{notification}
} else { } else {
job.pendingNotifications[userId] = append(job.pendingNotifications[userId], notification) job.pendingNotifications[userID] = append(job.pendingNotifications[userID], notification)
} }
default: default:
receiving = false receiving = false
@@ -130,7 +130,7 @@ func (job *EmailBatchingJob) handleNewNotifications() {
} }
func (job *EmailBatchingJob) checkPendingNotifications(now time.Time, handler func(string, []*batchedNotification)) { func (job *EmailBatchingJob) checkPendingNotifications(now time.Time, handler func(string, []*batchedNotification)) {
for userId, notifications := range job.pendingNotifications { for userID, notifications := range job.pendingNotifications {
batchStartTime := notifications[0].post.CreateAt batchStartTime := notifications[0].post.CreateAt
inspectedTeamNames := make(map[string]string) inspectedTeamNames := make(map[string]string)
for _, notification := range notifications { for _, notification := range notifications {
@@ -151,7 +151,7 @@ func (job *EmailBatchingJob) checkPendingNotifications(now time.Time, handler fu
// if the user has viewed any channels in this team since the notification was queued, delete // if the user has viewed any channels in this team since the notification was queued, delete
// all queued notifications // all queued notifications
channelMembers, err := job.server.Store.Channel().GetMembersForUser(inspectedTeamNames[notification.teamName], userId) channelMembers, err := job.server.Store.Channel().GetMembersForUser(inspectedTeamNames[notification.teamName], userID)
if err != nil { if err != nil {
mlog.Error("Unable to find ChannelMembers for user", mlog.Err(err)) mlog.Error("Unable to find ChannelMembers for user", mlog.Err(err))
continue continue
@@ -159,8 +159,8 @@ func (job *EmailBatchingJob) checkPendingNotifications(now time.Time, handler fu
for _, channelMember := range *channelMembers { for _, channelMember := range *channelMembers {
if channelMember.LastViewedAt >= batchStartTime { if channelMember.LastViewedAt >= batchStartTime {
mlog.Debug("Deleted notifications for user", mlog.String("user_id", userId)) mlog.Debug("Deleted notifications for user", mlog.String("user_id", userID))
delete(job.pendingNotifications, userId) delete(job.pendingNotifications, userID)
break break
} }
} }
@@ -168,7 +168,7 @@ func (job *EmailBatchingJob) checkPendingNotifications(now time.Time, handler fu
// get how long we need to wait to send notifications to the user // get how long we need to wait to send notifications to the user
var interval int64 var interval int64
preference, err := job.server.Store.Preference().Get(userId, model.PREFERENCE_CATEGORY_NOTIFICATIONS, model.PREFERENCE_NAME_EMAIL_INTERVAL) preference, err := job.server.Store.Preference().Get(userID, model.PREFERENCE_CATEGORY_NOTIFICATIONS, model.PREFERENCE_NAME_EMAIL_INTERVAL)
if err != nil { if err != nil {
// use the default batching interval if an error ocurrs while fetching user preferences // use the default batching interval if an error ocurrs while fetching user preferences
interval, _ = strconv.ParseInt(model.PREFERENCE_EMAIL_INTERVAL_BATCHING_SECONDS, 10, 64) interval, _ = strconv.ParseInt(model.PREFERENCE_EMAIL_INTERVAL_BATCHING_SECONDS, 10, 64)
@@ -182,19 +182,19 @@ func (job *EmailBatchingJob) checkPendingNotifications(now time.Time, handler fu
} }
// send the email notification if there are notifications to send AND it's been long enough // send the email notification if there are notifications to send AND it's been long enough
if len(job.pendingNotifications[userId]) > 0 && now.Sub(time.Unix(batchStartTime/1000, 0)) > time.Duration(interval)*time.Second { if len(job.pendingNotifications[userID]) > 0 && now.Sub(time.Unix(batchStartTime/1000, 0)) > time.Duration(interval)*time.Second {
job.server.Go(func(userId string, notifications []*batchedNotification) func() { job.server.Go(func(userID string, notifications []*batchedNotification) func() {
return func() { return func() {
handler(userId, notifications) handler(userID, notifications)
} }
}(userId, job.pendingNotifications[userId])) }(userID, job.pendingNotifications[userID]))
delete(job.pendingNotifications, userId) delete(job.pendingNotifications, userID)
} }
} }
} }
func (es *EmailService) sendBatchedEmailNotification(userId string, notifications []*batchedNotification) { func (es *EmailService) sendBatchedEmailNotification(userID string, notifications []*batchedNotification) {
user, err := es.srv.Store.User().Get(userId) user, err := es.srv.Store.User().Get(userID)
if err != nil { if err != nil {
mlog.Warn("Unable to find recipient for batched email notification") mlog.Warn("Unable to find recipient for batched email notification")
return return

Просмотреть файл

@@ -256,10 +256,10 @@ func (a *App) exportAllUsers(writer io.Writer) *model.AppError {
return nil return nil
} }
func (a *App) buildUserTeamAndChannelMemberships(userId string) (*[]UserTeamImportData, *model.AppError) { func (a *App) buildUserTeamAndChannelMemberships(userID string) (*[]UserTeamImportData, *model.AppError) {
var memberships []UserTeamImportData var memberships []UserTeamImportData
members, err := a.Srv().Store.Team().GetTeamMembersForExport(userId) members, err := a.Srv().Store.Team().GetTeamMembersForExport(userID)
if err != nil { if err != nil {
return nil, model.NewAppError("buildUserTeamAndChannelMemberships", "app.team.get_members.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("buildUserTeamAndChannelMemberships", "app.team.get_members.app_error", nil, err.Error(), http.StatusInternalServerError)
@@ -274,7 +274,7 @@ func (a *App) buildUserTeamAndChannelMemberships(userId string) (*[]UserTeamImpo
memberData := ImportUserTeamDataFromTeamMember(member) memberData := ImportUserTeamDataFromTeamMember(member)
// Do the Channel Memberships. // Do the Channel Memberships.
channelMembers, err := a.buildUserChannelMemberships(userId, member.TeamId) channelMembers, err := a.buildUserChannelMemberships(userID, member.TeamId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -293,16 +293,16 @@ func (a *App) buildUserTeamAndChannelMemberships(userId string) (*[]UserTeamImpo
return &memberships, nil return &memberships, nil
} }
func (a *App) buildUserChannelMemberships(userId string, teamId string) (*[]UserChannelImportData, *model.AppError) { func (a *App) buildUserChannelMemberships(userID string, teamID string) (*[]UserChannelImportData, *model.AppError) {
var memberships []UserChannelImportData var memberships []UserChannelImportData
members, nErr := a.Srv().Store.Channel().GetChannelMembersForExport(userId, teamId) members, nErr := a.Srv().Store.Channel().GetChannelMembersForExport(userID, teamID)
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("buildUserChannelMemberships", "app.channel.get_members.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("buildUserChannelMemberships", "app.channel.get_members.app_error", nil, nErr.Error(), http.StatusInternalServerError)
} }
category := model.PREFERENCE_CATEGORY_FAVORITE_CHANNEL category := model.PREFERENCE_CATEGORY_FAVORITE_CHANNEL
preferences, err := a.GetPreferenceByCategoryForUser(userId, category) preferences, err := a.GetPreferenceByCategoryForUser(userID, category)
if err != nil && err.StatusCode != http.StatusNotFound { if err != nil && err.StatusCode != http.StatusNotFound {
return nil, err return nil, err
} }

Просмотреть файл

@@ -250,9 +250,9 @@ func (a *App) RemoveDirectory(path string) *model.AppError {
return nil return nil
} }
func (a *App) getInfoForFilename(post *model.Post, teamId, channelId, userId, oldId, filename string) *model.FileInfo { func (a *App) getInfoForFilename(post *model.Post, teamID, channelId, userID, oldId, filename string) *model.FileInfo {
name, _ := url.QueryUnescape(filename) name, _ := url.QueryUnescape(filename)
pathPrefix := fmt.Sprintf("teams/%s/channels/%s/users/%s/%s/", teamId, channelId, userId, oldId) pathPrefix := fmt.Sprintf("teams/%s/channels/%s/users/%s/%s/", teamID, channelId, userID, oldId)
path := pathPrefix + name path := pathPrefix + name
// Open the file and populate the fields of the FileInfo // Open the file and populate the fields of the FileInfo
@@ -324,8 +324,8 @@ func (a *App) findTeamIdForFilename(post *model.Post, id, filename string) strin
var fileMigrationLock sync.Mutex var fileMigrationLock sync.Mutex
var oldFilenameMatchExp *regexp.Regexp = regexp.MustCompile(`^\/([a-z\d]{26})\/([a-z\d]{26})\/([a-z\d]{26})\/([^\/]+)$`) var oldFilenameMatchExp *regexp.Regexp = regexp.MustCompile(`^\/([a-z\d]{26})\/([a-z\d]{26})\/([a-z\d]{26})\/([^\/]+)$`)
// Parse the path from the Filename of the form /{channelId}/{userId}/{uid}/{nameWithExtension} // Parse the path from the Filename of the form /{channelId}/{userID}/{uid}/{nameWithExtension}
func parseOldFilenames(filenames []string, channelId, userId string) [][]string { func parseOldFilenames(filenames []string, channelId, userID string) [][]string {
parsed := [][]string{} parsed := [][]string{}
for _, filename := range filenames { for _, filename := range filenames {
matches := oldFilenameMatchExp.FindStringSubmatch(filename) matches := oldFilenameMatchExp.FindStringSubmatch(filename)
@@ -335,8 +335,8 @@ func parseOldFilenames(filenames []string, channelId, userId string) [][]string
} }
if matches[1] != channelId { if matches[1] != channelId {
mlog.Error("ChannelId in Filename does not match", mlog.String("channel_id", channelId), mlog.String("matched", matches[1])) mlog.Error("ChannelId in Filename does not match", mlog.String("channel_id", channelId), mlog.String("matched", matches[1]))
} else if matches[2] != userId { } else if matches[2] != userID {
mlog.Error("UserId in Filename does not match", mlog.String("user_id", userId), mlog.String("matched", matches[2])) mlog.Error("UserId in Filename does not match", mlog.String("user_id", userID), mlog.String("matched", matches[2]))
} else { } else {
parsed = append(parsed, matches[1:]) parsed = append(parsed, matches[1:])
} }
@@ -373,17 +373,17 @@ func (a *App) MigrateFilenamesToFileInfos(post *model.Post) []*model.FileInfo {
} }
// Find the team that was used to make this post since its part of the file path that isn't saved in the Filename // Find the team that was used to make this post since its part of the file path that isn't saved in the Filename
var teamId string var teamID string
if channel.TeamId == "" { if channel.TeamId == "" {
// This post was made in a cross-team DM channel, so we need to find where its files were saved // This post was made in a cross-team DM channel, so we need to find where its files were saved
teamId = a.findTeamIdForFilename(post, parsedFilenames[0][2], parsedFilenames[0][3]) teamID = a.findTeamIdForFilename(post, parsedFilenames[0][2], parsedFilenames[0][3])
} else { } else {
teamId = channel.TeamId teamID = channel.TeamId
} }
// Create FileInfo objects for this post // Create FileInfo objects for this post
infos := make([]*model.FileInfo, 0, len(filenames)) infos := make([]*model.FileInfo, 0, len(filenames))
if teamId == "" { if teamID == "" {
mlog.Error( mlog.Error(
"Unable to find team id for files when migrating post to use FileInfos", "Unable to find team id for files when migrating post to use FileInfos",
mlog.String("filenames", strings.Join(filenames, ",")), mlog.String("filenames", strings.Join(filenames, ",")),
@@ -391,7 +391,7 @@ func (a *App) MigrateFilenamesToFileInfos(post *model.Post) []*model.FileInfo {
) )
} else { } else {
for _, parsed := range parsedFilenames { for _, parsed := range parsedFilenames {
info := a.getInfoForFilename(post, teamId, parsed[0], parsed[1], parsed[2], parsed[3]) info := a.getInfoForFilename(post, teamID, parsed[0], parsed[1], parsed[2], parsed[3])
if info == nil { if info == nil {
continue continue
} }
@@ -476,7 +476,7 @@ func GeneratePublicLinkHash(fileId, salt string) string {
return base64.RawURLEncoding.EncodeToString(hash.Sum(nil)) return base64.RawURLEncoding.EncodeToString(hash.Sum(nil))
} }
func (a *App) UploadMultipartFiles(teamId string, channelId string, userId string, fileHeaders []*multipart.FileHeader, clientIds []string, now time.Time) (*model.FileUploadResponse, *model.AppError) { func (a *App) UploadMultipartFiles(teamID string, channelId string, userID string, fileHeaders []*multipart.FileHeader, clientIds []string, now time.Time) (*model.FileUploadResponse, *model.AppError) {
files := make([]io.ReadCloser, len(fileHeaders)) files := make([]io.ReadCloser, len(fileHeaders))
filenames := make([]string, len(fileHeaders)) filenames := make([]string, len(fileHeaders))
@@ -494,13 +494,13 @@ func (a *App) UploadMultipartFiles(teamId string, channelId string, userId strin
filenames[i] = fileHeader.Filename filenames[i] = fileHeader.Filename
} }
return a.UploadFiles(teamId, channelId, userId, files, filenames, clientIds, now) return a.UploadFiles(teamID, channelId, userID, files, filenames, clientIds, now)
} }
// Uploads some files to the given team and channel as the given user. files and filenames should have // 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 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. // The provided files should be closed by the caller so that they are not leaked.
func (a *App) UploadFiles(teamId string, channelId string, userId string, files []io.ReadCloser, filenames []string, clientIds []string, now time.Time) (*model.FileUploadResponse, *model.AppError) { func (a *App) UploadFiles(teamID string, channelId string, userID string, files []io.ReadCloser, filenames []string, clientIds []string, now time.Time) (*model.FileUploadResponse, *model.AppError) {
if *a.Config().FileSettings.DriverName == "" { if *a.Config().FileSettings.DriverName == "" {
return nil, model.NewAppError("UploadFiles", "api.file.upload_file.storage.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("UploadFiles", "api.file.upload_file.storage.app_error", nil, "", http.StatusNotImplemented)
} }
@@ -523,7 +523,7 @@ func (a *App) UploadFiles(teamId string, channelId string, userId string, files
io.Copy(buf, file) io.Copy(buf, file)
data := buf.Bytes() data := buf.Bytes()
info, data, err := a.DoUploadFileExpectModification(now, teamId, channelId, userId, filenames[i], data) info, data, err := a.DoUploadFileExpectModification(now, teamID, channelId, userID, filenames[i], data)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -575,15 +575,15 @@ func (a *App) DoUploadFile(now time.Time, rawTeamId string, rawChannelId string,
return info, err return info, err
} }
func UploadFileSetTeamId(teamId string) func(t *UploadFileTask) { func UploadFileSetTeamId(teamID string) func(t *UploadFileTask) {
return func(t *UploadFileTask) { return func(t *UploadFileTask) {
t.TeamId = filepath.Base(teamId) t.TeamId = filepath.Base(teamID)
} }
} }
func UploadFileSetUserId(userId string) func(t *UploadFileTask) { func UploadFileSetUserId(userID string) func(t *UploadFileTask) {
return func(t *UploadFileTask) { return func(t *UploadFileTask) {
t.UserId = filepath.Base(userId) t.UserId = filepath.Base(userID)
} }
} }
@@ -940,9 +940,9 @@ func (t UploadFileTask) newAppError(id string, details interface{}, httpStatus i
func (a *App) DoUploadFileExpectModification(now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError) { func (a *App) DoUploadFileExpectModification(now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError) {
filename := filepath.Base(rawFilename) filename := filepath.Base(rawFilename)
teamId := filepath.Base(rawTeamId) teamID := filepath.Base(rawTeamId)
channelId := filepath.Base(rawChannelId) channelId := filepath.Base(rawChannelId)
userId := filepath.Base(rawUserId) userID := filepath.Base(rawUserId)
info, err := model.GetInfoForBytes(filename, bytes.NewReader(data), len(data)) info, err := model.GetInfoForBytes(filename, bytes.NewReader(data), len(data))
if err != nil { if err != nil {
@@ -959,10 +959,10 @@ func (a *App) DoUploadFileExpectModification(now time.Time, rawTeamId string, ra
} }
info.Id = model.NewId() info.Id = model.NewId()
info.CreatorId = userId info.CreatorId = userID
info.CreateAt = now.UnixNano() / int64(time.Millisecond) info.CreateAt = now.UnixNano() / int64(time.Millisecond)
pathPrefix := now.Format("20060102") + "/teams/" + teamId + "/channels/" + channelId + "/users/" + userId + "/" + info.Id + "/" pathPrefix := now.Format("20060102") + "/teams/" + teamID + "/channels/" + channelId + "/users/" + userID + "/" + info.Id + "/"
info.Path = pathPrefix + filename info.Path = pathPrefix + filename
if info.IsImage() { if info.IsImage() {
@@ -1223,7 +1223,7 @@ func (a *App) GetFile(fileId string) ([]byte, *model.AppError) {
return data, nil return data, nil
} }
func (a *App) CopyFileInfos(userId string, fileIds []string) ([]string, *model.AppError) { func (a *App) CopyFileInfos(userID string, fileIds []string) ([]string, *model.AppError) {
var newFileIds []string var newFileIds []string
now := model.GetMillis() now := model.GetMillis()
@@ -1241,7 +1241,7 @@ func (a *App) CopyFileInfos(userId string, fileIds []string) ([]string, *model.A
} }
fileInfo.Id = model.NewId() fileInfo.Id = model.NewId()
fileInfo.CreatorId = userId fileInfo.CreatorId = userID
fileInfo.CreateAt = now fileInfo.CreateAt = now
fileInfo.UpdateAt = now fileInfo.UpdateAt = now
fileInfo.PostId = "" fileInfo.PostId = ""

Просмотреть файл

@@ -61,9 +61,9 @@ func BenchmarkUploadFile(b *testing.B) {
defer th.TearDown() defer th.TearDown()
// disable logging in the benchmark, as best we can // disable logging in the benchmark, as best we can
th.App.Log().SetConsoleLevel(mlog.LevelError) th.App.Log().SetConsoleLevel(mlog.LevelError)
teamId := model.NewId() teamID := model.NewId()
channelId := model.NewId() channelId := model.NewId()
userId := model.NewId() userID := model.NewId()
mb := func(i int) int { mb := func(i int) int {
return (i + 512*1024) / (1024 * 1024) return (i + 512*1024) / (1024 * 1024)
@@ -86,8 +86,8 @@ func BenchmarkUploadFile(b *testing.B) {
{ {
title: "raw-ish DoUploadFile", title: "raw-ish DoUploadFile",
f: func(b *testing.B, n int, data []byte, ext string) { f: func(b *testing.B, n int, data []byte, ext string) {
info1, err := th.App.DoUploadFile(time.Now(), teamId, channelId, info1, err := th.App.DoUploadFile(time.Now(), teamID, channelId,
userId, fmt.Sprintf("BenchmarkDoUploadFile-%d%s", n, ext), data) userID, fmt.Sprintf("BenchmarkDoUploadFile-%d%s", n, ext), data)
if err != nil { if err != nil {
b.Fatal(err) b.Fatal(err)
} }
@@ -102,8 +102,8 @@ func BenchmarkUploadFile(b *testing.B) {
info, aerr := th.App.UploadFileX(channelId, info, aerr := th.App.UploadFileX(channelId,
fmt.Sprintf("BenchmarkUploadFileTask-%d%s", n, ext), fmt.Sprintf("BenchmarkUploadFileTask-%d%s", n, ext),
bytes.NewReader(data), bytes.NewReader(data),
UploadFileSetTeamId(teamId), UploadFileSetTeamId(teamID),
UploadFileSetUserId(userId), UploadFileSetUserId(userID),
UploadFileSetTimestamp(time.Now()), UploadFileSetTimestamp(time.Now()),
UploadFileSetContentLength(int64(len(data))), UploadFileSetContentLength(int64(len(data))),
UploadFileSetRaw()) UploadFileSetRaw())
@@ -120,8 +120,8 @@ func BenchmarkUploadFile(b *testing.B) {
info, aerr := th.App.UploadFileX(channelId, info, aerr := th.App.UploadFileX(channelId,
fmt.Sprintf("BenchmarkUploadFileTask-%d%s", n, ext), fmt.Sprintf("BenchmarkUploadFileTask-%d%s", n, ext),
bytes.NewReader(data), bytes.NewReader(data),
UploadFileSetTeamId(teamId), UploadFileSetTeamId(teamID),
UploadFileSetUserId(userId), UploadFileSetUserId(userID),
UploadFileSetTimestamp(time.Now()), UploadFileSetTimestamp(time.Now()),
UploadFileSetContentLength(-1), UploadFileSetContentLength(-1),
UploadFileSetRaw()) UploadFileSetRaw())
@@ -135,7 +135,7 @@ func BenchmarkUploadFile(b *testing.B) {
{ {
title: "image UploadFiles", title: "image UploadFiles",
f: func(b *testing.B, n int, data []byte, ext string) { f: func(b *testing.B, n int, data []byte, ext string) {
resp, err := th.App.UploadFiles(teamId, channelId, userId, resp, err := th.App.UploadFiles(teamID, channelId, userID,
[]io.ReadCloser{ioutil.NopCloser(bytes.NewReader(data))}, []io.ReadCloser{ioutil.NopCloser(bytes.NewReader(data))},
[]string{fmt.Sprintf("BenchmarkDoUploadFiles-%d%s", n, ext)}, []string{fmt.Sprintf("BenchmarkDoUploadFiles-%d%s", n, ext)},
[]string{}, []string{},
@@ -153,8 +153,8 @@ func BenchmarkUploadFile(b *testing.B) {
info, aerr := th.App.UploadFileX(channelId, info, aerr := th.App.UploadFileX(channelId,
fmt.Sprintf("BenchmarkUploadFileTask-%d%s", n, ext), fmt.Sprintf("BenchmarkUploadFileTask-%d%s", n, ext),
bytes.NewReader(data), bytes.NewReader(data),
UploadFileSetTeamId(teamId), UploadFileSetTeamId(teamID),
UploadFileSetUserId(userId), UploadFileSetUserId(userID),
UploadFileSetTimestamp(time.Now()), UploadFileSetTimestamp(time.Now()),
UploadFileSetContentLength(int64(len(data)))) UploadFileSetContentLength(int64(len(data))))
if aerr != nil { if aerr != nil {
@@ -170,8 +170,8 @@ func BenchmarkUploadFile(b *testing.B) {
info, aerr := th.App.UploadFileX(channelId, info, aerr := th.App.UploadFileX(channelId,
fmt.Sprintf("BenchmarkUploadFileTask-%d%s", n, ext), fmt.Sprintf("BenchmarkUploadFileTask-%d%s", n, ext),
bytes.NewReader(data), bytes.NewReader(data),
UploadFileSetTeamId(teamId), UploadFileSetTeamId(teamID),
UploadFileSetUserId(userId), UploadFileSetUserId(userID),
UploadFileSetTimestamp(time.Now()), UploadFileSetTimestamp(time.Now()),
UploadFileSetContentLength(int64(len(data)))) UploadFileSetContentLength(int64(len(data))))
if aerr != nil { if aerr != nil {

Просмотреть файл

@@ -43,50 +43,50 @@ func TestDoUploadFile(t *testing.T) {
th := Setup(t) th := Setup(t)
defer th.TearDown() defer th.TearDown()
teamId := model.NewId() teamID := model.NewId()
channelId := model.NewId() channelId := model.NewId()
userId := model.NewId() userID := model.NewId()
filename := "test" filename := "test"
data := []byte("abcd") data := []byte("abcd")
info1, err := th.App.DoUploadFile(time.Date(2007, 2, 4, 1, 2, 3, 4, time.Local), teamId, channelId, userId, filename, data) info1, err := th.App.DoUploadFile(time.Date(2007, 2, 4, 1, 2, 3, 4, time.Local), teamID, channelId, userID, filename, data)
require.Nil(t, err, "DoUploadFile should succeed with valid data") require.Nil(t, err, "DoUploadFile should succeed with valid data")
defer func() { defer func() {
th.App.Srv().Store.FileInfo().PermanentDelete(info1.Id) th.App.Srv().Store.FileInfo().PermanentDelete(info1.Id)
th.App.RemoveFile(info1.Path) th.App.RemoveFile(info1.Path)
}() }()
value := fmt.Sprintf("20070204/teams/%v/channels/%v/users/%v/%v/%v", teamId, channelId, userId, info1.Id, filename) value := fmt.Sprintf("20070204/teams/%v/channels/%v/users/%v/%v/%v", teamID, channelId, userID, info1.Id, filename)
assert.Equal(t, value, info1.Path, "stored file at incorrect path") assert.Equal(t, value, info1.Path, "stored file at incorrect path")
info2, err := th.App.DoUploadFile(time.Date(2007, 2, 4, 1, 2, 3, 4, time.Local), teamId, channelId, userId, filename, data) info2, err := th.App.DoUploadFile(time.Date(2007, 2, 4, 1, 2, 3, 4, time.Local), teamID, channelId, userID, filename, data)
require.Nil(t, err, "DoUploadFile should succeed with valid data") require.Nil(t, err, "DoUploadFile should succeed with valid data")
defer func() { defer func() {
th.App.Srv().Store.FileInfo().PermanentDelete(info2.Id) th.App.Srv().Store.FileInfo().PermanentDelete(info2.Id)
th.App.RemoveFile(info2.Path) th.App.RemoveFile(info2.Path)
}() }()
value = fmt.Sprintf("20070204/teams/%v/channels/%v/users/%v/%v/%v", teamId, channelId, userId, info2.Id, filename) value = fmt.Sprintf("20070204/teams/%v/channels/%v/users/%v/%v/%v", teamID, channelId, userID, info2.Id, filename)
assert.Equal(t, value, info2.Path, "stored file at incorrect path") assert.Equal(t, value, info2.Path, "stored file at incorrect path")
info3, err := th.App.DoUploadFile(time.Date(2008, 3, 5, 1, 2, 3, 4, time.Local), teamId, channelId, userId, filename, data) info3, err := th.App.DoUploadFile(time.Date(2008, 3, 5, 1, 2, 3, 4, time.Local), teamID, channelId, userID, filename, data)
require.Nil(t, err, "DoUploadFile should succeed with valid data") require.Nil(t, err, "DoUploadFile should succeed with valid data")
defer func() { defer func() {
th.App.Srv().Store.FileInfo().PermanentDelete(info3.Id) th.App.Srv().Store.FileInfo().PermanentDelete(info3.Id)
th.App.RemoveFile(info3.Path) th.App.RemoveFile(info3.Path)
}() }()
value = fmt.Sprintf("20080305/teams/%v/channels/%v/users/%v/%v/%v", teamId, channelId, userId, info3.Id, filename) value = fmt.Sprintf("20080305/teams/%v/channels/%v/users/%v/%v/%v", teamID, channelId, userID, info3.Id, filename)
assert.Equal(t, value, info3.Path, "stored file at incorrect path") assert.Equal(t, value, info3.Path, "stored file at incorrect path")
info4, err := th.App.DoUploadFile(time.Date(2009, 3, 5, 1, 2, 3, 4, time.Local), "../../"+teamId, "../../"+channelId, "../../"+userId, "../../"+filename, data) info4, err := th.App.DoUploadFile(time.Date(2009, 3, 5, 1, 2, 3, 4, time.Local), "../../"+teamID, "../../"+channelId, "../../"+userID, "../../"+filename, data)
require.Nil(t, err, "DoUploadFile should succeed with valid data") require.Nil(t, err, "DoUploadFile should succeed with valid data")
defer func() { defer func() {
th.App.Srv().Store.FileInfo().PermanentDelete(info4.Id) th.App.Srv().Store.FileInfo().PermanentDelete(info4.Id)
th.App.RemoveFile(info4.Path) th.App.RemoveFile(info4.Path)
}() }()
value = fmt.Sprintf("20090305/teams/%v/channels/%v/users/%v/%v/%v", teamId, channelId, userId, info4.Id, filename) value = fmt.Sprintf("20090305/teams/%v/channels/%v/users/%v/%v/%v", teamID, channelId, userID, info4.Id, filename)
assert.Equal(t, value, info4.Path, "stored file at incorrect path") assert.Equal(t, value, info4.Path, "stored file at incorrect path")
} }
@@ -127,21 +127,21 @@ func TestParseOldFilenames(t *testing.T) {
description string description string
filenames []string filenames []string
channelId string channelId string
userId string userID string
expected [][]string expected [][]string
}{ }{
{ {
description: "Empty input should result in empty output", description: "Empty input should result in empty output",
filenames: []string{}, filenames: []string{},
channelId: th.BasicChannel.Id, channelId: th.BasicChannel.Id,
userId: th.BasicUser.Id, userID: th.BasicUser.Id,
expected: [][]string{}, expected: [][]string{},
}, },
{ {
description: "Filename with invalid format should not parse", description: "Filename with invalid format should not parse",
filenames: []string{"/path/to/some/file.png"}, filenames: []string{"/path/to/some/file.png"},
channelId: th.BasicChannel.Id, channelId: th.BasicChannel.Id,
userId: th.BasicUser.Id, userID: th.BasicUser.Id,
expected: [][]string{}, expected: [][]string{},
}, },
{ {
@@ -150,7 +150,7 @@ func TestParseOldFilenames(t *testing.T) {
fmt.Sprintf("/%v/%v/%v/file.png", model.NewId(), th.BasicUser.Id, fileId), fmt.Sprintf("/%v/%v/%v/file.png", model.NewId(), th.BasicUser.Id, fileId),
}, },
channelId: th.BasicChannel.Id, channelId: th.BasicChannel.Id,
userId: th.BasicUser.Id, userID: th.BasicUser.Id,
expected: [][]string{}, expected: [][]string{},
}, },
{ {
@@ -159,7 +159,7 @@ func TestParseOldFilenames(t *testing.T) {
fmt.Sprintf("/%v/%v/%v/file.png", th.BasicChannel.Id, model.NewId(), fileId), fmt.Sprintf("/%v/%v/%v/file.png", th.BasicChannel.Id, model.NewId(), fileId),
}, },
channelId: th.BasicChannel.Id, channelId: th.BasicChannel.Id,
userId: th.BasicUser.Id, userID: th.BasicUser.Id,
expected: [][]string{}, expected: [][]string{},
}, },
{ {
@@ -168,7 +168,7 @@ func TestParseOldFilenames(t *testing.T) {
fmt.Sprintf("/%v/%v/%v/../../../file.png", th.BasicChannel.Id, th.BasicUser.Id, fileId), fmt.Sprintf("/%v/%v/%v/../../../file.png", th.BasicChannel.Id, th.BasicUser.Id, fileId),
}, },
channelId: th.BasicChannel.Id, channelId: th.BasicChannel.Id,
userId: th.BasicUser.Id, userID: th.BasicUser.Id,
expected: [][]string{}, expected: [][]string{},
}, },
{ {
@@ -178,7 +178,7 @@ func TestParseOldFilenames(t *testing.T) {
fmt.Sprintf("/%v/%v/%v/file.png", th.BasicChannel.Id, th.BasicUser.Id, fileId), fmt.Sprintf("/%v/%v/%v/file.png", th.BasicChannel.Id, th.BasicUser.Id, fileId),
}, },
channelId: th.BasicChannel.Id, channelId: th.BasicChannel.Id,
userId: th.BasicUser.Id, userID: th.BasicUser.Id,
expected: [][]string{ expected: [][]string{
{ {
th.BasicChannel.Id, th.BasicChannel.Id,
@@ -194,7 +194,7 @@ func TestParseOldFilenames(t *testing.T) {
fmt.Sprintf("/%v/%v/%v/file.png", th.BasicChannel.Id, th.BasicUser.Id, fileId), fmt.Sprintf("/%v/%v/%v/file.png", th.BasicChannel.Id, th.BasicUser.Id, fileId),
}, },
channelId: th.BasicChannel.Id, channelId: th.BasicChannel.Id,
userId: th.BasicUser.Id, userID: th.BasicUser.Id,
expected: [][]string{ expected: [][]string{
{ {
th.BasicChannel.Id, th.BasicChannel.Id,
@@ -208,7 +208,7 @@ func TestParseOldFilenames(t *testing.T) {
for _, test := range tests { for _, test := range tests {
t.Run(test.description, func(tt *testing.T) { t.Run(test.description, func(tt *testing.T) {
result := parseOldFilenames(test.filenames, test.channelId, test.userId) result := parseOldFilenames(test.filenames, test.channelId, test.userID)
require.Equal(tt, result, test.expected) require.Equal(tt, result, test.expected)
}) })
} }
@@ -219,9 +219,9 @@ func TestGetInfoForFilename(t *testing.T) {
defer th.TearDown() defer th.TearDown()
post := th.BasicPost post := th.BasicPost
teamId := th.BasicTeam.Id teamID := th.BasicTeam.Id
info := th.App.getInfoForFilename(post, teamId, post.ChannelId, post.UserId, "someid", "somefile.png") info := th.App.getInfoForFilename(post, teamID, post.ChannelId, post.UserId, "someid", "somefile.png")
assert.Nil(t, info, "Test non-existent file") assert.Nil(t, info, "Test non-existent file")
} }
@@ -229,14 +229,14 @@ func TestFindTeamIdForFilename(t *testing.T) {
th := Setup(t).InitBasic() th := Setup(t).InitBasic()
defer th.TearDown() defer th.TearDown()
teamId := th.App.findTeamIdForFilename(th.BasicPost, "someid", "somefile.png") teamID := th.App.findTeamIdForFilename(th.BasicPost, "someid", "somefile.png")
assert.Equal(t, th.BasicTeam.Id, teamId) assert.Equal(t, th.BasicTeam.Id, teamID)
_, err := th.App.CreateTeamWithUser(&model.Team{Email: th.BasicUser.Email, Name: "zz" + model.NewId(), DisplayName: "Joram's Test Team", Type: model.TEAM_OPEN}, th.BasicUser.Id) _, err := th.App.CreateTeamWithUser(&model.Team{Email: th.BasicUser.Email, Name: "zz" + model.NewId(), DisplayName: "Joram's Test Team", Type: model.TEAM_OPEN}, th.BasicUser.Id)
require.Nil(t, err) require.Nil(t, err)
teamId = th.App.findTeamIdForFilename(th.BasicPost, "someid", "somefile.png") teamID = th.App.findTeamIdForFilename(th.BasicPost, "someid", "somefile.png")
assert.Equal(t, "", teamId) assert.Equal(t, "", teamID)
} }
func TestMigrateFilenamesToFileInfos(t *testing.T) { func TestMigrateFilenamesToFileInfos(t *testing.T) {
@@ -294,20 +294,20 @@ func TestCopyFileInfos(t *testing.T) {
th := Setup(t) th := Setup(t)
defer th.TearDown() defer th.TearDown()
teamId := model.NewId() teamID := model.NewId()
channelId := model.NewId() channelId := model.NewId()
userId := model.NewId() userID := model.NewId()
filename := "test" filename := "test"
data := []byte("abcd") data := []byte("abcd")
info1, err := th.App.DoUploadFile(time.Date(2007, 2, 4, 1, 2, 3, 4, time.Local), teamId, channelId, userId, filename, data) info1, err := th.App.DoUploadFile(time.Date(2007, 2, 4, 1, 2, 3, 4, time.Local), teamID, channelId, userID, filename, data)
require.Nil(t, err) require.Nil(t, err)
defer func() { defer func() {
th.App.Srv().Store.FileInfo().PermanentDelete(info1.Id) th.App.Srv().Store.FileInfo().PermanentDelete(info1.Id)
th.App.RemoveFile(info1.Path) th.App.RemoveFile(info1.Path)
}() }()
infoIds, err := th.App.CopyFileInfos(userId, []string{info1.Id}) infoIds, err := th.App.CopyFileInfos(userID, []string{info1.Id})
require.Nil(t, err) require.Nil(t, err)
info2, err := th.App.GetFileInfo(infoIds[0]) info2, err := th.App.GetFileInfo(infoIds[0])

Просмотреть файл

@@ -65,8 +65,8 @@ func (a *App) GetGroupsBySource(groupSource model.GroupSource) ([]*model.Group,
return groups, nil return groups, nil
} }
func (a *App) GetGroupsByUserId(userId string) ([]*model.Group, *model.AppError) { func (a *App) GetGroupsByUserId(userID string) ([]*model.Group, *model.AppError) {
groups, err := a.Srv().Store.Group().GetByUser(userId) groups, err := a.Srv().Store.Group().GetByUser(userID)
if err != nil { if err != nil {
return nil, model.NewAppError("GetGroupsByUserId", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetGroupsByUserId", "app.select_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -450,13 +450,13 @@ func (a *App) GetGroupsByChannel(channelId string, opts model.GroupSearchOpts) (
} }
// GetGroupsByTeam returns the paged list and the total count of group associated to the given team. // GetGroupsByTeam returns the paged list and the total count of group associated to the given team.
func (a *App) GetGroupsByTeam(teamId string, opts model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, int, *model.AppError) { func (a *App) GetGroupsByTeam(teamID string, opts model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, int, *model.AppError) {
groups, err := a.Srv().Store.Group().GetGroupsByTeam(teamId, opts) groups, err := a.Srv().Store.Group().GetGroupsByTeam(teamID, opts)
if err != nil { if err != nil {
return nil, 0, model.NewAppError("GetGroupsByTeam", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, 0, model.NewAppError("GetGroupsByTeam", "app.select_error", nil, err.Error(), http.StatusInternalServerError)
} }
count, err := a.Srv().Store.Group().CountGroupsByTeam(teamId, opts) count, err := a.Srv().Store.Group().CountGroupsByTeam(teamID, opts)
if err != nil { if err != nil {
return nil, 0, model.NewAppError("GetGroupsByTeam", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, 0, model.NewAppError("GetGroupsByTeam", "app.select_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -464,8 +464,8 @@ func (a *App) GetGroupsByTeam(teamId string, opts model.GroupSearchOpts) ([]*mod
return groups, int(count), nil return groups, int(count), nil
} }
func (a *App) GetGroupsAssociatedToChannelsByTeam(teamId string, opts model.GroupSearchOpts) (map[string][]*model.GroupWithSchemeAdmin, *model.AppError) { func (a *App) GetGroupsAssociatedToChannelsByTeam(teamID string, opts model.GroupSearchOpts) (map[string][]*model.GroupWithSchemeAdmin, *model.AppError) {
groupsAssociatedByChannelId, err := a.Srv().Store.Group().GetGroupsAssociatedToChannelsByTeam(teamId, opts) groupsAssociatedByChannelId, err := a.Srv().Store.Group().GetGroupsAssociatedToChannelsByTeam(teamID, opts)
if err != nil { if err != nil {
return nil, model.NewAppError("GetGroupsAssociatedToChannelsByTeam", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetGroupsAssociatedToChannelsByTeam", "app.select_error", nil, err.Error(), http.StatusInternalServerError)
} }

Просмотреть файл

@@ -1016,7 +1016,7 @@ func (a *App) importReaction(data *ReactionImportData, post *model.Post) *model.
return nil return nil
} }
func (a *App) importReplies(data []ReplyImportData, post *model.Post, teamId string) *model.AppError { func (a *App) importReplies(data []ReplyImportData, post *model.Post, teamID string) *model.AppError {
var err *model.AppError var err *model.AppError
usernames := []string{} usernames := []string{}
for _, replyData := range data { for _, replyData := range data {
@@ -1064,7 +1064,7 @@ func (a *App) importReplies(data []ReplyImportData, post *model.Post, teamId str
reply.Message = *replyData.Message reply.Message = *replyData.Message
reply.CreateAt = *replyData.CreateAt reply.CreateAt = *replyData.CreateAt
fileIds, err := a.uploadAttachments(replyData.Attachments, reply, teamId) fileIds, err := a.uploadAttachments(replyData.Attachments, reply, teamID)
if err != nil { if err != nil {
return err return err
} }
@@ -1112,7 +1112,7 @@ func (a *App) importReplies(data []ReplyImportData, post *model.Post, teamId str
return nil return nil
} }
func (a *App) importAttachment(data *AttachmentImportData, post *model.Post, teamId string) (*model.FileInfo, *model.AppError) { func (a *App) importAttachment(data *AttachmentImportData, post *model.Post, teamID string) (*model.FileInfo, *model.AppError) {
file, err := os.Open(*data.Path) file, err := os.Open(*data.Path)
if file == nil || err != nil { if file == nil || err != nil {
return nil, model.NewAppError("BulkImport", "app.import.attachment.bad_file.error", map[string]interface{}{"FilePath": *data.Path}, "", http.StatusBadRequest) return nil, model.NewAppError("BulkImport", "app.import.attachment.bad_file.error", map[string]interface{}{"FilePath": *data.Path}, "", http.StatusBadRequest)
@@ -1145,7 +1145,7 @@ func (a *App) importAttachment(data *AttachmentImportData, post *model.Post, tea
} }
} }
} }
fileInfo, appErr := a.DoUploadFile(timestamp, teamId, post.ChannelId, post.UserId, file.Name(), buf.Bytes()) fileInfo, appErr := a.DoUploadFile(timestamp, teamID, post.ChannelId, post.UserId, file.Name(), buf.Bytes())
if appErr != nil { if appErr != nil {
mlog.Error("Failed to upload file:", mlog.Err(appErr)) mlog.Error("Failed to upload file:", mlog.Err(appErr))
return nil, appErr return nil, appErr
@@ -1197,8 +1197,8 @@ func (a *App) getTeamsByNames(names []string) (map[string]*model.Team, *model.Ap
return teams, nil return teams, nil
} }
func (a *App) getChannelsByNames(names []string, teamId string) (map[string]*model.Channel, *model.AppError) { func (a *App) getChannelsByNames(names []string, teamID string) (map[string]*model.Channel, *model.AppError) {
allChannels, err := a.Srv().Store.Channel().GetByNames(teamId, names, true) allChannels, err := a.Srv().Store.Channel().GetByNames(teamID, names, true)
if err != nil { if err != nil {
return nil, model.NewAppError("BulkImport", "app.import.get_teams_by_names.some_teams_not_found.error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("BulkImport", "app.import.get_teams_by_names.some_teams_not_found.error", nil, err.Error(), http.StatusBadRequest)
} }
@@ -1421,14 +1421,14 @@ func (a *App) importMultiplePostLines(lines []LineImportWorkerData, dryRun bool)
} }
// uploadAttachments imports new attachments and returns current attachments of the post as a map // uploadAttachments imports new attachments and returns current attachments of the post as a map
func (a *App) uploadAttachments(attachments *[]AttachmentImportData, post *model.Post, teamId string) (map[string]bool, *model.AppError) { func (a *App) uploadAttachments(attachments *[]AttachmentImportData, post *model.Post, teamID string) (map[string]bool, *model.AppError) {
if attachments == nil { if attachments == nil {
return nil, nil return nil, nil
} }
fileIds := make(map[string]bool) fileIds := make(map[string]bool)
for _, attachment := range *attachments { for _, attachment := range *attachments {
attachment := attachment attachment := attachment
fileInfo, err := a.importAttachment(&attachment, post, teamId) fileInfo, err := a.importAttachment(&attachment, post, teamID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -1455,25 +1455,25 @@ func (a *App) importDirectChannel(data *DirectChannelImportData, dryRun bool) *m
return nil return nil
} }
var userIds []string var userIDs []string
userMap, err := a.getUsersByUsernames(*data.Members) userMap, err := a.getUsersByUsernames(*data.Members)
if err != nil { if err != nil {
return err return err
} }
for _, user := range *data.Members { for _, user := range *data.Members {
userIds = append(userIds, userMap[user].Id) userIDs = append(userIDs, userMap[user].Id)
} }
var channel *model.Channel var channel *model.Channel
if len(userIds) == 2 { if len(userIDs) == 2 {
ch, err := a.createDirectChannel(userIds[0], userIds[1]) ch, err := a.createDirectChannel(userIDs[0], userIDs[1])
if err != nil && err.Id != store.ChannelExistsError { if err != nil && err.Id != store.ChannelExistsError {
return model.NewAppError("BulkImport", "app.import.import_direct_channel.create_direct_channel.error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_direct_channel.create_direct_channel.error", nil, err.Error(), http.StatusBadRequest)
} }
channel = ch channel = ch
} else { } else {
ch, err := a.createGroupChannel(userIds) ch, err := a.createGroupChannel(userIDs)
if err != nil && err.Id != store.ChannelExistsError { if err != nil && err.Id != store.ChannelExistsError {
return model.NewAppError("BulkImport", "app.import.import_direct_channel.create_group_channel.error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_direct_channel.create_group_channel.error", nil, err.Error(), http.StatusBadRequest)
} }
@@ -1482,9 +1482,9 @@ func (a *App) importDirectChannel(data *DirectChannelImportData, dryRun bool) *m
var preferences model.Preferences var preferences model.Preferences
for _, userId := range userIds { for _, userID := range userIDs {
preferences = append(preferences, model.Preference{ preferences = append(preferences, model.Preference{
UserId: userId, UserId: userID,
Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNEL_SHOW, Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNEL_SHOW,
Name: channel.Id, Name: channel.Id,
Value: "true", Value: "true",
@@ -1562,23 +1562,23 @@ func (a *App) importMultipleDirectPostLines(lines []LineImportWorkerData, dryRun
postsForOverwriteMap := map[string]int{} postsForOverwriteMap := map[string]int{}
for _, line := range lines { for _, line := range lines {
var userIds []string var userIDs []string
var err *model.AppError var err *model.AppError
for _, username := range *line.DirectPost.ChannelMembers { for _, username := range *line.DirectPost.ChannelMembers {
user := users[username] user := users[username]
userIds = append(userIds, user.Id) userIDs = append(userIDs, user.Id)
} }
var channel *model.Channel var channel *model.Channel
var ch *model.Channel var ch *model.Channel
if len(userIds) == 2 { if len(userIDs) == 2 {
ch, err = a.GetOrCreateDirectChannel(userIds[0], userIds[1]) ch, err = a.GetOrCreateDirectChannel(userIDs[0], userIDs[1])
if err != nil && err.Id != store.ChannelExistsError { if err != nil && err.Id != store.ChannelExistsError {
return line.LineNumber, model.NewAppError("BulkImport", "app.import.import_direct_post.create_direct_channel.error", nil, err.Error(), http.StatusBadRequest) return line.LineNumber, model.NewAppError("BulkImport", "app.import.import_direct_post.create_direct_channel.error", nil, err.Error(), http.StatusBadRequest)
} }
channel = ch channel = ch
} else { } else {
ch, err = a.createGroupChannel(userIds) ch, err = a.createGroupChannel(userIDs)
if err != nil && err.Id != store.ChannelExistsError { if err != nil && err.Id != store.ChannelExistsError {
return line.LineNumber, model.NewAppError("BulkImport", "app.import.import_direct_post.create_group_channel.error", nil, err.Error(), http.StatusBadRequest) return line.LineNumber, model.NewAppError("BulkImport", "app.import.import_direct_post.create_group_channel.error", nil, err.Error(), http.StatusBadRequest)
} }

Просмотреть файл

@@ -3094,12 +3094,12 @@ func TestImportImportDirectChannel(t *testing.T) {
AssertChannelCount(t, th.App, model.CHANNEL_GROUP, groupChannelCount+1) AssertChannelCount(t, th.App, model.CHANNEL_GROUP, groupChannelCount+1)
// Get the channel to check that the header was updated. // Get the channel to check that the header was updated.
userIds := []string{ userIDs := []string{
th.BasicUser.Id, th.BasicUser.Id,
th.BasicUser2.Id, th.BasicUser2.Id,
user3.Id, user3.Id,
} }
channel, appErr := th.App.createGroupChannel(userIds) channel, appErr := th.App.createGroupChannel(userIDs)
require.Equal(t, appErr.Id, store.ChannelExistsError) require.Equal(t, appErr.Id, store.ChannelExistsError)
require.Equal(t, channel.Header, *data.Header) require.Equal(t, channel.Header, *data.Header)
@@ -3395,12 +3395,12 @@ func TestImportImportDirectPost(t *testing.T) {
// Get the channel. // Get the channel.
var groupChannel *model.Channel var groupChannel *model.Channel
userIds := []string{ userIDs := []string{
th.BasicUser.Id, th.BasicUser.Id,
th.BasicUser2.Id, th.BasicUser2.Id,
user3.Id, user3.Id,
} }
channel, appErr = th.App.createGroupChannel(userIds) channel, appErr = th.App.createGroupChannel(userIDs)
require.Equal(t, appErr.Id, store.ChannelExistsError) require.Equal(t, appErr.Id, store.ChannelExistsError)
groupChannel = channel groupChannel = channel
@@ -3889,12 +3889,12 @@ func TestImportAttachment(t *testing.T) {
testImage := filepath.Join(testsDir, "test.png") testImage := filepath.Join(testsDir, "test.png")
invalidPath := "some-invalid-path" invalidPath := "some-invalid-path"
userId := model.NewId() userID := model.NewId()
data := AttachmentImportData{Path: &testImage} data := AttachmentImportData{Path: &testImage}
_, err := th.App.importAttachment(&data, &model.Post{UserId: userId, ChannelId: "some-channel"}, "some-team") _, err := th.App.importAttachment(&data, &model.Post{UserId: userID, ChannelId: "some-channel"}, "some-team")
assert.Nil(t, err, "sample run without errors") assert.Nil(t, err, "sample run without errors")
attachments := GetAttachments(userId, th, t) attachments := GetAttachments(userID, th, t)
assert.Len(t, attachments, 1) assert.Len(t, attachments, 1)
data = AttachmentImportData{Path: &invalidPath} data = AttachmentImportData{Path: &invalidPath}

Просмотреть файл

@@ -36,18 +36,18 @@ func ptrBool(b bool) *bool {
return &b return &b
} }
func checkPreference(t *testing.T, a *App, userId string, category string, name string, value string) { func checkPreference(t *testing.T, a *App, userID string, category string, name string, value string) {
preferences, err := a.Srv().Store.Preference().GetCategory(userId, category) preferences, err := a.Srv().Store.Preference().GetCategory(userID, category)
require.Nilf(t, err, "Failed to get preferences for user %v with category %v", userId, category) require.Nilf(t, err, "Failed to get preferences for user %v with category %v", userID, category)
found := false found := false
for _, preference := range preferences { for _, preference := range preferences {
if preference.Name == name { if preference.Name == name {
found = true found = true
require.Equal(t, preference.Value, value, "Preference for user %v in category %v with name %v has value %v, expected %v", userId, category, name, preference.Value, value) require.Equal(t, preference.Value, value, "Preference for user %v in category %v with name %v has value %v, expected %v", userID, category, name, preference.Value, value)
break break
} }
} }
require.Truef(t, found, "Did not find preference for user %v in category %v with name %v", userId, category, name) require.Truef(t, found, "Did not find preference for user %v in category %v with name %v", userID, category, name)
} }
func checkNotifyProp(t *testing.T, user *model.User, key string, value string) { func checkNotifyProp(t *testing.T, user *model.User, key string, value string) {
@@ -249,8 +249,8 @@ func TestImportProcessImportDataFileVersionLine(t *testing.T) {
require.NotNil(t, err, "Expected error on invalid version line.") require.NotNil(t, err, "Expected error on invalid version line.")
} }
func GetAttachments(userId string, th *TestHelper, t *testing.T) []*model.FileInfo { func GetAttachments(userID string, th *TestHelper, t *testing.T) []*model.FileInfo {
fileInfos, err := th.App.Srv().Store.FileInfo().GetForUser(userId) fileInfos, err := th.App.Srv().Store.FileInfo().GetForUser(userID)
require.Nil(t, err) require.Nil(t, err)
return fileInfos return fileInfos
} }

Просмотреть файл

@@ -37,11 +37,11 @@ import (
"github.com/mattermost/mattermost-server/v5/utils" "github.com/mattermost/mattermost-server/v5/utils"
) )
func (a *App) DoPostAction(postId, actionId, userId, selectedOption string) (string, *model.AppError) { func (a *App) DoPostAction(postId, actionId, userID, selectedOption string) (string, *model.AppError) {
return a.DoPostActionWithCookie(postId, actionId, userId, selectedOption, nil) return a.DoPostActionWithCookie(postId, actionId, userID, selectedOption, nil)
} }
func (a *App) DoPostActionWithCookie(postId, actionId, userId, selectedOption string, cookie *model.PostActionCookie) (string, *model.AppError) { func (a *App) DoPostActionWithCookie(postId, actionId, userID, selectedOption string, cookie *model.PostActionCookie) (string, *model.AppError) {
// PostAction may result in the original post being updated. For the // PostAction may result in the original post being updated. For the
// updated post, we need to unconditionally preserve the original // updated post, we need to unconditionally preserve the original
@@ -62,7 +62,7 @@ func (a *App) DoPostActionWithCookie(postId, actionId, userId, selectedOption st
upstreamURL := "" upstreamURL := ""
rootPostId := "" rootPostId := ""
upstreamRequest := &model.PostActionIntegrationRequest{ upstreamRequest := &model.PostActionIntegrationRequest{
UserId: userId, UserId: userID,
PostId: postId, PostId: postId,
} }
@@ -277,7 +277,7 @@ func (a *App) DoPostActionWithCookie(postId, actionId, userId, selectedOption st
Message: response.EphemeralText, Message: response.EphemeralText,
ChannelId: upstreamRequest.ChannelId, ChannelId: upstreamRequest.ChannelId,
RootId: rootPostId, RootId: rootPostId,
UserId: userId, UserId: userID,
} }
if !response.SkipSlackParsing { if !response.SkipSlackParsing {
@@ -287,7 +287,7 @@ func (a *App) DoPostActionWithCookie(postId, actionId, userId, selectedOption st
for key, value := range retain { for key, value := range retain {
ephemeralPost.AddProp(key, value) ephemeralPost.AddProp(key, value)
} }
a.SendEphemeralPost(userId, ephemeralPost) a.SendEphemeralPost(userID, ephemeralPost)
} }
return clientTriggerId, nil return clientTriggerId, nil
@@ -567,7 +567,7 @@ func (a *App) DoLocalRequest(rawURL string, body []byte) (*http.Response, *model
} }
func (a *App) OpenInteractiveDialog(request model.OpenDialogRequest) *model.AppError { func (a *App) OpenInteractiveDialog(request model.OpenDialogRequest) *model.AppError {
clientTriggerId, userId, err := request.DecodeAndVerifyTriggerId(a.AsymmetricSigningKey()) clientTriggerId, userID, err := request.DecodeAndVerifyTriggerId(a.AsymmetricSigningKey())
if err != nil { if err != nil {
return err return err
} }
@@ -576,7 +576,7 @@ func (a *App) OpenInteractiveDialog(request model.OpenDialogRequest) *model.AppE
jsonRequest, _ := json.Marshal(request) jsonRequest, _ := json.Marshal(request)
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_OPEN_DIALOG, "", "", userId, nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_OPEN_DIALOG, "", "", userID, nil)
message.Add("dialog", string(jsonRequest)) message.Add("dialog", string(jsonRequest))
a.Publish(message) a.Publish(message)

Просмотреть файл

@@ -181,16 +181,16 @@ func (a *App) SendNotifications(post *model.Post, team *model.Team, channel *mod
// for each mention, make sure to update thread autofollow (if enabled) and update increment mention count // for each mention, make sure to update thread autofollow (if enabled) and update increment mention count
for id := range threadParticipants { for id := range threadParticipants {
mac := make(chan *model.AppError, 1) mac := make(chan *model.AppError, 1)
go func(userId string) { go func(userID string) {
defer close(mac) defer close(mac)
incrementMentions := false incrementMentions := false
for mid := range mentions.Mentions { for mid := range mentions.Mentions {
if userId == mid { if userID == mid {
incrementMentions = true incrementMentions = true
break break
} }
} }
nErr := a.Srv().Store.Thread().CreateMembershipIfNeeded(userId, post.RootId, true, incrementMentions, *a.Config().ServiceSettings.ThreadAutoFollow) nErr := a.Srv().Store.Thread().CreateMembershipIfNeeded(userID, post.RootId, true, incrementMentions, *a.Config().ServiceSettings.ThreadAutoFollow)
if nErr != nil { if nErr != nil {
mac <- model.NewAppError("SendNotifications", "app.channel.autofollow.app_error", nil, nErr.Error(), http.StatusInternalServerError) mac <- model.NewAppError("SendNotifications", "app.channel.autofollow.app_error", nil, nErr.Error(), http.StatusInternalServerError)
return return
@@ -205,9 +205,9 @@ func (a *App) SendNotifications(post *model.Post, team *model.Team, channel *mod
mentionedUsersList = append(mentionedUsersList, id) mentionedUsersList = append(mentionedUsersList, id)
umc := make(chan *model.AppError, 1) umc := make(chan *model.AppError, 1)
go func(userId string) { go func(userID string) {
defer close(umc) defer close(umc)
nErr := a.Srv().Store.Channel().IncrementMentionCount(post.ChannelId, userId, *a.Config().ServiceSettings.ThreadAutoFollow) nErr := a.Srv().Store.Channel().IncrementMentionCount(post.ChannelId, userID, *a.Config().ServiceSettings.ThreadAutoFollow)
if nErr != nil { if nErr != nil {
umc <- model.NewAppError("SendNotifications", "app.channel.increment_mention_count.app_error", nil, nErr.Error(), http.StatusInternalServerError) umc <- model.NewAppError("SendNotifications", "app.channel.increment_mention_count.app_error", nil, nErr.Error(), http.StatusInternalServerError)
return return
@@ -705,16 +705,16 @@ const (
GroupMention GroupMention
) )
func (m *ExplicitMentions) addMention(userId string, mentionType MentionType) { func (m *ExplicitMentions) addMention(userID string, mentionType MentionType) {
if m.Mentions == nil { if m.Mentions == nil {
m.Mentions = make(map[string]MentionType) m.Mentions = make(map[string]MentionType)
} }
if currentType, ok := m.Mentions[userId]; ok && currentType >= mentionType { if currentType, ok := m.Mentions[userID]; ok && currentType >= mentionType {
return return
} }
m.Mentions[userId] = mentionType m.Mentions[userID] = mentionType
} }
func (m *ExplicitMentions) addGroupMention(word string, groups map[string]*model.Group) bool { func (m *ExplicitMentions) addGroupMention(word string, groups map[string]*model.Group) bool {
@@ -745,14 +745,14 @@ func (m *ExplicitMentions) addGroupMention(word string, groups map[string]*model
return true return true
} }
func (m *ExplicitMentions) addMentions(userIds []string, mentionType MentionType) { func (m *ExplicitMentions) addMentions(userIDs []string, mentionType MentionType) {
for _, userId := range userIds { for _, userID := range userIDs {
m.addMention(userId, mentionType) m.addMention(userID, mentionType)
} }
} }
func (m *ExplicitMentions) removeMention(userId string) { func (m *ExplicitMentions) removeMention(userID string) {
delete(m.Mentions, userId) delete(m.Mentions, userID)
} }
// Given a message and a map mapping mention keywords to the users who use them, returns a map of mentioned // Given a message and a map mapping mention keywords to the users who use them, returns a map of mentioned

Просмотреть файл

@@ -41,7 +41,7 @@ type PushNotificationsHub struct {
type PushNotification struct { type PushNotification struct {
notificationType notificationType notificationType notificationType
currentSessionId string currentSessionId string
userId string userID string
channelId string channelId string
post *model.Post post *model.Post
user *model.User user *model.User
@@ -74,8 +74,8 @@ func (a *App) sendPushNotificationSync(post *model.Post, user *model.User, chann
return a.sendPushNotificationToAllSessions(msg, user.Id, "") return a.sendPushNotificationToAllSessions(msg, user.Id, "")
} }
func (a *App) sendPushNotificationToAllSessions(msg *model.PushNotification, userId string, skipSessionId string) *model.AppError { func (a *App) sendPushNotificationToAllSessions(msg *model.PushNotification, userID string, skipSessionId string) *model.AppError {
sessions, err := a.getMobileAppSessions(userId) sessions, err := a.getMobileAppSessions(userID)
if err != nil { if err != nil {
return err return err
} }
@@ -201,7 +201,7 @@ func (a *App) getPushNotificationMessage(contentsConfig, postMessage string, exp
return senderName + userLocale("api.post.send_notifications_and_forget.push_general_message") return senderName + userLocale("api.post.send_notifications_and_forget.push_general_message")
} }
func (a *App) clearPushNotificationSync(currentSessionId, userId, channelId string) *model.AppError { func (a *App) clearPushNotificationSync(currentSessionId, userID, channelId string) *model.AppError {
msg := &model.PushNotification{ msg := &model.PushNotification{
Type: model.PUSH_TYPE_CLEAR, Type: model.PUSH_TYPE_CLEAR,
Version: model.PUSH_MESSAGE_V2, Version: model.PUSH_MESSAGE_V2,
@@ -209,22 +209,22 @@ func (a *App) clearPushNotificationSync(currentSessionId, userId, channelId stri
ContentAvailable: 1, ContentAvailable: 1,
} }
unreadCount, err := a.Srv().Store.User().GetUnreadCount(userId) unreadCount, err := a.Srv().Store.User().GetUnreadCount(userID)
if err != nil { if err != nil {
return model.NewAppError("clearPushNotificationSync", "app.user.get_unread_count.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("clearPushNotificationSync", "app.user.get_unread_count.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
msg.Badge = int(unreadCount) msg.Badge = int(unreadCount)
return a.sendPushNotificationToAllSessions(msg, userId, currentSessionId) return a.sendPushNotificationToAllSessions(msg, userID, currentSessionId)
} }
func (a *App) clearPushNotification(currentSessionId, userId, channelId string) { func (a *App) clearPushNotification(currentSessionId, userID, channelId string) {
select { select {
case a.Srv().PushNotificationsHub.notificationsChan <- PushNotification{ case a.Srv().PushNotificationsHub.notificationsChan <- PushNotification{
notificationType: notificationTypeClear, notificationType: notificationTypeClear,
currentSessionId: currentSessionId, currentSessionId: currentSessionId,
userId: userId, userID: userID,
channelId: channelId, channelId: channelId,
}: }:
case <-a.Srv().PushNotificationsHub.stopChan: case <-a.Srv().PushNotificationsHub.stopChan:
@@ -232,7 +232,7 @@ func (a *App) clearPushNotification(currentSessionId, userId, channelId string)
} }
} }
func (a *App) updateMobileAppBadgeSync(userId string) *model.AppError { func (a *App) updateMobileAppBadgeSync(userID string) *model.AppError {
msg := &model.PushNotification{ msg := &model.PushNotification{
Type: model.PUSH_TYPE_UPDATE_BADGE, Type: model.PUSH_TYPE_UPDATE_BADGE,
Version: model.PUSH_MESSAGE_V2, Version: model.PUSH_MESSAGE_V2,
@@ -240,21 +240,21 @@ func (a *App) updateMobileAppBadgeSync(userId string) *model.AppError {
ContentAvailable: 1, ContentAvailable: 1,
} }
unreadCount, err := a.Srv().Store.User().GetUnreadCount(userId) unreadCount, err := a.Srv().Store.User().GetUnreadCount(userID)
if err != nil { if err != nil {
return model.NewAppError("updateMobileAppBadgeSync", "app.user.get_unread_count.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("updateMobileAppBadgeSync", "app.user.get_unread_count.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
msg.Badge = int(unreadCount) msg.Badge = int(unreadCount)
return a.sendPushNotificationToAllSessions(msg, userId, "") return a.sendPushNotificationToAllSessions(msg, userID, "")
} }
func (a *App) UpdateMobileAppBadge(userId string) { func (a *App) UpdateMobileAppBadge(userID string) {
select { select {
case a.Srv().PushNotificationsHub.notificationsChan <- PushNotification{ case a.Srv().PushNotificationsHub.notificationsChan <- PushNotification{
notificationType: notificationTypeUpdateBadge, notificationType: notificationTypeUpdateBadge,
userId: userId, userID: userID,
}: }:
case <-a.Srv().PushNotificationsHub.stopChan: case <-a.Srv().PushNotificationsHub.stopChan:
return return
@@ -307,7 +307,7 @@ func (hub *PushNotificationsHub) start() {
var err *model.AppError var err *model.AppError
switch notification.notificationType { switch notification.notificationType {
case notificationTypeClear: case notificationTypeClear:
err = hub.app.clearPushNotificationSync(notification.currentSessionId, notification.userId, notification.channelId) err = hub.app.clearPushNotificationSync(notification.currentSessionId, notification.userID, notification.channelId)
case notificationTypeMessage: case notificationTypeMessage:
err = hub.app.sendPushNotificationSync( err = hub.app.sendPushNotificationSync(
notification.post, notification.post,
@@ -320,7 +320,7 @@ func (hub *PushNotificationsHub) start() {
notification.replyToThreadType, notification.replyToThreadType,
) )
case notificationTypeUpdateBadge: case notificationTypeUpdateBadge:
err = hub.app.updateMobileAppBadgeSync(notification.userId) err = hub.app.updateMobileAppBadgeSync(notification.userID)
default: default:
mlog.Debug("Invalid notification type", mlog.String("notification_type", string(notification.notificationType))) mlog.Debug("Invalid notification type", mlog.String("notification_type", string(notification.notificationType)))
} }
@@ -429,8 +429,8 @@ func (a *App) SendAckToPushProxy(ack *model.PushNotificationAck) error {
return nil return nil
} }
func (a *App) getMobileAppSessions(userId string) ([]*model.Session, *model.AppError) { func (a *App) getMobileAppSessions(userID string) ([]*model.Session, *model.AppError) {
sessions, err := a.Srv().Store.Session().GetSessionsWithActiveDeviceIds(userId) sessions, err := a.Srv().Store.Session().GetSessionsWithActiveDeviceIds(userID)
if err != nil { if err != nil {
return nil, model.NewAppError("getMobileAppSessions", "app.session.get_sessions.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("getMobileAppSessions", "app.session.get_sessions.app_error", nil, err.Error(), http.StatusInternalServerError)
} }

Просмотреть файл

@@ -353,13 +353,13 @@ func TestDoesNotifyPropsAllowPushNotification(t *testing.T) {
} }
func TestDoesStatusAllowPushNotification(t *testing.T) { func TestDoesStatusAllowPushNotification(t *testing.T) {
userId := model.NewId() userID := model.NewId()
channelId := model.NewId() channelId := model.NewId()
offline := &model.Status{UserId: userId, Status: model.STATUS_OFFLINE, Manual: false, LastActivityAt: 0, ActiveChannel: ""} offline := &model.Status{UserId: userID, Status: model.STATUS_OFFLINE, Manual: false, LastActivityAt: 0, ActiveChannel: ""}
away := &model.Status{UserId: userId, Status: model.STATUS_AWAY, Manual: false, LastActivityAt: 0, ActiveChannel: ""} away := &model.Status{UserId: userID, Status: model.STATUS_AWAY, Manual: false, LastActivityAt: 0, ActiveChannel: ""}
online := &model.Status{UserId: userId, Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: ""} online := &model.Status{UserId: userID, Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: ""}
dnd := &model.Status{UserId: userId, Status: model.STATUS_DND, Manual: true, LastActivityAt: model.GetMillis(), ActiveChannel: ""} dnd := &model.Status{UserId: userID, Status: model.STATUS_DND, Manual: true, LastActivityAt: model.GetMillis(), ActiveChannel: ""}
tt := []struct { tt := []struct {
name string name string

Просмотреть файл

@@ -1971,51 +1971,51 @@ func TestAddMention(t *testing.T) {
t.Run("should initialize Mentions and store new mentions", func(t *testing.T) { t.Run("should initialize Mentions and store new mentions", func(t *testing.T) {
m := &ExplicitMentions{} m := &ExplicitMentions{}
userId1 := model.NewId() userID1 := model.NewId()
userId2 := model.NewId() userID2 := model.NewId()
m.addMention(userId1, KeywordMention) m.addMention(userID1, KeywordMention)
m.addMention(userId2, CommentMention) m.addMention(userID2, CommentMention)
assert.Equal(t, map[string]MentionType{ assert.Equal(t, map[string]MentionType{
userId1: KeywordMention, userID1: KeywordMention,
userId2: CommentMention, userID2: CommentMention,
}, m.Mentions) }, m.Mentions)
}) })
t.Run("should replace existing mentions with higher priority ones", func(t *testing.T) { t.Run("should replace existing mentions with higher priority ones", func(t *testing.T) {
m := &ExplicitMentions{} m := &ExplicitMentions{}
userId1 := model.NewId() userID1 := model.NewId()
userId2 := model.NewId() userID2 := model.NewId()
m.addMention(userId1, ThreadMention) m.addMention(userID1, ThreadMention)
m.addMention(userId2, DMMention) m.addMention(userID2, DMMention)
m.addMention(userId1, ChannelMention) m.addMention(userID1, ChannelMention)
m.addMention(userId2, KeywordMention) m.addMention(userID2, KeywordMention)
assert.Equal(t, map[string]MentionType{ assert.Equal(t, map[string]MentionType{
userId1: ChannelMention, userID1: ChannelMention,
userId2: KeywordMention, userID2: KeywordMention,
}, m.Mentions) }, m.Mentions)
}) })
t.Run("should not replace high priority mentions with low priority ones", func(t *testing.T) { t.Run("should not replace high priority mentions with low priority ones", func(t *testing.T) {
m := &ExplicitMentions{} m := &ExplicitMentions{}
userId1 := model.NewId() userID1 := model.NewId()
userId2 := model.NewId() userID2 := model.NewId()
m.addMention(userId1, KeywordMention) m.addMention(userID1, KeywordMention)
m.addMention(userId2, CommentMention) m.addMention(userID2, CommentMention)
m.addMention(userId1, DMMention) m.addMention(userID1, DMMention)
m.addMention(userId2, ThreadMention) m.addMention(userID2, ThreadMention)
assert.Equal(t, map[string]MentionType{ assert.Equal(t, map[string]MentionType{
userId1: KeywordMention, userID1: KeywordMention,
userId2: CommentMention, userID2: CommentMention,
}, m.Mentions) }, m.Mentions)
}) })
} }

Просмотреть файл

@@ -128,12 +128,12 @@ func (a *App) GetOAuthApps(page, perPage int) ([]*model.OAuthApp, *model.AppErro
return oauthApps, nil return oauthApps, nil
} }
func (a *App) GetOAuthAppsByCreator(userId string, page, perPage int) ([]*model.OAuthApp, *model.AppError) { func (a *App) GetOAuthAppsByCreator(userID string, page, perPage int) ([]*model.OAuthApp, *model.AppError) {
if !*a.Config().ServiceSettings.EnableOAuthServiceProvider { if !*a.Config().ServiceSettings.EnableOAuthServiceProvider {
return nil, model.NewAppError("GetOAuthAppsByUser", "api.oauth.allow_oauth.turn_off.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("GetOAuthAppsByUser", "api.oauth.allow_oauth.turn_off.app_error", nil, "", http.StatusNotImplemented)
} }
oauthApps, err := a.Srv().Store.OAuth().GetAppByUser(userId, page*perPage, perPage) oauthApps, err := a.Srv().Store.OAuth().GetAppByUser(userID, page*perPage, perPage)
if err != nil { if err != nil {
return nil, model.NewAppError("GetOAuthAppsByCreator", "app.oauth.get_app_by_user.find.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetOAuthAppsByCreator", "app.oauth.get_app_by_user.find.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -141,8 +141,8 @@ func (a *App) GetOAuthAppsByCreator(userId string, page, perPage int) ([]*model.
return oauthApps, nil return oauthApps, nil
} }
func (a *App) GetOAuthImplicitRedirect(userId string, authRequest *model.AuthorizeRequest) (string, *model.AppError) { func (a *App) GetOAuthImplicitRedirect(userID string, authRequest *model.AuthorizeRequest) (string, *model.AppError) {
session, err := a.GetOAuthAccessTokenForImplicitFlow(userId, authRequest) session, err := a.GetOAuthAccessTokenForImplicitFlow(userID, authRequest)
if err != nil { if err != nil {
return "", err return "", err
} }
@@ -157,8 +157,8 @@ func (a *App) GetOAuthImplicitRedirect(userId string, authRequest *model.Authori
return fmt.Sprintf("%s#%s", authRequest.RedirectUri, values.Encode()), nil return fmt.Sprintf("%s#%s", authRequest.RedirectUri, values.Encode()), nil
} }
func (a *App) GetOAuthCodeRedirect(userId string, authRequest *model.AuthorizeRequest) (string, *model.AppError) { func (a *App) GetOAuthCodeRedirect(userID string, authRequest *model.AuthorizeRequest) (string, *model.AppError) {
authData := &model.AuthData{UserId: userId, ClientId: authRequest.ClientId, CreateAt: model.GetMillis(), RedirectUri: authRequest.RedirectUri, State: authRequest.State, Scope: authRequest.Scope} authData := &model.AuthData{UserId: userID, ClientId: authRequest.ClientId, CreateAt: model.GetMillis(), RedirectUri: authRequest.RedirectUri, State: authRequest.State, Scope: authRequest.Scope}
authData.Code = model.NewId() + model.NewId() authData.Code = model.NewId() + model.NewId()
if _, err := a.Srv().Store.OAuth().SaveAuthData(authData); err != nil { if _, err := a.Srv().Store.OAuth().SaveAuthData(authData); err != nil {
@@ -168,7 +168,7 @@ func (a *App) GetOAuthCodeRedirect(userId string, authRequest *model.AuthorizeRe
return authRequest.RedirectUri + "?code=" + url.QueryEscape(authData.Code) + "&state=" + url.QueryEscape(authData.State), nil return authRequest.RedirectUri + "?code=" + url.QueryEscape(authData.Code) + "&state=" + url.QueryEscape(authData.State), nil
} }
func (a *App) AllowOAuthAppAccessToUser(userId string, authRequest *model.AuthorizeRequest) (string, *model.AppError) { func (a *App) AllowOAuthAppAccessToUser(userID string, authRequest *model.AuthorizeRequest) (string, *model.AppError) {
if !*a.Config().ServiceSettings.EnableOAuthServiceProvider { if !*a.Config().ServiceSettings.EnableOAuthServiceProvider {
return "", model.NewAppError("AllowOAuthAppAccessToUser", "api.oauth.allow_oauth.turn_off.app_error", nil, "", http.StatusNotImplemented) return "", model.NewAppError("AllowOAuthAppAccessToUser", "api.oauth.allow_oauth.turn_off.app_error", nil, "", http.StatusNotImplemented)
} }
@@ -196,9 +196,9 @@ func (a *App) AllowOAuthAppAccessToUser(userId string, authRequest *model.Author
var err *model.AppError var err *model.AppError
switch authRequest.ResponseType { switch authRequest.ResponseType {
case model.AUTHCODE_RESPONSE_TYPE: case model.AUTHCODE_RESPONSE_TYPE:
redirectURI, err = a.GetOAuthCodeRedirect(userId, authRequest) redirectURI, err = a.GetOAuthCodeRedirect(userID, authRequest)
case model.IMPLICIT_RESPONSE_TYPE: case model.IMPLICIT_RESPONSE_TYPE:
redirectURI, err = a.GetOAuthImplicitRedirect(userId, authRequest) redirectURI, err = a.GetOAuthImplicitRedirect(userID, authRequest)
default: default:
return authRequest.RedirectUri + "?error=unsupported_response_type&state=" + authRequest.State, nil return authRequest.RedirectUri + "?error=unsupported_response_type&state=" + authRequest.State, nil
} }
@@ -210,7 +210,7 @@ func (a *App) AllowOAuthAppAccessToUser(userId string, authRequest *model.Author
// This saves the OAuth2 app as authorized // This saves the OAuth2 app as authorized
authorizedApp := model.Preference{ authorizedApp := model.Preference{
UserId: userId, UserId: userID,
Category: model.PREFERENCE_CATEGORY_AUTHORIZED_OAUTH_APP, Category: model.PREFERENCE_CATEGORY_AUTHORIZED_OAUTH_APP,
Name: authRequest.ClientId, Name: authRequest.ClientId,
Value: authRequest.Scope, Value: authRequest.Scope,
@@ -224,7 +224,7 @@ func (a *App) AllowOAuthAppAccessToUser(userId string, authRequest *model.Author
return redirectURI, nil return redirectURI, nil
} }
func (a *App) GetOAuthAccessTokenForImplicitFlow(userId string, authRequest *model.AuthorizeRequest) (*model.Session, *model.AppError) { func (a *App) GetOAuthAccessTokenForImplicitFlow(userID string, authRequest *model.AuthorizeRequest) (*model.Session, *model.AppError) {
if !*a.Config().ServiceSettings.EnableOAuthServiceProvider { if !*a.Config().ServiceSettings.EnableOAuthServiceProvider {
return nil, model.NewAppError("GetOAuthAccessToken", "api.oauth.get_access_token.disabled.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("GetOAuthAccessToken", "api.oauth.get_access_token.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
@@ -234,7 +234,7 @@ func (a *App) GetOAuthAccessTokenForImplicitFlow(userId string, authRequest *mod
return nil, model.NewAppError("GetOAuthAccessToken", "api.oauth.get_access_token.credentials.app_error", nil, "", http.StatusNotFound) return nil, model.NewAppError("GetOAuthAccessToken", "api.oauth.get_access_token.credentials.app_error", nil, "", http.StatusNotFound)
} }
user, err := a.GetUser(userId) user, err := a.GetUser(userID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -409,11 +409,11 @@ func (a *App) newSessionUpdateToken(appName string, accessData *model.AccessData
return accessRsp, nil return accessRsp, nil
} }
func (a *App) GetOAuthLoginEndpoint(w http.ResponseWriter, r *http.Request, service, teamId, action, redirectTo, loginHint string, isMobile bool) (string, *model.AppError) { func (a *App) GetOAuthLoginEndpoint(w http.ResponseWriter, r *http.Request, service, teamID, action, redirectTo, loginHint string, isMobile bool) (string, *model.AppError) {
stateProps := map[string]string{} stateProps := map[string]string{}
stateProps["action"] = action stateProps["action"] = action
if teamId != "" { if teamID != "" {
stateProps["team_id"] = teamId stateProps["team_id"] = teamID
} }
if redirectTo != "" { if redirectTo != "" {
@@ -430,11 +430,11 @@ func (a *App) GetOAuthLoginEndpoint(w http.ResponseWriter, r *http.Request, serv
return authUrl, nil return authUrl, nil
} }
func (a *App) GetOAuthSignupEndpoint(w http.ResponseWriter, r *http.Request, service, teamId string) (string, *model.AppError) { func (a *App) GetOAuthSignupEndpoint(w http.ResponseWriter, r *http.Request, service, teamID string) (string, *model.AppError) {
stateProps := map[string]string{} stateProps := map[string]string{}
stateProps["action"] = model.OAUTH_ACTION_SIGNUP stateProps["action"] = model.OAUTH_ACTION_SIGNUP
if teamId != "" { if teamID != "" {
stateProps["team_id"] = teamId stateProps["team_id"] = teamID
} }
authUrl, err := a.GetAuthorizationCode(w, r, service, stateProps, "") authUrl, err := a.GetAuthorizationCode(w, r, service, stateProps, "")
@@ -445,12 +445,12 @@ func (a *App) GetOAuthSignupEndpoint(w http.ResponseWriter, r *http.Request, ser
return authUrl, nil return authUrl, nil
} }
func (a *App) GetAuthorizedAppsForUser(userId string, page, perPage int) ([]*model.OAuthApp, *model.AppError) { func (a *App) GetAuthorizedAppsForUser(userID string, page, perPage int) ([]*model.OAuthApp, *model.AppError) {
if !*a.Config().ServiceSettings.EnableOAuthServiceProvider { if !*a.Config().ServiceSettings.EnableOAuthServiceProvider {
return nil, model.NewAppError("GetAuthorizedAppsForUser", "api.oauth.allow_oauth.turn_off.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("GetAuthorizedAppsForUser", "api.oauth.allow_oauth.turn_off.app_error", nil, "", http.StatusNotImplemented)
} }
apps, err := a.Srv().Store.OAuth().GetAuthorizedApps(userId, page*perPage, perPage) apps, err := a.Srv().Store.OAuth().GetAuthorizedApps(userID, page*perPage, perPage)
if err != nil { if err != nil {
return nil, model.NewAppError("GetAuthorizedAppsForUser", "app.oauth.get_apps.find.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetAuthorizedAppsForUser", "app.oauth.get_apps.find.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -463,13 +463,13 @@ func (a *App) GetAuthorizedAppsForUser(userId string, page, perPage int) ([]*mod
return apps, nil return apps, nil
} }
func (a *App) DeauthorizeOAuthAppForUser(userId, appId string) *model.AppError { func (a *App) DeauthorizeOAuthAppForUser(userID, appId string) *model.AppError {
if !*a.Config().ServiceSettings.EnableOAuthServiceProvider { if !*a.Config().ServiceSettings.EnableOAuthServiceProvider {
return model.NewAppError("DeauthorizeOAuthAppForUser", "api.oauth.allow_oauth.turn_off.app_error", nil, "", http.StatusNotImplemented) return model.NewAppError("DeauthorizeOAuthAppForUser", "api.oauth.allow_oauth.turn_off.app_error", nil, "", http.StatusNotImplemented)
} }
// Revoke app sessions // Revoke app sessions
accessData, err := a.Srv().Store.OAuth().GetAccessDataByUserForApp(userId, appId) accessData, err := a.Srv().Store.OAuth().GetAccessDataByUserForApp(userID, appId)
if err != nil { if err != nil {
return model.NewAppError("DeauthorizeOAuthAppForUser", "app.oauth.get_access_data_by_user_for_app.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DeauthorizeOAuthAppForUser", "app.oauth.get_access_data_by_user_for_app.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -485,7 +485,7 @@ func (a *App) DeauthorizeOAuthAppForUser(userId, appId string) *model.AppError {
} }
// Deauthorize the app // Deauthorize the app
if err := a.Srv().Store.Preference().Delete(userId, model.PREFERENCE_CATEGORY_AUTHORIZED_OAUTH_APP, appId); err != nil { if err := a.Srv().Store.Preference().Delete(userID, model.PREFERENCE_CATEGORY_AUTHORIZED_OAUTH_APP, appId); err != nil {
return model.NewAppError("DeauthorizeOAuthAppForUser", "app.preference.delete.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DeauthorizeOAuthAppForUser", "app.preference.delete.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -544,22 +544,22 @@ func (a *App) RevokeAccessToken(token string) *model.AppError {
return nil return nil
} }
func (a *App) CompleteOAuth(service string, body io.ReadCloser, teamId string, props map[string]string, tokenUser *model.User) (*model.User, *model.AppError) { func (a *App) CompleteOAuth(service string, body io.ReadCloser, teamID string, props map[string]string, tokenUser *model.User) (*model.User, *model.AppError) {
defer body.Close() defer body.Close()
action := props["action"] action := props["action"]
switch action { switch action {
case model.OAUTH_ACTION_SIGNUP: case model.OAUTH_ACTION_SIGNUP:
return a.CreateOAuthUser(service, body, teamId, tokenUser) return a.CreateOAuthUser(service, body, teamID, tokenUser)
case model.OAUTH_ACTION_LOGIN: case model.OAUTH_ACTION_LOGIN:
return a.LoginByOAuth(service, body, teamId, tokenUser) return a.LoginByOAuth(service, body, teamID, tokenUser)
case model.OAUTH_ACTION_EMAIL_TO_SSO: case model.OAUTH_ACTION_EMAIL_TO_SSO:
return a.CompleteSwitchWithOAuth(service, body, props["email"], tokenUser) return a.CompleteSwitchWithOAuth(service, body, props["email"], tokenUser)
case model.OAUTH_ACTION_SSO_TO_EMAIL: case model.OAUTH_ACTION_SSO_TO_EMAIL:
return a.LoginByOAuth(service, body, teamId, tokenUser) return a.LoginByOAuth(service, body, teamID, tokenUser)
default: default:
return a.LoginByOAuth(service, body, teamId, tokenUser) return a.LoginByOAuth(service, body, teamID, tokenUser)
} }
} }
@@ -580,7 +580,7 @@ func (a *App) getSSOProvider(service string) (einterfaces.OauthProvider, *model.
return provider, nil return provider, nil
} }
func (a *App) LoginByOAuth(service string, userData io.Reader, teamId string, tokenUser *model.User) (*model.User, *model.AppError) { func (a *App) LoginByOAuth(service string, userData io.Reader, teamID string, tokenUser *model.User) (*model.User, *model.AppError) {
provider, e := a.getSSOProvider(service) provider, e := a.getSSOProvider(service)
if e != nil { if e != nil {
return nil, e return nil, e
@@ -606,7 +606,7 @@ func (a *App) LoginByOAuth(service string, userData io.Reader, teamId string, to
user, err := a.GetUserByAuth(model.NewString(*authUser.AuthData), service) user, err := a.GetUserByAuth(model.NewString(*authUser.AuthData), service)
if err != nil { if err != nil {
if err.Id == MissingAuthAccountError { if err.Id == MissingAuthAccountError {
user, err = a.CreateOAuthUser(service, bytes.NewReader(buf.Bytes()), teamId, tokenUser) user, err = a.CreateOAuthUser(service, bytes.NewReader(buf.Bytes()), teamID, tokenUser)
} else { } else {
return nil, err return nil, err
} }
@@ -621,8 +621,8 @@ func (a *App) LoginByOAuth(service string, userData io.Reader, teamId string, to
if err = a.UpdateOAuthUserAttrs(bytes.NewReader(buf.Bytes()), user, provider, service, tokenUser); err != nil { if err = a.UpdateOAuthUserAttrs(bytes.NewReader(buf.Bytes()), user, provider, service, tokenUser); err != nil {
return nil, err return nil, err
} }
if teamId != "" { if teamID != "" {
err = a.AddUserToTeamByTeamId(teamId, user) err = a.AddUserToTeamByTeamId(teamID, user)
} }
} }
@@ -833,7 +833,7 @@ func (a *App) AuthorizeOAuthUser(w http.ResponseWriter, r *http.Request, service
http.SetCookie(w, httpCookie) http.SetCookie(w, httpCookie)
teamId := stateProps["team_id"] teamID := stateProps["team_id"]
p := url.Values{} p := url.Values{}
p.Set("client_id", *sso.Id) p.Set("client_id", *sso.Id)
@@ -912,7 +912,7 @@ func (a *App) AuthorizeOAuthUser(w http.ResponseWriter, r *http.Request, service
} }
// Note that resp.Body is not closed here, so it must be closed by the caller // Note that resp.Body is not closed here, so it must be closed by the caller
return resp.Body, teamId, stateProps, userFromToken, nil return resp.Body, teamID, stateProps, userFromToken, nil
} }
func (a *App) SwitchEmailToOAuth(w http.ResponseWriter, r *http.Request, email, password, code, service string) (string, *model.AppError) { func (a *App) SwitchEmailToOAuth(w http.ResponseWriter, r *http.Request, email, password, code, service string) (string, *model.AppError) {

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@@ -66,8 +66,8 @@ func (api *PluginAPI) RegisterCommand(command *model.Command) error {
return api.app.RegisterPluginCommand(api.id, command) return api.app.RegisterPluginCommand(api.id, command)
} }
func (api *PluginAPI) UnregisterCommand(teamId, trigger string) error { func (api *PluginAPI) UnregisterCommand(teamID, trigger string) error {
api.app.UnregisterPluginCommand(api.id, teamId, trigger) api.app.UnregisterPluginCommand(api.id, teamID, trigger)
return nil return nil
} }
@@ -155,16 +155,16 @@ func (api *PluginAPI) CreateTeam(team *model.Team) (*model.Team, *model.AppError
return api.app.CreateTeam(team) return api.app.CreateTeam(team)
} }
func (api *PluginAPI) DeleteTeam(teamId string) *model.AppError { func (api *PluginAPI) DeleteTeam(teamID string) *model.AppError {
return api.app.SoftDeleteTeam(teamId) return api.app.SoftDeleteTeam(teamID)
} }
func (api *PluginAPI) GetTeams() ([]*model.Team, *model.AppError) { func (api *PluginAPI) GetTeams() ([]*model.Team, *model.AppError) {
return api.app.GetAllTeams() return api.app.GetAllTeams()
} }
func (api *PluginAPI) GetTeam(teamId string) (*model.Team, *model.AppError) { func (api *PluginAPI) GetTeam(teamID string) (*model.Team, *model.AppError) {
return api.app.GetTeam(teamId) return api.app.GetTeam(teamID)
} }
func (api *PluginAPI) SearchTeams(term string) ([]*model.Team, *model.AppError) { func (api *PluginAPI) SearchTeams(term string) ([]*model.Team, *model.AppError) {
@@ -176,64 +176,64 @@ func (api *PluginAPI) GetTeamByName(name string) (*model.Team, *model.AppError)
return api.app.GetTeamByName(name) return api.app.GetTeamByName(name)
} }
func (api *PluginAPI) GetTeamsUnreadForUser(userId string) ([]*model.TeamUnread, *model.AppError) { func (api *PluginAPI) GetTeamsUnreadForUser(userID string) ([]*model.TeamUnread, *model.AppError) {
return api.app.GetTeamsUnreadForUser("", userId) return api.app.GetTeamsUnreadForUser("", userID)
} }
func (api *PluginAPI) UpdateTeam(team *model.Team) (*model.Team, *model.AppError) { func (api *PluginAPI) UpdateTeam(team *model.Team) (*model.Team, *model.AppError) {
return api.app.UpdateTeam(team) return api.app.UpdateTeam(team)
} }
func (api *PluginAPI) GetTeamsForUser(userId string) ([]*model.Team, *model.AppError) { func (api *PluginAPI) GetTeamsForUser(userID string) ([]*model.Team, *model.AppError) {
return api.app.GetTeamsForUser(userId) return api.app.GetTeamsForUser(userID)
} }
func (api *PluginAPI) CreateTeamMember(teamId, userId string) (*model.TeamMember, *model.AppError) { func (api *PluginAPI) CreateTeamMember(teamID, userID string) (*model.TeamMember, *model.AppError) {
return api.app.AddTeamMember(teamId, userId) return api.app.AddTeamMember(teamID, userID)
} }
func (api *PluginAPI) CreateTeamMembers(teamId string, userIds []string, requestorId string) ([]*model.TeamMember, *model.AppError) { func (api *PluginAPI) CreateTeamMembers(teamID string, userIDs []string, requestorId string) ([]*model.TeamMember, *model.AppError) {
members, err := api.app.AddTeamMembers(teamId, userIds, requestorId, false) members, err := api.app.AddTeamMembers(teamID, userIDs, requestorId, false)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return model.TeamMembersWithErrorToTeamMembers(members), nil return model.TeamMembersWithErrorToTeamMembers(members), nil
} }
func (api *PluginAPI) CreateTeamMembersGracefully(teamId string, userIds []string, requestorId string) ([]*model.TeamMemberWithError, *model.AppError) { func (api *PluginAPI) CreateTeamMembersGracefully(teamID string, userIDs []string, requestorId string) ([]*model.TeamMemberWithError, *model.AppError) {
return api.app.AddTeamMembers(teamId, userIds, requestorId, true) return api.app.AddTeamMembers(teamID, userIDs, requestorId, true)
} }
func (api *PluginAPI) DeleteTeamMember(teamId, userId, requestorId string) *model.AppError { func (api *PluginAPI) DeleteTeamMember(teamID, userID, requestorId string) *model.AppError {
return api.app.RemoveUserFromTeam(teamId, userId, requestorId) return api.app.RemoveUserFromTeam(teamID, userID, requestorId)
} }
func (api *PluginAPI) GetTeamMembers(teamId string, page, perPage int) ([]*model.TeamMember, *model.AppError) { func (api *PluginAPI) GetTeamMembers(teamID string, page, perPage int) ([]*model.TeamMember, *model.AppError) {
return api.app.GetTeamMembers(teamId, page*perPage, perPage, nil) return api.app.GetTeamMembers(teamID, page*perPage, perPage, nil)
} }
func (api *PluginAPI) GetTeamMember(teamId, userId string) (*model.TeamMember, *model.AppError) { func (api *PluginAPI) GetTeamMember(teamID, userID string) (*model.TeamMember, *model.AppError) {
return api.app.GetTeamMember(teamId, userId) return api.app.GetTeamMember(teamID, userID)
} }
func (api *PluginAPI) GetTeamMembersForUser(userId string, page int, perPage int) ([]*model.TeamMember, *model.AppError) { func (api *PluginAPI) GetTeamMembersForUser(userID string, page int, perPage int) ([]*model.TeamMember, *model.AppError) {
return api.app.GetTeamMembersForUserWithPagination(userId, page, perPage) return api.app.GetTeamMembersForUserWithPagination(userID, page, perPage)
} }
func (api *PluginAPI) UpdateTeamMemberRoles(teamId, userId, newRoles string) (*model.TeamMember, *model.AppError) { func (api *PluginAPI) UpdateTeamMemberRoles(teamID, userID, newRoles string) (*model.TeamMember, *model.AppError) {
return api.app.UpdateTeamMemberRoles(teamId, userId, newRoles) return api.app.UpdateTeamMemberRoles(teamID, userID, newRoles)
} }
func (api *PluginAPI) GetTeamStats(teamId string) (*model.TeamStats, *model.AppError) { func (api *PluginAPI) GetTeamStats(teamID string) (*model.TeamStats, *model.AppError) {
return api.app.GetTeamStats(teamId, nil) return api.app.GetTeamStats(teamID, nil)
} }
func (api *PluginAPI) CreateUser(user *model.User) (*model.User, *model.AppError) { func (api *PluginAPI) CreateUser(user *model.User) (*model.User, *model.AppError) {
return api.app.CreateUser(user) return api.app.CreateUser(user)
} }
func (api *PluginAPI) DeleteUser(userId string) *model.AppError { func (api *PluginAPI) DeleteUser(userID string) *model.AppError {
user, err := api.app.GetUser(userId) user, err := api.app.GetUser(userID)
if err != nil { if err != nil {
return err return err
} }
@@ -245,8 +245,8 @@ func (api *PluginAPI) GetUsers(options *model.UserGetOptions) ([]*model.User, *m
return api.app.GetUsers(options) return api.app.GetUsers(options)
} }
func (api *PluginAPI) GetUser(userId string) (*model.User, *model.AppError) { func (api *PluginAPI) GetUser(userID string) (*model.User, *model.AppError) {
return api.app.GetUser(userId) return api.app.GetUser(userID)
} }
func (api *PluginAPI) GetUserByEmail(email string) (*model.User, *model.AppError) { func (api *PluginAPI) GetUserByEmail(email string) (*model.User, *model.AppError) {
@@ -261,54 +261,54 @@ func (api *PluginAPI) GetUsersByUsernames(usernames []string) ([]*model.User, *m
return api.app.GetUsersByUsernames(usernames, true, nil) return api.app.GetUsersByUsernames(usernames, true, nil)
} }
func (api *PluginAPI) GetUsersInTeam(teamId string, page int, perPage int) ([]*model.User, *model.AppError) { func (api *PluginAPI) GetUsersInTeam(teamID string, page int, perPage int) ([]*model.User, *model.AppError) {
options := &model.UserGetOptions{InTeamId: teamId, Page: page, PerPage: perPage} options := &model.UserGetOptions{InTeamId: teamID, Page: page, PerPage: perPage}
return api.app.GetUsersInTeam(options) return api.app.GetUsersInTeam(options)
} }
func (api *PluginAPI) GetPreferencesForUser(userId string) ([]model.Preference, *model.AppError) { func (api *PluginAPI) GetPreferencesForUser(userID string) ([]model.Preference, *model.AppError) {
return api.app.GetPreferencesForUser(userId) return api.app.GetPreferencesForUser(userID)
} }
func (api *PluginAPI) UpdatePreferencesForUser(userId string, preferences []model.Preference) *model.AppError { func (api *PluginAPI) UpdatePreferencesForUser(userID string, preferences []model.Preference) *model.AppError {
return api.app.UpdatePreferences(userId, preferences) return api.app.UpdatePreferences(userID, preferences)
} }
func (api *PluginAPI) DeletePreferencesForUser(userId string, preferences []model.Preference) *model.AppError { func (api *PluginAPI) DeletePreferencesForUser(userID string, preferences []model.Preference) *model.AppError {
return api.app.DeletePreferences(userId, preferences) return api.app.DeletePreferences(userID, preferences)
} }
func (api *PluginAPI) UpdateUser(user *model.User) (*model.User, *model.AppError) { func (api *PluginAPI) UpdateUser(user *model.User) (*model.User, *model.AppError) {
return api.app.UpdateUser(user, true) return api.app.UpdateUser(user, true)
} }
func (api *PluginAPI) UpdateUserActive(userId string, active bool) *model.AppError { func (api *PluginAPI) UpdateUserActive(userID string, active bool) *model.AppError {
return api.app.UpdateUserActive(userId, active) return api.app.UpdateUserActive(userID, active)
} }
func (api *PluginAPI) GetUserStatus(userId string) (*model.Status, *model.AppError) { func (api *PluginAPI) GetUserStatus(userID string) (*model.Status, *model.AppError) {
return api.app.GetStatus(userId) return api.app.GetStatus(userID)
} }
func (api *PluginAPI) GetUserStatusesByIds(userIds []string) ([]*model.Status, *model.AppError) { func (api *PluginAPI) GetUserStatusesByIds(userIDs []string) ([]*model.Status, *model.AppError) {
return api.app.GetUserStatusesByIds(userIds) return api.app.GetUserStatusesByIds(userIDs)
} }
func (api *PluginAPI) UpdateUserStatus(userId, status string) (*model.Status, *model.AppError) { func (api *PluginAPI) UpdateUserStatus(userID, status string) (*model.Status, *model.AppError) {
switch status { switch status {
case model.STATUS_ONLINE: case model.STATUS_ONLINE:
api.app.SetStatusOnline(userId, true) api.app.SetStatusOnline(userID, true)
case model.STATUS_OFFLINE: case model.STATUS_OFFLINE:
api.app.SetStatusOffline(userId, true) api.app.SetStatusOffline(userID, true)
case model.STATUS_AWAY: case model.STATUS_AWAY:
api.app.SetStatusAwayIfNeeded(userId, true) api.app.SetStatusAwayIfNeeded(userID, true)
case model.STATUS_DND: case model.STATUS_DND:
api.app.SetStatusDoNotDisturb(userId) api.app.SetStatusDoNotDisturb(userID)
default: default:
return nil, model.NewAppError("UpdateUserStatus", "plugin.api.update_user_status.bad_status", nil, "unrecognized status", http.StatusBadRequest) return nil, model.NewAppError("UpdateUserStatus", "plugin.api.update_user_status.bad_status", nil, "unrecognized status", http.StatusBadRequest)
} }
return api.app.GetStatus(userId) return api.app.GetStatus(userID)
} }
func (api *PluginAPI) GetUsersInChannel(channelId, sortBy string, page, perPage int) ([]*model.User, *model.AppError) { func (api *PluginAPI) GetUsersInChannel(channelId, sortBy string, page, perPage int) ([]*model.User, *model.AppError) {
@@ -330,12 +330,12 @@ func (api *PluginAPI) GetUsersInChannel(channelId, sortBy string, page, perPage
} }
} }
func (api *PluginAPI) GetLDAPUserAttributes(userId string, attributes []string) (map[string]string, *model.AppError) { func (api *PluginAPI) GetLDAPUserAttributes(userID string, attributes []string) (map[string]string, *model.AppError) {
if api.app.Ldap() == nil { if api.app.Ldap() == nil {
return nil, model.NewAppError("GetLdapUserAttributes", "ent.ldap.disabled.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("GetLdapUserAttributes", "ent.ldap.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
user, err := api.app.GetUser(userId) user, err := api.app.GetUser(userID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -365,8 +365,8 @@ func (api *PluginAPI) DeleteChannel(channelId string) *model.AppError {
return api.app.DeleteChannel(channel, "") return api.app.DeleteChannel(channel, "")
} }
func (api *PluginAPI) GetPublicChannelsForTeam(teamId string, page, perPage int) ([]*model.Channel, *model.AppError) { func (api *PluginAPI) GetPublicChannelsForTeam(teamID string, page, perPage int) ([]*model.Channel, *model.AppError) {
channels, err := api.app.GetPublicChannelsForTeam(teamId, page*perPage, perPage) channels, err := api.app.GetPublicChannelsForTeam(teamID, page*perPage, perPage)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -377,16 +377,16 @@ func (api *PluginAPI) GetChannel(channelId string) (*model.Channel, *model.AppEr
return api.app.GetChannel(channelId) return api.app.GetChannel(channelId)
} }
func (api *PluginAPI) GetChannelByName(teamId, name string, includeDeleted bool) (*model.Channel, *model.AppError) { func (api *PluginAPI) GetChannelByName(teamID, name string, includeDeleted bool) (*model.Channel, *model.AppError) {
return api.app.GetChannelByName(name, teamId, includeDeleted) return api.app.GetChannelByName(name, teamID, includeDeleted)
} }
func (api *PluginAPI) GetChannelByNameForTeamName(teamName, channelName string, includeDeleted bool) (*model.Channel, *model.AppError) { func (api *PluginAPI) GetChannelByNameForTeamName(teamName, channelName string, includeDeleted bool) (*model.Channel, *model.AppError) {
return api.app.GetChannelByNameForTeamName(channelName, teamName, includeDeleted) return api.app.GetChannelByNameForTeamName(channelName, teamName, includeDeleted)
} }
func (api *PluginAPI) GetChannelsForTeamForUser(teamId, userId string, includeDeleted bool) ([]*model.Channel, *model.AppError) { func (api *PluginAPI) GetChannelsForTeamForUser(teamID, userID string, includeDeleted bool) ([]*model.Channel, *model.AppError) {
channels, err := api.app.GetChannelsForUser(teamId, userId, includeDeleted, 0) channels, err := api.app.GetChannelsForUser(teamID, userID, includeDeleted, 0)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -405,20 +405,20 @@ func (api *PluginAPI) GetChannelStats(channelId string) (*model.ChannelStats, *m
return &model.ChannelStats{ChannelId: channelId, MemberCount: memberCount, GuestCount: guestCount}, nil return &model.ChannelStats{ChannelId: channelId, MemberCount: memberCount, GuestCount: guestCount}, nil
} }
func (api *PluginAPI) GetDirectChannel(userId1, userId2 string) (*model.Channel, *model.AppError) { func (api *PluginAPI) GetDirectChannel(userID1, userID2 string) (*model.Channel, *model.AppError) {
return api.app.GetOrCreateDirectChannel(userId1, userId2) return api.app.GetOrCreateDirectChannel(userID1, userID2)
} }
func (api *PluginAPI) GetGroupChannel(userIds []string) (*model.Channel, *model.AppError) { func (api *PluginAPI) GetGroupChannel(userIDs []string) (*model.Channel, *model.AppError) {
return api.app.CreateGroupChannel(userIds, "") return api.app.CreateGroupChannel(userIDs, "")
} }
func (api *PluginAPI) UpdateChannel(channel *model.Channel) (*model.Channel, *model.AppError) { func (api *PluginAPI) UpdateChannel(channel *model.Channel) (*model.Channel, *model.AppError) {
return api.app.UpdateChannel(channel) return api.app.UpdateChannel(channel)
} }
func (api *PluginAPI) SearchChannels(teamId string, term string) ([]*model.Channel, *model.AppError) { func (api *PluginAPI) SearchChannels(teamID string, term string) ([]*model.Channel, *model.AppError) {
channels, err := api.app.SearchChannels(teamId, term) channels, err := api.app.SearchChannels(teamID, term)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -434,15 +434,15 @@ func (api *PluginAPI) SearchUsers(search *model.UserSearch) ([]*model.User, *mod
return api.app.SearchUsers(search, pluginSearchUsersOptions) return api.app.SearchUsers(search, pluginSearchUsersOptions)
} }
func (api *PluginAPI) SearchPostsInTeam(teamId string, paramsList []*model.SearchParams) ([]*model.Post, *model.AppError) { func (api *PluginAPI) SearchPostsInTeam(teamID string, paramsList []*model.SearchParams) ([]*model.Post, *model.AppError) {
postList, err := api.app.SearchPostsInTeam(teamId, paramsList) postList, err := api.app.SearchPostsInTeam(teamID, paramsList)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return postList.ToSlice(), nil return postList.ToSlice(), nil
} }
func (api *PluginAPI) SearchPostsInTeamForUser(teamId string, userId string, searchParams model.SearchParameter) (*model.PostSearchResults, *model.AppError) { func (api *PluginAPI) SearchPostsInTeamForUser(teamID string, userID string, searchParams model.SearchParameter) (*model.PostSearchResults, *model.AppError) {
var terms string var terms string
if searchParams.Terms != nil { if searchParams.Terms != nil {
terms = *searchParams.Terms terms = *searchParams.Terms
@@ -473,10 +473,10 @@ func (api *PluginAPI) SearchPostsInTeamForUser(teamId string, userId string, sea
includeDeletedChannels = *searchParams.IncludeDeletedChannels includeDeletedChannels = *searchParams.IncludeDeletedChannels
} }
return api.app.SearchPostsInTeamForUser(terms, userId, teamId, isOrSearch, includeDeletedChannels, timeZoneOffset, page, perPage) return api.app.SearchPostsInTeamForUser(terms, userID, teamID, isOrSearch, includeDeletedChannels, timeZoneOffset, page, perPage)
} }
func (api *PluginAPI) AddChannelMember(channelId, userId string) (*model.ChannelMember, *model.AppError) { func (api *PluginAPI) AddChannelMember(channelId, userID string) (*model.ChannelMember, *model.AppError) {
// For now, don't allow overriding these via the plugin API. // For now, don't allow overriding these via the plugin API.
userRequestorId := "" userRequestorId := ""
postRootId := "" postRootId := ""
@@ -486,10 +486,10 @@ func (api *PluginAPI) AddChannelMember(channelId, userId string) (*model.Channel
return nil, err return nil, err
} }
return api.app.AddChannelMember(userId, channel, userRequestorId, postRootId) return api.app.AddChannelMember(userID, channel, userRequestorId, postRootId)
} }
func (api *PluginAPI) AddUserToChannel(channelId, userId, asUserId string) (*model.ChannelMember, *model.AppError) { func (api *PluginAPI) AddUserToChannel(channelId, userID, asUserId string) (*model.ChannelMember, *model.AppError) {
postRootId := "" postRootId := ""
channel, err := api.GetChannel(channelId) channel, err := api.GetChannel(channelId)
@@ -497,35 +497,35 @@ func (api *PluginAPI) AddUserToChannel(channelId, userId, asUserId string) (*mod
return nil, err return nil, err
} }
return api.app.AddChannelMember(userId, channel, asUserId, postRootId) return api.app.AddChannelMember(userID, channel, asUserId, postRootId)
} }
func (api *PluginAPI) GetChannelMember(channelId, userId string) (*model.ChannelMember, *model.AppError) { func (api *PluginAPI) GetChannelMember(channelId, userID string) (*model.ChannelMember, *model.AppError) {
return api.app.GetChannelMember(channelId, userId) return api.app.GetChannelMember(channelId, userID)
} }
func (api *PluginAPI) GetChannelMembers(channelId string, page, perPage int) (*model.ChannelMembers, *model.AppError) { func (api *PluginAPI) GetChannelMembers(channelId string, page, perPage int) (*model.ChannelMembers, *model.AppError) {
return api.app.GetChannelMembersPage(channelId, page, perPage) return api.app.GetChannelMembersPage(channelId, page, perPage)
} }
func (api *PluginAPI) GetChannelMembersByIds(channelId string, userIds []string) (*model.ChannelMembers, *model.AppError) { func (api *PluginAPI) GetChannelMembersByIds(channelId string, userIDs []string) (*model.ChannelMembers, *model.AppError) {
return api.app.GetChannelMembersByIds(channelId, userIds) return api.app.GetChannelMembersByIds(channelId, userIDs)
} }
func (api *PluginAPI) GetChannelMembersForUser(teamId, userId string, page, perPage int) ([]*model.ChannelMember, *model.AppError) { func (api *PluginAPI) GetChannelMembersForUser(teamID, userID string, page, perPage int) ([]*model.ChannelMember, *model.AppError) {
return api.app.GetChannelMembersForUserWithPagination(teamId, userId, page, perPage) return api.app.GetChannelMembersForUserWithPagination(teamID, userID, page, perPage)
} }
func (api *PluginAPI) UpdateChannelMemberRoles(channelId, userId, newRoles string) (*model.ChannelMember, *model.AppError) { func (api *PluginAPI) UpdateChannelMemberRoles(channelId, userID, newRoles string) (*model.ChannelMember, *model.AppError) {
return api.app.UpdateChannelMemberRoles(channelId, userId, newRoles) return api.app.UpdateChannelMemberRoles(channelId, userID, newRoles)
} }
func (api *PluginAPI) UpdateChannelMemberNotifications(channelId, userId string, notifications map[string]string) (*model.ChannelMember, *model.AppError) { func (api *PluginAPI) UpdateChannelMemberNotifications(channelId, userID string, notifications map[string]string) (*model.ChannelMember, *model.AppError) {
return api.app.UpdateChannelMemberNotifyProps(notifications, channelId, userId) return api.app.UpdateChannelMemberNotifyProps(notifications, channelId, userID)
} }
func (api *PluginAPI) DeleteChannelMember(channelId, userId string) *model.AppError { func (api *PluginAPI) DeleteChannelMember(channelId, userID string) *model.AppError {
return api.app.LeaveChannel(channelId, userId) return api.app.LeaveChannel(channelId, userID)
} }
func (api *PluginAPI) GetGroup(groupId string) (*model.Group, *model.AppError) { func (api *PluginAPI) GetGroup(groupId string) (*model.Group, *model.AppError) {
@@ -536,8 +536,8 @@ func (api *PluginAPI) GetGroupByName(name string) (*model.Group, *model.AppError
return api.app.GetGroupByName(name, model.GroupSearchOpts{}) return api.app.GetGroupByName(name, model.GroupSearchOpts{})
} }
func (api *PluginAPI) GetGroupsForUser(userId string) ([]*model.Group, *model.AppError) { func (api *PluginAPI) GetGroupsForUser(userID string) ([]*model.Group, *model.AppError) {
return api.app.GetGroupsByUserId(userId) return api.app.GetGroupsByUserId(userID)
} }
func (api *PluginAPI) CreatePost(post *model.Post) (*model.Post, *model.AppError) { func (api *PluginAPI) CreatePost(post *model.Post) (*model.Post, *model.AppError) {
@@ -556,16 +556,16 @@ func (api *PluginAPI) GetReactions(postId string) ([]*model.Reaction, *model.App
return api.app.GetReactionsForPost(postId) return api.app.GetReactionsForPost(postId)
} }
func (api *PluginAPI) SendEphemeralPost(userId string, post *model.Post) *model.Post { func (api *PluginAPI) SendEphemeralPost(userID string, post *model.Post) *model.Post {
return api.app.SendEphemeralPost(userId, post) return api.app.SendEphemeralPost(userID, post)
} }
func (api *PluginAPI) UpdateEphemeralPost(userId string, post *model.Post) *model.Post { func (api *PluginAPI) UpdateEphemeralPost(userID string, post *model.Post) *model.Post {
return api.app.UpdateEphemeralPost(userId, post) return api.app.UpdateEphemeralPost(userID, post)
} }
func (api *PluginAPI) DeleteEphemeralPost(userId, postId string) { func (api *PluginAPI) DeleteEphemeralPost(userID, postId string) {
api.app.DeleteEphemeralPost(userId, postId) api.app.DeleteEphemeralPost(userID, postId)
} }
func (api *PluginAPI) DeletePost(postId string) *model.AppError { func (api *PluginAPI) DeletePost(postId string) *model.AppError {
@@ -601,8 +601,8 @@ func (api *PluginAPI) UpdatePost(post *model.Post) (*model.Post, *model.AppError
return api.app.UpdatePost(post, false) return api.app.UpdatePost(post, false)
} }
func (api *PluginAPI) GetProfileImage(userId string) ([]byte, *model.AppError) { func (api *PluginAPI) GetProfileImage(userID string) ([]byte, *model.AppError) {
user, err := api.app.GetUser(userId) user, err := api.app.GetUser(userID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -611,13 +611,13 @@ func (api *PluginAPI) GetProfileImage(userId string) ([]byte, *model.AppError) {
return data, err return data, err
} }
func (api *PluginAPI) SetProfileImage(userId string, data []byte) *model.AppError { func (api *PluginAPI) SetProfileImage(userID string, data []byte) *model.AppError {
_, err := api.app.GetUser(userId) _, err := api.app.GetUser(userID)
if err != nil { if err != nil {
return err return err
} }
return api.app.SetProfileImageFromFile(userId, bytes.NewReader(data)) return api.app.SetProfileImageFromFile(userID, bytes.NewReader(data))
} }
func (api *PluginAPI) GetEmojiList(sortBy string, page, perPage int) ([]*model.Emoji, *model.AppError) { func (api *PluginAPI) GetEmojiList(sortBy string, page, perPage int) ([]*model.Emoji, *model.AppError) {
@@ -632,8 +632,8 @@ func (api *PluginAPI) GetEmoji(emojiId string) (*model.Emoji, *model.AppError) {
return api.app.GetEmoji(emojiId) return api.app.GetEmoji(emojiId)
} }
func (api *PluginAPI) CopyFileInfos(userId string, fileIds []string) ([]string, *model.AppError) { func (api *PluginAPI) CopyFileInfos(userID string, fileIds []string) ([]string, *model.AppError) {
return api.app.CopyFileInfos(userId, fileIds) return api.app.CopyFileInfos(userID, fileIds)
} }
func (api *PluginAPI) GetFileInfo(fileId string) (*model.FileInfo, *model.AppError) { func (api *PluginAPI) GetFileInfo(fileId string) (*model.FileInfo, *model.AppError) {
@@ -677,8 +677,8 @@ func (api *PluginAPI) GetEmojiImage(emojiId string) ([]byte, string, *model.AppE
return api.app.GetEmojiImage(emojiId) return api.app.GetEmojiImage(emojiId)
} }
func (api *PluginAPI) GetTeamIcon(teamId string) ([]byte, *model.AppError) { func (api *PluginAPI) GetTeamIcon(teamID string) ([]byte, *model.AppError) {
team, err := api.app.GetTeam(teamId) team, err := api.app.GetTeam(teamID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -690,8 +690,8 @@ func (api *PluginAPI) GetTeamIcon(teamId string) ([]byte, *model.AppError) {
return data, nil return data, nil
} }
func (api *PluginAPI) SetTeamIcon(teamId string, data []byte) *model.AppError { func (api *PluginAPI) SetTeamIcon(teamID string, data []byte) *model.AppError {
team, err := api.app.GetTeam(teamId) team, err := api.app.GetTeam(teamID)
if err != nil { if err != nil {
return err return err
} }
@@ -703,13 +703,13 @@ func (api *PluginAPI) OpenInteractiveDialog(dialog model.OpenDialogRequest) *mod
return api.app.OpenInteractiveDialog(dialog) return api.app.OpenInteractiveDialog(dialog)
} }
func (api *PluginAPI) RemoveTeamIcon(teamId string) *model.AppError { func (api *PluginAPI) RemoveTeamIcon(teamID string) *model.AppError {
_, err := api.app.GetTeam(teamId) _, err := api.app.GetTeam(teamID)
if err != nil { if err != nil {
return err return err
} }
err = api.app.RemoveTeamIcon(teamId) err = api.app.RemoveTeamIcon(teamID)
if err != nil { if err != nil {
return err return err
} }
@@ -824,16 +824,16 @@ func (api *PluginAPI) PublishWebSocketEvent(event string, payload map[string]int
api.app.Publish(ev) api.app.Publish(ev)
} }
func (api *PluginAPI) HasPermissionTo(userId string, permission *model.Permission) bool { func (api *PluginAPI) HasPermissionTo(userID string, permission *model.Permission) bool {
return api.app.HasPermissionTo(userId, permission) return api.app.HasPermissionTo(userID, permission)
} }
func (api *PluginAPI) HasPermissionToTeam(userId, teamId string, permission *model.Permission) bool { func (api *PluginAPI) HasPermissionToTeam(userID, teamID string, permission *model.Permission) bool {
return api.app.HasPermissionToTeam(userId, teamId, permission) return api.app.HasPermissionToTeam(userID, teamID, permission)
} }
func (api *PluginAPI) HasPermissionToChannel(userId, channelId string, permission *model.Permission) bool { func (api *PluginAPI) HasPermissionToChannel(userID, channelId string, permission *model.Permission) bool {
return api.app.HasPermissionToChannel(userId, channelId, permission) return api.app.HasPermissionToChannel(userID, channelId, permission)
} }
func (api *PluginAPI) LogDebug(msg string, keyValuePairs ...interface{}) { func (api *PluginAPI) LogDebug(msg string, keyValuePairs ...interface{}) {
@@ -865,12 +865,12 @@ func (api *PluginAPI) CreateBot(bot *model.Bot) (*model.Bot, *model.AppError) {
return api.app.CreateBot(bot) return api.app.CreateBot(bot)
} }
func (api *PluginAPI) PatchBot(userId string, botPatch *model.BotPatch) (*model.Bot, *model.AppError) { func (api *PluginAPI) PatchBot(userID string, botPatch *model.BotPatch) (*model.Bot, *model.AppError) {
return api.app.PatchBot(userId, botPatch) return api.app.PatchBot(userID, botPatch)
} }
func (api *PluginAPI) GetBot(userId string, includeDeleted bool) (*model.Bot, *model.AppError) { func (api *PluginAPI) GetBot(userID string, includeDeleted bool) (*model.Bot, *model.AppError) {
return api.app.GetBot(userId, includeDeleted) return api.app.GetBot(userID, includeDeleted)
} }
func (api *PluginAPI) GetBots(options *model.BotGetOptions) ([]*model.Bot, *model.AppError) { func (api *PluginAPI) GetBots(options *model.BotGetOptions) ([]*model.Bot, *model.AppError) {
@@ -879,40 +879,40 @@ func (api *PluginAPI) GetBots(options *model.BotGetOptions) ([]*model.Bot, *mode
return []*model.Bot(bots), err return []*model.Bot(bots), err
} }
func (api *PluginAPI) UpdateBotActive(userId string, active bool) (*model.Bot, *model.AppError) { func (api *PluginAPI) UpdateBotActive(userID string, active bool) (*model.Bot, *model.AppError) {
return api.app.UpdateBotActive(userId, active) return api.app.UpdateBotActive(userID, active)
} }
func (api *PluginAPI) PermanentDeleteBot(userId string) *model.AppError { func (api *PluginAPI) PermanentDeleteBot(userID string) *model.AppError {
return api.app.PermanentDeleteBot(userId) return api.app.PermanentDeleteBot(userID)
} }
func (api *PluginAPI) GetBotIconImage(userId string) ([]byte, *model.AppError) { func (api *PluginAPI) GetBotIconImage(userID string) ([]byte, *model.AppError) {
if _, err := api.app.GetBot(userId, true); err != nil { if _, err := api.app.GetBot(userID, true); err != nil {
return nil, err return nil, err
} }
return api.app.GetBotIconImage(userId) return api.app.GetBotIconImage(userID)
} }
func (api *PluginAPI) SetBotIconImage(userId string, data []byte) *model.AppError { func (api *PluginAPI) SetBotIconImage(userID string, data []byte) *model.AppError {
if _, err := api.app.GetBot(userId, true); err != nil { if _, err := api.app.GetBot(userID, true); err != nil {
return err return err
} }
return api.app.SetBotIconImage(userId, bytes.NewReader(data)) return api.app.SetBotIconImage(userID, bytes.NewReader(data))
} }
func (api *PluginAPI) DeleteBotIconImage(userId string) *model.AppError { func (api *PluginAPI) DeleteBotIconImage(userID string) *model.AppError {
if _, err := api.app.GetBot(userId, true); err != nil { if _, err := api.app.GetBot(userID, true); err != nil {
return err return err
} }
return api.app.DeleteBotIconImage(userId) return api.app.DeleteBotIconImage(userID)
} }
func (api *PluginAPI) PublishUserTyping(userId, channelId, parentId string) *model.AppError { func (api *PluginAPI) PublishUserTyping(userID, channelId, parentId string) *model.AppError {
return api.app.PublishUserTyping(userId, channelId, parentId) return api.app.PublishUserTyping(userID, channelId, parentId)
} }
func (api *PluginAPI) PluginHTTP(request *http.Request) *http.Response { func (api *PluginAPI) PluginHTTP(request *http.Request) *http.Response {

Просмотреть файл

@@ -1275,10 +1275,10 @@ func TestPluginCreatePostWithUploadedFile(t *testing.T) {
require.Nil(t, err) require.Nil(t, err)
assert.Equal(t, data, actualData) assert.Equal(t, data, actualData)
userId := th.BasicUser.Id userID := th.BasicUser.Id
post, err := api.CreatePost(&model.Post{ post, err := api.CreatePost(&model.Post{
Message: "test", Message: "test",
UserId: userId, UserId: userID,
ChannelId: channelId, ChannelId: channelId,
FileIds: model.StringArray{fileInfo.Id}, FileIds: model.StringArray{fileInfo.Id},
}) })
@@ -1711,8 +1711,8 @@ func TestPluginAPISearchPostsInTeamByUser(t *testing.T) {
testCases := []struct { testCases := []struct {
description string description string
teamId string teamID string
userId string userID string
params model.SearchParameter params model.SearchParameter
expectedPostsLen int expectedPostsLen int
}{ }{
@@ -1741,7 +1741,7 @@ func TestPluginAPISearchPostsInTeamByUser(t *testing.T) {
for _, testCase := range testCases { for _, testCase := range testCases {
t.Run(testCase.description, func(t *testing.T) { t.Run(testCase.description, func(t *testing.T) {
searchResults, err := api.SearchPostsInTeamForUser(testCase.teamId, testCase.userId, testCase.params) searchResults, err := api.SearchPostsInTeamForUser(testCase.teamID, testCase.userID, testCase.params)
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, testCase.expectedPostsLen, len(searchResults.Posts)) assert.Equal(t, testCase.expectedPostsLen, len(searchResults.Posts))
}) })
@@ -1753,7 +1753,7 @@ func TestPluginAPICreateCommandAndListCommands(t *testing.T) {
defer th.TearDown() defer th.TearDown()
api := th.SetupPluginAPI() api := th.SetupPluginAPI()
foundCommand := func(listXCommand func(teamId string) ([]*model.Command, error)) bool { foundCommand := func(listXCommand func(teamID string) ([]*model.Command, error)) bool {
cmds, appErr := listXCommand(th.BasicTeam.Id) cmds, appErr := listXCommand(th.BasicTeam.Id)
require.Nil(t, appErr) require.Nil(t, appErr)

Просмотреть файл

@@ -72,7 +72,7 @@ func (a *App) RegisterPluginCommand(pluginId string, command *model.Command) err
return nil return nil
} }
func (a *App) UnregisterPluginCommand(pluginId, teamId, trigger string) { func (a *App) UnregisterPluginCommand(pluginId, teamID, trigger string) {
trigger = strings.ToLower(trigger) trigger = strings.ToLower(trigger)
a.Srv().pluginCommandsLock.Lock() a.Srv().pluginCommandsLock.Lock()
@@ -80,7 +80,7 @@ func (a *App) UnregisterPluginCommand(pluginId, teamId, trigger string) {
var remaining []*PluginCommand var remaining []*PluginCommand
for _, pc := range a.Srv().pluginCommands { for _, pc := range a.Srv().pluginCommands {
if pc.Command.TeamId != teamId || pc.Command.Trigger != trigger { if pc.Command.TeamId != teamID || pc.Command.Trigger != trigger {
remaining = append(remaining, pc) remaining = append(remaining, pc)
} }
} }
@@ -100,13 +100,13 @@ func (a *App) UnregisterPluginCommands(pluginId string) {
a.Srv().pluginCommands = remaining a.Srv().pluginCommands = remaining
} }
func (a *App) PluginCommandsForTeam(teamId string) []*model.Command { func (a *App) PluginCommandsForTeam(teamID string) []*model.Command {
a.Srv().pluginCommandsLock.RLock() a.Srv().pluginCommandsLock.RLock()
defer a.Srv().pluginCommandsLock.RUnlock() defer a.Srv().pluginCommandsLock.RUnlock()
var commands []*model.Command var commands []*model.Command
for _, pc := range a.Srv().pluginCommands { for _, pc := range a.Srv().pluginCommands {
if pc.Command.TeamId == "" || pc.Command.TeamId == teamId { if pc.Command.TeamId == "" || pc.Command.TeamId == teamID {
commands = append(commands, pc.Command) commands = append(commands, pc.Command)
} }
} }
@@ -148,8 +148,8 @@ func (a *App) tryExecutePluginCommand(args *model.CommandArgs) (*model.Command,
return matched.Command, nil, model.NewAppError("ExecutePluginCommand", "model.plugin_command.error.app_error", nil, "err="+err.Error(), http.StatusInternalServerError) return matched.Command, nil, model.NewAppError("ExecutePluginCommand", "model.plugin_command.error.app_error", nil, "err="+err.Error(), http.StatusInternalServerError)
} }
for username, userId := range a.MentionsToTeamMembers(args.Command, args.TeamId) { for username, userID := range a.MentionsToTeamMembers(args.Command, args.TeamId) {
args.AddUserMention(username, userId) args.AddUserMention(username, userID)
} }
for channelName, channelId := range a.MentionsToPublicChannels(args.Command, args.TeamId) { for channelName, channelId := range a.MentionsToPublicChannels(args.Command, args.TeamId) {

Просмотреть файл

@@ -157,18 +157,18 @@ func (a *App) servePluginRequest(w http.ResponseWriter, r *http.Request, handler
if r.Header.Get(model.HEADER_REQUESTED_WITH) == model.HEADER_REQUESTED_WITH_XML && !csrfCheckPassed { if r.Header.Get(model.HEADER_REQUESTED_WITH) == model.HEADER_REQUESTED_WITH_XML && !csrfCheckPassed {
csrfErrorMessage := "CSRF Check failed for request - Please migrate your plugin to either send a CSRF Header or Form Field, XMLHttpRequest is deprecated" csrfErrorMessage := "CSRF Check failed for request - Please migrate your plugin to either send a CSRF Header or Form Field, XMLHttpRequest is deprecated"
sid := "" sid := ""
userId := "" userID := ""
if session != nil { if session != nil {
sid = session.Id sid = session.Id
userId = session.UserId userID = session.UserId
} }
fields := []mlog.Field{ fields := []mlog.Field{
mlog.String("path", r.URL.Path), mlog.String("path", r.URL.Path),
mlog.String("ip", r.RemoteAddr), mlog.String("ip", r.RemoteAddr),
mlog.String("session_id", sid), mlog.String("session_id", sid),
mlog.String("user_id", userId), mlog.String("user_id", userID),
} }
if *a.Config().ServiceSettings.ExperimentalStrictCSRFEnforcement { if *a.Config().ServiceSettings.ExperimentalStrictCSRFEnforcement {

Просмотреть файл

@@ -483,7 +483,7 @@ func (a *App) handlePostEvents(post *model.Post, user *model.User, channel *mode
return nil return nil
} }
func (a *App) SendEphemeralPost(userId string, post *model.Post) *model.Post { func (a *App) SendEphemeralPost(userID string, post *model.Post) *model.Post {
post.Type = model.POST_EPHEMERAL post.Type = model.POST_EPHEMERAL
// fill in fields which haven't been specified which have sensible defaults // fill in fields which haven't been specified which have sensible defaults
@@ -498,7 +498,7 @@ func (a *App) SendEphemeralPost(userId string, post *model.Post) *model.Post {
} }
post.GenerateActionIds() post.GenerateActionIds()
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_EPHEMERAL_MESSAGE, "", post.ChannelId, userId, nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_EPHEMERAL_MESSAGE, "", post.ChannelId, userID, nil)
post = a.PreparePostForClient(post, true, false) post = a.PreparePostForClient(post, true, false)
post = model.AddPostActionCookies(post, a.PostActionCookieSecret()) post = model.AddPostActionCookies(post, a.PostActionCookieSecret())
message.Add("post", post.ToJson()) message.Add("post", post.ToJson())
@@ -507,7 +507,7 @@ func (a *App) SendEphemeralPost(userId string, post *model.Post) *model.Post {
return post return post
} }
func (a *App) UpdateEphemeralPost(userId string, post *model.Post) *model.Post { func (a *App) UpdateEphemeralPost(userID string, post *model.Post) *model.Post {
post.Type = model.POST_EPHEMERAL post.Type = model.POST_EPHEMERAL
post.UpdateAt = model.GetMillis() post.UpdateAt = model.GetMillis()
@@ -516,7 +516,7 @@ func (a *App) UpdateEphemeralPost(userId string, post *model.Post) *model.Post {
} }
post.GenerateActionIds() post.GenerateActionIds()
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_POST_EDITED, "", post.ChannelId, userId, nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_POST_EDITED, "", post.ChannelId, userID, nil)
post = a.PreparePostForClient(post, true, false) post = a.PreparePostForClient(post, true, false)
post = model.AddPostActionCookies(post, a.PostActionCookieSecret()) post = model.AddPostActionCookies(post, a.PostActionCookieSecret())
message.Add("post", post.ToJson()) message.Add("post", post.ToJson())
@@ -525,16 +525,16 @@ func (a *App) UpdateEphemeralPost(userId string, post *model.Post) *model.Post {
return post return post
} }
func (a *App) DeleteEphemeralPost(userId, postId string) { func (a *App) DeleteEphemeralPost(userID, postId string) {
post := &model.Post{ post := &model.Post{
Id: postId, Id: postId,
UserId: userId, UserId: userID,
Type: model.POST_EPHEMERAL, Type: model.POST_EPHEMERAL,
DeleteAt: model.GetMillis(), DeleteAt: model.GetMillis(),
UpdateAt: model.GetMillis(), UpdateAt: model.GetMillis(),
} }
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_POST_DELETED, "", "", userId, nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_POST_DELETED, "", "", userID, nil)
message.Add("post", post.ToJson()) message.Add("post", post.ToJson())
a.Publish(message) a.Publish(message)
} }
@@ -764,8 +764,8 @@ func (a *App) GetPostThread(postId string, skipFetchThreads, collapsedThreads, c
return posts, nil return posts, nil
} }
func (a *App) GetFlaggedPosts(userId string, offset int, limit int) (*model.PostList, *model.AppError) { func (a *App) GetFlaggedPosts(userID string, offset int, limit int) (*model.PostList, *model.AppError) {
postList, err := a.Srv().Store.Post().GetFlaggedPosts(userId, offset, limit) postList, err := a.Srv().Store.Post().GetFlaggedPosts(userID, offset, limit)
if err != nil { if err != nil {
return nil, model.NewAppError("GetFlaggedPosts", "app.post.get_flagged_posts.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetFlaggedPosts", "app.post.get_flagged_posts.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -773,8 +773,8 @@ func (a *App) GetFlaggedPosts(userId string, offset int, limit int) (*model.Post
return postList, nil return postList, nil
} }
func (a *App) GetFlaggedPostsForTeam(userId, teamId string, offset int, limit int) (*model.PostList, *model.AppError) { func (a *App) GetFlaggedPostsForTeam(userID, teamID string, offset int, limit int) (*model.PostList, *model.AppError) {
postList, err := a.Srv().Store.Post().GetFlaggedPostsForTeam(userId, teamId, offset, limit) postList, err := a.Srv().Store.Post().GetFlaggedPostsForTeam(userID, teamID, offset, limit)
if err != nil { if err != nil {
return nil, model.NewAppError("GetFlaggedPostsForTeam", "app.post.get_flagged_posts.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetFlaggedPostsForTeam", "app.post.get_flagged_posts.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -782,8 +782,8 @@ func (a *App) GetFlaggedPostsForTeam(userId, teamId string, offset int, limit in
return postList, nil return postList, nil
} }
func (a *App) GetFlaggedPostsForChannel(userId, channelId string, offset int, limit int) (*model.PostList, *model.AppError) { func (a *App) GetFlaggedPostsForChannel(userID, channelId string, offset int, limit int) (*model.PostList, *model.AppError) {
postList, err := a.Srv().Store.Post().GetFlaggedPostsForChannel(userId, channelId, offset, limit) postList, err := a.Srv().Store.Post().GetFlaggedPostsForChannel(userID, channelId, offset, limit)
if err != nil { if err != nil {
return nil, model.NewAppError("GetFlaggedPostsForChannel", "app.post.get_flagged_posts.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetFlaggedPostsForChannel", "app.post.get_flagged_posts.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -791,7 +791,7 @@ func (a *App) GetFlaggedPostsForChannel(userId, channelId string, offset int, li
return postList, nil return postList, nil
} }
func (a *App) GetPermalinkPost(postId string, userId string) (*model.PostList, *model.AppError) { func (a *App) GetPermalinkPost(postId string, userID string) (*model.PostList, *model.AppError) {
list, nErr := a.Srv().Store.Post().Get(postId, false, false, false) list, nErr := a.Srv().Store.Post().Get(postId, false, false, false)
if nErr != nil { if nErr != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
@@ -816,7 +816,7 @@ func (a *App) GetPermalinkPost(postId string, userId string) (*model.PostList, *
return nil, err return nil, err
} }
if err = a.JoinChannel(channel, userId); err != nil { if err = a.JoinChannel(channel, userID); err != nil {
return nil, err return nil, err
} }
@@ -975,10 +975,10 @@ func (a *App) AddCursorIdsForPostList(originalList *model.PostList, afterPost, b
originalList.NextPostId = nextPostId originalList.NextPostId = nextPostId
originalList.PrevPostId = prevPostId originalList.PrevPostId = prevPostId
} }
func (a *App) GetPostsForChannelAroundLastUnread(channelId, userId string, limitBefore, limitAfter int, skipFetchThreads bool, collapsedThreads, collapsedThreadsExtended bool) (*model.PostList, *model.AppError) { func (a *App) GetPostsForChannelAroundLastUnread(channelId, userID string, limitBefore, limitAfter int, skipFetchThreads bool, collapsedThreads, collapsedThreadsExtended bool) (*model.PostList, *model.AppError) {
var member *model.ChannelMember var member *model.ChannelMember
var err *model.AppError var err *model.AppError
if member, err = a.GetChannelMember(channelId, userId); err != nil { if member, err = a.GetChannelMember(channelId, userID); err != nil {
return nil, err return nil, err
} else if member.LastViewedAt == 0 { } else if member.LastViewedAt == 0 {
return model.NewPostList(), nil return model.NewPostList(), nil
@@ -1083,18 +1083,18 @@ func (a *App) DeletePostFiles(post *model.Post) {
} }
} }
func (a *App) parseAndFetchChannelIdByNameFromInFilter(channelName, userId, teamId string, includeDeleted bool) (*model.Channel, error) { func (a *App) parseAndFetchChannelIdByNameFromInFilter(channelName, userID, teamID string, includeDeleted bool) (*model.Channel, error) {
if strings.HasPrefix(channelName, "@") && strings.Contains(channelName, ",") { if strings.HasPrefix(channelName, "@") && strings.Contains(channelName, ",") {
var userIds []string var userIDs []string
users, err := a.GetUsersByUsernames(strings.Split(channelName[1:], ","), false, nil) users, err := a.GetUsersByUsernames(strings.Split(channelName[1:], ","), false, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
for _, user := range users { for _, user := range users {
userIds = append(userIds, user.Id) userIDs = append(userIDs, user.Id)
} }
channel, err := a.GetGroupChannel(userIds) channel, err := a.GetGroupChannel(userIDs)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -1106,21 +1106,21 @@ func (a *App) parseAndFetchChannelIdByNameFromInFilter(channelName, userId, team
if err != nil { if err != nil {
return nil, err return nil, err
} }
channel, err := a.GetOrCreateDirectChannel(userId, user.Id) channel, err := a.GetOrCreateDirectChannel(userID, user.Id)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return channel, nil return channel, nil
} }
channel, err := a.GetChannelByName(channelName, teamId, includeDeleted) channel, err := a.GetChannelByName(channelName, teamID, includeDeleted)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return channel, nil return channel, nil
} }
func (a *App) searchPostsInTeam(teamId string, userId string, paramsList []*model.SearchParams, modifierFun func(*model.SearchParams)) (*model.PostList, *model.AppError) { func (a *App) searchPostsInTeam(teamID string, userID string, paramsList []*model.SearchParams, modifierFun func(*model.SearchParams)) (*model.PostList, *model.AppError) {
var wg sync.WaitGroup var wg sync.WaitGroup
pchan := make(chan store.StoreResult, len(paramsList)) pchan := make(chan store.StoreResult, len(paramsList))
@@ -1135,7 +1135,7 @@ func (a *App) searchPostsInTeam(teamId string, userId string, paramsList []*mode
go func(params *model.SearchParams) { go func(params *model.SearchParams) {
defer wg.Done() defer wg.Done()
postList, err := a.Srv().Store.Post().Search(teamId, userId, params) postList, err := a.Srv().Store.Post().Search(teamID, userID, params)
pchan <- store.StoreResult{Data: postList, NErr: err} pchan <- store.StoreResult{Data: postList, NErr: err}
}(params) }(params)
} }
@@ -1157,9 +1157,9 @@ func (a *App) searchPostsInTeam(teamId string, userId string, paramsList []*mode
return posts, nil return posts, nil
} }
func (a *App) convertChannelNamesToChannelIds(channels []string, userId string, teamId string, includeDeletedChannels bool) []string { func (a *App) convertChannelNamesToChannelIds(channels []string, userID string, teamID string, includeDeletedChannels bool) []string {
for idx, channelName := range channels { for idx, channelName := range channels {
channel, err := a.parseAndFetchChannelIdByNameFromInFilter(channelName, userId, teamId, includeDeletedChannels) channel, err := a.parseAndFetchChannelIdByNameFromInFilter(channelName, userID, teamID, includeDeletedChannels)
if err != nil { if err != nil {
mlog.Warn("error getting channel id by name from in filter", mlog.Err(err)) mlog.Warn("error getting channel id by name from in filter", mlog.Err(err))
continue continue
@@ -1181,22 +1181,22 @@ func (a *App) convertUserNameToUserIds(usernames []string) []string {
return usernames return usernames
} }
func (a *App) SearchPostsInTeam(teamId string, paramsList []*model.SearchParams) (*model.PostList, *model.AppError) { func (a *App) SearchPostsInTeam(teamID string, paramsList []*model.SearchParams) (*model.PostList, *model.AppError) {
if !*a.Config().ServiceSettings.EnablePostSearch { if !*a.Config().ServiceSettings.EnablePostSearch {
return nil, model.NewAppError("SearchPostsInTeam", "store.sql_post.search.disabled", nil, fmt.Sprintf("teamId=%v", teamId), http.StatusNotImplemented) return nil, model.NewAppError("SearchPostsInTeam", "store.sql_post.search.disabled", nil, fmt.Sprintf("teamId=%v", teamID), http.StatusNotImplemented)
} }
return a.searchPostsInTeam(teamId, "", paramsList, func(params *model.SearchParams) { return a.searchPostsInTeam(teamID, "", paramsList, func(params *model.SearchParams) {
params.SearchWithoutUserId = true params.SearchWithoutUserId = true
}) })
} }
func (a *App) SearchPostsInTeamForUser(terms string, userId string, teamId string, isOrSearch bool, includeDeletedChannels bool, timeZoneOffset int, page, perPage int) (*model.PostSearchResults, *model.AppError) { func (a *App) SearchPostsInTeamForUser(terms string, userID string, teamID string, isOrSearch bool, includeDeletedChannels bool, timeZoneOffset int, page, perPage int) (*model.PostSearchResults, *model.AppError) {
var postSearchResults *model.PostSearchResults var postSearchResults *model.PostSearchResults
paramsList := model.ParseSearchParams(strings.TrimSpace(terms), timeZoneOffset) paramsList := model.ParseSearchParams(strings.TrimSpace(terms), timeZoneOffset)
includeDeleted := includeDeletedChannels && *a.Config().TeamSettings.ExperimentalViewArchivedChannels includeDeleted := includeDeletedChannels && *a.Config().TeamSettings.ExperimentalViewArchivedChannels
if !*a.Config().ServiceSettings.EnablePostSearch { if !*a.Config().ServiceSettings.EnablePostSearch {
return nil, model.NewAppError("SearchPostsInTeamForUser", "store.sql_post.search.disabled", nil, fmt.Sprintf("teamId=%v userId=%v", teamId, userId), http.StatusNotImplemented) return nil, model.NewAppError("SearchPostsInTeamForUser", "store.sql_post.search.disabled", nil, fmt.Sprintf("teamId=%v userId=%v", teamID, userID), http.StatusNotImplemented)
} }
finalParamsList := []*model.SearchParams{} finalParamsList := []*model.SearchParams{}
@@ -1207,8 +1207,8 @@ func (a *App) SearchPostsInTeamForUser(terms string, userId string, teamId strin
// Don't allow users to search for "*" // Don't allow users to search for "*"
if params.Terms != "*" { if params.Terms != "*" {
// Convert channel names to channel IDs // Convert channel names to channel IDs
params.InChannels = a.convertChannelNamesToChannelIds(params.InChannels, userId, teamId, includeDeletedChannels) params.InChannels = a.convertChannelNamesToChannelIds(params.InChannels, userID, teamID, includeDeletedChannels)
params.ExcludedChannels = a.convertChannelNamesToChannelIds(params.ExcludedChannels, userId, teamId, includeDeletedChannels) params.ExcludedChannels = a.convertChannelNamesToChannelIds(params.ExcludedChannels, userID, teamID, includeDeletedChannels)
// Convert usernames to user IDs // Convert usernames to user IDs
params.FromUsers = a.convertUserNameToUserIds(params.FromUsers) params.FromUsers = a.convertUserNameToUserIds(params.FromUsers)
@@ -1223,7 +1223,7 @@ func (a *App) SearchPostsInTeamForUser(terms string, userId string, teamId strin
return model.MakePostSearchResults(model.NewPostList(), nil), nil return model.MakePostSearchResults(model.NewPostList(), nil), nil
} }
postSearchResults, nErr := a.Srv().Store.Post().SearchPostsInTeamForUser(finalParamsList, userId, teamId, page, perPage) postSearchResults, nErr := a.Srv().Store.Post().SearchPostsInTeamForUser(finalParamsList, userID, teamID, page, perPage)
if nErr != nil { if nErr != nil {
var appErr *model.AppError var appErr *model.AppError
switch { switch {
@@ -1342,7 +1342,7 @@ func (a *App) MaxPostSize() int {
} }
// countThreadMentions returns the number of times the user is mentioned in a specified thread after the timestamp. // countThreadMentions returns the number of times the user is mentioned in a specified thread after the timestamp.
func (a *App) countThreadMentions(user *model.User, post *model.Post, teamId string, timestamp int64) (int64, *model.AppError) { func (a *App) countThreadMentions(user *model.User, post *model.Post, teamID string, timestamp int64) (int64, *model.AppError) {
channel, err := a.GetChannel(post.ChannelId) channel, err := a.GetChannel(post.ChannelId)
if err != nil { if err != nil {
return 0, err return 0, err
@@ -1376,8 +1376,8 @@ func (a *App) countThreadMentions(user *model.User, post *model.Post, teamId str
} }
var team *model.Team var team *model.Team
if teamId != "" { if teamID != "" {
team, err = a.GetTeam(teamId) team, err = a.GetTeam(teamID)
if err != nil { if err != nil {
return 0, err return 0, err
} }
@@ -1543,6 +1543,6 @@ func isPostMention(user *model.User, post *model.Post, keywords map[string][]str
return false return false
} }
func (a *App) GetThreadMembershipsForUser(userId, teamId string) ([]*model.ThreadMembership, error) { func (a *App) GetThreadMembershipsForUser(userID, teamID string) ([]*model.ThreadMembership, error) {
return a.Srv().Store.Thread().GetMembershipsForUser(userId, teamId) return a.Srv().Store.Thread().GetMembershipsForUser(userID, teamID)
} }

Просмотреть файл

@@ -624,13 +624,13 @@ func TestDeletePostWithFileAttachments(t *testing.T) {
defer th.TearDown() defer th.TearDown()
// Create a post with a file attachment. // Create a post with a file attachment.
teamId := th.BasicTeam.Id teamID := th.BasicTeam.Id
channelId := th.BasicChannel.Id channelId := th.BasicChannel.Id
userId := th.BasicUser.Id userID := th.BasicUser.Id
filename := "test" filename := "test"
data := []byte("abcd") data := []byte("abcd")
info1, err := th.App.DoUploadFile(time.Date(2007, 2, 4, 1, 2, 3, 4, time.Local), teamId, channelId, userId, filename, data) info1, err := th.App.DoUploadFile(time.Date(2007, 2, 4, 1, 2, 3, 4, time.Local), teamID, channelId, userID, filename, data)
require.Nil(t, err) require.Nil(t, err)
defer func() { defer func() {
th.App.Srv().Store.FileInfo().PermanentDelete(info1.Id) th.App.Srv().Store.FileInfo().PermanentDelete(info1.Id)
@@ -641,7 +641,7 @@ func TestDeletePostWithFileAttachments(t *testing.T) {
Message: "asd", Message: "asd",
ChannelId: channelId, ChannelId: channelId,
PendingPostId: model.NewId() + ":" + fmt.Sprint(model.GetMillis()), PendingPostId: model.NewId() + ":" + fmt.Sprint(model.GetMillis()),
UserId: userId, UserId: userID,
CreateAt: 0, CreateAt: 0,
FileIds: []string{info1.Id}, FileIds: []string{info1.Id},
} }
@@ -650,7 +650,7 @@ func TestDeletePostWithFileAttachments(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
// Delete the post. // Delete the post.
post, err = th.App.DeletePost(post.Id, userId) post, err = th.App.DeletePost(post.Id, userID)
assert.Nil(t, err) assert.Nil(t, err)
// Wait for the cleanup routine to finish. // Wait for the cleanup routine to finish.

Просмотреть файл

@@ -10,16 +10,16 @@ import (
"github.com/mattermost/mattermost-server/v5/model" "github.com/mattermost/mattermost-server/v5/model"
) )
func (a *App) GetPreferencesForUser(userId string) (model.Preferences, *model.AppError) { func (a *App) GetPreferencesForUser(userID string) (model.Preferences, *model.AppError) {
preferences, err := a.Srv().Store.Preference().GetAll(userId) preferences, err := a.Srv().Store.Preference().GetAll(userID)
if err != nil { if err != nil {
return nil, model.NewAppError("GetPreferencesForUser", "app.preference.get_all.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetPreferencesForUser", "app.preference.get_all.app_error", nil, err.Error(), http.StatusBadRequest)
} }
return preferences, nil return preferences, nil
} }
func (a *App) GetPreferenceByCategoryForUser(userId string, category string) (model.Preferences, *model.AppError) { func (a *App) GetPreferenceByCategoryForUser(userID string, category string) (model.Preferences, *model.AppError) {
preferences, err := a.Srv().Store.Preference().GetCategory(userId, category) preferences, err := a.Srv().Store.Preference().GetCategory(userID, category)
if err != nil { if err != nil {
return nil, model.NewAppError("GetPreferenceByCategoryForUser", "app.preference.get_category.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetPreferenceByCategoryForUser", "app.preference.get_category.app_error", nil, err.Error(), http.StatusBadRequest)
} }
@@ -30,19 +30,19 @@ func (a *App) GetPreferenceByCategoryForUser(userId string, category string) (mo
return preferences, nil return preferences, nil
} }
func (a *App) GetPreferenceByCategoryAndNameForUser(userId string, category string, preferenceName string) (*model.Preference, *model.AppError) { func (a *App) GetPreferenceByCategoryAndNameForUser(userID string, category string, preferenceName string) (*model.Preference, *model.AppError) {
res, err := a.Srv().Store.Preference().Get(userId, category, preferenceName) res, err := a.Srv().Store.Preference().Get(userID, category, preferenceName)
if err != nil { if err != nil {
return nil, model.NewAppError("GetPreferenceByCategoryAndNameForUser", "app.preference.get.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetPreferenceByCategoryAndNameForUser", "app.preference.get.app_error", nil, err.Error(), http.StatusBadRequest)
} }
return res, nil return res, nil
} }
func (a *App) UpdatePreferences(userId string, preferences model.Preferences) *model.AppError { func (a *App) UpdatePreferences(userID string, preferences model.Preferences) *model.AppError {
for _, preference := range preferences { for _, preference := range preferences {
if userId != preference.UserId { if userID != preference.UserId {
return model.NewAppError("savePreferences", "api.preference.update_preferences.set.app_error", nil, return model.NewAppError("savePreferences", "api.preference.update_preferences.set.app_error", nil,
"userId="+userId+", preference.UserId="+preference.UserId, http.StatusForbidden) "userId="+userID+", preference.UserId="+preference.UserId, http.StatusForbidden)
} }
} }
@@ -60,28 +60,28 @@ func (a *App) UpdatePreferences(userId string, preferences model.Preferences) *m
return model.NewAppError("UpdatePreferences", "api.preference.update_preferences.update_sidebar.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("UpdatePreferences", "api.preference.update_preferences.update_sidebar.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_SIDEBAR_CATEGORY_UPDATED, "", "", userId, nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_SIDEBAR_CATEGORY_UPDATED, "", "", userID, nil)
// TODO this needs to be updated to include information on which categories changed // TODO this needs to be updated to include information on which categories changed
a.Publish(message) a.Publish(message)
message = model.NewWebSocketEvent(model.WEBSOCKET_EVENT_PREFERENCES_CHANGED, "", "", userId, nil) message = model.NewWebSocketEvent(model.WEBSOCKET_EVENT_PREFERENCES_CHANGED, "", "", userID, nil)
message.Add("preferences", preferences.ToJson()) message.Add("preferences", preferences.ToJson())
a.Publish(message) a.Publish(message)
return nil return nil
} }
func (a *App) DeletePreferences(userId string, preferences model.Preferences) *model.AppError { func (a *App) DeletePreferences(userID string, preferences model.Preferences) *model.AppError {
for _, preference := range preferences { for _, preference := range preferences {
if userId != preference.UserId { if userID != preference.UserId {
err := model.NewAppError("DeletePreferences", "api.preference.delete_preferences.delete.app_error", nil, err := model.NewAppError("DeletePreferences", "api.preference.delete_preferences.delete.app_error", nil,
"userId="+userId+", preference.UserId="+preference.UserId, http.StatusForbidden) "userId="+userID+", preference.UserId="+preference.UserId, http.StatusForbidden)
return err return err
} }
} }
for _, preference := range preferences { for _, preference := range preferences {
if err := a.Srv().Store.Preference().Delete(userId, preference.Category, preference.Name); err != nil { if err := a.Srv().Store.Preference().Delete(userID, preference.Category, preference.Name); err != nil {
return model.NewAppError("DeletePreferences", "app.preference.delete.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("DeletePreferences", "app.preference.delete.app_error", nil, err.Error(), http.StatusBadRequest)
} }
} }
@@ -90,11 +90,11 @@ func (a *App) DeletePreferences(userId string, preferences model.Preferences) *m
return model.NewAppError("DeletePreferences", "api.preference.delete_preferences.update_sidebar.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DeletePreferences", "api.preference.delete_preferences.update_sidebar.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_SIDEBAR_CATEGORY_UPDATED, "", "", userId, nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_SIDEBAR_CATEGORY_UPDATED, "", "", userID, nil)
// TODO this needs to be updated to include information on which categories changed // TODO this needs to be updated to include information on which categories changed
a.Publish(message) a.Publish(message)
message = model.NewWebSocketEvent(model.WEBSOCKET_EVENT_PREFERENCES_DELETED, "", "", userId, nil) message = model.NewWebSocketEvent(model.WEBSOCKET_EVENT_PREFERENCES_DELETED, "", "", userID, nil)
message.Add("preferences", preferences.ToJson()) message.Add("preferences", preferences.ToJson())
a.Publish(message) a.Publish(message)

Просмотреть файл

@@ -50,7 +50,7 @@ func cleanupVersion(originalVersion string) string {
return strings.Join(versionPartsOut, ".") return strings.Join(versionPartsOut, ".")
} }
func noticeMatchesConditions(config *model.Config, preferences store.PreferenceStore, userId string, func noticeMatchesConditions(config *model.Config, preferences store.PreferenceStore, userID string,
client model.NoticeClientType, clientVersion string, postCount int64, userCount int64, isSystemAdmin bool, client model.NoticeClientType, clientVersion string, postCount int64, userCount int64, isSystemAdmin bool,
isTeamAdmin bool, isCloud bool, sku string, notice *model.ProductNotice) (bool, error) { isTeamAdmin bool, isCloud bool, sku string, notice *model.ProductNotice) (bool, error) {
cnd := notice.Conditions cnd := notice.Conditions
@@ -153,7 +153,7 @@ func noticeMatchesConditions(config *model.Config, preferences store.PreferenceS
// check if user's config matches the notice // check if user's config matches the notice
for k, v := range cnd.UserConfig { for k, v := range cnd.UserConfig {
res, err := validateUserConfigEntry(preferences, userId, k, v) res, err := validateUserConfigEntry(preferences, userID, k, v)
if err != nil { if err != nil {
return false, err return false, err
} }
@@ -172,7 +172,7 @@ func noticeMatchesConditions(config *model.Config, preferences store.PreferenceS
return true, nil return true, nil
} }
func validateUserConfigEntry(preferences store.PreferenceStore, userId string, key string, expectedValue interface{}) (bool, error) { func validateUserConfigEntry(preferences store.PreferenceStore, userID string, key string, expectedValue interface{}) (bool, error) {
parts := strings.Split(key, ".") parts := strings.Split(key, ".")
if len(parts) != 2 { if len(parts) != 2 {
return false, errors.New("Invalid format of user config. Must be in form of Category.SettingName") return false, errors.New("Invalid format of user config. Must be in form of Category.SettingName")
@@ -180,7 +180,7 @@ func validateUserConfigEntry(preferences store.PreferenceStore, userId string, k
if _, ok := expectedValue.(string); !ok { if _, ok := expectedValue.(string); !ok {
return false, errors.New("Invalid format of user config. Value should be string") return false, errors.New("Invalid format of user config. Value should be string")
} }
pref, err := preferences.Get(userId, parts[0], parts[1]) pref, err := preferences.Get(userID, parts[0], parts[1])
if err != nil { if err != nil {
return false, nil return false, nil
} }
@@ -204,9 +204,9 @@ func validateConfigEntry(conf *model.Config, path string, expectedValue interfac
} }
// GetProductNotices is called from the frontend to fetch the product notices that are relevant to the caller // GetProductNotices is called from the frontend to fetch the product notices that are relevant to the caller
func (a *App) GetProductNotices(userId, teamId string, client model.NoticeClientType, clientVersion string, locale string) (model.NoticeMessages, *model.AppError) { func (a *App) GetProductNotices(userID, teamID string, client model.NoticeClientType, clientVersion string, locale string) (model.NoticeMessages, *model.AppError) {
isSystemAdmin := a.SessionHasPermissionTo(*a.Session(), model.PERMISSION_MANAGE_SYSTEM) isSystemAdmin := a.SessionHasPermissionTo(*a.Session(), model.PERMISSION_MANAGE_SYSTEM)
isTeamAdmin := a.SessionHasPermissionToTeam(*a.Session(), teamId, model.PERMISSION_MANAGE_TEAM) isTeamAdmin := a.SessionHasPermissionToTeam(*a.Session(), teamID, model.PERMISSION_MANAGE_TEAM)
// check if notices for regular users are disabled // check if notices for regular users are disabled
if !*a.Srv().Config().AnnouncementSettings.UserNoticesEnabled && !isSystemAdmin { if !*a.Srv().Config().AnnouncementSettings.UserNoticesEnabled && !isSystemAdmin {
@@ -218,7 +218,7 @@ func (a *App) GetProductNotices(userId, teamId string, client model.NoticeClient
return []model.NoticeMessage{}, nil return []model.NoticeMessage{}, nil
} }
views, err := a.Srv().Store.ProductNotices().GetViews(userId) views, err := a.Srv().Store.ProductNotices().GetViews(userID)
if err != nil { if err != nil {
return nil, model.NewAppError("GetProductNotices", "api.system.update_viewed_notices.failed", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetProductNotices", "api.system.update_viewed_notices.failed", nil, err.Error(), http.StatusBadRequest)
} }
@@ -253,7 +253,7 @@ func (a *App) GetProductNotices(userId, teamId string, client model.NoticeClient
result, err := noticeMatchesConditions( result, err := noticeMatchesConditions(
a.Config(), a.Config(),
a.Srv().Store.Preference(), a.Srv().Store.Preference(),
userId, userID,
client, client,
clientVersion, clientVersion,
cachedPostCount, cachedPostCount,
@@ -281,8 +281,8 @@ func (a *App) GetProductNotices(userId, teamId string, client model.NoticeClient
} }
// UpdateViewedProductNotices is called from the frontend to mark a set of notices as 'viewed' by user // UpdateViewedProductNotices is called from the frontend to mark a set of notices as 'viewed' by user
func (a *App) UpdateViewedProductNotices(userId string, noticeIds []string) *model.AppError { func (a *App) UpdateViewedProductNotices(userID string, noticeIds []string) *model.AppError {
if err := a.Srv().Store.ProductNotices().View(userId, noticeIds); err != nil { if err := a.Srv().Store.ProductNotices().View(userID, noticeIds); err != nil {
return model.NewAppError("UpdateViewedProductNotices", "api.system.update_viewed_notices.failed", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("UpdateViewedProductNotices", "api.system.update_viewed_notices.failed", nil, err.Error(), http.StatusBadRequest)
} }
return nil return nil
@@ -290,13 +290,13 @@ func (a *App) UpdateViewedProductNotices(userId string, noticeIds []string) *mod
// UpdateViewedProductNoticesForNewUser is called when new user is created to mark all current notices for this // 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 // user as viewed in order to avoid showing them imminently on first login
func (a *App) UpdateViewedProductNoticesForNewUser(userId string) { func (a *App) UpdateViewedProductNoticesForNewUser(userID string) {
var noticeIds []string var noticeIds []string
for _, notice := range cachedNotices { for _, notice := range cachedNotices {
noticeIds = append(noticeIds, notice.ID) noticeIds = append(noticeIds, notice.ID)
} }
if err := a.Srv().Store.ProductNotices().View(userId, noticeIds); err != nil { if err := a.Srv().Store.ProductNotices().View(userID, noticeIds); err != nil {
mlog.Error("Cannot update product notices viewed state for user", mlog.String("userId", userId)) mlog.Error("Cannot update product notices viewed state for user", mlog.String("userId", userID))
} }
} }

Просмотреть файл

@@ -91,9 +91,9 @@ func (rl *RateLimiter) RateLimitWriter(key string, w http.ResponseWriter) bool {
return limited return limited
} }
func (rl *RateLimiter) UserIdRateLimit(userId string, w http.ResponseWriter) bool { func (rl *RateLimiter) UserIdRateLimit(userID string, w http.ResponseWriter) bool {
if rl.useAuth { if rl.useAuth {
return rl.RateLimitWriter(userId, w) return rl.RateLimitWriter(userID, w)
} }
return false return false
} }

Просмотреть файл

@@ -144,9 +144,9 @@ func (a *App) GetSession(token string) (*model.Session, *model.AppError) {
return session, nil return session, nil
} }
func (a *App) GetSessions(userId string) ([]*model.Session, *model.AppError) { func (a *App) GetSessions(userID string) ([]*model.Session, *model.AppError) {
sessions, err := a.Srv().Store.Session().GetSessions(userId) sessions, err := a.Srv().Store.Session().GetSessions(userID)
if err != nil { if err != nil {
return nil, model.NewAppError("GetSessions", "app.session.get_sessions.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetSessions", "app.session.get_sessions.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -154,10 +154,10 @@ func (a *App) GetSessions(userId string) ([]*model.Session, *model.AppError) {
return sessions, nil return sessions, nil
} }
func (a *App) UpdateSessionsIsGuest(userId string, isGuest bool) { func (a *App) UpdateSessionsIsGuest(userID string, isGuest bool) {
sessions, err := a.Srv().Store.Session().GetSessions(userId) sessions, err := a.Srv().Store.Session().GetSessions(userID)
if err != nil { if err != nil {
mlog.Error("Unable to get user sessions", mlog.String("user_id", userId), mlog.Err(err)) mlog.Error("Unable to get user sessions", mlog.String("user_id", userID), mlog.Err(err))
return return
} }
@@ -172,8 +172,8 @@ func (a *App) UpdateSessionsIsGuest(userId string, isGuest bool) {
} }
} }
func (a *App) RevokeAllSessions(userId string) *model.AppError { func (a *App) RevokeAllSessions(userID string) *model.AppError {
sessions, err := a.Srv().Store.Session().GetSessions(userId) sessions, err := a.Srv().Store.Session().GetSessions(userID)
if err != nil { if err != nil {
return model.NewAppError("RevokeAllSessions", "app.session.get_sessions.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("RevokeAllSessions", "app.session.get_sessions.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -187,7 +187,7 @@ func (a *App) RevokeAllSessions(userId string) *model.AppError {
} }
} }
a.ClearSessionCacheForUser(userId) a.ClearSessionCacheForUser(userID)
return nil return nil
} }
@@ -209,14 +209,14 @@ func (a *App) RevokeSessionsFromAllUsers() *model.AppError {
return nil return nil
} }
func (a *App) ClearSessionCacheForUser(userId string) { func (a *App) ClearSessionCacheForUser(userID string) {
a.ClearSessionCacheForUserSkipClusterSend(userId) a.ClearSessionCacheForUserSkipClusterSend(userID)
if a.Cluster() != nil { if a.Cluster() != nil {
msg := &model.ClusterMessage{ msg := &model.ClusterMessage{
Event: model.CLUSTER_EVENT_CLEAR_SESSION_CACHE_FOR_USER, Event: model.CLUSTER_EVENT_CLEAR_SESSION_CACHE_FOR_USER,
SendType: model.CLUSTER_SEND_RELIABLE, SendType: model.CLUSTER_SEND_RELIABLE,
Data: userId, Data: userID,
} }
a.Cluster().SendClusterMessage(msg) a.Cluster().SendClusterMessage(msg)
} }
@@ -234,12 +234,12 @@ func (a *App) ClearSessionCacheForAllUsers() {
} }
} }
func (a *App) ClearSessionCacheForUserSkipClusterSend(userId string) { func (a *App) ClearSessionCacheForUserSkipClusterSend(userID string) {
if keys, err := a.Srv().sessionCache.Keys(); err == nil { if keys, err := a.Srv().sessionCache.Keys(); err == nil {
var session *model.Session var session *model.Session
for _, key := range keys { for _, key := range keys {
if err := a.Srv().sessionCache.Get(key, &session); err == nil { if err := a.Srv().sessionCache.Get(key, &session); err == nil {
if session.UserId == userId { if session.UserId == userID {
a.Srv().sessionCache.Remove(key) a.Srv().sessionCache.Remove(key)
if a.Metrics() != nil { if a.Metrics() != nil {
a.Metrics().IncrementMemCacheInvalidationCounterSession() a.Metrics().IncrementMemCacheInvalidationCounterSession()
@@ -249,7 +249,7 @@ func (a *App) ClearSessionCacheForUserSkipClusterSend(userId string) {
} }
} }
a.InvalidateWebConnSessionCacheForUser(userId) a.InvalidateWebConnSessionCacheForUser(userID)
} }
func (a *App) ClearSessionCacheForAllUsersSkipClusterSend() { func (a *App) ClearSessionCacheForAllUsersSkipClusterSend() {
@@ -268,14 +268,14 @@ func (a *App) SessionCacheLength() int {
return 0 return 0
} }
func (a *App) RevokeSessionsForDeviceId(userId string, deviceId string, currentSessionId string) *model.AppError { func (a *App) RevokeSessionsForDeviceId(userID string, deviceId string, currentSessionId string) *model.AppError {
sessions, err := a.Srv().Store.Session().GetSessions(userId) sessions, err := a.Srv().Store.Session().GetSessions(userID)
if err != nil { if err != nil {
return model.NewAppError("RevokeSessionsForDeviceId", "app.session.get_sessions.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("RevokeSessionsForDeviceId", "app.session.get_sessions.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
for _, session := range sessions { for _, session := range sessions {
if session.DeviceId == deviceId && session.Id != currentSessionId { if session.DeviceId == deviceId && session.Id != currentSessionId {
mlog.Debug("Revoking sessionId for userId. Re-login with the same device Id", mlog.String("session_id", session.Id), mlog.String("user_id", userId)) mlog.Debug("Revoking sessionId for userId. Re-login with the same device Id", mlog.String("session_id", session.Id), mlog.String("user_id", userID))
if err := a.RevokeSession(session); err != nil { if err := a.RevokeSession(session); err != nil {
mlog.Warn("Could not revoke session for device", mlog.String("device_id", deviceId), mlog.Err(err)) mlog.Warn("Could not revoke session for device", mlog.String("device_id", deviceId), mlog.Err(err))
} }
@@ -590,8 +590,8 @@ func (a *App) GetUserAccessTokens(page, perPage int) ([]*model.UserAccessToken,
return tokens, nil return tokens, nil
} }
func (a *App) GetUserAccessTokensForUser(userId string, page, perPage int) ([]*model.UserAccessToken, *model.AppError) { func (a *App) GetUserAccessTokensForUser(userID string, page, perPage int) ([]*model.UserAccessToken, *model.AppError) {
tokens, err := a.Srv().Store.UserAccessToken().GetByUser(userId, page*perPage, perPage) tokens, err := a.Srv().Store.UserAccessToken().GetByUser(userID, page*perPage, perPage)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUserAccessTokensForUser", "app.user_access_token.get_by_user.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUserAccessTokensForUser", "app.user_access_token.get_by_user.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -603,8 +603,8 @@ func (a *App) GetUserAccessTokensForUser(userId string, page, perPage int) ([]*m
} }
func (a *App) GetUserAccessToken(tokenId string, sanitize bool) (*model.UserAccessToken, *model.AppError) { func (a *App) GetUserAccessToken(tokenID string, sanitize bool) (*model.UserAccessToken, *model.AppError) {
token, err := a.Srv().Store.UserAccessToken().Get(tokenId) token, err := a.Srv().Store.UserAccessToken().Get(tokenID)
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {

Просмотреть файл

@@ -82,13 +82,13 @@ func expandAnnouncement(text string) string {
func replaceUserIds(userStore store.UserStore, text string) string { func replaceUserIds(userStore store.UserStore, text string) string {
rgx, err := regexp.Compile("<@([a-zA-Z0-9]+)>") rgx, err := regexp.Compile("<@([a-zA-Z0-9]+)>")
if err == nil { if err == nil {
userIds := make([]string, 0) userIDs := make([]string, 0)
matches := rgx.FindAllStringSubmatch(text, -1) matches := rgx.FindAllStringSubmatch(text, -1)
for _, match := range matches { for _, match := range matches {
userIds = append(userIds, match[1]) userIDs = append(userIDs, match[1])
} }
if users, err := userStore.GetProfileByIds(userIds, nil, true); err == nil { if users, err := userStore.GetProfileByIds(userIDs, nil, true); err == nil {
for _, user := range users { for _, user := range users {
text = strings.Replace(text, "<@"+user.Id+">", "@"+user.Username, -1) text = strings.Replace(text, "<@"+user.Id+">", "@"+user.Username, -1)
} }

Просмотреть файл

@@ -25,9 +25,9 @@ func TestProcessSlackText(t *testing.T) {
t.Fail() t.Fail()
} }
userId := th.BasicUser.Id userID := th.BasicUser.Id
username := th.BasicUser.Username username := th.BasicUser.Username
if th.App.ProcessSlackText("<@"+userId+"> hello") != "@"+username+" hello" { if th.App.ProcessSlackText("<@"+userID+"> hello") != "@"+username+" hello" {
t.Fail() t.Fail()
} }
} }
@@ -36,7 +36,7 @@ func TestProcessSlackAnnouncement(t *testing.T) {
th := Setup(t).InitBasic() th := Setup(t).InitBasic()
defer th.TearDown() defer th.TearDown()
userId := th.BasicUser.Id userID := th.BasicUser.Id
username := th.BasicUser.Username username := th.BasicUser.Username
attachments := []*model.SlackAttachment{ attachments := []*model.SlackAttachment{
@@ -53,13 +53,13 @@ func TestProcessSlackAnnouncement(t *testing.T) {
}, },
}, },
{ {
Pretext: "<@" + userId + "> pretext", Pretext: "<@" + userID + "> pretext",
Text: "<@" + userId + "> text", Text: "<@" + userID + "> text",
Title: "<@" + userId + "> title", Title: "<@" + userID + "> title",
Fields: []*model.SlackAttachmentField{ Fields: []*model.SlackAttachmentField{
{ {
Title: "foo", Title: "foo",
Value: "<@" + userId + "> bar", Value: "<@" + userID + "> bar",
Short: true, Short: true,
}, },
}, },

Просмотреть файл

@@ -11,7 +11,7 @@ import (
type AutoChannelCreator struct { type AutoChannelCreator struct {
a *app.App a *app.App
userId string userID string
team *model.Team team *model.Team
Fuzzy bool Fuzzy bool
DisplayNameLen utils.Range DisplayNameLen utils.Range
@@ -21,11 +21,11 @@ type AutoChannelCreator struct {
ChannelType string ChannelType string
} }
func NewAutoChannelCreator(a *app.App, team *model.Team, userId string) *AutoChannelCreator { func NewAutoChannelCreator(a *app.App, team *model.Team, userID string) *AutoChannelCreator {
return &AutoChannelCreator{ return &AutoChannelCreator{
a: a, a: a,
team: team, team: team,
userId: userId, userID: userID,
Fuzzy: false, Fuzzy: false,
DisplayNameLen: ChannelDisplayNameLen, DisplayNameLen: ChannelDisplayNameLen,
DisplayNameCharset: utils.ALPHANUMERIC, DisplayNameCharset: utils.ALPHANUMERIC,
@@ -49,7 +49,7 @@ func (cfg *AutoChannelCreator) createRandomChannel() (*model.Channel, error) {
DisplayName: displayName, DisplayName: displayName,
Name: name, Name: name,
Type: cfg.ChannelType, Type: cfg.ChannelType,
CreatorId: cfg.userId, CreatorId: cfg.userID,
} }
channel, err := cfg.a.CreateChannel(channel, true) channel, err := cfg.a.CreateChannel(channel, true)

Просмотреть файл

@@ -254,7 +254,7 @@ func (th *TestHelper) createChannel(team *model.Team, channelType string) *model
return channel return channel
} }
func (th *TestHelper) createChannelWithAnotherUser(team *model.Team, channelType, userId string) *model.Channel { func (th *TestHelper) createChannelWithAnotherUser(team *model.Team, channelType, userID string) *model.Channel {
id := model.NewId() id := model.NewId()
channel := &model.Channel{ channel := &model.Channel{
@@ -262,7 +262,7 @@ func (th *TestHelper) createChannelWithAnotherUser(team *model.Team, channelType
Name: "name_" + id, Name: "name_" + id,
Type: channelType, Type: channelType,
TeamId: team.Id, TeamId: team.Id,
CreatorId: userId, CreatorId: userID,
} }
utils.DisableDebugLogForTest() utils.DisableDebugLogForTest()

Просмотреть файл

@@ -35,18 +35,18 @@ func (a *App) GetAllStatuses() map[string]*model.Status {
} }
statusMap := map[string]*model.Status{} statusMap := map[string]*model.Status{}
if userIds, err := a.Srv().statusCache.Keys(); err == nil { if userIDs, err := a.Srv().statusCache.Keys(); err == nil {
for _, userId := range userIds { for _, userID := range userIDs {
status := a.GetStatusFromCache(userId) status := a.GetStatusFromCache(userID)
if status != nil { if status != nil {
statusMap[userId] = status statusMap[userID] = status
} }
} }
} }
return statusMap return statusMap
} }
func (a *App) GetStatusesByIds(userIds []string) (map[string]interface{}, *model.AppError) { func (a *App) GetStatusesByIds(userIDs []string) (map[string]interface{}, *model.AppError) {
if !*a.Config().ServiceSettings.EnableUserStatuses { if !*a.Config().ServiceSettings.EnableUserStatuses {
return map[string]interface{}{}, nil return map[string]interface{}{}, nil
} }
@@ -55,15 +55,15 @@ func (a *App) GetStatusesByIds(userIds []string) (map[string]interface{}, *model
metrics := a.Metrics() metrics := a.Metrics()
missingUserIds := []string{} missingUserIds := []string{}
for _, userId := range userIds { for _, userID := range userIDs {
var status *model.Status var status *model.Status
if err := a.Srv().statusCache.Get(userId, &status); err == nil { if err := a.Srv().statusCache.Get(userID, &status); err == nil {
statusMap[userId] = status.Status statusMap[userID] = status.Status
if metrics != nil { if metrics != nil {
metrics.IncrementMemCacheHitCounter("Status") metrics.IncrementMemCacheHitCounter("Status")
} }
} else { } else {
missingUserIds = append(missingUserIds, userId) missingUserIds = append(missingUserIds, userID)
if metrics != nil { if metrics != nil {
metrics.IncrementMemCacheMissCounter("Status") metrics.IncrementMemCacheMissCounter("Status")
} }
@@ -84,9 +84,9 @@ func (a *App) GetStatusesByIds(userIds []string) (map[string]interface{}, *model
} }
// For the case where the user does not have a row in the Status table and cache // For the case where the user does not have a row in the Status table and cache
for _, userId := range missingUserIds { for _, userID := range missingUserIds {
if _, ok := statusMap[userId]; !ok { if _, ok := statusMap[userID]; !ok {
statusMap[userId] = model.STATUS_OFFLINE statusMap[userID] = model.STATUS_OFFLINE
} }
} }
@@ -94,7 +94,7 @@ func (a *App) GetStatusesByIds(userIds []string) (map[string]interface{}, *model
} }
//GetUserStatusesByIds used by apiV4 //GetUserStatusesByIds used by apiV4
func (a *App) GetUserStatusesByIds(userIds []string) ([]*model.Status, *model.AppError) { func (a *App) GetUserStatusesByIds(userIDs []string) ([]*model.Status, *model.AppError) {
if !*a.Config().ServiceSettings.EnableUserStatuses { if !*a.Config().ServiceSettings.EnableUserStatuses {
return []*model.Status{}, nil return []*model.Status{}, nil
} }
@@ -103,15 +103,15 @@ func (a *App) GetUserStatusesByIds(userIds []string) ([]*model.Status, *model.Ap
metrics := a.Metrics() metrics := a.Metrics()
missingUserIds := []string{} missingUserIds := []string{}
for _, userId := range userIds { for _, userID := range userIDs {
var status *model.Status var status *model.Status
if err := a.Srv().statusCache.Get(userId, &status); err == nil { if err := a.Srv().statusCache.Get(userID, &status); err == nil {
statusMap = append(statusMap, status) statusMap = append(statusMap, status)
if metrics != nil { if metrics != nil {
metrics.IncrementMemCacheHitCounter("Status") metrics.IncrementMemCacheHitCounter("Status")
} }
} else { } else {
missingUserIds = append(missingUserIds, userId) missingUserIds = append(missingUserIds, userID)
if metrics != nil { if metrics != nil {
metrics.IncrementMemCacheMissCounter("Status") metrics.IncrementMemCacheMissCounter("Status")
} }
@@ -145,8 +145,8 @@ func (a *App) GetUserStatusesByIds(userIds []string) ([]*model.Status, *model.Ap
} }
} }
} }
for _, userId := range missingUserIds { for _, userID := range missingUserIds {
statusMap = append(statusMap, &model.Status{UserId: userId, Status: "offline"}) statusMap = append(statusMap, &model.Status{UserId: userID, Status: "offline"})
} }
return statusMap, nil return statusMap, nil
@@ -155,20 +155,20 @@ func (a *App) GetUserStatusesByIds(userIds []string) ([]*model.Status, *model.Ap
// SetStatusLastActivityAt sets the last activity at for a user on the local app server and updates // 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 // 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 // while an 'away' device is still connected
func (a *App) SetStatusLastActivityAt(userId string, activityAt int64) { func (a *App) SetStatusLastActivityAt(userID string, activityAt int64) {
var status *model.Status var status *model.Status
var err *model.AppError var err *model.AppError
if status, err = a.GetStatus(userId); err != nil { if status, err = a.GetStatus(userID); err != nil {
return return
} }
status.LastActivityAt = activityAt status.LastActivityAt = activityAt
a.AddStatusCacheSkipClusterSend(status) a.AddStatusCacheSkipClusterSend(status)
a.SetStatusAwayIfNeeded(userId, false) a.SetStatusAwayIfNeeded(userID, false)
} }
func (a *App) SetStatusOnline(userId string, manual bool) { func (a *App) SetStatusOnline(userID string, manual bool) {
if !*a.Config().ServiceSettings.EnableUserStatuses { if !*a.Config().ServiceSettings.EnableUserStatuses {
return return
} }
@@ -181,8 +181,8 @@ func (a *App) SetStatusOnline(userId string, manual bool) {
var status *model.Status var status *model.Status
var err *model.AppError var err *model.AppError
if status, err = a.GetStatus(userId); err != nil { if status, err = a.GetStatus(userID); err != nil {
status = &model.Status{UserId: userId, Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: ""} status = &model.Status{UserId: userID, Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: ""}
broadcast = true broadcast = true
} else { } else {
if status.Manual && !manual { if status.Manual && !manual {
@@ -209,11 +209,11 @@ func (a *App) SetStatusOnline(userId string, manual bool) {
if status.Status != oldStatus || status.Manual != oldManual || status.LastActivityAt-oldTime > model.STATUS_MIN_UPDATE_TIME { if status.Status != oldStatus || status.Manual != oldManual || status.LastActivityAt-oldTime > model.STATUS_MIN_UPDATE_TIME {
if broadcast { if broadcast {
if err := a.Srv().Store.Status().SaveOrUpdate(status); err != nil { if err := a.Srv().Store.Status().SaveOrUpdate(status); err != nil {
mlog.Warn("Failed to save status", mlog.String("user_id", userId), mlog.Err(err), mlog.String("user_id", userId)) mlog.Warn("Failed to save status", mlog.String("user_id", userID), mlog.Err(err), mlog.String("user_id", userID))
} }
} else { } else {
if err := a.Srv().Store.Status().UpdateLastActivityAt(status.UserId, status.LastActivityAt); err != nil { if err := a.Srv().Store.Status().UpdateLastActivityAt(status.UserId, status.LastActivityAt); err != nil {
mlog.Error("Failed to save status", mlog.String("user_id", userId), mlog.Err(err), mlog.String("user_id", userId)) mlog.Error("Failed to save status", mlog.String("user_id", userID), mlog.Err(err), mlog.String("user_id", userID))
} }
} }
} }
@@ -234,30 +234,30 @@ func (a *App) BroadcastStatus(status *model.Status) {
a.Publish(event) a.Publish(event)
} }
func (a *App) SetStatusOffline(userId string, manual bool) { func (a *App) SetStatusOffline(userID string, manual bool) {
if !*a.Config().ServiceSettings.EnableUserStatuses { if !*a.Config().ServiceSettings.EnableUserStatuses {
return return
} }
status, err := a.GetStatus(userId) status, err := a.GetStatus(userID)
if err == nil && status.Manual && !manual { if err == nil && status.Manual && !manual {
return // manually set status always overrides non-manual one return // manually set status always overrides non-manual one
} }
status = &model.Status{UserId: userId, Status: model.STATUS_OFFLINE, Manual: manual, LastActivityAt: model.GetMillis(), ActiveChannel: ""} status = &model.Status{UserId: userID, Status: model.STATUS_OFFLINE, Manual: manual, LastActivityAt: model.GetMillis(), ActiveChannel: ""}
a.SaveAndBroadcastStatus(status) a.SaveAndBroadcastStatus(status)
} }
func (a *App) SetStatusAwayIfNeeded(userId string, manual bool) { func (a *App) SetStatusAwayIfNeeded(userID string, manual bool) {
if !*a.Config().ServiceSettings.EnableUserStatuses { if !*a.Config().ServiceSettings.EnableUserStatuses {
return return
} }
status, err := a.GetStatus(userId) status, err := a.GetStatus(userID)
if err != nil { if err != nil {
status = &model.Status{UserId: userId, Status: model.STATUS_OFFLINE, Manual: manual, LastActivityAt: 0, ActiveChannel: ""} status = &model.Status{UserId: userID, Status: model.STATUS_OFFLINE, Manual: manual, LastActivityAt: 0, ActiveChannel: ""}
} }
if !manual && status.Manual { if !manual && status.Manual {
@@ -281,15 +281,15 @@ func (a *App) SetStatusAwayIfNeeded(userId string, manual bool) {
a.SaveAndBroadcastStatus(status) a.SaveAndBroadcastStatus(status)
} }
func (a *App) SetStatusDoNotDisturb(userId string) { func (a *App) SetStatusDoNotDisturb(userID string) {
if !*a.Config().ServiceSettings.EnableUserStatuses { if !*a.Config().ServiceSettings.EnableUserStatuses {
return return
} }
status, err := a.GetStatus(userId) status, err := a.GetStatus(userID)
if err != nil { if err != nil {
status = &model.Status{UserId: userId, Status: model.STATUS_OFFLINE, Manual: false, LastActivityAt: 0, ActiveChannel: ""} status = &model.Status{UserId: userID, Status: model.STATUS_OFFLINE, Manual: false, LastActivityAt: 0, ActiveChannel: ""}
} }
status.Status = model.STATUS_DND status.Status = model.STATUS_DND
@@ -308,15 +308,15 @@ func (a *App) SaveAndBroadcastStatus(status *model.Status) {
a.BroadcastStatus(status) a.BroadcastStatus(status)
} }
func (a *App) SetStatusOutOfOffice(userId string) { func (a *App) SetStatusOutOfOffice(userID string) {
if !*a.Config().ServiceSettings.EnableUserStatuses { if !*a.Config().ServiceSettings.EnableUserStatuses {
return return
} }
status, err := a.GetStatus(userId) status, err := a.GetStatus(userID)
if err != nil { if err != nil {
status = &model.Status{UserId: userId, Status: model.STATUS_OUT_OF_OFFICE, Manual: false, LastActivityAt: 0, ActiveChannel: ""} status = &model.Status{UserId: userID, Status: model.STATUS_OUT_OF_OFFICE, Manual: false, LastActivityAt: 0, ActiveChannel: ""}
} }
status.Status = model.STATUS_OUT_OF_OFFICE status.Status = model.STATUS_OUT_OF_OFFICE
@@ -325,9 +325,9 @@ func (a *App) SetStatusOutOfOffice(userId string) {
a.SaveAndBroadcastStatus(status) a.SaveAndBroadcastStatus(status)
} }
func (a *App) GetStatusFromCache(userId string) *model.Status { func (a *App) GetStatusFromCache(userID string) *model.Status {
var status *model.Status var status *model.Status
if err := a.Srv().statusCache.Get(userId, &status); err == nil { if err := a.Srv().statusCache.Get(userID, &status); err == nil {
statusCopy := &model.Status{} statusCopy := &model.Status{}
*statusCopy = *status *statusCopy = *status
return statusCopy return statusCopy
@@ -336,17 +336,17 @@ func (a *App) GetStatusFromCache(userId string) *model.Status {
return nil return nil
} }
func (a *App) GetStatus(userId string) (*model.Status, *model.AppError) { func (a *App) GetStatus(userID string) (*model.Status, *model.AppError) {
if !*a.Config().ServiceSettings.EnableUserStatuses { if !*a.Config().ServiceSettings.EnableUserStatuses {
return &model.Status{}, nil return &model.Status{}, nil
} }
status := a.GetStatusFromCache(userId) status := a.GetStatusFromCache(userID)
if status != nil { if status != nil {
return status, nil return status, nil
} }
status, err := a.Srv().Store.Status().Get(userId) status, err := a.Srv().Store.Status().Get(userID)
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {

Просмотреть файл

@@ -48,8 +48,8 @@ func (a *App) CreateTeam(team *model.Team) (*model.Team, *model.AppError) {
return rteam, nil return rteam, nil
} }
func (a *App) CreateTeamWithUser(team *model.Team, userId string) (*model.Team, *model.AppError) { func (a *App) CreateTeamWithUser(team *model.Team, userID string) (*model.Team, *model.AppError) {
user, err := a.GetUser(userId) user, err := a.GetUser(userID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -237,8 +237,8 @@ func (a *App) UpdateTeamScheme(team *model.Team) (*model.Team, *model.AppError)
return oldTeam, nil return oldTeam, nil
} }
func (a *App) UpdateTeamPrivacy(teamId string, teamType string, allowOpenInvite bool) *model.AppError { func (a *App) UpdateTeamPrivacy(teamID string, teamType string, allowOpenInvite bool) *model.AppError {
oldTeam, err := a.GetTeam(teamId) oldTeam, err := a.GetTeam(teamID)
if err != nil { if err != nil {
return err return err
} }
@@ -270,8 +270,8 @@ func (a *App) UpdateTeamPrivacy(teamId string, teamType string, allowOpenInvite
return nil return nil
} }
func (a *App) PatchTeam(teamId string, patch *model.TeamPatch) (*model.Team, *model.AppError) { func (a *App) PatchTeam(teamID string, patch *model.TeamPatch) (*model.Team, *model.AppError) {
team, err := a.GetTeam(teamId) team, err := a.GetTeam(teamID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -295,8 +295,8 @@ func (a *App) PatchTeam(teamId string, patch *model.TeamPatch) (*model.Team, *mo
return team, nil return team, nil
} }
func (a *App) RegenerateTeamInviteId(teamId string) (*model.Team, *model.AppError) { func (a *App) RegenerateTeamInviteId(teamID string) (*model.Team, *model.AppError) {
team, err := a.GetTeam(teamId) team, err := a.GetTeam(teamID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -327,18 +327,18 @@ func (a *App) sendTeamEvent(team *model.Team, event string) {
*sanitizedTeam = *team *sanitizedTeam = *team
sanitizedTeam.Sanitize() sanitizedTeam.Sanitize()
teamId := "" // no filtering by teamId by default teamID := "" // no filtering by teamID by default
if event == model.WEBSOCKET_EVENT_UPDATE_TEAM { if event == model.WEBSOCKET_EVENT_UPDATE_TEAM {
// in case of update_team event - we send the message only to members of that team // in case of update_team event - we send the message only to members of that team
teamId = team.Id teamID = team.Id
} }
message := model.NewWebSocketEvent(event, teamId, "", "", nil) message := model.NewWebSocketEvent(event, teamID, "", "", nil)
message.Add("team", sanitizedTeam.ToJson()) message.Add("team", sanitizedTeam.ToJson())
a.Publish(message) a.Publish(message)
} }
func (a *App) GetSchemeRolesForTeam(teamId string) (string, string, string, *model.AppError) { func (a *App) GetSchemeRolesForTeam(teamID string) (string, string, string, *model.AppError) {
team, err := a.GetTeam(teamId) team, err := a.GetTeam(teamID)
if err != nil { if err != nil {
return "", "", "", err return "", "", "", err
} }
@@ -354,8 +354,8 @@ func (a *App) GetSchemeRolesForTeam(teamId string) (string, string, string, *mod
return model.TEAM_GUEST_ROLE_ID, model.TEAM_USER_ROLE_ID, model.TEAM_ADMIN_ROLE_ID, nil return model.TEAM_GUEST_ROLE_ID, model.TEAM_USER_ROLE_ID, model.TEAM_ADMIN_ROLE_ID, nil
} }
func (a *App) UpdateTeamMemberRoles(teamId string, userId string, newRoles string) (*model.TeamMember, *model.AppError) { func (a *App) UpdateTeamMemberRoles(teamID string, userID string, newRoles string) (*model.TeamMember, *model.AppError) {
member, nErr := a.Srv().Store.Team().GetMember(teamId, userId) member, nErr := a.Srv().Store.Team().GetMember(teamID, userID)
if nErr != nil { if nErr != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -367,10 +367,10 @@ func (a *App) UpdateTeamMemberRoles(teamId string, userId string, newRoles strin
} }
if member == nil { if member == nil {
return nil, model.NewAppError("UpdateTeamMemberRoles", "api.team.update_member_roles.not_a_member", nil, "userId="+userId+" teamId="+teamId, http.StatusBadRequest) return nil, model.NewAppError("UpdateTeamMemberRoles", "api.team.update_member_roles.not_a_member", nil, "userId="+userID+" teamId="+teamID, http.StatusBadRequest)
} }
schemeGuestRole, schemeUserRole, schemeAdminRole, err := a.GetSchemeRolesForTeam(teamId) schemeGuestRole, schemeUserRole, schemeAdminRole, err := a.GetSchemeRolesForTeam(teamID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -429,15 +429,15 @@ func (a *App) UpdateTeamMemberRoles(teamId string, userId string, newRoles strin
} }
} }
a.ClearSessionCacheForUser(userId) a.ClearSessionCacheForUser(userID)
a.sendUpdatedMemberRoleEvent(userId, member) a.sendUpdatedMemberRoleEvent(userID, member)
return member, nil return member, nil
} }
func (a *App) UpdateTeamMemberSchemeRoles(teamId string, userId string, isSchemeGuest bool, isSchemeUser bool, isSchemeAdmin bool) (*model.TeamMember, *model.AppError) { func (a *App) UpdateTeamMemberSchemeRoles(teamID string, userID string, isSchemeGuest bool, isSchemeUser bool, isSchemeAdmin bool) (*model.TeamMember, *model.AppError) {
member, err := a.GetTeamMember(teamId, userId) member, err := a.GetTeamMember(teamID, userID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -466,30 +466,30 @@ func (a *App) UpdateTeamMemberSchemeRoles(teamId string, userId string, isScheme
} }
} }
a.ClearSessionCacheForUser(userId) a.ClearSessionCacheForUser(userID)
a.sendUpdatedMemberRoleEvent(userId, member) a.sendUpdatedMemberRoleEvent(userID, member)
return member, nil return member, nil
} }
func (a *App) sendUpdatedMemberRoleEvent(userId string, member *model.TeamMember) { func (a *App) sendUpdatedMemberRoleEvent(userID string, member *model.TeamMember) {
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_MEMBERROLE_UPDATED, "", "", userId, nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_MEMBERROLE_UPDATED, "", "", userID, nil)
message.Add("member", member.ToJson()) message.Add("member", member.ToJson())
a.Publish(message) a.Publish(message)
} }
func (a *App) AddUserToTeam(teamId string, userId string, userRequestorId string) (*model.Team, *model.AppError) { func (a *App) AddUserToTeam(teamID string, userID string, userRequestorId string) (*model.Team, *model.AppError) {
tchan := make(chan store.StoreResult, 1) tchan := make(chan store.StoreResult, 1)
go func() { go func() {
team, err := a.Srv().Store.Team().Get(teamId) team, err := a.Srv().Store.Team().Get(teamID)
tchan <- store.StoreResult{Data: team, NErr: err} tchan <- store.StoreResult{Data: team, NErr: err}
close(tchan) close(tchan)
}() }()
uchan := make(chan store.StoreResult, 1) uchan := make(chan store.StoreResult, 1)
go func() { go func() {
user, err := a.Srv().Store.User().Get(userId) user, err := a.Srv().Store.User().Get(userID)
uchan <- store.StoreResult{Data: user, NErr: err} uchan <- store.StoreResult{Data: user, NErr: err}
close(uchan) close(uchan)
}() }()
@@ -525,8 +525,8 @@ func (a *App) AddUserToTeam(teamId string, userId string, userRequestorId string
return team, nil return team, nil
} }
func (a *App) AddUserToTeamByTeamId(teamId string, user *model.User) *model.AppError { func (a *App) AddUserToTeamByTeamId(teamID string, user *model.User) *model.AppError {
team, err := a.Srv().Store.Team().Get(teamId) team, err := a.Srv().Store.Team().Get(teamID)
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -540,8 +540,8 @@ func (a *App) AddUserToTeamByTeamId(teamId string, user *model.User) *model.AppE
return a.JoinUserToTeam(team, user, "") return a.JoinUserToTeam(team, user, "")
} }
func (a *App) AddUserToTeamByToken(userId string, tokenId string) (*model.Team, *model.AppError) { func (a *App) AddUserToTeamByToken(userID string, tokenID string) (*model.Team, *model.AppError) {
token, err := a.Srv().Store.Token().GetByToken(tokenId) token, err := a.Srv().Store.Token().GetByToken(tokenID)
if err != nil { if err != nil {
return nil, model.NewAppError("AddUserToTeamByToken", "api.user.create_user.signup_link_invalid.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("AddUserToTeamByToken", "api.user.create_user.signup_link_invalid.app_error", nil, err.Error(), http.StatusBadRequest)
} }
@@ -566,7 +566,7 @@ func (a *App) AddUserToTeamByToken(userId string, tokenId string) (*model.Team,
uchan := make(chan store.StoreResult, 1) uchan := make(chan store.StoreResult, 1)
go func() { go func() {
user, err := a.Srv().Store.User().Get(userId) user, err := a.Srv().Store.User().Get(userID)
uchan <- store.StoreResult{Data: user, NErr: err} uchan <- store.StoreResult{Data: user, NErr: err}
close(uchan) close(uchan)
}() }()
@@ -631,7 +631,7 @@ func (a *App) AddUserToTeamByToken(userId string, tokenId string) (*model.Team,
return team, nil return team, nil
} }
func (a *App) AddUserToTeamByInviteId(inviteId string, userId string) (*model.Team, *model.AppError) { func (a *App) AddUserToTeamByInviteId(inviteId string, userID string) (*model.Team, *model.AppError) {
tchan := make(chan store.StoreResult, 1) tchan := make(chan store.StoreResult, 1)
go func() { go func() {
team, err := a.Srv().Store.Team().GetByInviteId(inviteId) team, err := a.Srv().Store.Team().GetByInviteId(inviteId)
@@ -641,7 +641,7 @@ func (a *App) AddUserToTeamByInviteId(inviteId string, userId string) (*model.Te
uchan := make(chan store.StoreResult, 1) uchan := make(chan store.StoreResult, 1)
go func() { go func() {
user, err := a.Srv().Store.User().Get(userId) user, err := a.Srv().Store.User().Get(userID)
uchan <- store.StoreResult{Data: user, NErr: err} uchan <- store.StoreResult{Data: user, NErr: err}
close(uchan) close(uchan)
}() }()
@@ -818,8 +818,8 @@ func (a *App) JoinUserToTeam(team *model.Team, user *model.User, userRequestorId
return nil return nil
} }
func (a *App) GetTeam(teamId string) (*model.Team, *model.AppError) { func (a *App) GetTeam(teamID string) (*model.Team, *model.AppError) {
team, err := a.Srv().Store.Team().Get(teamId) team, err := a.Srv().Store.Team().Get(teamID)
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -988,8 +988,8 @@ func (a *App) SearchPrivateTeams(term string) ([]*model.Team, *model.AppError) {
return teams, nil return teams, nil
} }
func (a *App) GetTeamsForUser(userId string) ([]*model.Team, *model.AppError) { func (a *App) GetTeamsForUser(userID string) ([]*model.Team, *model.AppError) {
teams, err := a.Srv().Store.Team().GetTeamsByUserId(userId) teams, err := a.Srv().Store.Team().GetTeamsByUserId(userID)
if err != nil { if err != nil {
return nil, model.NewAppError("GetTeamsForUser", "app.team.get_all.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTeamsForUser", "app.team.get_all.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -997,8 +997,8 @@ func (a *App) GetTeamsForUser(userId string) ([]*model.Team, *model.AppError) {
return teams, nil return teams, nil
} }
func (a *App) GetTeamMember(teamId, userId string) (*model.TeamMember, *model.AppError) { func (a *App) GetTeamMember(teamID, userID string) (*model.TeamMember, *model.AppError) {
teamMember, err := a.Srv().Store.Team().GetMember(teamId, userId) teamMember, err := a.Srv().Store.Team().GetMember(teamID, userID)
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -1012,8 +1012,8 @@ func (a *App) GetTeamMember(teamId, userId string) (*model.TeamMember, *model.Ap
return teamMember, nil return teamMember, nil
} }
func (a *App) GetTeamMembersForUser(userId string) ([]*model.TeamMember, *model.AppError) { func (a *App) GetTeamMembersForUser(userID string) ([]*model.TeamMember, *model.AppError) {
teamMembers, err := a.Srv().Store.Team().GetTeamsForUser(context.Background(), userId) teamMembers, err := a.Srv().Store.Team().GetTeamsForUser(context.Background(), userID)
if err != nil { if err != nil {
return nil, model.NewAppError("GetTeamMembersForUser", "app.team.get_members.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTeamMembersForUser", "app.team.get_members.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -1021,8 +1021,8 @@ func (a *App) GetTeamMembersForUser(userId string) ([]*model.TeamMember, *model.
return teamMembers, nil return teamMembers, nil
} }
func (a *App) GetTeamMembersForUserWithPagination(userId string, page, perPage int) ([]*model.TeamMember, *model.AppError) { func (a *App) GetTeamMembersForUserWithPagination(userID string, page, perPage int) ([]*model.TeamMember, *model.AppError) {
teamMembers, err := a.Srv().Store.Team().GetTeamsForUserWithPagination(userId, page, perPage) teamMembers, err := a.Srv().Store.Team().GetTeamsForUserWithPagination(userID, page, perPage)
if err != nil { if err != nil {
return nil, model.NewAppError("GetTeamMembersForUserWithPagination", "app.team.get_members.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTeamMembersForUserWithPagination", "app.team.get_members.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -1030,8 +1030,8 @@ func (a *App) GetTeamMembersForUserWithPagination(userId string, page, perPage i
return teamMembers, nil return teamMembers, nil
} }
func (a *App) GetTeamMembers(teamId string, offset int, limit int, teamMembersGetOptions *model.TeamMembersGetOptions) ([]*model.TeamMember, *model.AppError) { func (a *App) GetTeamMembers(teamID string, offset int, limit int, teamMembersGetOptions *model.TeamMembersGetOptions) ([]*model.TeamMember, *model.AppError) {
teamMembers, err := a.Srv().Store.Team().GetMembers(teamId, offset, limit, teamMembersGetOptions) teamMembers, err := a.Srv().Store.Team().GetMembers(teamID, offset, limit, teamMembersGetOptions)
if err != nil { if err != nil {
return nil, model.NewAppError("GetTeamMembers", "app.team.get_members.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTeamMembers", "app.team.get_members.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -1039,8 +1039,8 @@ func (a *App) GetTeamMembers(teamId string, offset int, limit int, teamMembersGe
return teamMembers, nil return teamMembers, nil
} }
func (a *App) GetTeamMembersByIds(teamId string, userIds []string, restrictions *model.ViewUsersRestrictions) ([]*model.TeamMember, *model.AppError) { func (a *App) GetTeamMembersByIds(teamID string, userIDs []string, restrictions *model.ViewUsersRestrictions) ([]*model.TeamMember, *model.AppError) {
teamMembers, err := a.Srv().Store.Team().GetMembersByIds(teamId, userIds, restrictions) teamMembers, err := a.Srv().Store.Team().GetMembersByIds(teamID, userIDs, restrictions)
if err != nil { if err != nil {
return nil, model.NewAppError("GetTeamMembersByIds", "app.team.get_members_by_ids.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTeamMembersByIds", "app.team.get_members_by_ids.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -1048,32 +1048,32 @@ func (a *App) GetTeamMembersByIds(teamId string, userIds []string, restrictions
return teamMembers, nil return teamMembers, nil
} }
func (a *App) AddTeamMember(teamId, userId string) (*model.TeamMember, *model.AppError) { func (a *App) AddTeamMember(teamID, userID string) (*model.TeamMember, *model.AppError) {
if _, err := a.AddUserToTeam(teamId, userId, ""); err != nil { if _, err := a.AddUserToTeam(teamID, userID, ""); err != nil {
return nil, err return nil, err
} }
teamMember, err := a.GetTeamMember(teamId, userId) teamMember, err := a.GetTeamMember(teamID, userID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_ADDED_TO_TEAM, "", "", userId, nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_ADDED_TO_TEAM, "", "", userID, nil)
message.Add("team_id", teamId) message.Add("team_id", teamID)
message.Add("user_id", userId) message.Add("user_id", userID)
a.Publish(message) a.Publish(message)
return teamMember, nil return teamMember, nil
} }
func (a *App) AddTeamMembers(teamId string, userIds []string, userRequestorId string, graceful bool) ([]*model.TeamMemberWithError, *model.AppError) { func (a *App) AddTeamMembers(teamID string, userIDs []string, userRequestorId string, graceful bool) ([]*model.TeamMemberWithError, *model.AppError) {
var membersWithErrors []*model.TeamMemberWithError var membersWithErrors []*model.TeamMemberWithError
for _, userId := range userIds { for _, userID := range userIDs {
if _, err := a.AddUserToTeam(teamId, userId, userRequestorId); err != nil { if _, err := a.AddUserToTeam(teamID, userID, userRequestorId); err != nil {
if graceful { if graceful {
membersWithErrors = append(membersWithErrors, &model.TeamMemberWithError{ membersWithErrors = append(membersWithErrors, &model.TeamMemberWithError{
UserId: userId, UserId: userID,
Error: err, Error: err,
}) })
continue continue
@@ -1081,31 +1081,31 @@ func (a *App) AddTeamMembers(teamId string, userIds []string, userRequestorId st
return nil, err return nil, err
} }
teamMember, err := a.GetTeamMember(teamId, userId) teamMember, err := a.GetTeamMember(teamID, userID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
membersWithErrors = append(membersWithErrors, &model.TeamMemberWithError{ membersWithErrors = append(membersWithErrors, &model.TeamMemberWithError{
UserId: userId, UserId: userID,
Member: teamMember, Member: teamMember,
}) })
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_ADDED_TO_TEAM, "", "", userId, nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_ADDED_TO_TEAM, "", "", userID, nil)
message.Add("team_id", teamId) message.Add("team_id", teamID)
message.Add("user_id", userId) message.Add("user_id", userID)
a.Publish(message) a.Publish(message)
} }
return membersWithErrors, nil return membersWithErrors, nil
} }
func (a *App) AddTeamMemberByToken(userId, tokenId string) (*model.TeamMember, *model.AppError) { func (a *App) AddTeamMemberByToken(userID, tokenID string) (*model.TeamMember, *model.AppError) {
team, err := a.AddUserToTeamByToken(userId, tokenId) team, err := a.AddUserToTeamByToken(userID, tokenID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
teamMember, err := a.GetTeamMember(team.Id, userId) teamMember, err := a.GetTeamMember(team.Id, userID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -1113,8 +1113,8 @@ func (a *App) AddTeamMemberByToken(userId, tokenId string) (*model.TeamMember, *
return teamMember, nil return teamMember, nil
} }
func (a *App) AddTeamMemberByInviteId(inviteId, userId string) (*model.TeamMember, *model.AppError) { func (a *App) AddTeamMemberByInviteId(inviteId, userID string) (*model.TeamMember, *model.AppError) {
team, err := a.AddUserToTeamByInviteId(inviteId, userId) team, err := a.AddUserToTeamByInviteId(inviteId, userID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -1123,15 +1123,15 @@ func (a *App) AddTeamMemberByInviteId(inviteId, userId string) (*model.TeamMembe
return nil, model.NewAppError("AddTeamMemberByInviteId", "app.team.invite_id.group_constrained.error", nil, "", http.StatusForbidden) return nil, model.NewAppError("AddTeamMemberByInviteId", "app.team.invite_id.group_constrained.error", nil, "", http.StatusForbidden)
} }
teamMember, err := a.GetTeamMember(team.Id, userId) teamMember, err := a.GetTeamMember(team.Id, userID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return teamMember, nil return teamMember, nil
} }
func (a *App) GetTeamUnread(teamId, userId string) (*model.TeamUnread, *model.AppError) { func (a *App) GetTeamUnread(teamID, userID string) (*model.TeamUnread, *model.AppError) {
channelUnreads, err := a.Srv().Store.Team().GetChannelUnreadsForTeam(teamId, userId) channelUnreads, err := a.Srv().Store.Team().GetChannelUnreadsForTeam(teamID, userID)
if err != nil { if err != nil {
return nil, model.NewAppError("GetTeamUnread", "app.team.get_unread.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTeamUnread", "app.team.get_unread.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -1139,7 +1139,7 @@ func (a *App) GetTeamUnread(teamId, userId string) (*model.TeamUnread, *model.Ap
var teamUnread = &model.TeamUnread{ var teamUnread = &model.TeamUnread{
MsgCount: 0, MsgCount: 0,
MentionCount: 0, MentionCount: 0,
TeamId: teamId, TeamId: teamID,
} }
for _, cu := range channelUnreads { for _, cu := range channelUnreads {
@@ -1153,17 +1153,17 @@ func (a *App) GetTeamUnread(teamId, userId string) (*model.TeamUnread, *model.Ap
return teamUnread, nil return teamUnread, nil
} }
func (a *App) RemoveUserFromTeam(teamId string, userId string, requestorId string) *model.AppError { func (a *App) RemoveUserFromTeam(teamID string, userID string, requestorId string) *model.AppError {
tchan := make(chan store.StoreResult, 1) tchan := make(chan store.StoreResult, 1)
go func() { go func() {
team, err := a.Srv().Store.Team().Get(teamId) team, err := a.Srv().Store.Team().Get(teamID)
tchan <- store.StoreResult{Data: team, NErr: err} tchan <- store.StoreResult{Data: team, NErr: err}
close(tchan) close(tchan)
}() }()
uchan := make(chan store.StoreResult, 1) uchan := make(chan store.StoreResult, 1)
go func() { go func() {
user, err := a.Srv().Store.User().Get(userId) user, err := a.Srv().Store.User().Get(userID)
uchan <- store.StoreResult{Data: user, NErr: err} uchan <- store.StoreResult{Data: user, NErr: err}
close(uchan) close(uchan)
}() }()
@@ -1358,10 +1358,10 @@ func (a *App) postRemoveFromTeamMessage(user *model.User, channel *model.Channel
return nil return nil
} }
func (a *App) prepareInviteNewUsersToTeam(teamId, senderId string) (*model.User, *model.Team, *model.AppError) { func (a *App) prepareInviteNewUsersToTeam(teamID, senderId string) (*model.User, *model.Team, *model.AppError) {
tchan := make(chan store.StoreResult, 1) tchan := make(chan store.StoreResult, 1)
go func() { go func() {
team, err := a.Srv().Store.Team().Get(teamId) team, err := a.Srv().Store.Team().Get(teamID)
tchan <- store.StoreResult{Data: team, NErr: err} tchan <- store.StoreResult{Data: team, NErr: err}
close(tchan) close(tchan)
}() }()
@@ -1440,7 +1440,7 @@ func (a *App) GetErrorListForEmailsOverLimit(emailList []string, cloudUserLimit
return emailList, invitesNotSent, nil return emailList, invitesNotSent, nil
} }
func (a *App) InviteNewUsersToTeamGracefully(emailList []string, teamId, senderId string) ([]*model.EmailInviteWithError, *model.AppError) { func (a *App) InviteNewUsersToTeamGracefully(emailList []string, teamID, senderId string) ([]*model.EmailInviteWithError, *model.AppError) {
if !*a.Config().ServiceSettings.EnableEmailInvitations { if !*a.Config().ServiceSettings.EnableEmailInvitations {
return nil, model.NewAppError("InviteNewUsersToTeam", "api.team.invite_members.disabled.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("InviteNewUsersToTeam", "api.team.invite_members.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
@@ -1449,7 +1449,7 @@ func (a *App) InviteNewUsersToTeamGracefully(emailList []string, teamId, senderI
err := model.NewAppError("InviteNewUsersToTeam", "api.team.invite_members.no_one.app_error", nil, "", http.StatusBadRequest) err := model.NewAppError("InviteNewUsersToTeam", "api.team.invite_members.no_one.app_error", nil, "", http.StatusBadRequest)
return nil, err return nil, err
} }
user, team, err := a.prepareInviteNewUsersToTeam(teamId, senderId) user, team, err := a.prepareInviteNewUsersToTeam(teamID, senderId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -1480,14 +1480,14 @@ func (a *App) InviteNewUsersToTeamGracefully(emailList []string, teamId, senderI
return inviteListWithErrors, nil return inviteListWithErrors, nil
} }
func (a *App) prepareInviteGuestsToChannels(teamId string, guestsInvite *model.GuestsInvite, senderId string) (*model.User, *model.Team, []*model.Channel, *model.AppError) { func (a *App) prepareInviteGuestsToChannels(teamID string, guestsInvite *model.GuestsInvite, senderId string) (*model.User, *model.Team, []*model.Channel, *model.AppError) {
if err := guestsInvite.IsValid(); err != nil { if err := guestsInvite.IsValid(); err != nil {
return nil, nil, nil, err return nil, nil, nil, err
} }
tchan := make(chan store.StoreResult, 1) tchan := make(chan store.StoreResult, 1)
go func() { go func() {
team, err := a.Srv().Store.Team().Get(teamId) team, err := a.Srv().Store.Team().Get(teamID)
tchan <- store.StoreResult{Data: team, NErr: err} tchan <- store.StoreResult{Data: team, NErr: err}
close(tchan) close(tchan)
}() }()
@@ -1535,19 +1535,19 @@ func (a *App) prepareInviteGuestsToChannels(teamId string, guestsInvite *model.G
team := result.Data.(*model.Team) team := result.Data.(*model.Team)
for _, channel := range channels { for _, channel := range channels {
if channel.TeamId != teamId { if channel.TeamId != teamID {
return nil, nil, nil, model.NewAppError("prepareInviteGuestsToChannels", "api.team.invite_guests.channel_in_invalid_team.app_error", nil, "", http.StatusBadRequest) return nil, nil, nil, model.NewAppError("prepareInviteGuestsToChannels", "api.team.invite_guests.channel_in_invalid_team.app_error", nil, "", http.StatusBadRequest)
} }
} }
return user, team, channels, nil return user, team, channels, nil
} }
func (a *App) InviteGuestsToChannelsGracefully(teamId string, guestsInvite *model.GuestsInvite, senderId string) ([]*model.EmailInviteWithError, *model.AppError) { func (a *App) InviteGuestsToChannelsGracefully(teamID string, guestsInvite *model.GuestsInvite, senderId string) ([]*model.EmailInviteWithError, *model.AppError) {
if !*a.Config().ServiceSettings.EnableEmailInvitations { if !*a.Config().ServiceSettings.EnableEmailInvitations {
return nil, model.NewAppError("InviteGuestsToChannelsGracefully", "api.team.invite_members.disabled.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("InviteGuestsToChannelsGracefully", "api.team.invite_members.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
user, team, channels, err := a.prepareInviteGuestsToChannels(teamId, guestsInvite, senderId) user, team, channels, err := a.prepareInviteGuestsToChannels(teamID, guestsInvite, senderId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -1582,7 +1582,7 @@ func (a *App) InviteGuestsToChannelsGracefully(teamId string, guestsInvite *mode
return inviteListWithErrors, nil return inviteListWithErrors, nil
} }
func (a *App) InviteNewUsersToTeam(emailList []string, teamId, senderId string) *model.AppError { func (a *App) InviteNewUsersToTeam(emailList []string, teamID, senderId string) *model.AppError {
if !*a.Config().ServiceSettings.EnableEmailInvitations { if !*a.Config().ServiceSettings.EnableEmailInvitations {
return model.NewAppError("InviteNewUsersToTeam", "api.team.invite_members.disabled.app_error", nil, "", http.StatusNotImplemented) return model.NewAppError("InviteNewUsersToTeam", "api.team.invite_members.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
@@ -1592,7 +1592,7 @@ func (a *App) InviteNewUsersToTeam(emailList []string, teamId, senderId string)
return err return err
} }
user, team, err := a.prepareInviteNewUsersToTeam(teamId, senderId) user, team, err := a.prepareInviteNewUsersToTeam(teamID, senderId)
if err != nil { if err != nil {
return err return err
} }
@@ -1620,12 +1620,12 @@ func (a *App) InviteNewUsersToTeam(emailList []string, teamId, senderId string)
return nil return nil
} }
func (a *App) InviteGuestsToChannels(teamId string, guestsInvite *model.GuestsInvite, senderId string) *model.AppError { func (a *App) InviteGuestsToChannels(teamID string, guestsInvite *model.GuestsInvite, senderId string) *model.AppError {
if !*a.Config().ServiceSettings.EnableEmailInvitations { if !*a.Config().ServiceSettings.EnableEmailInvitations {
return model.NewAppError("InviteNewUsersToTeam", "api.team.invite_members.disabled.app_error", nil, "", http.StatusNotImplemented) return model.NewAppError("InviteNewUsersToTeam", "api.team.invite_members.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
user, team, channels, err := a.prepareInviteGuestsToChannels(teamId, guestsInvite, senderId) user, team, channels, err := a.prepareInviteGuestsToChannels(teamID, guestsInvite, senderId)
if err != nil { if err != nil {
return err return err
} }
@@ -1662,8 +1662,8 @@ func (a *App) FindTeamByName(name string) bool {
return true return true
} }
func (a *App) GetTeamsUnreadForUser(excludeTeamId string, userId string) ([]*model.TeamUnread, *model.AppError) { func (a *App) GetTeamsUnreadForUser(excludeTeamId string, userID string) ([]*model.TeamUnread, *model.AppError) {
data, err := a.Srv().Store.Team().GetChannelUnreadsForAllTeams(excludeTeamId, userId) data, err := a.Srv().Store.Team().GetChannelUnreadsForAllTeams(excludeTeamId, userID)
if err != nil { if err != nil {
return nil, model.NewAppError("GetTeamsUnreadForUser", "app.team.get_unread.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTeamsUnreadForUser", "app.team.get_unread.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -1701,8 +1701,8 @@ func (a *App) GetTeamsUnreadForUser(excludeTeamId string, userId string) ([]*mod
return members, nil return members, nil
} }
func (a *App) PermanentDeleteTeamId(teamId string) *model.AppError { func (a *App) PermanentDeleteTeamId(teamID string) *model.AppError {
team, err := a.GetTeam(teamId) team, err := a.GetTeam(teamID)
if err != nil { if err != nil {
return err return err
} }
@@ -1753,8 +1753,8 @@ func (a *App) PermanentDeleteTeam(team *model.Team) *model.AppError {
return nil return nil
} }
func (a *App) SoftDeleteTeam(teamId string) *model.AppError { func (a *App) SoftDeleteTeam(teamID string) *model.AppError {
team, err := a.GetTeam(teamId) team, err := a.GetTeam(teamID)
if err != nil { if err != nil {
return err return err
} }
@@ -1779,8 +1779,8 @@ func (a *App) SoftDeleteTeam(teamId string) *model.AppError {
return nil return nil
} }
func (a *App) RestoreTeam(teamId string) *model.AppError { func (a *App) RestoreTeam(teamID string) *model.AppError {
team, err := a.GetTeam(teamId) team, err := a.GetTeam(teamID)
if err != nil { if err != nil {
return err return err
} }
@@ -1804,22 +1804,22 @@ func (a *App) RestoreTeam(teamId string) *model.AppError {
return nil return nil
} }
func (a *App) GetTeamStats(teamId string, restrictions *model.ViewUsersRestrictions) (*model.TeamStats, *model.AppError) { func (a *App) GetTeamStats(teamID string, restrictions *model.ViewUsersRestrictions) (*model.TeamStats, *model.AppError) {
tchan := make(chan store.StoreResult, 1) tchan := make(chan store.StoreResult, 1)
go func() { go func() {
totalMemberCount, err := a.Srv().Store.Team().GetTotalMemberCount(teamId, restrictions) totalMemberCount, err := a.Srv().Store.Team().GetTotalMemberCount(teamID, restrictions)
tchan <- store.StoreResult{Data: totalMemberCount, NErr: err} tchan <- store.StoreResult{Data: totalMemberCount, NErr: err}
close(tchan) close(tchan)
}() }()
achan := make(chan store.StoreResult, 1) achan := make(chan store.StoreResult, 1)
go func() { go func() {
memberCount, err := a.Srv().Store.Team().GetActiveMemberCount(teamId, restrictions) memberCount, err := a.Srv().Store.Team().GetActiveMemberCount(teamID, restrictions)
achan <- store.StoreResult{Data: memberCount, NErr: err} achan <- store.StoreResult{Data: memberCount, NErr: err}
close(achan) close(achan)
}() }()
stats := &model.TeamStats{} stats := &model.TeamStats{}
stats.TeamId = teamId stats.TeamId = teamID
result := <-tchan result := <-tchan
if result.NErr != nil { if result.NErr != nil {
@@ -1837,11 +1837,11 @@ func (a *App) GetTeamStats(teamId string, restrictions *model.ViewUsersRestricti
} }
func (a *App) GetTeamIdFromQuery(query url.Values) (string, *model.AppError) { func (a *App) GetTeamIdFromQuery(query url.Values) (string, *model.AppError) {
tokenId := query.Get("t") tokenID := query.Get("t")
inviteId := query.Get("id") inviteId := query.Get("id")
if tokenId != "" { if tokenID != "" {
token, err := a.Srv().Store.Token().GetByToken(tokenId) token, err := a.Srv().Store.Token().GetByToken(tokenID)
if err != nil { if err != nil {
return "", model.NewAppError("GetTeamIdFromQuery", "api.oauth.singup_with_oauth.invalid_link.app_error", nil, "", http.StatusBadRequest) return "", model.NewAppError("GetTeamIdFromQuery", "api.oauth.singup_with_oauth.invalid_link.app_error", nil, "", http.StatusBadRequest)
} }
@@ -1910,17 +1910,17 @@ func (a *App) GetTeamIcon(team *model.Team) ([]byte, *model.AppError) {
return data, nil return data, nil
} }
func (a *App) SetTeamIcon(teamId string, imageData *multipart.FileHeader) *model.AppError { func (a *App) SetTeamIcon(teamID string, imageData *multipart.FileHeader) *model.AppError {
file, err := imageData.Open() file, err := imageData.Open()
if err != nil { if err != nil {
return model.NewAppError("SetTeamIcon", "api.team.set_team_icon.open.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("SetTeamIcon", "api.team.set_team_icon.open.app_error", nil, err.Error(), http.StatusBadRequest)
} }
defer file.Close() defer file.Close()
return a.SetTeamIconFromMultiPartFile(teamId, file) return a.SetTeamIconFromMultiPartFile(teamID, file)
} }
func (a *App) SetTeamIconFromMultiPartFile(teamId string, file multipart.File) *model.AppError { func (a *App) SetTeamIconFromMultiPartFile(teamID string, file multipart.File) *model.AppError {
team, getTeamErr := a.GetTeam(teamId) team, getTeamErr := a.GetTeam(teamID)
if getTeamErr != nil { if getTeamErr != nil {
return model.NewAppError("SetTeamIcon", "api.team.set_team_icon.get_team.app_error", nil, getTeamErr.Error(), http.StatusBadRequest) return model.NewAppError("SetTeamIcon", "api.team.set_team_icon.get_team.app_error", nil, getTeamErr.Error(), http.StatusBadRequest)
@@ -1988,13 +1988,13 @@ func (a *App) SetTeamIconFromFile(team *model.Team, file io.Reader) *model.AppEr
return nil return nil
} }
func (a *App) RemoveTeamIcon(teamId string) *model.AppError { func (a *App) RemoveTeamIcon(teamID string) *model.AppError {
team, err := a.GetTeam(teamId) team, err := a.GetTeam(teamID)
if err != nil { if err != nil {
return model.NewAppError("RemoveTeamIcon", "api.team.remove_team_icon.get_team.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("RemoveTeamIcon", "api.team.remove_team_icon.get_team.app_error", nil, err.Error(), http.StatusBadRequest)
} }
if err := a.Srv().Store.Team().UpdateLastTeamIconUpdate(teamId, 0); err != nil { if err := a.Srv().Store.Team().UpdateLastTeamIconUpdate(teamID, 0); err != nil {
return model.NewAppError("RemoveTeamIcon", "api.team.team_icon.update.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("RemoveTeamIcon", "api.team.team_icon.update.app_error", nil, err.Error(), http.StatusBadRequest)
} }

Просмотреть файл

@@ -531,12 +531,12 @@ func TestSanitizeTeam(t *testing.T) {
} }
t.Run("not a user of the team", func(t *testing.T) { t.Run("not a user of the team", func(t *testing.T) {
userId := model.NewId() userID := model.NewId()
session := model.Session{ session := model.Session{
Roles: model.SYSTEM_USER_ROLE_ID, Roles: model.SYSTEM_USER_ROLE_ID,
TeamMembers: []*model.TeamMember{ TeamMembers: []*model.TeamMember{
{ {
UserId: userId, UserId: userID,
TeamId: model.NewId(), TeamId: model.NewId(),
Roles: model.TEAM_USER_ROLE_ID, Roles: model.TEAM_USER_ROLE_ID,
}, },
@@ -549,12 +549,12 @@ func TestSanitizeTeam(t *testing.T) {
}) })
t.Run("user of the team", func(t *testing.T) { t.Run("user of the team", func(t *testing.T) {
userId := model.NewId() userID := model.NewId()
session := model.Session{ session := model.Session{
Roles: model.SYSTEM_USER_ROLE_ID, Roles: model.SYSTEM_USER_ROLE_ID,
TeamMembers: []*model.TeamMember{ TeamMembers: []*model.TeamMember{
{ {
UserId: userId, UserId: userID,
TeamId: team.Id, TeamId: team.Id,
Roles: model.TEAM_USER_ROLE_ID, Roles: model.TEAM_USER_ROLE_ID,
}, },
@@ -567,12 +567,12 @@ func TestSanitizeTeam(t *testing.T) {
}) })
t.Run("team admin", func(t *testing.T) { t.Run("team admin", func(t *testing.T) {
userId := model.NewId() userID := model.NewId()
session := model.Session{ session := model.Session{
Roles: model.SYSTEM_USER_ROLE_ID, Roles: model.SYSTEM_USER_ROLE_ID,
TeamMembers: []*model.TeamMember{ TeamMembers: []*model.TeamMember{
{ {
UserId: userId, UserId: userID,
TeamId: team.Id, TeamId: team.Id,
Roles: model.TEAM_USER_ROLE_ID + " " + model.TEAM_ADMIN_ROLE_ID, Roles: model.TEAM_USER_ROLE_ID + " " + model.TEAM_ADMIN_ROLE_ID,
}, },
@@ -585,12 +585,12 @@ func TestSanitizeTeam(t *testing.T) {
}) })
t.Run("team admin of another team", func(t *testing.T) { t.Run("team admin of another team", func(t *testing.T) {
userId := model.NewId() userID := model.NewId()
session := model.Session{ session := model.Session{
Roles: model.SYSTEM_USER_ROLE_ID, Roles: model.SYSTEM_USER_ROLE_ID,
TeamMembers: []*model.TeamMember{ TeamMembers: []*model.TeamMember{
{ {
UserId: userId, UserId: userID,
TeamId: model.NewId(), TeamId: model.NewId(),
Roles: model.TEAM_USER_ROLE_ID + " " + model.TEAM_ADMIN_ROLE_ID, Roles: model.TEAM_USER_ROLE_ID + " " + model.TEAM_ADMIN_ROLE_ID,
}, },
@@ -603,12 +603,12 @@ func TestSanitizeTeam(t *testing.T) {
}) })
t.Run("system admin, not a user of team", func(t *testing.T) { t.Run("system admin, not a user of team", func(t *testing.T) {
userId := model.NewId() userID := model.NewId()
session := model.Session{ session := model.Session{
Roles: model.SYSTEM_USER_ROLE_ID + " " + model.SYSTEM_ADMIN_ROLE_ID, Roles: model.SYSTEM_USER_ROLE_ID + " " + model.SYSTEM_ADMIN_ROLE_ID,
TeamMembers: []*model.TeamMember{ TeamMembers: []*model.TeamMember{
{ {
UserId: userId, UserId: userID,
TeamId: model.NewId(), TeamId: model.NewId(),
Roles: model.TEAM_USER_ROLE_ID, Roles: model.TEAM_USER_ROLE_ID,
}, },
@@ -621,12 +621,12 @@ func TestSanitizeTeam(t *testing.T) {
}) })
t.Run("system admin, user of team", func(t *testing.T) { t.Run("system admin, user of team", func(t *testing.T) {
userId := model.NewId() userID := model.NewId()
session := model.Session{ session := model.Session{
Roles: model.SYSTEM_USER_ROLE_ID + " " + model.SYSTEM_ADMIN_ROLE_ID, Roles: model.SYSTEM_USER_ROLE_ID + " " + model.SYSTEM_ADMIN_ROLE_ID,
TeamMembers: []*model.TeamMember{ TeamMembers: []*model.TeamMember{
{ {
UserId: userId, UserId: userID,
TeamId: team.Id, TeamId: team.Id,
Roles: model.TEAM_USER_ROLE_ID, Roles: model.TEAM_USER_ROLE_ID,
}, },
@@ -657,17 +657,17 @@ func TestSanitizeTeams(t *testing.T) {
}, },
} }
userId := model.NewId() userID := model.NewId()
session := model.Session{ session := model.Session{
Roles: model.SYSTEM_USER_ROLE_ID, Roles: model.SYSTEM_USER_ROLE_ID,
TeamMembers: []*model.TeamMember{ TeamMembers: []*model.TeamMember{
{ {
UserId: userId, UserId: userID,
TeamId: teams[0].Id, TeamId: teams[0].Id,
Roles: model.TEAM_USER_ROLE_ID, Roles: model.TEAM_USER_ROLE_ID,
}, },
{ {
UserId: userId, UserId: userID,
TeamId: teams[1].Id, TeamId: teams[1].Id,
Roles: model.TEAM_USER_ROLE_ID + " " + model.TEAM_ADMIN_ROLE_ID, Roles: model.TEAM_USER_ROLE_ID + " " + model.TEAM_ADMIN_ROLE_ID,
}, },
@@ -694,12 +694,12 @@ func TestSanitizeTeams(t *testing.T) {
}, },
} }
userId := model.NewId() userID := model.NewId()
session := model.Session{ session := model.Session{
Roles: model.SYSTEM_USER_ROLE_ID + " " + model.SYSTEM_ADMIN_ROLE_ID, Roles: model.SYSTEM_USER_ROLE_ID + " " + model.SYSTEM_ADMIN_ROLE_ID,
TeamMembers: []*model.TeamMember{ TeamMembers: []*model.TeamMember{
{ {
UserId: userId, UserId: userID,
TeamId: teams[0].Id, TeamId: teams[0].Id,
Roles: model.TEAM_USER_ROLE_ID, Roles: model.TEAM_USER_ROLE_ID,
}, },

Просмотреть файл

@@ -11,13 +11,13 @@ import (
"github.com/mattermost/mattermost-server/v5/store" "github.com/mattermost/mattermost-server/v5/store"
) )
func (a *App) CreateTermsOfService(text, userId string) (*model.TermsOfService, *model.AppError) { func (a *App) CreateTermsOfService(text, userID string) (*model.TermsOfService, *model.AppError) {
termsOfService := &model.TermsOfService{ termsOfService := &model.TermsOfService{
Text: text, Text: text,
UserId: userId, UserId: userID,
} }
if _, appErr := a.GetUser(userId); appErr != nil { if _, appErr := a.GetUser(userID); appErr != nil {
return nil, appErr return nil, appErr
} }

Просмотреть файл

@@ -153,8 +153,8 @@ func (a *App) GetUploadSession(uploadId string) (*model.UploadSession, *model.Ap
return us, nil return us, nil
} }
func (a *App) GetUploadSessionsForUser(userId string) ([]*model.UploadSession, *model.AppError) { func (a *App) GetUploadSessionsForUser(userID string) ([]*model.UploadSession, *model.AppError) {
uss, err := a.Srv().Store.UploadSession().GetForUser(userId) uss, err := a.Srv().Store.UploadSession().GetForUser(userID)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUploadsForUser", "app.upload.get_for_user.app_error", return nil, model.NewAppError("GetUploadsForUser", "app.upload.get_for_user.app_error",
nil, err.Error(), http.StatusInternalServerError) nil, err.Error(), http.StatusInternalServerError)

Просмотреть файл

@@ -273,7 +273,7 @@ func (a *App) createUserOrGuest(user *model.User, guest bool) (*model.User, *mod
if appErr != nil { if appErr != nil {
return nil, appErr return nil, appErr
} }
// This message goes to everyone, so the teamId, channelId and userId are irrelevant // This message goes to everyone, so the teamID, channelId and userID are irrelevant
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_NEW_USER, "", "", "", nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_NEW_USER, "", "", "", nil)
message.Add("user_id", ruser.Id) message.Add("user_id", ruser.Id)
a.Publish(message) a.Publish(message)
@@ -335,7 +335,7 @@ func (a *App) createUser(user *model.User) (*model.User, *model.AppError) {
return ruser, nil return ruser, nil
} }
func (a *App) CreateOAuthUser(service string, userData io.Reader, teamId string, tokenUser *model.User) (*model.User, *model.AppError) { func (a *App) CreateOAuthUser(service string, userData io.Reader, teamID string, tokenUser *model.User) (*model.User, *model.AppError) {
if !*a.Config().TeamSettings.EnableUserCreation { if !*a.Config().TeamSettings.EnableUserCreation {
return nil, model.NewAppError("CreateOAuthUser", "api.user.create_user.disabled.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("CreateOAuthUser", "api.user.create_user.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
@@ -393,13 +393,13 @@ func (a *App) CreateOAuthUser(service string, userData io.Reader, teamId string,
return nil, err return nil, err
} }
if teamId != "" { if teamID != "" {
err = a.AddUserToTeamByTeamId(teamId, user) err = a.AddUserToTeamByTeamId(teamID, user)
if err != nil { if err != nil {
return nil, err return nil, err
} }
err = a.AddDirectChannels(teamId, user) err = a.AddDirectChannels(teamID, user)
if err != nil { if err != nil {
mlog.Warn("Failed to add direct channels", mlog.Err(err)) mlog.Warn("Failed to add direct channels", mlog.Err(err))
} }
@@ -443,8 +443,8 @@ func (a *App) IsUsernameTaken(name string) bool {
return true return true
} }
func (a *App) GetUser(userId string) (*model.User, *model.AppError) { func (a *App) GetUser(userID string) (*model.User, *model.AppError) {
user, err := a.Srv().Store.User().Get(userId) user, err := a.Srv().Store.User().Get(userID)
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -535,8 +535,8 @@ func (a *App) GetUsersInTeam(options *model.UserGetOptions) ([]*model.User, *mod
return users, nil return users, nil
} }
func (a *App) GetUsersNotInTeam(teamId string, groupConstrained bool, offset int, limit int, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError) { func (a *App) GetUsersNotInTeam(teamID string, groupConstrained bool, offset int, limit int, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError) {
users, err := a.Srv().Store.User().GetProfilesNotInTeam(teamId, groupConstrained, offset, limit, viewRestrictions) users, err := a.Srv().Store.User().GetProfilesNotInTeam(teamID, groupConstrained, offset, limit, viewRestrictions)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUsersNotInTeam", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUsersNotInTeam", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -553,8 +553,8 @@ func (a *App) GetUsersInTeamPage(options *model.UserGetOptions, asAdmin bool) ([
return a.sanitizeProfiles(users, asAdmin), nil return a.sanitizeProfiles(users, asAdmin), nil
} }
func (a *App) GetUsersNotInTeamPage(teamId string, groupConstrained bool, page int, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError) { func (a *App) GetUsersNotInTeamPage(teamID string, groupConstrained bool, page int, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError) {
users, err := a.GetUsersNotInTeam(teamId, groupConstrained, page*perPage, perPage, viewRestrictions) users, err := a.GetUsersNotInTeam(teamID, groupConstrained, page*perPage, perPage, viewRestrictions)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -562,12 +562,12 @@ func (a *App) GetUsersNotInTeamPage(teamId string, groupConstrained bool, page i
return a.sanitizeProfiles(users, asAdmin), nil return a.sanitizeProfiles(users, asAdmin), nil
} }
func (a *App) GetUsersInTeamEtag(teamId string, restrictionsHash string) string { func (a *App) GetUsersInTeamEtag(teamID string, restrictionsHash string) string {
return fmt.Sprintf("%v.%v.%v.%v", a.Srv().Store.User().GetEtagForProfiles(teamId), a.Config().PrivacySettings.ShowFullName, a.Config().PrivacySettings.ShowEmailAddress, restrictionsHash) return fmt.Sprintf("%v.%v.%v.%v", a.Srv().Store.User().GetEtagForProfiles(teamID), a.Config().PrivacySettings.ShowFullName, a.Config().PrivacySettings.ShowEmailAddress, restrictionsHash)
} }
func (a *App) GetUsersNotInTeamEtag(teamId string, restrictionsHash string) string { func (a *App) GetUsersNotInTeamEtag(teamID string, restrictionsHash string) string {
return fmt.Sprintf("%v.%v.%v.%v", a.Srv().Store.User().GetEtagForProfilesNotInTeam(teamId), a.Config().PrivacySettings.ShowFullName, a.Config().PrivacySettings.ShowEmailAddress, restrictionsHash) return fmt.Sprintf("%v.%v.%v.%v", a.Srv().Store.User().GetEtagForProfilesNotInTeam(teamID), a.Config().PrivacySettings.ShowFullName, a.Config().PrivacySettings.ShowEmailAddress, restrictionsHash)
} }
func (a *App) GetUsersInChannel(options *model.UserGetOptions) ([]*model.User, *model.AppError) { func (a *App) GetUsersInChannel(options *model.UserGetOptions) ([]*model.User, *model.AppError) {
@@ -620,8 +620,8 @@ func (a *App) GetUsersInChannelPageByStatus(options *model.UserGetOptions, asAdm
return a.sanitizeProfiles(users, asAdmin), nil return a.sanitizeProfiles(users, asAdmin), nil
} }
func (a *App) GetUsersNotInChannel(teamId string, channelId string, groupConstrained bool, offset int, limit int, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError) { func (a *App) GetUsersNotInChannel(teamID string, channelId string, groupConstrained bool, offset int, limit int, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError) {
users, err := a.Srv().Store.User().GetProfilesNotInChannel(teamId, channelId, groupConstrained, offset, limit, viewRestrictions) users, err := a.Srv().Store.User().GetProfilesNotInChannel(teamID, channelId, groupConstrained, offset, limit, viewRestrictions)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUsersNotInChannel", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUsersNotInChannel", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -629,8 +629,8 @@ func (a *App) GetUsersNotInChannel(teamId string, channelId string, groupConstra
return users, nil return users, nil
} }
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 (a *App) GetUsersNotInChannelMap(teamID string, channelId string, groupConstrained bool, offset int, limit int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) (map[string]*model.User, *model.AppError) {
users, err := a.GetUsersNotInChannel(teamId, channelId, groupConstrained, offset, limit, viewRestrictions) users, err := a.GetUsersNotInChannel(teamID, channelId, groupConstrained, offset, limit, viewRestrictions)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -645,8 +645,8 @@ func (a *App) GetUsersNotInChannelMap(teamId string, channelId string, groupCons
return userMap, nil return userMap, nil
} }
func (a *App) GetUsersNotInChannelPage(teamId string, channelId string, groupConstrained bool, page int, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError) { func (a *App) GetUsersNotInChannelPage(teamID string, channelId string, groupConstrained bool, page int, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError) {
users, err := a.GetUsersNotInChannel(teamId, channelId, groupConstrained, page*perPage, perPage, viewRestrictions) users, err := a.GetUsersNotInChannel(teamID, channelId, groupConstrained, page*perPage, perPage, viewRestrictions)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -692,10 +692,10 @@ func (a *App) GetChannelGroupUsers(channelID string) ([]*model.User, *model.AppE
return users, nil return users, nil
} }
func (a *App) GetUsersByIds(userIds []string, options *store.UserGetByIdsOpts) ([]*model.User, *model.AppError) { func (a *App) GetUsersByIds(userIDs []string, options *store.UserGetByIdsOpts) ([]*model.User, *model.AppError) {
allowFromCache := options.ViewRestrictions == nil allowFromCache := options.ViewRestrictions == nil
users, err := a.Srv().Store.User().GetProfileByIds(userIds, options, allowFromCache) users, err := a.Srv().Store.User().GetProfileByIds(userIDs, options, allowFromCache)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUsersByIds", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUsersByIds", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -731,8 +731,8 @@ func (a *App) sanitizeProfiles(users []*model.User, asAdmin bool) []*model.User
return users return users
} }
func (a *App) GenerateMfaSecret(userId string) (*model.MfaSecret, *model.AppError) { func (a *App) GenerateMfaSecret(userID string) (*model.MfaSecret, *model.AppError) {
user, err := a.GetUser(userId) user, err := a.GetUser(userID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -750,8 +750,8 @@ func (a *App) GenerateMfaSecret(userId string) (*model.MfaSecret, *model.AppErro
return mfaSecret, nil return mfaSecret, nil
} }
func (a *App) ActivateMfa(userId, token string) *model.AppError { func (a *App) ActivateMfa(userID, token string) *model.AppError {
user, err := a.Srv().Store.User().Get(userId) user, err := a.Srv().Store.User().Get(userID)
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -772,24 +772,24 @@ func (a *App) ActivateMfa(userId, token string) *model.AppError {
} }
// Make sure old MFA status is not cached locally or in cluster nodes. // Make sure old MFA status is not cached locally or in cluster nodes.
a.InvalidateCacheForUser(userId) a.InvalidateCacheForUser(userID)
return nil return nil
} }
func (a *App) DeactivateMfa(userId string) *model.AppError { func (a *App) DeactivateMfa(userID string) *model.AppError {
mfaService := mfa.New(a, a.Srv().Store) mfaService := mfa.New(a, a.Srv().Store)
if err := mfaService.Deactivate(userId); err != nil { if err := mfaService.Deactivate(userID); err != nil {
return err return err
} }
// Make sure old MFA status is not cached locally or in cluster nodes. // Make sure old MFA status is not cached locally or in cluster nodes.
a.InvalidateCacheForUser(userId) a.InvalidateCacheForUser(userID)
return nil return nil
} }
func CreateProfileImage(username string, userId string, initialFont string) ([]byte, *model.AppError) { func CreateProfileImage(username string, userID string, initialFont string) ([]byte, *model.AppError) {
colors := []color.NRGBA{ colors := []color.NRGBA{
{197, 8, 126, 255}, {197, 8, 126, 255},
{227, 207, 18, 255}, {227, 207, 18, 255},
@@ -820,7 +820,7 @@ func CreateProfileImage(username string, userId string, initialFont string) ([]b
} }
h := fnv.New32a() h := fnv.New32a()
h.Write([]byte(userId)) h.Write([]byte(userID))
seed := h.Sum32() seed := h.Sum32()
initial := string(strings.ToUpper(username)[0]) initial := string(strings.ToUpper(username)[0])
@@ -951,16 +951,16 @@ func (a *App) SetDefaultProfileImage(user *model.User) *model.AppError {
return nil return nil
} }
func (a *App) SetProfileImage(userId string, imageData *multipart.FileHeader) *model.AppError { func (a *App) SetProfileImage(userID string, imageData *multipart.FileHeader) *model.AppError {
file, err := imageData.Open() file, err := imageData.Open()
if err != nil { if err != nil {
return model.NewAppError("SetProfileImage", "api.user.upload_profile_user.open.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("SetProfileImage", "api.user.upload_profile_user.open.app_error", nil, err.Error(), http.StatusBadRequest)
} }
defer file.Close() defer file.Close()
return a.SetProfileImageFromMultiPartFile(userId, file) return a.SetProfileImageFromMultiPartFile(userID, file)
} }
func (a *App) SetProfileImageFromMultiPartFile(userId string, file multipart.File) *model.AppError { func (a *App) SetProfileImageFromMultiPartFile(userID string, file multipart.File) *model.AppError {
// Decode image config first to check dimensions before loading the whole thing into memory later on // Decode image config first to check dimensions before loading the whole thing into memory later on
config, _, err := image.DecodeConfig(file) config, _, err := image.DecodeConfig(file)
if err != nil { if err != nil {
@@ -975,7 +975,7 @@ func (a *App) SetProfileImageFromMultiPartFile(userId string, file multipart.Fil
file.Seek(0, 0) file.Seek(0, 0)
return a.SetProfileImageFromFile(userId, file) return a.SetProfileImageFromFile(userID, file)
} }
func (a *App) AdjustImage(file io.Reader) (*bytes.Buffer, *model.AppError) { func (a *App) AdjustImage(file io.Reader) (*bytes.Buffer, *model.AppError) {
@@ -1000,28 +1000,28 @@ func (a *App) AdjustImage(file io.Reader) (*bytes.Buffer, *model.AppError) {
return buf, nil return buf, nil
} }
func (a *App) SetProfileImageFromFile(userId string, file io.Reader) *model.AppError { func (a *App) SetProfileImageFromFile(userID string, file io.Reader) *model.AppError {
buf, err := a.AdjustImage(file) buf, err := a.AdjustImage(file)
if err != nil { if err != nil {
return err return err
} }
path := "users/" + userId + "/profile.png" path := "users/" + userID + "/profile.png"
if _, err := a.WriteFile(buf, path); err != nil { if _, err := a.WriteFile(buf, path); err != nil {
return model.NewAppError("SetProfileImage", "api.user.upload_profile_user.upload_profile.app_error", nil, "", http.StatusInternalServerError) return model.NewAppError("SetProfileImage", "api.user.upload_profile_user.upload_profile.app_error", nil, "", http.StatusInternalServerError)
} }
if err := a.Srv().Store.User().UpdateLastPictureUpdate(userId); err != nil { if err := a.Srv().Store.User().UpdateLastPictureUpdate(userID); err != nil {
mlog.Warn("Error with updating last picture update", mlog.Err(err)) mlog.Warn("Error with updating last picture update", mlog.Err(err))
} }
a.invalidateUserCacheAndPublish(userId) a.invalidateUserCacheAndPublish(userID)
return nil return nil
} }
func (a *App) UpdatePasswordAsUser(userId, currentPassword, newPassword string) *model.AppError { func (a *App) UpdatePasswordAsUser(userID, currentPassword, newPassword string) *model.AppError {
user, err := a.GetUser(userId) user, err := a.GetUser(userID)
if err != nil { if err != nil {
return err return err
} }
@@ -1048,14 +1048,14 @@ func (a *App) UpdatePasswordAsUser(userId, currentPassword, newPassword string)
return a.UpdatePasswordSendEmail(user, newPassword, T("api.user.update_password.menu")) return a.UpdatePasswordSendEmail(user, newPassword, T("api.user.update_password.menu"))
} }
func (a *App) userDeactivated(userId string) *model.AppError { func (a *App) userDeactivated(userID string) *model.AppError {
if err := a.RevokeAllSessions(userId); err != nil { if err := a.RevokeAllSessions(userID); err != nil {
return err return err
} }
a.SetStatusOffline(userId, false) a.SetStatusOffline(userID, false)
user, err := a.GetUser(userId) user, err := a.GetUser(userID)
if err != nil { if err != nil {
return err return err
} }
@@ -1064,24 +1064,24 @@ func (a *App) userDeactivated(userId string) *model.AppError {
// bots the user owns. Only notify once, when the user is the owner, not the // bots the user owns. Only notify once, when the user is the owner, not the
// owners bots // owners bots
if !user.IsBot { if !user.IsBot {
a.notifySysadminsBotOwnerDeactivated(userId) a.notifySysadminsBotOwnerDeactivated(userID)
} }
if *a.Config().ServiceSettings.DisableBotsWhenOwnerIsDeactivated { if *a.Config().ServiceSettings.DisableBotsWhenOwnerIsDeactivated {
a.disableUserBots(userId) a.disableUserBots(userID)
} }
return nil return nil
} }
func (a *App) invalidateUserChannelMembersCaches(userId string) *model.AppError { func (a *App) invalidateUserChannelMembersCaches(userID string) *model.AppError {
teamsForUser, err := a.GetTeamsForUser(userId) teamsForUser, err := a.GetTeamsForUser(userID)
if err != nil { if err != nil {
return err return err
} }
for _, team := range teamsForUser { for _, team := range teamsForUser {
channelsForUser, err := a.GetChannelsForUser(team.Id, userId, false, 0) channelsForUser, err := a.GetChannelsForUser(team.Id, userID, false, 0)
if err != nil { if err != nil {
return err return err
} }
@@ -1132,13 +1132,13 @@ func (a *App) UpdateActive(user *model.User, active bool) (*model.User, *model.A
} }
func (a *App) DeactivateGuests() *model.AppError { func (a *App) DeactivateGuests() *model.AppError {
userIds, err := a.Srv().Store.User().DeactivateGuests() userIDs, err := a.Srv().Store.User().DeactivateGuests()
if err != nil { if err != nil {
return model.NewAppError("DeactivateGuests", "app.user.update_active_for_multiple_users.updating.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DeactivateGuests", "app.user.update_active_for_multiple_users.updating.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
for _, userId := range userIds { for _, userID := range userIDs {
if err := a.userDeactivated(userId); err != nil { if err := a.userDeactivated(userID); err != nil {
return err return err
} }
} }
@@ -1177,8 +1177,8 @@ func (a *App) UpdateUserAsUser(user *model.User, asAdmin bool) (*model.User, *mo
return updatedUser, nil return updatedUser, nil
} }
func (a *App) PatchUser(userId string, patch *model.UserPatch, asAdmin bool) (*model.User, *model.AppError) { func (a *App) PatchUser(userID string, patch *model.UserPatch, asAdmin bool) (*model.User, *model.AppError) {
user, err := a.GetUser(userId) user, err := a.GetUser(userID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -1193,9 +1193,9 @@ func (a *App) PatchUser(userId string, patch *model.UserPatch, asAdmin bool) (*m
return updatedUser, nil return updatedUser, nil
} }
func (a *App) UpdateUserAuth(userId string, userAuth *model.UserAuth) (*model.UserAuth, *model.AppError) { func (a *App) UpdateUserAuth(userID string, userAuth *model.UserAuth) (*model.UserAuth, *model.AppError) {
userAuth.Password = "" userAuth.Password = ""
if _, err := a.Srv().Store.User().UpdateAuthData(userId, userAuth.AuthService, userAuth.AuthData, "", false); err != nil { if _, err := a.Srv().Store.User().UpdateAuthData(userID, userAuth.AuthService, userAuth.AuthData, "", false); err != nil {
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
@@ -1315,8 +1315,8 @@ func (a *App) UpdateUser(user *model.User, sendNotifications bool) (*model.User,
return userUpdate.New, nil return userUpdate.New, nil
} }
func (a *App) UpdateUserActive(userId string, active bool) *model.AppError { func (a *App) UpdateUserActive(userID string, active bool) *model.AppError {
user, err := a.GetUser(userId) user, err := a.GetUser(userID)
if err != nil { if err != nil {
return err return err
@@ -1328,8 +1328,8 @@ func (a *App) UpdateUserActive(userId string, active bool) *model.AppError {
return nil return nil
} }
func (a *App) UpdateUserNotifyProps(userId string, props map[string]string, sendNotifications bool) (*model.User, *model.AppError) { func (a *App) UpdateUserNotifyProps(userID string, props map[string]string, sendNotifications bool) (*model.User, *model.AppError) {
user, err := a.GetUser(userId) user, err := a.GetUser(userID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -1344,19 +1344,19 @@ func (a *App) UpdateUserNotifyProps(userId string, props map[string]string, send
return ruser, nil return ruser, nil
} }
func (a *App) UpdateMfa(activate bool, userId, token string) *model.AppError { func (a *App) UpdateMfa(activate bool, userID, token string) *model.AppError {
if activate { if activate {
if err := a.ActivateMfa(userId, token); err != nil { if err := a.ActivateMfa(userID, token); err != nil {
return err return err
} }
} else { } else {
if err := a.DeactivateMfa(userId); err != nil { if err := a.DeactivateMfa(userID); err != nil {
return err return err
} }
} }
a.Srv().Go(func() { a.Srv().Go(func() {
user, err := a.GetUser(userId) user, err := a.GetUser(userID)
if err != nil { if err != nil {
mlog.Error("Failed to get user", mlog.Err(err)) mlog.Error("Failed to get user", mlog.Err(err))
return return
@@ -1370,8 +1370,8 @@ func (a *App) UpdateMfa(activate bool, userId, token string) *model.AppError {
return nil return nil
} }
func (a *App) UpdatePasswordByUserIdSendEmail(userId, newPassword, method string) *model.AppError { func (a *App) UpdatePasswordByUserIdSendEmail(userID, newPassword, method string) *model.AppError {
user, err := a.GetUser(userId) user, err := a.GetUser(userID)
if err != nil { if err != nil {
return err return err
} }
@@ -1409,8 +1409,8 @@ func (a *App) UpdatePasswordSendEmail(user *model.User, newPassword, method stri
return nil return nil
} }
func (a *App) UpdateHashedPasswordByUserId(userId, newHashedPassword string) *model.AppError { func (a *App) UpdateHashedPasswordByUserId(userID, newHashedPassword string) *model.AppError {
user, err := a.GetUser(userId) user, err := a.GetUser(userID)
if err != nil { if err != nil {
return err return err
} }
@@ -1491,13 +1491,13 @@ func (a *App) SendPasswordReset(email string, siteURL string) (bool, *model.AppE
return a.Srv().EmailService.SendPasswordResetEmail(user.Email, token, user.Locale, siteURL) return a.Srv().EmailService.SendPasswordResetEmail(user.Email, token, user.Locale, siteURL)
} }
func (a *App) CreatePasswordRecoveryToken(userId, email string) (*model.Token, *model.AppError) { func (a *App) CreatePasswordRecoveryToken(userID, email string) (*model.Token, *model.AppError) {
tokenExtra := struct { tokenExtra := struct {
UserId string UserId string
Email string Email string
}{ }{
userId, userID,
email, email,
} }
jsonData, err := json.Marshal(tokenExtra) jsonData, err := json.Marshal(tokenExtra)
@@ -1540,8 +1540,8 @@ func (a *App) DeleteToken(token *model.Token) *model.AppError {
return nil return nil
} }
func (a *App) UpdateUserRoles(userId string, newRoles string, sendWebSocketEvent bool) (*model.User, *model.AppError) { func (a *App) UpdateUserRoles(userID string, newRoles string, sendWebSocketEvent bool) (*model.User, *model.AppError) {
user, err := a.GetUser(userId) user, err := a.GetUser(userID)
if err != nil { if err != nil {
err.StatusCode = http.StatusBadRequest err.StatusCode = http.StatusBadRequest
return nil, err return nil, err
@@ -1586,7 +1586,7 @@ func (a *App) UpdateUserRoles(userId string, newRoles string, sendWebSocketEvent
mlog.Warn("Failed during updating user roles", mlog.Err(result.NErr)) mlog.Warn("Failed during updating user roles", mlog.Err(result.NErr))
} }
a.InvalidateCacheForUser(userId) a.InvalidateCacheForUser(userID)
a.ClearSessionCacheForUser(user.Id) a.ClearSessionCacheForUser(user.Id)
if sendWebSocketEvent { if sendWebSocketEvent {
@@ -1818,14 +1818,14 @@ func (a *App) GetFilteredUsersStats(options *model.UserCountOptions) (*model.Use
return stats, nil return stats, nil
} }
func (a *App) VerifyUserEmail(userId, email string) *model.AppError { func (a *App) VerifyUserEmail(userID, email string) *model.AppError {
if _, err := a.Srv().Store.User().VerifyEmail(userId, email); err != nil { if _, err := a.Srv().Store.User().VerifyEmail(userID, email); err != nil {
return model.NewAppError("VerifyUserEmail", "app.user.verify_email.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("VerifyUserEmail", "app.user.verify_email.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
a.InvalidateCacheForUser(userId) a.InvalidateCacheForUser(userID)
user, err := a.GetUser(userId) user, err := a.GetUser(userID)
if err != nil { if err != nil {
return err return err
@@ -1868,9 +1868,9 @@ func (a *App) SearchUsersInChannel(channelId string, term string, options *model
return users, nil return users, nil
} }
func (a *App) SearchUsersNotInChannel(teamId string, channelId string, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError) { func (a *App) SearchUsersNotInChannel(teamID string, channelId string, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError) {
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
users, err := a.Srv().Store.User().SearchNotInChannel(teamId, channelId, term, options) users, err := a.Srv().Store.User().SearchNotInChannel(teamID, channelId, term, options)
if err != nil { if err != nil {
return nil, model.NewAppError("SearchUsersNotInChannel", "app.user.search.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SearchUsersNotInChannel", "app.user.search.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -1882,10 +1882,10 @@ func (a *App) SearchUsersNotInChannel(teamId string, channelId string, term stri
return users, nil return users, nil
} }
func (a *App) SearchUsersInTeam(teamId, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError) { func (a *App) SearchUsersInTeam(teamID, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError) {
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
users, err := a.Srv().Store.User().Search(teamId, term, options) users, err := a.Srv().Store.User().Search(teamID, term, options)
if err != nil { if err != nil {
return nil, model.NewAppError("SearchUsersInTeam", "app.user.search.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SearchUsersInTeam", "app.user.search.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -1939,10 +1939,10 @@ func (a *App) SearchUsersInGroup(groupID string, term string, options *model.Use
return users, nil return users, nil
} }
func (a *App) AutocompleteUsersInChannel(teamId string, channelId string, term string, options *model.UserSearchOptions) (*model.UserAutocompleteInChannel, *model.AppError) { func (a *App) AutocompleteUsersInChannel(teamID string, channelId string, term string, options *model.UserSearchOptions) (*model.UserAutocompleteInChannel, *model.AppError) {
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
autocomplete, err := a.Srv().Store.User().AutocompleteUsersInChannel(teamId, channelId, term, options) autocomplete, err := a.Srv().Store.User().AutocompleteUsersInChannel(teamID, channelId, term, options)
if err != nil { if err != nil {
return nil, model.NewAppError("AutocompleteUsersInChannel", "app.user.search.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("AutocompleteUsersInChannel", "app.user.search.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -1958,10 +1958,10 @@ func (a *App) AutocompleteUsersInChannel(teamId string, channelId string, term s
return autocomplete, nil return autocomplete, nil
} }
func (a *App) AutocompleteUsersInTeam(teamId string, term string, options *model.UserSearchOptions) (*model.UserAutocompleteInTeam, *model.AppError) { func (a *App) AutocompleteUsersInTeam(teamID string, term string, options *model.UserSearchOptions) (*model.UserAutocompleteInTeam, *model.AppError) {
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
users, err := a.Srv().Store.User().Search(teamId, term, options) users, err := a.Srv().Store.User().Search(teamID, term, options)
if err != nil { if err != nil {
return nil, model.NewAppError("AutocompleteUsersInTeam", "app.user.search.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("AutocompleteUsersInTeam", "app.user.search.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -2031,8 +2031,8 @@ func (a *App) UpdateOAuthUserAttrs(userData io.Reader, user *model.User, provide
return nil return nil
} }
func (a *App) RestrictUsersGetByPermissions(userId string, options *model.UserGetOptions) (*model.UserGetOptions, *model.AppError) { func (a *App) RestrictUsersGetByPermissions(userID string, options *model.UserGetOptions) (*model.UserGetOptions, *model.AppError) {
restrictions, err := a.GetViewUsersRestrictions(userId) restrictions, err := a.GetViewUsersRestrictions(userID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -2043,29 +2043,29 @@ func (a *App) RestrictUsersGetByPermissions(userId string, options *model.UserGe
// FilterNonGroupTeamMembers returns the subset of the given user IDs of the users who are not members of groups // FilterNonGroupTeamMembers returns the subset of the given user IDs of the users who are not members of groups
// associated to the team excluding bots. // associated to the team excluding bots.
func (a *App) FilterNonGroupTeamMembers(userIds []string, team *model.Team) ([]string, error) { func (a *App) FilterNonGroupTeamMembers(userIDs []string, team *model.Team) ([]string, error) {
teamGroupUsers, err := a.GetTeamGroupUsers(team.Id) teamGroupUsers, err := a.GetTeamGroupUsers(team.Id)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return a.filterNonGroupUsers(userIds, teamGroupUsers) return a.filterNonGroupUsers(userIDs, teamGroupUsers)
} }
// FilterNonGroupChannelMembers returns the subset of the given user IDs of the users who are not members of groups // FilterNonGroupChannelMembers returns the subset of the given user IDs of the users who are not members of groups
// associated to the channel excluding bots // associated to the channel excluding bots
func (a *App) FilterNonGroupChannelMembers(userIds []string, channel *model.Channel) ([]string, error) { func (a *App) FilterNonGroupChannelMembers(userIDs []string, channel *model.Channel) ([]string, error) {
channelGroupUsers, err := a.GetChannelGroupUsers(channel.Id) channelGroupUsers, err := a.GetChannelGroupUsers(channel.Id)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return a.filterNonGroupUsers(userIds, channelGroupUsers) return a.filterNonGroupUsers(userIDs, channelGroupUsers)
} }
// filterNonGroupUsers is a helper function that takes a list of user ids and a list of users // filterNonGroupUsers is a helper function that takes a list of user ids and a list of users
// and returns the list of normal users present in userIds but not in groupUsers. // and returns the list of normal users present in userIDs but not in groupUsers.
func (a *App) filterNonGroupUsers(userIds []string, groupUsers []*model.User) ([]string, error) { func (a *App) filterNonGroupUsers(userIDs []string, groupUsers []*model.User) ([]string, error) {
nonMemberIds := []string{} nonMemberIds := []string{}
users, err := a.Srv().Store.User().GetProfileByIds(userIds, nil, false) users, err := a.Srv().Store.User().GetProfileByIds(userIDs, nil, false)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -2087,8 +2087,8 @@ func (a *App) filterNonGroupUsers(userIds []string, groupUsers []*model.User) ([
return nonMemberIds, nil return nonMemberIds, nil
} }
func (a *App) RestrictUsersSearchByPermissions(userId string, options *model.UserSearchOptions) (*model.UserSearchOptions, *model.AppError) { func (a *App) RestrictUsersSearchByPermissions(userID string, options *model.UserSearchOptions) (*model.UserSearchOptions, *model.AppError) {
restrictions, err := a.GetViewUsersRestrictions(userId) restrictions, err := a.GetViewUsersRestrictions(userID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -2097,12 +2097,12 @@ func (a *App) RestrictUsersSearchByPermissions(userId string, options *model.Use
return options, nil return options, nil
} }
func (a *App) UserCanSeeOtherUser(userId string, otherUserId string) (bool, *model.AppError) { func (a *App) UserCanSeeOtherUser(userID string, otherUserId string) (bool, *model.AppError) {
if userId == otherUserId { if userID == otherUserId {
return true, nil return true, nil
} }
restrictions, err := a.GetViewUsersRestrictions(userId) restrictions, err := a.GetViewUsersRestrictions(userID)
if err != nil { if err != nil {
return false, err return false, err
} }
@@ -2134,8 +2134,8 @@ func (a *App) UserCanSeeOtherUser(userId string, otherUserId string) (bool, *mod
return false, nil return false, nil
} }
func (a *App) userBelongsToChannels(userId string, channelIds []string) (bool, *model.AppError) { func (a *App) userBelongsToChannels(userID string, channelIds []string) (bool, *model.AppError) {
belongs, err := a.Srv().Store.Channel().UserBelongsToChannels(userId, channelIds) belongs, err := a.Srv().Store.Channel().UserBelongsToChannels(userID, channelIds)
if err != nil { if err != nil {
return false, model.NewAppError("userBelongsToChannels", "app.channel.user_belongs_to_channels.app_error", nil, err.Error(), http.StatusInternalServerError) return false, model.NewAppError("userBelongsToChannels", "app.channel.user_belongs_to_channels.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -2143,24 +2143,24 @@ func (a *App) userBelongsToChannels(userId string, channelIds []string) (bool, *
return belongs, nil return belongs, nil
} }
func (a *App) GetViewUsersRestrictions(userId string) (*model.ViewUsersRestrictions, *model.AppError) { func (a *App) GetViewUsersRestrictions(userID string) (*model.ViewUsersRestrictions, *model.AppError) {
if a.HasPermissionTo(userId, model.PERMISSION_VIEW_MEMBERS) { if a.HasPermissionTo(userID, model.PERMISSION_VIEW_MEMBERS) {
return nil, nil return nil, nil
} }
teamIds, nErr := a.Srv().Store.Team().GetUserTeamIds(userId, true) teamIDs, nErr := a.Srv().Store.Team().GetUserTeamIds(userID, true)
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("GetViewUsersRestrictions", "app.team.get_user_team_ids.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetViewUsersRestrictions", "app.team.get_user_team_ids.app_error", nil, nErr.Error(), http.StatusInternalServerError)
} }
teamIdsWithPermission := []string{} teamIDsWithPermission := []string{}
for _, teamId := range teamIds { for _, teamID := range teamIDs {
if a.HasPermissionToTeam(userId, teamId, model.PERMISSION_VIEW_MEMBERS) { if a.HasPermissionToTeam(userID, teamID, model.PERMISSION_VIEW_MEMBERS) {
teamIdsWithPermission = append(teamIdsWithPermission, teamId) teamIDsWithPermission = append(teamIDsWithPermission, teamID)
} }
} }
userChannelMembers, err := a.Srv().Store.Channel().GetAllChannelMembersForUser(userId, true, true) userChannelMembers, err := a.Srv().Store.Channel().GetAllChannelMembersForUser(userID, true, true)
if err != nil { if err != nil {
return nil, model.NewAppError("GetViewUsersRestrictions", "app.channel.get_channels.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetViewUsersRestrictions", "app.channel.get_channels.get.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -2170,7 +2170,7 @@ func (a *App) GetViewUsersRestrictions(userId string) (*model.ViewUsersRestricti
channelIds = append(channelIds, channelId) channelIds = append(channelIds, channelId)
} }
return &model.ViewUsersRestrictions{Teams: teamIdsWithPermission, Channels: channelIds}, nil return &model.ViewUsersRestrictions{Teams: teamIDsWithPermission, Channels: channelIds}, nil
} }
// PromoteGuestToUser Convert user's roles and all his mermbership's roles from // PromoteGuestToUser Convert user's roles and all his mermbership's roles from
@@ -2271,25 +2271,25 @@ func (a *App) DemoteUserToGuest(user *model.User) *model.AppError {
return nil return nil
} }
func (a *App) PublishUserTyping(userId, channelId, parentId string) *model.AppError { func (a *App) PublishUserTyping(userID, channelId, parentId string) *model.AppError {
omitUsers := make(map[string]bool, 1) omitUsers := make(map[string]bool, 1)
omitUsers[userId] = true omitUsers[userID] = true
event := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_TYPING, "", channelId, "", omitUsers) event := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_TYPING, "", channelId, "", omitUsers)
event.Add("parent_id", parentId) event.Add("parent_id", parentId)
event.Add("user_id", userId) event.Add("user_id", userID)
a.Publish(event) a.Publish(event)
return nil return nil
} }
// invalidateUserCacheAndPublish Invalidates cache for a user and publishes user updated event // invalidateUserCacheAndPublish Invalidates cache for a user and publishes user updated event
func (a *App) invalidateUserCacheAndPublish(userId string) { func (a *App) invalidateUserCacheAndPublish(userID string) {
a.InvalidateCacheForUser(userId) a.InvalidateCacheForUser(userID)
user, userErr := a.GetUser(userId) user, userErr := a.GetUser(userID)
if userErr != nil { if userErr != nil {
mlog.Error("Error in getting users profile", mlog.String("user_id", userId), mlog.Err(userErr)) mlog.Error("Error in getting users profile", mlog.String("user_id", userID), mlog.Err(userErr))
return return
} }
@@ -2356,8 +2356,8 @@ func (a *App) ConvertBotToUser(bot *model.Bot, userPatch *model.UserPatch, sysad
return user, nil return user, nil
} }
func (a *App) GetThreadsForUser(userId, teamId string, options model.GetUserThreadsOpts) (*model.Threads, *model.AppError) { func (a *App) GetThreadsForUser(userID, teamID string, options model.GetUserThreadsOpts) (*model.Threads, *model.AppError) {
threads, err := a.Srv().Store.Thread().GetThreadsForUser(userId, teamId, options) threads, err := a.Srv().Store.Thread().GetThreadsForUser(userID, teamID, options)
if err != nil { if err != nil {
return nil, model.NewAppError("GetThreadsForUser", "app.user.get_threads_for_user.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetThreadsForUser", "app.user.get_threads_for_user.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -2368,8 +2368,8 @@ func (a *App) GetThreadsForUser(userId, teamId string, options model.GetUserThre
return threads, nil return threads, nil
} }
func (a *App) GetThreadForUser(userId, teamId, threadId string, extended bool) (*model.ThreadResponse, *model.AppError) { func (a *App) GetThreadForUser(userID, teamID, threadId string, extended bool) (*model.ThreadResponse, *model.AppError) {
thread, err := a.Srv().Store.Thread().GetThreadForUser(userId, teamId, threadId, extended) thread, err := a.Srv().Store.Thread().GetThreadForUser(userID, teamID, threadId, extended)
if err != nil { if err != nil {
return nil, model.NewAppError("GetThreadForUser", "app.user.get_threads_for_user.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetThreadForUser", "app.user.get_threads_for_user.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -2381,34 +2381,34 @@ func (a *App) GetThreadForUser(userId, teamId, threadId string, extended bool) (
return thread, nil return thread, nil
} }
func (a *App) UpdateThreadsReadForUser(userId, teamId string) *model.AppError { func (a *App) UpdateThreadsReadForUser(userID, teamID string) *model.AppError {
nErr := a.Srv().Store.Thread().MarkAllAsRead(userId, teamId) nErr := a.Srv().Store.Thread().MarkAllAsRead(userID, teamID)
if nErr != nil { if nErr != nil {
return model.NewAppError("UpdateThreadsReadForUser", "app.user.update_threads_read_for_user.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("UpdateThreadsReadForUser", "app.user.update_threads_read_for_user.app_error", nil, nErr.Error(), http.StatusInternalServerError)
} }
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_THREAD_READ_CHANGED, "", "", userId, nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_THREAD_READ_CHANGED, "", "", userID, nil)
a.Publish(message) a.Publish(message)
return nil return nil
} }
func (a *App) UpdateThreadFollowForUser(userId, threadId string, state bool) *model.AppError { func (a *App) UpdateThreadFollowForUser(userID, threadId string, state bool) *model.AppError {
err := a.Srv().Store.Thread().CreateMembershipIfNeeded(userId, threadId, state, false, true) err := a.Srv().Store.Thread().CreateMembershipIfNeeded(userID, threadId, state, false, true)
if err != nil { if err != nil {
return model.NewAppError("UpdateThreadFollowForUser", "app.user.update_thread_follow_for_user.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("UpdateThreadFollowForUser", "app.user.update_thread_follow_for_user.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_THREAD_FOLLOW_CHANGED, "", "", userId, nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_THREAD_FOLLOW_CHANGED, "", "", userID, nil)
message.Add("thread_id", threadId) message.Add("thread_id", threadId)
message.Add("state", state) message.Add("state", state)
a.Publish(message) a.Publish(message)
return nil return nil
} }
func (a *App) UpdateThreadReadForUser(userId, teamId, threadId string, timestamp int64) *model.AppError { func (a *App) UpdateThreadReadForUser(userID, teamID, threadId string, timestamp int64) *model.AppError {
user, err := a.GetUser(userId) user, err := a.GetUser(userID)
if err != nil { if err != nil {
return err return err
} }
membership, nErr := a.Srv().Store.Thread().GetMembershipForUser(userId, threadId) membership, nErr := a.Srv().Store.Thread().GetMembershipForUser(userID, threadId)
if nErr != nil { if nErr != nil {
return model.NewAppError("UpdateThreadsReadForUser", "app.user.update_threads_read_for_user.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("UpdateThreadsReadForUser", "app.user.update_threads_read_for_user.app_error", nil, nErr.Error(), http.StatusInternalServerError)
} }
@@ -2417,7 +2417,7 @@ func (a *App) UpdateThreadReadForUser(userId, teamId, threadId string, timestamp
return err return err
} }
membership.UnreadMentions, err = a.countThreadMentions(user, post, teamId, timestamp) membership.UnreadMentions, err = a.countThreadMentions(user, post, teamID, timestamp)
if err != nil { if err != nil {
return err return err
} }
@@ -2427,11 +2427,11 @@ func (a *App) UpdateThreadReadForUser(userId, teamId, threadId string, timestamp
return model.NewAppError("UpdateThreadsReadForUser", "app.user.update_threads_read_for_user.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("UpdateThreadsReadForUser", "app.user.update_threads_read_for_user.app_error", nil, nErr.Error(), http.StatusInternalServerError)
} }
nErr = a.Srv().Store.Thread().MarkAsRead(userId, threadId, timestamp) nErr = a.Srv().Store.Thread().MarkAsRead(userID, threadId, timestamp)
if nErr != nil { if nErr != nil {
return model.NewAppError("UpdateThreadReadForUser", "app.user.update_thread_read_for_user.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("UpdateThreadReadForUser", "app.user.update_thread_read_for_user.app_error", nil, nErr.Error(), http.StatusInternalServerError)
} }
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_THREAD_READ_CHANGED, "", "", userId, nil) message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_THREAD_READ_CHANGED, "", "", userID, nil)
message.Add("thread_id", threadId) message.Add("thread_id", threadId)
message.Add("timestamp", timestamp) message.Add("timestamp", timestamp)
a.Publish(message) a.Publish(message)

Просмотреть файл

@@ -11,8 +11,8 @@ import (
"github.com/mattermost/mattermost-server/v5/store" "github.com/mattermost/mattermost-server/v5/store"
) )
func (a *App) GetUserTermsOfService(userId string) (*model.UserTermsOfService, *model.AppError) { func (a *App) GetUserTermsOfService(userID string) (*model.UserTermsOfService, *model.AppError) {
u, err := a.Srv().Store.UserTermsOfService().GetByUser(userId) u, err := a.Srv().Store.UserTermsOfService().GetByUser(userID)
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -26,10 +26,10 @@ func (a *App) GetUserTermsOfService(userId string) (*model.UserTermsOfService, *
return u, nil return u, nil
} }
func (a *App) SaveUserTermsOfService(userId, termsOfServiceId string, accepted bool) *model.AppError { func (a *App) SaveUserTermsOfService(userID, termsOfServiceId string, accepted bool) *model.AppError {
if accepted { if accepted {
userTermsOfService := &model.UserTermsOfService{ userTermsOfService := &model.UserTermsOfService{
UserId: userId, UserId: userID,
TermsOfServiceId: termsOfServiceId, TermsOfServiceId: termsOfServiceId,
} }
@@ -43,7 +43,7 @@ func (a *App) SaveUserTermsOfService(userId, termsOfServiceId string, accepted b
} }
} }
} else { } else {
if err := a.Srv().Store.UserTermsOfService().Delete(userId, termsOfServiceId); err != nil { if err := a.Srv().Store.UserTermsOfService().Delete(userID, termsOfServiceId); err != nil {
return model.NewAppError("SaveUserTermsOfService", "app.user_terms_of_service.delete.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SaveUserTermsOfService", "app.user_terms_of_service.delete.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
} }

Просмотреть файл

@@ -717,7 +717,7 @@ func TestCreateUserWithToken(t *testing.T) {
t.Run("invalid token type", func(t *testing.T) { t.Run("invalid token type", func(t *testing.T) {
token := model.NewToken( token := model.NewToken(
TokenTypeVerifyEmail, TokenTypeVerifyEmail,
model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}), model.MapToJson(map[string]string{"teamID": th.BasicTeam.Id, "email": user.Email}),
) )
require.Nil(t, th.App.Srv().Store.Token().Save(token)) require.Nil(t, th.App.Srv().Store.Token().Save(token))
defer th.App.DeleteToken(token) defer th.App.DeleteToken(token)

Просмотреть файл

@@ -311,7 +311,7 @@ func (wc *WebConn) createHelloMessage() *model.WebSocketEvent {
} }
func (wc *WebConn) shouldSendEventToGuest(msg *model.WebSocketEvent) bool { func (wc *WebConn) shouldSendEventToGuest(msg *model.WebSocketEvent) bool {
var userId string var userID string
var canSee bool var canSee bool
switch msg.EventType() { switch msg.EventType() {
@@ -321,14 +321,14 @@ func (wc *WebConn) shouldSendEventToGuest(msg *model.WebSocketEvent) bool {
mlog.Debug("webhub.shouldSendEvent: user not found in message", mlog.Any("user", msg.GetData()["user"])) mlog.Debug("webhub.shouldSendEvent: user not found in message", mlog.Any("user", msg.GetData()["user"]))
return false return false
} }
userId = user.Id userID = user.Id
case model.WEBSOCKET_EVENT_NEW_USER: case model.WEBSOCKET_EVENT_NEW_USER:
userId = msg.GetData()["user_id"].(string) userID = msg.GetData()["user_id"].(string)
default: default:
return true return true
} }
canSee, err := wc.App.UserCanSeeOtherUser(wc.UserId, userId) canSee, err := wc.App.UserCanSeeOtherUser(wc.UserId, userID)
if err != nil { if err != nil {
mlog.Error("webhub.shouldSendEvent.", mlog.Err(err)) mlog.Error("webhub.shouldSendEvent.", mlog.Err(err))
return false return false
@@ -414,8 +414,8 @@ func (wc *WebConn) shouldSendEvent(msg *model.WebSocketEvent) bool {
} }
// IsMemberOfTeam returns whether the user of the WebConn // IsMemberOfTeam returns whether the user of the WebConn
// is a member of the given teamId or not. // is a member of the given teamID or not.
func (wc *WebConn) isMemberOfTeam(teamId string) bool { func (wc *WebConn) isMemberOfTeam(teamID string) bool {
currentSession := wc.GetSession() currentSession := wc.GetSession()
if currentSession == nil || currentSession.Token == "" { if currentSession == nil || currentSession.Token == "" {
@@ -432,7 +432,7 @@ func (wc *WebConn) isMemberOfTeam(teamId string) bool {
currentSession = session currentSession = session
} }
return currentSession.GetTeamByTeamId(teamId) != nil return currentSession.GetTeamByTeamId(teamID) != nil
} }
func (wc *WebConn) logSocketErr(source string, err error) { func (wc *WebConn) logSocketErr(source string, err error) {

Просмотреть файл

@@ -19,7 +19,7 @@ const (
) )
type webConnActivityMessage struct { type webConnActivityMessage struct {
userId string userID string
sessionToken string sessionToken string
activityAt int64 activityAt int64
} }
@@ -30,7 +30,7 @@ type webConnDirectMessage struct {
} }
type webConnSessionMessage struct { type webConnSessionMessage struct {
userId string userID string
sessionToken string sessionToken string
isRegistered chan bool isRegistered chan bool
} }
@@ -94,19 +94,19 @@ func (a *App) HubStart() {
a.srv.hubs = hubs a.srv.hubs = hubs
} }
func (a *App) invalidateCacheForUserSkipClusterSend(userId string) { func (a *App) invalidateCacheForUserSkipClusterSend(userID string) {
a.Srv().Store.Channel().InvalidateAllChannelMembersForUser(userId) a.Srv().Store.Channel().InvalidateAllChannelMembersForUser(userID)
a.InvalidateWebConnSessionCacheForUser(userId) a.InvalidateWebConnSessionCacheForUser(userID)
} }
func (a *App) invalidateCacheForWebhook(webhookId string) { func (a *App) invalidateCacheForWebhook(webhookID string) {
a.Srv().Store.Webhook().InvalidateWebhookCache(webhookId) a.Srv().Store.Webhook().InvalidateWebhookCache(webhookID)
} }
func (a *App) InvalidateWebConnSessionCacheForUser(userId string) { func (a *App) InvalidateWebConnSessionCacheForUser(userID string) {
hub := a.GetHubForUserId(userId) hub := a.GetHubForUserId(userID)
if hub != nil { if hub != nil {
hub.InvalidateUser(userId) hub.InvalidateUser(userID)
} }
} }
@@ -124,20 +124,20 @@ func (a *App) HubStop() {
} }
// GetHubForUserId returns the hub for a given user id. // GetHubForUserId returns the hub for a given user id.
func (s *Server) GetHubForUserId(userId string) *Hub { func (s *Server) GetHubForUserId(userID string) *Hub {
// TODO: check if caching the userId -> hub mapping // TODO: check if caching the userID -> hub mapping
// is worth the memory tradeoff. // is worth the memory tradeoff.
// https://mattermost.atlassian.net/browse/MM-26629. // https://mattermost.atlassian.net/browse/MM-26629.
var hash maphash.Hash var hash maphash.Hash
hash.SetSeed(s.hashSeed) hash.SetSeed(s.hashSeed)
hash.Write([]byte(userId)) hash.Write([]byte(userID))
index := hash.Sum64() % uint64(len(s.hubs)) index := hash.Sum64() % uint64(len(s.hubs))
return s.hubs[int(index)] return s.hubs[int(index)]
} }
func (a *App) GetHubForUserId(userId string) *Hub { func (a *App) GetHubForUserId(userID string) *Hub {
return a.Srv().GetHubForUserId(userId) return a.Srv().GetHubForUserId(userID)
} }
// HubRegister registers a connection to a hub. // HubRegister registers a connection to a hub.
@@ -254,12 +254,12 @@ func (a *App) invalidateCacheForChannelMembersNotifyPropsSkipClusterSend(channel
a.Srv().Store.Channel().InvalidateCacheForChannelMembersNotifyProps(channelId) a.Srv().Store.Channel().InvalidateCacheForChannelMembersNotifyProps(channelId)
} }
func (a *App) invalidateCacheForChannelByNameSkipClusterSend(teamId, name string) { func (a *App) invalidateCacheForChannelByNameSkipClusterSend(teamID, name string) {
if teamId == "" { if teamID == "" {
teamId = "dm" teamID = "dm"
} }
a.Srv().Store.Channel().InvalidateChannelByName(teamId, name) a.Srv().Store.Channel().InvalidateChannelByName(teamID, name)
} }
func (a *App) invalidateCacheForChannelPosts(channelId string) { func (a *App) invalidateCacheForChannelPosts(channelId string) {
@@ -267,31 +267,31 @@ func (a *App) invalidateCacheForChannelPosts(channelId string) {
a.Srv().Store.Post().InvalidateLastPostTimeCache(channelId) a.Srv().Store.Post().InvalidateLastPostTimeCache(channelId)
} }
func (a *App) InvalidateCacheForUser(userId string) { func (a *App) InvalidateCacheForUser(userID string) {
a.invalidateCacheForUserSkipClusterSend(userId) a.invalidateCacheForUserSkipClusterSend(userID)
a.Srv().Store.User().InvalidateProfilesInChannelCacheByUser(userId) a.Srv().Store.User().InvalidateProfilesInChannelCacheByUser(userID)
a.Srv().Store.User().InvalidateProfileCacheForUser(userId) a.Srv().Store.User().InvalidateProfileCacheForUser(userID)
if a.Cluster() != nil { if a.Cluster() != nil {
msg := &model.ClusterMessage{ msg := &model.ClusterMessage{
Event: model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_USER, Event: model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_USER,
SendType: model.CLUSTER_SEND_BEST_EFFORT, SendType: model.CLUSTER_SEND_BEST_EFFORT,
Data: userId, Data: userID,
} }
a.Cluster().SendClusterMessage(msg) a.Cluster().SendClusterMessage(msg)
} }
} }
func (a *App) invalidateCacheForUserTeams(userId string) { func (a *App) invalidateCacheForUserTeams(userID string) {
a.InvalidateWebConnSessionCacheForUser(userId) a.InvalidateWebConnSessionCacheForUser(userID)
a.Srv().Store.Team().InvalidateAllTeamIdsForUser(userId) a.Srv().Store.Team().InvalidateAllTeamIdsForUser(userID)
if a.Cluster() != nil { if a.Cluster() != nil {
msg := &model.ClusterMessage{ msg := &model.ClusterMessage{
Event: model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_USER_TEAMS, Event: model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_USER_TEAMS,
SendType: model.CLUSTER_SEND_BEST_EFFORT, SendType: model.CLUSTER_SEND_BEST_EFFORT,
Data: userId, Data: userID,
} }
a.Cluster().SendClusterMessage(msg) a.Cluster().SendClusterMessage(msg)
} }
@@ -331,9 +331,9 @@ func (h *Hub) Unregister(webConn *WebConn) {
} }
// Determines if a user's session is registered a connection from the hub. // Determines if a user's session is registered a connection from the hub.
func (h *Hub) IsRegistered(userId, sessionToken string) bool { func (h *Hub) IsRegistered(userID, sessionToken string) bool {
ws := &webConnSessionMessage{ ws := &webConnSessionMessage{
userId: userId, userID: userID,
sessionToken: sessionToken, sessionToken: sessionToken,
isRegistered: make(chan bool), isRegistered: make(chan bool),
} }
@@ -366,19 +366,19 @@ func (h *Hub) Broadcast(message *model.WebSocketEvent) {
} }
// InvalidateUser invalidates the cache for the given user. // InvalidateUser invalidates the cache for the given user.
func (h *Hub) InvalidateUser(userId string) { func (h *Hub) InvalidateUser(userID string) {
select { select {
case h.invalidateUser <- userId: case h.invalidateUser <- userID:
case <-h.stop: case <-h.stop:
} }
} }
// UpdateActivity sets the LastUserActivityAt field for the connection // UpdateActivity sets the LastUserActivityAt field for the connection
// of the user. // of the user.
func (h *Hub) UpdateActivity(userId, sessionToken string, activityAt int64) { func (h *Hub) UpdateActivity(userID, sessionToken string, activityAt int64) {
select { select {
case h.activity <- &webConnActivityMessage{ case h.activity <- &webConnActivityMessage{
userId: userId, userID: userID,
sessionToken: sessionToken, sessionToken: sessionToken,
activityAt: activityAt, activityAt: activityAt,
}: }:
@@ -417,7 +417,7 @@ func (h *Hub) Start() {
for { for {
select { select {
case webSessionMessage := <-h.checkRegistered: case webSessionMessage := <-h.checkRegistered:
conns := connIndex.ForUser(webSessionMessage.userId) conns := connIndex.ForUser(webSessionMessage.userID)
var isRegistered bool var isRegistered bool
for _, conn := range conns { for _, conn := range conns {
if conn.GetSessionToken() == webSessionMessage.sessionToken { if conn.GetSessionToken() == webSessionMessage.sessionToken {
@@ -458,12 +458,12 @@ func (h *Hub) Start() {
h.app.SetStatusLastActivityAt(webConn.UserId, latestActivity) h.app.SetStatusLastActivityAt(webConn.UserId, latestActivity)
}) })
} }
case userId := <-h.invalidateUser: case userID := <-h.invalidateUser:
for _, webConn := range connIndex.ForUser(userId) { for _, webConn := range connIndex.ForUser(userID) {
webConn.InvalidateCache() webConn.InvalidateCache()
} }
case activity := <-h.activity: case activity := <-h.activity:
for _, webConn := range connIndex.ForUser(activity.userId) { for _, webConn := range connIndex.ForUser(activity.userID) {
if webConn.GetSessionToken() == activity.sessionToken { if webConn.GetSessionToken() == activity.sessionToken {
webConn.lastUserActivityAt = activity.activityAt webConn.lastUserActivityAt = activity.activityAt
} }

Просмотреть файл

@@ -36,9 +36,9 @@ func dummyWebsocketHandler(t *testing.T) http.HandlerFunc {
} }
} }
func registerDummyWebConn(t *testing.T, a *App, addr net.Addr, userId string) *WebConn { func registerDummyWebConn(t *testing.T, a *App, addr net.Addr, userID string) *WebConn {
session, appErr := a.CreateSession(&model.Session{ session, appErr := a.CreateSession(&model.Session{
UserId: userId, UserId: userID,
}) })
require.Nil(t, appErr) require.Nil(t, appErr)
@@ -173,7 +173,7 @@ func TestHubSessionRevokeRace(t *testing.T) {
go func() { go func() {
for i := 0; i <= broadcastQueueSize; i++ { for i := 0; i <= broadcastQueueSize; i++ {
hub.Broadcast(model.NewWebSocketEvent("", "teamId", "", "", nil)) hub.Broadcast(model.NewWebSocketEvent("", "teamID", "", "", nil))
} }
close(done) close(done)
}() }()

Просмотреть файл

@@ -246,12 +246,12 @@ func SplitWebhookPost(post *model.Post, maxPostSize int) ([]*model.Post, *model.
return splits, nil return splits, nil
} }
func (a *App) CreateWebhookPost(userId string, channel *model.Channel, text, overrideUsername, overrideIconUrl, overrideIconEmoji string, props model.StringInterface, postType string, postRootId string) (*model.Post, *model.AppError) { func (a *App) CreateWebhookPost(userID string, channel *model.Channel, text, overrideUsername, overrideIconURL, overrideIconEmoji string, props model.StringInterface, postType string, postRootId string) (*model.Post, *model.AppError) {
// parse links into Markdown format // parse links into Markdown format
linkWithTextRegex := regexp.MustCompile(`<([^\n<\|>]+)\|([^\n>]+)>`) linkWithTextRegex := regexp.MustCompile(`<([^\n<\|>]+)\|([^\n>]+)>`)
text = linkWithTextRegex.ReplaceAllString(text, "[${2}](${1})") text = linkWithTextRegex.ReplaceAllString(text, "[${2}](${1})")
post := &model.Post{UserId: userId, ChannelId: channel.Id, Message: text, Type: postType, RootId: postRootId} post := &model.Post{UserId: userID, ChannelId: channel.Id, Message: text, Type: postType, RootId: postRootId}
post.AddProp("from_webhook", "true") post.AddProp("from_webhook", "true")
if strings.HasPrefix(post.Type, model.POST_SYSTEM_MESSAGE_PREFIX) { if strings.HasPrefix(post.Type, model.POST_SYSTEM_MESSAGE_PREFIX) {
@@ -272,8 +272,8 @@ func (a *App) CreateWebhookPost(userId string, channel *model.Channel, text, ove
} }
if *a.Config().ServiceSettings.EnablePostIconOverride { if *a.Config().ServiceSettings.EnablePostIconOverride {
if overrideIconUrl != "" { if overrideIconURL != "" {
post.AddProp("override_icon_url", overrideIconUrl) post.AddProp("override_icon_url", overrideIconURL)
} }
if overrideIconEmoji != "" { if overrideIconEmoji != "" {
post.AddProp("override_icon_emoji", overrideIconEmoji) post.AddProp("override_icon_emoji", overrideIconEmoji)
@@ -373,26 +373,26 @@ func (a *App) UpdateIncomingWebhook(oldHook, updatedHook *model.IncomingWebhook)
return newWebhook, nil return newWebhook, nil
} }
func (a *App) DeleteIncomingWebhook(hookId string) *model.AppError { func (a *App) DeleteIncomingWebhook(hookID string) *model.AppError {
if !*a.Config().ServiceSettings.EnableIncomingWebhooks { if !*a.Config().ServiceSettings.EnableIncomingWebhooks {
return model.NewAppError("DeleteIncomingWebhook", "api.incoming_webhook.disabled.app_error", nil, "", http.StatusNotImplemented) return model.NewAppError("DeleteIncomingWebhook", "api.incoming_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
if err := a.Srv().Store.Webhook().DeleteIncoming(hookId, model.GetMillis()); err != nil { if err := a.Srv().Store.Webhook().DeleteIncoming(hookID, model.GetMillis()); err != nil {
return model.NewAppError("DeleteIncomingWebhook", "app.webhooks.delete_incoming.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DeleteIncomingWebhook", "app.webhooks.delete_incoming.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
a.invalidateCacheForWebhook(hookId) a.invalidateCacheForWebhook(hookID)
return nil return nil
} }
func (a *App) GetIncomingWebhook(hookId string) (*model.IncomingWebhook, *model.AppError) { func (a *App) GetIncomingWebhook(hookID string) (*model.IncomingWebhook, *model.AppError) {
if !*a.Config().ServiceSettings.EnableIncomingWebhooks { if !*a.Config().ServiceSettings.EnableIncomingWebhooks {
return nil, model.NewAppError("GetIncomingWebhook", "api.incoming_webhook.disabled.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("GetIncomingWebhook", "api.incoming_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
webhook, err := a.Srv().Store.Webhook().GetIncoming(hookId, true) webhook, err := a.Srv().Store.Webhook().GetIncoming(hookID, true)
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -406,16 +406,16 @@ func (a *App) GetIncomingWebhook(hookId string) (*model.IncomingWebhook, *model.
return webhook, nil return webhook, nil
} }
func (a *App) GetIncomingWebhooksForTeamPage(teamId string, page, perPage int) ([]*model.IncomingWebhook, *model.AppError) { func (a *App) GetIncomingWebhooksForTeamPage(teamID string, page, perPage int) ([]*model.IncomingWebhook, *model.AppError) {
return a.GetIncomingWebhooksForTeamPageByUser(teamId, "", page, perPage) return a.GetIncomingWebhooksForTeamPageByUser(teamID, "", page, perPage)
} }
func (a *App) GetIncomingWebhooksForTeamPageByUser(teamId string, userId string, page, perPage int) ([]*model.IncomingWebhook, *model.AppError) { func (a *App) GetIncomingWebhooksForTeamPageByUser(teamID string, userID string, page, perPage int) ([]*model.IncomingWebhook, *model.AppError) {
if !*a.Config().ServiceSettings.EnableIncomingWebhooks { if !*a.Config().ServiceSettings.EnableIncomingWebhooks {
return nil, model.NewAppError("GetIncomingWebhooksForTeamPage", "api.incoming_webhook.disabled.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("GetIncomingWebhooksForTeamPage", "api.incoming_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
webhooks, err := a.Srv().Store.Webhook().GetIncomingByTeamByUser(teamId, userId, page*perPage, perPage) webhooks, err := a.Srv().Store.Webhook().GetIncomingByTeamByUser(teamID, userID, page*perPage, perPage)
if err != nil { if err != nil {
return nil, model.NewAppError("GetIncomingWebhooksForTeamPage", "app.webhooks.get_incoming_by_user.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetIncomingWebhooksForTeamPage", "app.webhooks.get_incoming_by_user.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -423,12 +423,12 @@ func (a *App) GetIncomingWebhooksForTeamPageByUser(teamId string, userId string,
return webhooks, nil return webhooks, nil
} }
func (a *App) GetIncomingWebhooksPageByUser(userId string, page, perPage int) ([]*model.IncomingWebhook, *model.AppError) { func (a *App) GetIncomingWebhooksPageByUser(userID string, page, perPage int) ([]*model.IncomingWebhook, *model.AppError) {
if !*a.Config().ServiceSettings.EnableIncomingWebhooks { if !*a.Config().ServiceSettings.EnableIncomingWebhooks {
return nil, model.NewAppError("GetIncomingWebhooksPageByUser", "api.incoming_webhook.disabled.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("GetIncomingWebhooksPageByUser", "api.incoming_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
webhooks, err := a.Srv().Store.Webhook().GetIncomingListByUser(userId, page*perPage, perPage) webhooks, err := a.Srv().Store.Webhook().GetIncomingListByUser(userID, page*perPage, perPage)
if err != nil { if err != nil {
return nil, model.NewAppError("GetIncomingWebhooksPageByUser", "app.webhooks.get_incoming_by_user.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetIncomingWebhooksPageByUser", "app.webhooks.get_incoming_by_user.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -548,12 +548,12 @@ func (a *App) UpdateOutgoingWebhook(oldHook, updatedHook *model.OutgoingWebhook)
return webhook, nil return webhook, nil
} }
func (a *App) GetOutgoingWebhook(hookId string) (*model.OutgoingWebhook, *model.AppError) { func (a *App) GetOutgoingWebhook(hookID string) (*model.OutgoingWebhook, *model.AppError) {
if !*a.Config().ServiceSettings.EnableOutgoingWebhooks { if !*a.Config().ServiceSettings.EnableOutgoingWebhooks {
return nil, model.NewAppError("GetOutgoingWebhook", "api.outgoing_webhook.disabled.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("GetOutgoingWebhook", "api.outgoing_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
webhook, err := a.Srv().Store.Webhook().GetOutgoing(hookId) webhook, err := a.Srv().Store.Webhook().GetOutgoing(hookID)
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
@@ -571,12 +571,12 @@ func (a *App) GetOutgoingWebhooksPage(page, perPage int) ([]*model.OutgoingWebho
return a.GetOutgoingWebhooksPageByUser("", page, perPage) return a.GetOutgoingWebhooksPageByUser("", page, perPage)
} }
func (a *App) GetOutgoingWebhooksPageByUser(userId string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError) { func (a *App) GetOutgoingWebhooksPageByUser(userID string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError) {
if !*a.Config().ServiceSettings.EnableOutgoingWebhooks { if !*a.Config().ServiceSettings.EnableOutgoingWebhooks {
return nil, model.NewAppError("GetOutgoingWebhooksPageByUser", "api.outgoing_webhook.disabled.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("GetOutgoingWebhooksPageByUser", "api.outgoing_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
webhooks, err := a.Srv().Store.Webhook().GetOutgoingListByUser(userId, page*perPage, perPage) webhooks, err := a.Srv().Store.Webhook().GetOutgoingListByUser(userID, page*perPage, perPage)
if err != nil { if err != nil {
return nil, model.NewAppError("GetOutgoingWebhooksPageByUser", "app.webhooks.get_outgoing_by_channel.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetOutgoingWebhooksPageByUser", "app.webhooks.get_outgoing_by_channel.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -584,12 +584,12 @@ func (a *App) GetOutgoingWebhooksPageByUser(userId string, page, perPage int) ([
return webhooks, nil return webhooks, nil
} }
func (a *App) GetOutgoingWebhooksForChannelPageByUser(channelId string, userId string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError) { func (a *App) GetOutgoingWebhooksForChannelPageByUser(channelId string, userID string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError) {
if !*a.Config().ServiceSettings.EnableOutgoingWebhooks { if !*a.Config().ServiceSettings.EnableOutgoingWebhooks {
return nil, model.NewAppError("GetOutgoingWebhooksForChannelPage", "api.outgoing_webhook.disabled.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("GetOutgoingWebhooksForChannelPage", "api.outgoing_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
webhooks, err := a.Srv().Store.Webhook().GetOutgoingByChannelByUser(channelId, userId, page*perPage, perPage) webhooks, err := a.Srv().Store.Webhook().GetOutgoingByChannelByUser(channelId, userID, page*perPage, perPage)
if err != nil { if err != nil {
return nil, model.NewAppError("GetOutgoingWebhooksForChannelPage", "app.webhooks.get_outgoing_by_channel.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetOutgoingWebhooksForChannelPage", "app.webhooks.get_outgoing_by_channel.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -597,16 +597,16 @@ func (a *App) GetOutgoingWebhooksForChannelPageByUser(channelId string, userId s
return webhooks, nil return webhooks, nil
} }
func (a *App) GetOutgoingWebhooksForTeamPage(teamId string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError) { func (a *App) GetOutgoingWebhooksForTeamPage(teamID string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError) {
return a.GetOutgoingWebhooksForTeamPageByUser(teamId, "", page, perPage) return a.GetOutgoingWebhooksForTeamPageByUser(teamID, "", page, perPage)
} }
func (a *App) GetOutgoingWebhooksForTeamPageByUser(teamId string, userId string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError) { func (a *App) GetOutgoingWebhooksForTeamPageByUser(teamID string, userID string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError) {
if !*a.Config().ServiceSettings.EnableOutgoingWebhooks { if !*a.Config().ServiceSettings.EnableOutgoingWebhooks {
return nil, model.NewAppError("GetOutgoingWebhooksForTeamPageByUser", "api.outgoing_webhook.disabled.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("GetOutgoingWebhooksForTeamPageByUser", "api.outgoing_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
webhooks, err := a.Srv().Store.Webhook().GetOutgoingByTeamByUser(teamId, userId, page*perPage, perPage) webhooks, err := a.Srv().Store.Webhook().GetOutgoingByTeamByUser(teamID, userID, page*perPage, perPage)
if err != nil { if err != nil {
return nil, model.NewAppError("GetOutgoingWebhooksForTeamPageByUser", "app.webhooks.get_outgoing_by_team.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetOutgoingWebhooksForTeamPageByUser", "app.webhooks.get_outgoing_by_team.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -614,12 +614,12 @@ func (a *App) GetOutgoingWebhooksForTeamPageByUser(teamId string, userId string,
return webhooks, nil return webhooks, nil
} }
func (a *App) DeleteOutgoingWebhook(hookId string) *model.AppError { func (a *App) DeleteOutgoingWebhook(hookID string) *model.AppError {
if !*a.Config().ServiceSettings.EnableOutgoingWebhooks { if !*a.Config().ServiceSettings.EnableOutgoingWebhooks {
return model.NewAppError("DeleteOutgoingWebhook", "api.outgoing_webhook.disabled.app_error", nil, "", http.StatusNotImplemented) return model.NewAppError("DeleteOutgoingWebhook", "api.outgoing_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
if err := a.Srv().Store.Webhook().DeleteOutgoing(hookId, model.GetMillis()); err != nil { if err := a.Srv().Store.Webhook().DeleteOutgoing(hookID, model.GetMillis()); err != nil {
return model.NewAppError("DeleteOutgoingWebhook", "app.webhooks.delete_outgoing.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DeleteOutgoingWebhook", "app.webhooks.delete_outgoing.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
@@ -641,14 +641,14 @@ func (a *App) RegenOutgoingWebhookToken(hook *model.OutgoingWebhook) (*model.Out
return webhook, nil return webhook, nil
} }
func (a *App) HandleIncomingWebhook(hookId string, req *model.IncomingWebhookRequest) *model.AppError { func (a *App) HandleIncomingWebhook(hookID string, req *model.IncomingWebhookRequest) *model.AppError {
if !*a.Config().ServiceSettings.EnableIncomingWebhooks { if !*a.Config().ServiceSettings.EnableIncomingWebhooks {
return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.disabled.app_error", nil, "", http.StatusNotImplemented) return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
hchan := make(chan store.StoreResult, 1) hchan := make(chan store.StoreResult, 1)
go func() { go func() {
webhook, err := a.Srv().Store.Webhook().GetIncoming(hookId, true) webhook, err := a.Srv().Store.Webhook().GetIncoming(hookID, true)
hchan <- store.StoreResult{Data: webhook, NErr: err} hchan <- store.StoreResult{Data: webhook, NErr: err}
close(hchan) close(hchan)
}() }()
@@ -775,18 +775,18 @@ func (a *App) HandleIncomingWebhook(hookId string, req *model.IncomingWebhookReq
overrideUsername = req.Username overrideUsername = req.Username
} }
overrideIconUrl := hook.IconURL overrideIconURL := hook.IconURL
if req.IconURL != "" { if req.IconURL != "" {
overrideIconUrl = req.IconURL overrideIconURL = req.IconURL
} }
_, err := a.CreateWebhookPost(hook.UserId, channel, text, overrideUsername, overrideIconUrl, req.IconEmoji, req.Props, webhookType, "") _, err := a.CreateWebhookPost(hook.UserId, channel, text, overrideUsername, overrideIconURL, req.IconEmoji, req.Props, webhookType, "")
return err return err
} }
func (a *App) CreateCommandWebhook(commandId string, args *model.CommandArgs) (*model.CommandWebhook, *model.AppError) { func (a *App) CreateCommandWebhook(commandID string, args *model.CommandArgs) (*model.CommandWebhook, *model.AppError) {
hook := &model.CommandWebhook{ hook := &model.CommandWebhook{
CommandId: commandId, CommandId: commandID,
UserId: args.UserId, UserId: args.UserId,
ChannelId: args.ChannelId, ChannelId: args.ChannelId,
RootId: args.RootId, RootId: args.RootId,
@@ -810,17 +810,17 @@ func (a *App) CreateCommandWebhook(commandId string, args *model.CommandArgs) (*
return savedHook, nil return savedHook, nil
} }
func (a *App) HandleCommandWebhook(hookId string, response *model.CommandResponse) *model.AppError { func (a *App) HandleCommandWebhook(hookID string, response *model.CommandResponse) *model.AppError {
if response == nil { if response == nil {
return model.NewAppError("HandleCommandWebhook", "app.command_webhook.handle_command_webhook.parse", nil, "", http.StatusBadRequest) return model.NewAppError("HandleCommandWebhook", "app.command_webhook.handle_command_webhook.parse", nil, "", http.StatusBadRequest)
} }
hook, nErr := a.Srv().Store.CommandWebhook().Get(hookId) hook, nErr := a.Srv().Store.CommandWebhook().Get(hookID)
if nErr != nil { if nErr != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return model.NewAppError("HandleCommandWebhook", "app.command_webhook.get.missing", map[string]interface{}{"hook_id": hookId}, nfErr.Error(), http.StatusNotFound) return model.NewAppError("HandleCommandWebhook", "app.command_webhook.get.missing", map[string]interface{}{"hook_id": hookID}, nfErr.Error(), http.StatusNotFound)
default: default:
return model.NewAppError("HandleCommandWebhook", "app.command_webhook.get.internal_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("HandleCommandWebhook", "app.command_webhook.get.internal_error", nil, nErr.Error(), http.StatusInternalServerError)
} }

Просмотреть файл

@@ -607,7 +607,7 @@ func TestTriggerOutGoingWebhookWithUsernameAndIconURL(t *testing.T) {
EnablePostUsernameOverride bool EnablePostUsernameOverride bool
EnablePostIconOverride bool EnablePostIconOverride bool
ExpectedUsername string ExpectedUsername string
ExpectedIconUrl string ExpectedIconURL string
WebhookResponse *model.OutgoingWebhookResponse WebhookResponse *model.OutgoingWebhookResponse
} }
@@ -637,7 +637,7 @@ func TestTriggerOutGoingWebhookWithUsernameAndIconURL(t *testing.T) {
EnablePostUsernameOverride: true, EnablePostUsernameOverride: true,
EnablePostIconOverride: true, EnablePostIconOverride: true,
ExpectedUsername: "some-user-name", ExpectedUsername: "some-user-name",
ExpectedIconUrl: "http://some-icon/", ExpectedIconURL: "http://some-icon/",
}, },
"Should not override username and Icon": { "Should not override username and Icon": {
EnablePostUsernameOverride: false, EnablePostUsernameOverride: false,
@@ -647,7 +647,7 @@ func TestTriggerOutGoingWebhookWithUsernameAndIconURL(t *testing.T) {
EnablePostUsernameOverride: true, EnablePostUsernameOverride: true,
EnablePostIconOverride: true, EnablePostIconOverride: true,
ExpectedUsername: "webhookuser", ExpectedUsername: "webhookuser",
ExpectedIconUrl: "http://webhok/icon", ExpectedIconURL: "http://webhok/icon",
WebhookResponse: &model.OutgoingWebhookResponse{Text: &webHookResponse, Username: "webhookuser", IconURL: "http://webhok/icon"}, WebhookResponse: &model.OutgoingWebhookResponse{Text: &webHookResponse, Username: "webhookuser", IconURL: "http://webhok/icon"},
}, },
} }
@@ -692,8 +692,8 @@ func TestTriggerOutGoingWebhookWithUsernameAndIconURL(t *testing.T) {
case webhookPost := <-createdPost: case webhookPost := <-createdPost:
assert.Equal(t, webhookPost.Message, "sample response text from test server") assert.Equal(t, webhookPost.Message, "sample response text from test server")
assert.Equal(t, webhookPost.GetProp("from_webhook"), "true") assert.Equal(t, webhookPost.GetProp("from_webhook"), "true")
if testCase.ExpectedIconUrl != "" { if testCase.ExpectedIconURL != "" {
assert.Equal(t, webhookPost.GetProp("override_icon_url"), testCase.ExpectedIconUrl) assert.Equal(t, webhookPost.GetProp("override_icon_url"), testCase.ExpectedIconURL)
} else { } else {
assert.Nil(t, webhookPost.GetProp("override_icon_url")) assert.Nil(t, webhookPost.GetProp("override_icon_url"))
} }

Просмотреть файл

@@ -73,9 +73,9 @@ func dummyWebsocketHandler() http.HandlerFunc {
} }
} }
func registerDummyWebConn(a *App, addr net.Addr, userId string) *WebConn { func registerDummyWebConn(a *App, addr net.Addr, userID string) *WebConn {
session, appErr := a.CreateSession(&model.Session{ session, appErr := a.CreateSession(&model.Session{
UserId: userId, UserId: userID,
}) })
if appErr != nil { if appErr != nil {
panic(appErr) panic(appErr)