Merge branch 'master' into MM-45118_my_top_dms

Этот коммит содержится в:
Mattermod
2022-08-18 20:42:32 +03:00
коммит произвёл GitHub
родитель 582812f1fc 9de6ce5275
Коммит e87a2bbe19
134 изменённых файлов: 2203 добавлений и 2141 удалений

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

@@ -160,7 +160,7 @@ PLUGIN_PACKAGES += mattermost-plugin-jira-v2.4.0
PLUGIN_PACKAGES += mattermost-plugin-nps-v1.2.0 PLUGIN_PACKAGES += mattermost-plugin-nps-v1.2.0
PLUGIN_PACKAGES += mattermost-plugin-welcomebot-v1.2.0 PLUGIN_PACKAGES += mattermost-plugin-welcomebot-v1.2.0
PLUGIN_PACKAGES += mattermost-plugin-zoom-v1.6.0 PLUGIN_PACKAGES += mattermost-plugin-zoom-v1.6.0
PLUGIN_PACKAGES += focalboard-v7.1.0 PLUGIN_PACKAGES += focalboard-v7.2.0
PLUGIN_PACKAGES += mattermost-plugin-apps-v1.1.0 PLUGIN_PACKAGES += mattermost-plugin-apps-v1.1.0
# Prepares the enterprise build if exists. The IGNORE stuff is a hack to get the Makefile to execute the commands outside a target # Prepares the enterprise build if exists. The IGNORE stuff is a hack to get the Makefile to execute the commands outside a target
@@ -414,7 +414,7 @@ endif
setup-go-work: export BUILD_ENTERPRISE_READY := $(BUILD_ENTERPRISE_READY) setup-go-work: export BUILD_ENTERPRISE_READY := $(BUILD_ENTERPRISE_READY)
setup-go-work: export BUILD_BOARDS := $(BUILD_BOARDS) setup-go-work: export BUILD_BOARDS := $(BUILD_BOARDS)
setup-go-work: ## Sets up your go.work file setup-go-work: ## Sets up your go.work file
./scripts/setup_go_work.sh ./scripts/setup_go_work.sh $(IGNORE_GO_WORK_IF_EXISTS)
check-style: golangci-lint plugin-checker vet ## Runs style/lint checks check-style: golangci-lint plugin-checker vet ## Runs style/lint checks

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

@@ -8,6 +8,7 @@ import (
"net/http" "net/http"
"github.com/mattermost/mattermost-server/v6/model" "github.com/mattermost/mattermost-server/v6/model"
"github.com/mattermost/mattermost-server/v6/shared/mlog"
) )
func (api *API) InitImport() { func (api *API) InitImport() {
@@ -26,11 +27,7 @@ func listImports(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
data, err := json.Marshal(imports) if err := json.NewEncoder(w).Encode(imports); err != nil {
if err != nil { c.Logger.Warn("Error writing imports", mlog.Err(err))
c.Err = model.NewAppError("listImports", "app.import.marshal.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
return
} }
w.Write(data)
} }

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

@@ -530,35 +530,6 @@ func getPostThread(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
rPost, err := c.App.GetSinglePost(c.Params.PostId, false)
if err != nil {
c.Err = err
return
}
hasPermission := false
becauseCompliance := false
if c.App.SessionHasPermissionToChannel(c.AppContext, *c.AppContext.Session(), rPost.ChannelId, model.PermissionReadChannel) {
hasPermission = true
} else if channel, cErr := c.App.GetChannel(c.AppContext, rPost.ChannelId); cErr == nil {
if channel.Type == model.ChannelTypeOpen &&
c.App.SessionHasPermissionToTeam(*c.AppContext.Session(), channel.TeamId, model.PermissionReadPublicChannel) {
hasPermission = true
if *c.App.Config().MessageExportSettings.EnableExport {
hasPermission = false
becauseCompliance = true
}
}
}
if !hasPermission {
if becauseCompliance {
c.Err = model.NewAppError("getPostThread", "api.post.compliance_enabled.join_channel_to_view_post", nil, "", http.StatusForbidden)
} else {
c.SetPermissionError(model.PermissionReadChannel)
}
return
}
// For now, by default we return all items unless it's set to maintain // For now, by default we return all items unless it's set to maintain
// backwards compatibility with mobile. But when the next ESR passes, we need to // backwards compatibility with mobile. But when the next ESR passes, we need to
// change this to web.PerPageDefault. // change this to web.PerPageDefault.

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

@@ -928,7 +928,7 @@ func TestPatchPost(t *testing.T) {
t.Run("invalid requests", func(t *testing.T) { t.Run("invalid requests", func(t *testing.T) {
r, err := client.DoAPIPut("/posts/"+post.Id+"/patch", "garbage") r, err := client.DoAPIPut("/posts/"+post.Id+"/patch", "garbage")
require.EqualError(t, err, ": Invalid or missing post in request body.") require.EqualError(t, err, ": Invalid or missing post in request body., invalid character 'g' looking for beginning of value")
require.Equal(t, http.StatusBadRequest, r.StatusCode, "wrong status code") require.Equal(t, http.StatusBadRequest, r.StatusCode, "wrong status code")
patch := &model.PostPatch{} patch := &model.PostPatch{}
@@ -2195,26 +2195,10 @@ func TestGetPostThread(t *testing.T) {
client.RemoveUserFromChannel(th.BasicChannel.Id, th.BasicUser.Id) client.RemoveUserFromChannel(th.BasicChannel.Id, th.BasicUser.Id)
messageExportEnabled := *th.App.Config().MessageExportSettings.EnableExport // Channel is public, should be able to read post
// Channel is public, and compliance export is OFF, should be able to read post
th.App.UpdateConfig(func(cfg *model.Config) {
*cfg.MessageExportSettings.EnableExport = false
})
_, _, err = client.GetPostThread(th.BasicPost.Id, "", false) _, _, err = client.GetPostThread(th.BasicPost.Id, "", false)
require.NoError(t, err) require.NoError(t, err)
// channel is public, and compliance export is ON, should NOT be able to read post
th.App.UpdateConfig(func(cfg *model.Config) {
*cfg.MessageExportSettings.EnableExport = true
})
_, resp, err = client.GetPostThread(th.BasicPost.Id, "", false)
require.Error(t, err)
CheckForbiddenStatus(t, resp)
th.App.UpdateConfig(func(cfg *model.Config) {
*cfg.MessageExportSettings.EnableExport = messageExportEnabled
})
privatePost := th.CreatePostWithClient(client, th.BasicPrivateChannel) privatePost := th.CreatePostWithClient(client, th.BasicPrivateChannel)
_, _, err = client.GetPostThread(privatePost.Id, "", false) _, _, err = client.GetPostThread(privatePost.Id, "", false)

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

@@ -1028,6 +1028,7 @@ func TestGetUserByEmail(t *testing.T) {
} }
func TestSearchUsers(t *testing.T) { func TestSearchUsers(t *testing.T) {
t.Skip("MM-46450")
th := Setup(t).InitBasic() th := Setup(t).InitBasic()
defer th.TearDown() defer th.TearDown()
@@ -1215,7 +1216,7 @@ func TestSearchUsers(t *testing.T) {
}) })
} }
func findUserInList(id string, users []*model.User) bool { func findUserInList(id string, users []*model.User) bool { //nolint:unused
for _, user := range users { for _, user := range users {
if user.Id == id { if user.Id == id {
return true return true

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

@@ -71,7 +71,7 @@ func (s *Server) GetLogsSkipSend(page, perPage int) ([]string, *model.AppError)
logFile := config.GetLogFileLocation(*s.platform.Config().LogSettings.FileLocation) logFile := config.GetLogFileLocation(*s.platform.Config().LogSettings.FileLocation)
file, err := os.Open(logFile) file, err := os.Open(logFile)
if err != nil { if err != nil {
return nil, model.NewAppError("getLogs", "api.admin.file_read_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("getLogs", "api.admin.file_read_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
defer file.Close() defer file.Close()
@@ -91,17 +91,17 @@ func (s *Server) GetLogsSkipSend(page, perPage int) ([]string, *model.AppError)
} }
lineEndPos, err := file.Seek(endOffset, io.SeekEnd) lineEndPos, err := file.Seek(endOffset, io.SeekEnd)
if err != nil { if err != nil {
return nil, model.NewAppError("getLogs", "api.admin.file_read_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("getLogs", "api.admin.file_read_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for { for {
pos, err := file.Seek(searchPos, io.SeekCurrent) pos, err := file.Seek(searchPos, io.SeekCurrent)
if err != nil { if err != nil {
return nil, model.NewAppError("getLogs", "api.admin.file_read_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("getLogs", "api.admin.file_read_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
_, err = file.ReadAt(b, pos) _, err = file.ReadAt(b, pos)
if err != nil { if err != nil {
return nil, model.NewAppError("getLogs", "api.admin.file_read_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("getLogs", "api.admin.file_read_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if b[0] == newLine[0] || pos == 0 { if b[0] == newLine[0] || pos == 0 {
@@ -110,7 +110,7 @@ func (s *Server) GetLogsSkipSend(page, perPage int) ([]string, *model.AppError)
line := make([]byte, lineEndPos-pos) line := make([]byte, lineEndPos-pos)
_, err := file.ReadAt(line, pos) _, err := file.ReadAt(line, pos)
if err != nil { if err != nil {
return nil, model.NewAppError("getLogs", "api.admin.file_read_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("getLogs", "api.admin.file_read_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
lines = append(lines, string(line)) lines = append(lines, string(line))
} }

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

@@ -17,7 +17,7 @@ import (
func (a *App) GetWarnMetricsStatus() (map[string]*model.WarnMetricStatus, *model.AppError) { func (a *App) GetWarnMetricsStatus() (map[string]*model.WarnMetricStatus, *model.AppError) {
systemDataList, nErr := a.Srv().Store.System().Get() systemDataList, nErr := a.Srv().Store.System().Get()
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("GetWarnMetricsStatus", "app.system.get.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetWarnMetricsStatus", "app.system.get.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
isE0Edition := model.BuildEnterpriseReady == "true" // license == nil was already validated upstream isE0Edition := model.BuildEnterpriseReady == "true" // license == nil was already validated upstream
@@ -236,7 +236,7 @@ func (a *App) setWarnMetricsStatusForId(warnMetricId string, status string) *mod
Name: warnMetricId, Name: warnMetricId,
Value: status, Value: status,
}); err != nil { }); err != nil {
return model.NewAppError("setWarnMetricsStatusForId", "app.system.warn_metric.store.app_error", map[string]any{"WarnMetricName": warnMetricId}, err.Error(), http.StatusInternalServerError) return model.NewAppError("setWarnMetricsStatusForId", "app.system.warn_metric.store.app_error", map[string]any{"WarnMetricName": warnMetricId}, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
} }
@@ -253,7 +253,7 @@ func (a *App) RequestLicenseAndAckWarnMetric(c *request.Context, warnMetricId st
registeredUsersCount, err := a.Srv().Store.User().Count(model.UserCountOptions{}) registeredUsersCount, err := a.Srv().Store.User().Count(model.UserCountOptions{})
if err != nil { if err != nil {
return model.NewAppError("RequestLicenseAndAckWarnMetric", "api.license.request_trial_license.fail_get_user_count.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("RequestLicenseAndAckWarnMetric", "api.license.request_trial_license.fail_get_user_count.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
if err := a.Channels().RequestTrialLicense(c.Session().UserId, int(registeredUsersCount), true, true); err != nil { if err := a.Channels().RequestTrialLicense(c.Session().UserId, int(registeredUsersCount), true, true); err != nil {

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

@@ -22,7 +22,7 @@ func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *mo
var systemUserCount int64 var systemUserCount int64
systemUserCount, err := a.Srv().Store.User().Count(model.UserCountOptions{}) systemUserCount, err := a.Srv().Store.User().Count(model.UserCountOptions{})
if err != nil { if err != nil {
return nil, model.NewAppError("GetAnalytics", "app.user.get_total_users_count.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetAnalytics", "app.user.get_total_users_count.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if systemUserCount > int64(*a.Config().AnalyticsSettings.MaxUsersForStatistics) { if systemUserCount > int64(*a.Config().AnalyticsSettings.MaxUsersForStatistics) {
@@ -49,7 +49,7 @@ func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *mo
g.Go(func() error { g.Go(func() error {
var err error var err error
if openChannelsCount, err = a.Srv().Store.Channel().AnalyticsTypeCount(teamID, model.ChannelTypeOpen); err != nil { if openChannelsCount, err = a.Srv().Store.Channel().AnalyticsTypeCount(teamID, model.ChannelTypeOpen); err != nil {
return model.NewAppError("GetAnalytics", "app.channel.analytics_type_count.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("GetAnalytics", "app.channel.analytics_type_count.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
}) })
@@ -58,7 +58,7 @@ func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *mo
g.Go(func() error { g.Go(func() error {
var err error var err error
if privateChannelsCount, err = a.Srv().Store.Channel().AnalyticsTypeCount(teamID, model.ChannelTypePrivate); err != nil { if privateChannelsCount, err = a.Srv().Store.Channel().AnalyticsTypeCount(teamID, model.ChannelTypePrivate); err != nil {
return model.NewAppError("GetAnalytics", "app.channel.analytics_type_count.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("GetAnalytics", "app.channel.analytics_type_count.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
}) })
@@ -69,7 +69,7 @@ func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *mo
g.Go(func() error { g.Go(func() error {
var err error var err error
if inactiveUsersCount, err = a.Srv().Store.User().AnalyticsGetInactiveUsersCount(); err != nil { if inactiveUsersCount, err = a.Srv().Store.User().AnalyticsGetInactiveUsersCount(); err != nil {
return model.NewAppError("GetAnalytics", "app.user.analytics_get_inactive_users_count.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("GetAnalytics", "app.user.analytics_get_inactive_users_count.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
}) })
@@ -77,7 +77,7 @@ func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *mo
g.Go(func() error { g.Go(func() error {
var err error var err error
if usersCount, err = a.Srv().Store.User().Count(model.UserCountOptions{TeamId: teamID}); err != nil { if usersCount, err = a.Srv().Store.User().Count(model.UserCountOptions{TeamId: teamID}); err != nil {
return model.NewAppError("GetAnalytics", "app.user.get_total_users_count.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("GetAnalytics", "app.user.get_total_users_count.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
}) })
@@ -88,7 +88,7 @@ func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *mo
g.Go(func() error { g.Go(func() error {
var err error var err error
if postsCount, err = a.Srv().Store.Post().AnalyticsPostCount(&model.PostCountOptions{TeamId: teamID}); err != nil { if postsCount, err = a.Srv().Store.Post().AnalyticsPostCount(&model.PostCountOptions{TeamId: teamID}); err != nil {
return model.NewAppError("GetAnalytics", "app.post.analytics_posts_count.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("GetAnalytics", "app.post.analytics_posts_count.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
}) })
@@ -98,7 +98,7 @@ func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *mo
g.Go(func() error { g.Go(func() error {
var err error var err error
if teamsCount, err = a.Srv().Store.Team().AnalyticsTeamCount(nil); err != nil { if teamsCount, err = a.Srv().Store.Team().AnalyticsTeamCount(nil); err != nil {
return model.NewAppError("GetAnalytics", "app.team.analytics_team_count.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("GetAnalytics", "app.team.analytics_team_count.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
}) })
@@ -107,7 +107,7 @@ func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *mo
g.Go(func() error { g.Go(func() error {
var err error var err error
if dailyActiveUsersCount, err = a.Srv().Store.User().AnalyticsActiveCount(DayMilliseconds, model.UserCountOptions{IncludeBotAccounts: false, IncludeDeleted: false}); err != nil { if dailyActiveUsersCount, err = a.Srv().Store.User().AnalyticsActiveCount(DayMilliseconds, model.UserCountOptions{IncludeBotAccounts: false, IncludeDeleted: false}); err != nil {
return model.NewAppError("GetAnalytics", "app.user.analytics_daily_active_users.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("GetAnalytics", "app.user.analytics_daily_active_users.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
}) })
@@ -116,7 +116,7 @@ func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *mo
g.Go(func() error { g.Go(func() error {
var err error var err error
if monthlyActiveUsersCount, err = a.Srv().Store.User().AnalyticsActiveCount(MonthMilliseconds, model.UserCountOptions{IncludeBotAccounts: false, IncludeDeleted: false}); err != nil { if monthlyActiveUsersCount, err = a.Srv().Store.User().AnalyticsActiveCount(MonthMilliseconds, model.UserCountOptions{IncludeBotAccounts: false, IncludeDeleted: false}); err != nil {
return model.NewAppError("GetAnalytics", "app.user.analytics_daily_active_users.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("GetAnalytics", "app.user.analytics_daily_active_users.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
}) })
@@ -186,7 +186,7 @@ func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *mo
YesterdayOnly: false, YesterdayOnly: false,
}) })
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("GetAnalytics", "app.post.analytics_posts_count_by_day.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetAnalytics", "app.post.analytics_posts_count_by_day.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
return analyticsRows, nil return analyticsRows, nil
@@ -201,7 +201,7 @@ func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *mo
YesterdayOnly: false, YesterdayOnly: false,
}) })
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("GetAnalytics", "app.post.analytics_posts_count_by_day.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetAnalytics", "app.post.analytics_posts_count_by_day.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
return analyticsRows, nil return analyticsRows, nil
@@ -213,7 +213,7 @@ func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *mo
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, "", http.StatusInternalServerError).Wrap(nErr)
} }
return analyticsRows, nil return analyticsRows, nil
@@ -232,7 +232,7 @@ func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *mo
g2.Go(func() error { g2.Go(func() error {
var err error var err error
if incomingWebhookCount, err = a.Srv().Store.Webhook().AnalyticsIncomingCount(teamID); err != nil { if incomingWebhookCount, err = a.Srv().Store.Webhook().AnalyticsIncomingCount(teamID); err != nil {
return model.NewAppError("GetAnalytics", "app.webhooks.analytics_incoming_count.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("GetAnalytics", "app.webhooks.analytics_incoming_count.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
}) })
@@ -241,7 +241,7 @@ func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *mo
g2.Go(func() error { g2.Go(func() error {
var err error var err error
if outgoingWebhookCount, err = a.Srv().Store.Webhook().AnalyticsOutgoingCount(teamID); err != nil { if outgoingWebhookCount, err = a.Srv().Store.Webhook().AnalyticsOutgoingCount(teamID); err != nil {
return model.NewAppError("GetAnalytics", "app.webhooks.analytics_outgoing_count.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("GetAnalytics", "app.webhooks.analytics_outgoing_count.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
}) })
@@ -250,7 +250,7 @@ func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *mo
g2.Go(func() error { g2.Go(func() error {
var err error var err error
if commandsCount, err = a.Srv().Store.Command().AnalyticsCommandCount(teamID); err != nil { if commandsCount, err = a.Srv().Store.Command().AnalyticsCommandCount(teamID); err != nil {
return model.NewAppError("GetAnalytics", "app.analytics.getanalytics.internal_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("GetAnalytics", "app.analytics.getanalytics.internal_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
}) })
@@ -259,7 +259,7 @@ func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *mo
g2.Go(func() error { g2.Go(func() error {
var err error var err error
if sessionsCount, err = a.Srv().Store.Session().AnalyticsSessionCount(); err != nil { if sessionsCount, err = a.Srv().Store.Session().AnalyticsSessionCount(); err != nil {
return model.NewAppError("GetAnalytics", "app.session.analytics_session_count.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("GetAnalytics", "app.session.analytics_session_count.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
}) })
@@ -270,7 +270,7 @@ func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *mo
g2.Go(func() error { g2.Go(func() error {
var err error var err error
if filesCount, err = a.Srv().Store.Post().AnalyticsPostCount(&model.PostCountOptions{TeamId: teamID, MustHaveFile: true}); err != nil { if filesCount, err = a.Srv().Store.Post().AnalyticsPostCount(&model.PostCountOptions{TeamId: teamID, MustHaveFile: true}); err != nil {
return model.NewAppError("GetAnalytics", "app.post.analytics_posts_count.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("GetAnalytics", "app.post.analytics_posts_count.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
}) })
@@ -278,7 +278,7 @@ func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *mo
g2.Go(func() error { g2.Go(func() error {
var err error var err error
if hashtagsCount, err = a.Srv().Store.Post().AnalyticsPostCount(&model.PostCountOptions{TeamId: teamID, MustHaveHashtag: true}); err != nil { if hashtagsCount, err = a.Srv().Store.Post().AnalyticsPostCount(&model.PostCountOptions{TeamId: teamID, MustHaveHashtag: true}); err != nil {
return model.NewAppError("GetAnalytics", "app.post.analytics_posts_count.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("GetAnalytics", "app.post.analytics_posts_count.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
}) })
@@ -310,7 +310,7 @@ func (a *App) GetAnalytics(name string, teamID string) (model.AnalyticsRows, *mo
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, "", http.StatusInternalServerError).Wrap(err)
} }
userMap := make(map[string]*model.User) userMap := make(map[string]*model.User)
@@ -325,7 +325,7 @@ func (a *App) GetRecentlyActiveUsersForTeam(teamID string) (map[string]*model.Us
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, "", http.StatusInternalServerError).Wrap(err)
} }
return a.sanitizeProfiles(users, asAdmin), nil return a.sanitizeProfiles(users, asAdmin), nil
@@ -334,7 +334,7 @@ func (a *App) GetRecentlyActiveUsersForTeamPage(teamID string, page, perPage int
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, "", http.StatusInternalServerError).Wrap(err)
} }
return a.sanitizeProfiles(users, asAdmin), nil return a.sanitizeProfiles(users, asAdmin), nil

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

@@ -61,11 +61,11 @@ func (a *App) Handle404(w http.ResponseWriter, r *http.Request) {
func (s *Server) getSystemInstallDate() (int64, *model.AppError) { func (s *Server) getSystemInstallDate() (int64, *model.AppError) {
systemData, err := s.Store.System().GetByName(model.SystemInstallationDateKey) systemData, err := s.Store.System().GetByName(model.SystemInstallationDateKey)
if err != nil { if err != nil {
return 0, model.NewAppError("getSystemInstallDate", "app.system.get_by_name.app_error", nil, err.Error(), http.StatusInternalServerError) return 0, model.NewAppError("getSystemInstallDate", "app.system.get_by_name.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
value, err := strconv.ParseInt(systemData.Value, 10, 64) value, err := strconv.ParseInt(systemData.Value, 10, 64)
if err != nil { if err != nil {
return 0, model.NewAppError("getSystemInstallDate", "app.system_install_date.parse_int.app_error", nil, err.Error(), http.StatusInternalServerError) return 0, model.NewAppError("getSystemInstallDate", "app.system_install_date.parse_int.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return value, nil return value, nil
} }
@@ -73,11 +73,11 @@ func (s *Server) getSystemInstallDate() (int64, *model.AppError) {
func (s *Server) getFirstServerRunTimestamp() (int64, *model.AppError) { func (s *Server) getFirstServerRunTimestamp() (int64, *model.AppError) {
systemData, err := s.Store.System().GetByName(model.SystemFirstServerRunTimestampKey) systemData, err := s.Store.System().GetByName(model.SystemFirstServerRunTimestampKey)
if err != nil { if err != nil {
return 0, model.NewAppError("getFirstServerRunTimestamp", "app.system.get_by_name.app_error", nil, err.Error(), http.StatusInternalServerError) return 0, model.NewAppError("getFirstServerRunTimestamp", "app.system.get_by_name.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
value, err := strconv.ParseInt(systemData.Value, 10, 64) value, err := strconv.ParseInt(systemData.Value, 10, 64)
if err != nil { if err != nil {
return 0, model.NewAppError("getFirstServerRunTimestamp", "app.system_install_date.parse_int.app_error", nil, err.Error(), http.StatusInternalServerError) return 0, model.NewAppError("getFirstServerRunTimestamp", "app.system_install_date.parse_int.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return value, nil return value, nil
} }

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

@@ -103,11 +103,13 @@ type AppIface interface {
// DefaultChannelNames returns the list of system-wide default channel names. // DefaultChannelNames returns the list of system-wide default channel names.
// //
// By default the list will be (not necessarily in this order): // By default the list will be (not necessarily in this order):
//
// ['town-square', 'off-topic'] // ['town-square', 'off-topic']
//
// However, if TeamSettings.ExperimentalDefaultChannels contains a list of channels then that list will replace // However, if TeamSettings.ExperimentalDefaultChannels contains a list of channels then that list will replace
// 'off-topic' and be included in the return results in addition to 'town-square'. For example: // 'off-topic' and be included in the return results in addition to 'town-square'. For example:
// ['town-square', 'game-of-thrones', 'wow']
// //
// ['town-square', 'game-of-thrones', 'wow']
DefaultChannelNames(c request.CTX) []string DefaultChannelNames(c request.CTX) []string
// DeleteChannelScheme deletes a channels scheme and sets its SchemeId to nil. // DeleteChannelScheme deletes a channels scheme and sets its SchemeId to nil.
DeleteChannelScheme(c request.CTX, channel *model.Channel) (*model.Channel, *model.AppError) DeleteChannelScheme(c request.CTX, channel *model.Channel) (*model.Channel, *model.AppError)
@@ -227,6 +229,8 @@ type AppIface interface {
GetTeamSchemeChannelRoles(c request.CTX, teamID string) (guestRoleName string, userRoleName string, adminRoleName string, err *model.AppError) GetTeamSchemeChannelRoles(c request.CTX, 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)
// GetUserStatusesByIds used by apiV4
GetUserStatusesByIds(userIDs []string) ([]*model.Status, *model.AppError)
// HasRemote returns whether a given channelID is present in the channel remotes or not. // HasRemote returns whether a given channelID is present in the channel remotes or not.
HasRemote(channelID string, remoteID string) (bool, error) HasRemote(channelID string, remoteID string) (bool, error)
// HubRegister registers a connection to a hub. // HubRegister registers a connection to a hub.
@@ -388,8 +392,6 @@ type AppIface interface {
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(userIDs []string) ([]*model.Status, *model.AppError)
AccountMigration() einterfaces.AccountMigrationInterface AccountMigration() einterfaces.AccountMigrationInterface
ActivateMfa(userID, token string) *model.AppError ActivateMfa(userID, token string) *model.AppError
AddChannelsToRetentionPolicy(policyID string, channelIDs []string) *model.AppError AddChannelsToRetentionPolicy(policyID string, channelIDs []string) *model.AppError
@@ -493,7 +495,7 @@ type AppIface interface {
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(c request.CTX, userID, teamID string, newCategory *model.SidebarCategoryWithChannels) (*model.SidebarCategoryWithChannels, *model.AppError) CreateSidebarCategory(c request.CTX, userID, teamID string, newCategory *model.SidebarCategoryWithChannels) (*model.SidebarCategoryWithChannels, *model.AppError)
CreateTeam(c *request.Context, team *model.Team) (*model.Team, *model.AppError) CreateTeam(c request.CTX, team *model.Team) (*model.Team, *model.AppError)
CreateTeamWithUser(c *request.Context, team *model.Team, userID string) (*model.Team, *model.AppError) CreateTeamWithUser(c *request.Context, team *model.Team, userID string) (*model.Team, *model.AppError)
CreateTermsOfService(text, userID string) (*model.TermsOfService, *model.AppError) CreateTermsOfService(text, userID string) (*model.TermsOfService, *model.AppError)
CreateUploadSession(c request.CTX, us *model.UploadSession) (*model.UploadSession, *model.AppError) CreateUploadSession(c request.CTX, us *model.UploadSession) (*model.UploadSession, *model.AppError)
@@ -546,7 +548,7 @@ type AppIface interface {
DoPostAction(c *request.Context, postID, actionId, userID, selectedOption string) (string, *model.AppError) DoPostAction(c *request.Context, postID, actionId, userID, selectedOption string) (string, *model.AppError)
DoPostActionWithCookie(c *request.Context, postID, actionId, userID, selectedOption string, cookie *model.PostActionCookie) (string, *model.AppError) DoPostActionWithCookie(c *request.Context, postID, actionId, userID, selectedOption string, cookie *model.PostActionCookie) (string, *model.AppError)
DoSystemConsoleRolesCreationMigration() DoSystemConsoleRolesCreationMigration()
DoUploadFile(c *request.Context, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, *model.AppError) DoUploadFile(c request.CTX, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, *model.AppError)
DoUploadFileExpectModification(c request.CTX, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError) DoUploadFileExpectModification(c request.CTX, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError)
DownloadFromURL(downloadURL string) ([]byte, error) DownloadFromURL(downloadURL string) ([]byte, error)
EnableUserAccessToken(token *model.UserAccessToken) *model.AppError EnableUserAccessToken(token *model.UserAccessToken) *model.AppError

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

@@ -29,9 +29,9 @@ func (a *App) GetAudits(userID string, limit int) (model.Audits, *model.AppError
var outErr *store.ErrOutOfBounds var outErr *store.ErrOutOfBounds
switch { switch {
case errors.As(err, &outErr): case errors.As(err, &outErr):
return nil, model.NewAppError("GetAudits", "app.audit.get.limit.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetAudits", "app.audit.get.limit.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("GetAudits", "app.audit.get.finding.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetAudits", "app.audit.get.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return audits, nil return audits, nil
@@ -43,9 +43,9 @@ func (a *App) GetAuditsPage(userID string, page int, perPage int) (model.Audits,
var outErr *store.ErrOutOfBounds var outErr *store.ErrOutOfBounds
switch { switch {
case errors.As(err, &outErr): case errors.As(err, &outErr):
return nil, model.NewAppError("GetAuditsPage", "app.audit.get.limit.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetAuditsPage", "app.audit.get.limit.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("GetAuditsPage", "app.audit.get.finding.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetAuditsPage", "app.audit.get.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return audits, nil return audits, nil

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

@@ -50,9 +50,9 @@ func (a *App) IsPasswordValid(password string) *model.AppError {
var invErr *users.ErrInvalidPassword var invErr *users.ErrInvalidPassword
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return model.NewAppError("User.IsValid", invErr.Id(), map[string]any{"Min": *a.Config().PasswordSettings.MinimumLength}, "", http.StatusBadRequest) return model.NewAppError("User.IsValid", invErr.Id(), map[string]any{"Min": *a.Config().PasswordSettings.MinimumLength}, "", http.StatusBadRequest).Wrap(err)
default: default:
return model.NewAppError("User.IsValid", "app.valid_password_generic.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("User.IsValid", "app.valid_password_generic.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -66,7 +66,7 @@ func (a *App) CheckPasswordAndAllCriteria(user *model.User, password string, mfa
if err := users.CheckUserPassword(user, password); err != nil { if err := users.CheckUserPassword(user, password); err != nil {
if passErr := a.Srv().Store.User().UpdateFailedPasswordAttempts(user.Id, user.FailedAttempts+1); passErr != nil { if passErr := a.Srv().Store.User().UpdateFailedPasswordAttempts(user.Id, user.FailedAttempts+1); passErr != nil {
return model.NewAppError("CheckPasswordAndAllCriteria", "app.user.update_failed_pwd_attempts.app_error", nil, passErr.Error(), http.StatusInternalServerError) return model.NewAppError("CheckPasswordAndAllCriteria", "app.user.update_failed_pwd_attempts.app_error", nil, "", http.StatusInternalServerError).Wrap(passErr)
} }
a.InvalidateCacheForUser(user.Id) a.InvalidateCacheForUser(user.Id)
@@ -74,9 +74,9 @@ func (a *App) CheckPasswordAndAllCriteria(user *model.User, password string, mfa
var invErr *users.ErrInvalidPassword var invErr *users.ErrInvalidPassword
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return model.NewAppError("checkUserPassword", "api.user.check_user_password.invalid.app_error", nil, "user_id="+user.Id, http.StatusUnauthorized) return model.NewAppError("checkUserPassword", "api.user.check_user_password.invalid.app_error", nil, "user_id="+user.Id, http.StatusUnauthorized).Wrap(err)
default: default:
return model.NewAppError("checkUserPassword", "app.valid_password_generic.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("checkUserPassword", "app.valid_password_generic.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -85,7 +85,7 @@ func (a *App) CheckPasswordAndAllCriteria(user *model.User, password string, mfa
// about the MFA state of the user in question // about the MFA state of the user in question
if mfaToken != "" { if mfaToken != "" {
if passErr := a.Srv().Store.User().UpdateFailedPasswordAttempts(user.Id, user.FailedAttempts+1); passErr != nil { if passErr := a.Srv().Store.User().UpdateFailedPasswordAttempts(user.Id, user.FailedAttempts+1); passErr != nil {
return model.NewAppError("CheckPasswordAndAllCriteria", "app.user.update_failed_pwd_attempts.app_error", nil, passErr.Error(), http.StatusInternalServerError) return model.NewAppError("CheckPasswordAndAllCriteria", "app.user.update_failed_pwd_attempts.app_error", nil, "", http.StatusInternalServerError).Wrap(passErr)
} }
} }
@@ -95,7 +95,7 @@ func (a *App) CheckPasswordAndAllCriteria(user *model.User, password string, mfa
} }
if passErr := a.Srv().Store.User().UpdateFailedPasswordAttempts(user.Id, 0); passErr != nil { if passErr := a.Srv().Store.User().UpdateFailedPasswordAttempts(user.Id, 0); passErr != nil {
return model.NewAppError("CheckPasswordAndAllCriteria", "app.user.update_failed_pwd_attempts.app_error", nil, passErr.Error(), http.StatusInternalServerError) return model.NewAppError("CheckPasswordAndAllCriteria", "app.user.update_failed_pwd_attempts.app_error", nil, "", http.StatusInternalServerError).Wrap(passErr)
} }
a.InvalidateCacheForUser(user.Id) a.InvalidateCacheForUser(user.Id)
@@ -115,7 +115,7 @@ func (a *App) DoubleCheckPassword(user *model.User, password string) *model.AppE
if err := users.CheckUserPassword(user, password); err != nil { if err := users.CheckUserPassword(user, password); err != nil {
if passErr := a.Srv().Store.User().UpdateFailedPasswordAttempts(user.Id, user.FailedAttempts+1); passErr != nil { if passErr := a.Srv().Store.User().UpdateFailedPasswordAttempts(user.Id, user.FailedAttempts+1); passErr != nil {
return model.NewAppError("DoubleCheckPassword", "app.user.update_failed_pwd_attempts.app_error", nil, passErr.Error(), http.StatusInternalServerError) return model.NewAppError("DoubleCheckPassword", "app.user.update_failed_pwd_attempts.app_error", nil, "", http.StatusInternalServerError).Wrap(passErr)
} }
a.InvalidateCacheForUser(user.Id) a.InvalidateCacheForUser(user.Id)
@@ -123,14 +123,14 @@ func (a *App) DoubleCheckPassword(user *model.User, password string) *model.AppE
var invErr *users.ErrInvalidPassword var invErr *users.ErrInvalidPassword
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return model.NewAppError("DoubleCheckPassword", "api.user.check_user_password.invalid.app_error", nil, "user_id="+user.Id, http.StatusUnauthorized) return model.NewAppError("DoubleCheckPassword", "api.user.check_user_password.invalid.app_error", nil, "user_id="+user.Id, http.StatusUnauthorized).Wrap(err)
default: default:
return model.NewAppError("DoubleCheckPassword", "app.valid_password_generic.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DoubleCheckPassword", "app.valid_password_generic.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
if passErr := a.Srv().Store.User().UpdateFailedPasswordAttempts(user.Id, 0); passErr != nil { if passErr := a.Srv().Store.User().UpdateFailedPasswordAttempts(user.Id, 0); passErr != nil {
return model.NewAppError("DoubleCheckPassword", "app.user.update_failed_pwd_attempts.app_error", nil, passErr.Error(), http.StatusInternalServerError) return model.NewAppError("DoubleCheckPassword", "app.user.update_failed_pwd_attempts.app_error", nil, "", http.StatusInternalServerError).Wrap(passErr)
} }
a.InvalidateCacheForUser(user.Id) a.InvalidateCacheForUser(user.Id)
@@ -209,7 +209,7 @@ func (a *App) CheckUserMfa(user *model.User, token string) *model.AppError {
ok, err := mfa.New(a.Srv().Store.User()).ValidateToken(user.MfaSecret, token) ok, err := mfa.New(a.Srv().Store.User()).ValidateToken(user.MfaSecret, token)
if err != nil { if err != nil {
return model.NewAppError("CheckUserMfa", "mfa.validate_token.authenticate.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("CheckUserMfa", "mfa.validate_token.authenticate.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
if !ok { if !ok {

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

@@ -43,7 +43,7 @@ func (a *App) SendAutoResponseIfNecessary(c request.CTX, channel *model.Channel,
autoResponded, err := a.checkIfRespondedToday(post.CreateAt, post.ChannelId, receiverId) autoResponded, err := a.checkIfRespondedToday(post.CreateAt, post.ChannelId, receiverId)
if err != nil { if err != nil {
return false, model.NewAppError("SendAutoResponseIfNecessary", "app.user.send_auto_response.app_error", nil, err.Error(), http.StatusInternalServerError) return false, model.NewAppError("SendAutoResponseIfNecessary", "app.user.send_auto_response.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if autoResponded { if autoResponded {
return false, nil return false, nil

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

@@ -126,9 +126,9 @@ func (a *App) CreateBot(c request.CTX, bot *model.Bot) (*model.Bot, *model.AppEr
default: default:
code = "app.user.save.existing.app_error" code = "app.user.save.existing.app_error"
} }
return nil, model.NewAppError("CreateBot", code, nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("CreateBot", code, nil, "", http.StatusBadRequest).Wrap(nErr)
default: default:
return nil, model.NewAppError("CreateBot", "app.user.save.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateBot", "app.user.save.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
bot.UserId = user.Id bot.UserId = user.Id
@@ -141,7 +141,7 @@ func (a *App) CreateBot(c request.CTX, bot *model.Bot) (*model.Bot, *model.AppEr
case errors.As(nErr, &appErr): // in case we haven't converted to plain error. case errors.As(nErr, &appErr): // in case we haven't converted to plain error.
return nil, appErr return nil, appErr
default: // last fallback in case it doesn't map to an existing app error. default: // last fallback in case it doesn't map to an existing app error.
return nil, model.NewAppError("CreateBot", "app.bot.createbot.internal_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateBot", "app.bot.createbot.internal_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -149,7 +149,7 @@ func (a *App) CreateBot(c request.CTX, bot *model.Bot) (*model.Bot, *model.AppEr
ownerUser, err := a.Srv().Store.User().Get(context.Background(), bot.OwnerId) ownerUser, err := a.Srv().Store.User().Get(context.Background(), bot.OwnerId)
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
if err != nil && !errors.As(err, &nfErr) { if err != nil && !errors.As(err, &nfErr) {
return nil, model.NewAppError("CreateBot", "app.user.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateBot", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} else if ownerUser != nil { } else if ownerUser != nil {
// Send a message to the bot's creator to inform them that the bot needs to be added // Send a message to the bot's creator to inform them that the bot needs to be added
// to a team and channel after it's created // to a team and channel after it's created
@@ -261,9 +261,9 @@ func (a *App) getOrCreateBot(botDef *model.Bot) (*model.Bot, *model.AppError) {
default: default:
code = "app.user.save.existing.app_error" code = "app.user.save.existing.app_error"
} }
return nil, model.NewAppError("getOrCreateBot", code, nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("getOrCreateBot", code, nil, "", http.StatusBadRequest).Wrap(nErr)
default: default:
return nil, model.NewAppError("getOrCreateBot", "app.user.save.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("getOrCreateBot", "app.user.save.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
botDef.UserId = user.Id botDef.UserId = user.Id
@@ -277,7 +277,7 @@ func (a *App) getOrCreateBot(botDef *model.Bot) (*model.Bot, *model.AppError) {
case errors.As(nErr, &nAppErr): // in case we haven't converted to plain error. case errors.As(nErr, &nAppErr): // in case we haven't converted to plain error.
return nil, nAppErr return nil, nAppErr
default: // last fallback in case it doesn't map to an existing app error. default: // last fallback in case it doesn't map to an existing app error.
return nil, model.NewAppError("getOrCreateBot", "app.bot.createbot.internal_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("getOrCreateBot", "app.bot.createbot.internal_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
return savedBot, nil return savedBot, nil
@@ -314,9 +314,9 @@ func (a *App) PatchBot(botUserId string, botPatch *model.BotPatch) (*model.Bot,
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return nil, model.NewAppError("PatchBot", MissingAccountError, nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("PatchBot", MissingAccountError, nil, "", http.StatusNotFound).Wrap(nErr)
default: default:
return nil, model.NewAppError("PatchBot", "app.user.get.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("PatchBot", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -335,14 +335,14 @@ func (a *App) PatchBot(botUserId string, botPatch *model.BotPatch) (*model.Bot,
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
return nil, appErr return nil, appErr
case errors.As(nErr, &invErr): case errors.As(nErr, &invErr):
return nil, model.NewAppError("PatchBot", "app.user.update.find.app_error", nil, nErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("PatchBot", "app.user.update.find.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
case errors.As(nErr, &conErr): case errors.As(nErr, &conErr):
if cErr, ok := nErr.(*store.ErrConflict); ok && cErr.Resource == "Username" { if conErr.Resource == "Username" {
return nil, model.NewAppError("PatchBot", "app.user.save.username_exists.app_error", nil, nErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("PatchBot", "app.user.save.username_exists.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
} }
return nil, model.NewAppError("PatchBot", "app.user.save.email_exists.app_error", nil, nErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("PatchBot", "app.user.save.email_exists.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
default: default:
return nil, model.NewAppError("PatchBot", "app.user.update.finding.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("PatchBot", "app.user.update.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
a.InvalidateCacheForUser(user.Id) a.InvalidateCacheForUser(user.Id)
@@ -356,11 +356,11 @@ func (a *App) PatchBot(botUserId string, botPatch *model.BotPatch) (*model.Bot,
var appErr *model.AppError var appErr *model.AppError
switch { switch {
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return nil, model.MakeBotNotFoundError(nfErr.ID) return nil, model.MakeBotNotFoundError(nfErr.ID).Wrap(nErr)
case errors.As(nErr, &appErr): // in case we haven't converted to plain error. case errors.As(nErr, &appErr): // in case we haven't converted to plain error.
return nil, appErr return nil, appErr
default: // last fallback in case it doesn't map to an existing app error. default: // last fallback in case it doesn't map to an existing app error.
return nil, model.NewAppError("PatchBot", "app.bot.patchbot.internal_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("PatchBot", "app.bot.patchbot.internal_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
return bot, nil return bot, nil
@@ -373,9 +373,9 @@ func (a *App) GetBot(botUserId string, includeDeleted bool) (*model.Bot, *model.
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.MakeBotNotFoundError(nfErr.ID) return nil, model.MakeBotNotFoundError(nfErr.ID).Wrap(err)
default: // last fallback in case it doesn't map to an existing app error. default: // last fallback in case it doesn't map to an existing app error.
return nil, model.NewAppError("GetBot", "app.bot.getbot.internal_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetBot", "app.bot.getbot.internal_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return bot, nil return bot, nil
@@ -385,7 +385,7 @@ func (a *App) GetBot(botUserId string, includeDeleted bool) (*model.Bot, *model.
func (a *App) GetBots(options *model.BotGetOptions) (model.BotList, *model.AppError) { func (a *App) GetBots(options *model.BotGetOptions) (model.BotList, *model.AppError) {
bots, err := a.Srv().Store.Bot().GetAll(options) bots, err := a.Srv().Store.Bot().GetAll(options)
if err != nil { if err != nil {
return nil, model.NewAppError("GetBots", "app.bot.getbots.internal_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetBots", "app.bot.getbots.internal_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return bots, nil return bots, nil
} }
@@ -397,9 +397,9 @@ func (a *App) UpdateBotActive(c request.CTX, botUserId string, active bool) (*mo
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return nil, model.NewAppError("PatchBot", MissingAccountError, nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("PatchBot", MissingAccountError, nil, "", http.StatusNotFound).Wrap(nErr)
default: default:
return nil, model.NewAppError("PatchBot", "app.user.get.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("PatchBot", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -412,9 +412,9 @@ func (a *App) UpdateBotActive(c request.CTX, botUserId string, active bool) (*mo
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return nil, model.MakeBotNotFoundError(nfErr.ID) return nil, model.MakeBotNotFoundError(nfErr.ID).Wrap(nErr)
default: // last fallback in case it doesn't map to an existing app error. default: // last fallback in case it doesn't map to an existing app error.
return nil, model.NewAppError("UpdateBotActive", "app.bot.getbot.internal_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateBotActive", "app.bot.getbot.internal_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -434,11 +434,11 @@ func (a *App) UpdateBotActive(c request.CTX, botUserId string, active bool) (*mo
var appErr *model.AppError var appErr *model.AppError
switch { switch {
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return nil, model.MakeBotNotFoundError(nfErr.ID) return nil, model.MakeBotNotFoundError(nfErr.ID).Wrap(nErr)
case errors.As(nErr, &appErr): // in case we haven't converted to plain error. case errors.As(nErr, &appErr): // in case we haven't converted to plain error.
return nil, appErr return nil, appErr
default: // last fallback in case it doesn't map to an existing app error. default: // last fallback in case it doesn't map to an existing app error.
return nil, model.NewAppError("PatchBot", "app.bot.patchbot.internal_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("PatchBot", "app.bot.patchbot.internal_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
} }
@@ -452,14 +452,14 @@ func (a *App) PermanentDeleteBot(botUserId string) *model.AppError {
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return model.NewAppError("PermanentDeleteBot", "app.bot.permenent_delete.bad_id", map[string]any{"user_id": invErr.Value}, invErr.Error(), http.StatusBadRequest) return model.NewAppError("PermanentDeleteBot", "app.bot.permenent_delete.bad_id", map[string]any{"user_id": invErr.Value}, "", http.StatusBadRequest).Wrap(err)
default: // last fallback in case it doesn't map to an existing app error. default: // last fallback in case it doesn't map to an existing app error.
return model.NewAppError("PatchBot", "app.bot.permanent_delete.internal_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PatchBot", "app.bot.permanent_delete.internal_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
if err := a.Srv().Store.User().PermanentDelete(botUserId); err != nil { if err := a.Srv().Store.User().PermanentDelete(botUserId); err != nil {
return model.NewAppError("PermanentDeleteBot", "app.user.permanent_delete.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteBot", "app.user.permanent_delete.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
@@ -472,9 +472,9 @@ func (a *App) UpdateBotOwner(botUserId, newOwnerId string) (*model.Bot, *model.A
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.MakeBotNotFoundError(nfErr.ID) return nil, model.MakeBotNotFoundError(nfErr.ID).Wrap(err)
default: // last fallback in case it doesn't map to an existing app error. default: // last fallback in case it doesn't map to an existing app error.
return nil, model.NewAppError("UpdateBotOwner", "app.bot.getbot.internal_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateBotOwner", "app.bot.getbot.internal_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -486,11 +486,11 @@ func (a *App) UpdateBotOwner(botUserId, newOwnerId string) (*model.Bot, *model.A
var appErr *model.AppError var appErr *model.AppError
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.MakeBotNotFoundError(nfErr.ID) return nil, model.MakeBotNotFoundError(nfErr.ID).Wrap(err)
case errors.As(err, &appErr): // in case we haven't converted to plain error. case errors.As(err, &appErr): // in case we haven't converted to plain error.
return nil, appErr return nil, appErr
default: // last fallback in case it doesn't map to an existing app error. default: // last fallback in case it doesn't map to an existing app error.
return nil, model.NewAppError("PatchBot", "app.bot.patchbot.internal_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("PatchBot", "app.bot.patchbot.internal_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -651,7 +651,7 @@ func (a *App) ConvertUserToBot(user *model.User) (*model.Bot, *model.AppError) {
case errors.As(err, &appErr): // in case we haven't converted to plain error. case errors.As(err, &appErr): // in case we haven't converted to plain error.
return nil, appErr return nil, appErr
default: // last fallback in case it doesn't map to an existing app error. default: // last fallback in case it doesn't map to an existing app error.
return nil, model.NewAppError("CreateBot", "app.bot.createbot.internal_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateBot", "app.bot.createbot.internal_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return bot, nil return bot, nil

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

@@ -24,30 +24,30 @@ func (a *App) SaveBrandImage(imageData *multipart.FileHeader) *model.AppError {
file, err := imageData.Open() file, err := imageData.Open()
if err != nil { if err != nil {
return model.NewAppError("SaveBrandImage", "brand.save_brand_image.open.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("SaveBrandImage", "brand.save_brand_image.open.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
defer file.Close() defer file.Close()
if err = checkImageLimits(file, *a.Config().FileSettings.MaxImageResolution); err != nil { if err = checkImageLimits(file, *a.Config().FileSettings.MaxImageResolution); err != nil {
return model.NewAppError("SaveBrandImage", "brand.save_brand_image.check_image_limits.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("SaveBrandImage", "brand.save_brand_image.check_image_limits.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
img, _, err := a.ch.imgDecoder.Decode(file) img, _, err := a.ch.imgDecoder.Decode(file)
if err != nil { if err != nil {
return model.NewAppError("SaveBrandImage", "brand.save_brand_image.decode.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("SaveBrandImage", "brand.save_brand_image.decode.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
err = a.ch.imgEncoder.EncodePNG(buf, img) err = a.ch.imgEncoder.EncodePNG(buf, img)
if err != nil { if err != nil {
return model.NewAppError("SaveBrandImage", "brand.save_brand_image.encode.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SaveBrandImage", "brand.save_brand_image.encode.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
t := time.Now() t := time.Now()
a.MoveFile(BrandFilePath+BrandFileName, BrandFilePath+t.Format("2006-01-02T15:04:05")+".png") a.MoveFile(BrandFilePath+BrandFileName, BrandFilePath+t.Format("2006-01-02T15:04:05")+".png")
if _, err := a.WriteFile(buf, BrandFilePath+BrandFileName); err != nil { if _, err := a.WriteFile(buf, BrandFilePath+BrandFileName); err != nil {
return model.NewAppError("SaveBrandImage", "brand.save_brand_image.save_image.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SaveBrandImage", "brand.save_brand_image.save_image.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil

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

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

@@ -17,7 +17,7 @@ import (
func (a *App) createInitialSidebarCategories(userID string, opts *store.SidebarCategorySearchOpts) (*model.OrderedSidebarCategories, *model.AppError) { func (a *App) createInitialSidebarCategories(userID string, opts *store.SidebarCategorySearchOpts) (*model.OrderedSidebarCategories, *model.AppError) {
categories, nErr := a.Srv().Store.Channel().CreateInitialSidebarCategories(userID, opts) categories, nErr := a.Srv().Store.Channel().CreateInitialSidebarCategories(userID, opts)
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("createInitialSidebarCategories", "app.channel.create_initial_sidebar_categories.internal_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("createInitialSidebarCategories", "app.channel.create_initial_sidebar_categories.internal_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
return categories, nil return categories, nil
@@ -41,9 +41,9 @@ func (a *App) GetSidebarCategoriesForTeamForUser(c request.CTX, userID, teamID s
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetSidebarCategoriesForTeamForUser", "app.channel.sidebar_categories.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetSidebarCategoriesForTeamForUser", "app.channel.sidebar_categories.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetSidebarCategoriesForTeamForUser", "app.channel.sidebar_categories.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetSidebarCategoriesForTeamForUser", "app.channel.sidebar_categories.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -65,9 +65,9 @@ func (a *App) GetSidebarCategories(c request.CTX, userID string, opts *store.Sid
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetSidebarCategories", "app.channel.sidebar_categories.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetSidebarCategories", "app.channel.sidebar_categories.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetSidebarCategories", "app.channel.sidebar_categories.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetSidebarCategories", "app.channel.sidebar_categories.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -80,9 +80,9 @@ func (a *App) GetSidebarCategoryOrder(c request.CTX, userID, teamID string) ([]s
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetSidebarCategoryOrder", "app.channel.sidebar_categories.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetSidebarCategoryOrder", "app.channel.sidebar_categories.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetSidebarCategoryOrder", "app.channel.sidebar_categories.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetSidebarCategoryOrder", "app.channel.sidebar_categories.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -95,9 +95,9 @@ func (a *App) GetSidebarCategory(c request.CTX, categoryId string) (*model.Sideb
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetSidebarCategory", "app.channel.sidebar_categories.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetSidebarCategory", "app.channel.sidebar_categories.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetSidebarCategory", "app.channel.sidebar_categories.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetSidebarCategory", "app.channel.sidebar_categories.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -110,9 +110,9 @@ func (a *App) CreateSidebarCategory(c request.CTX, userID, teamID string, newCat
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("CreateSidebarCategory", "app.channel.sidebar_categories.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("CreateSidebarCategory", "app.channel.sidebar_categories.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
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, "", http.StatusInternalServerError).Wrap(err)
} }
} }
message := model.NewWebSocketEvent(model.WebsocketEventSidebarCategoryCreated, teamID, "", userID, nil) message := model.NewWebSocketEvent(model.WebsocketEventSidebarCategoryCreated, teamID, "", userID, nil)
@@ -128,11 +128,11 @@ func (a *App) UpdateSidebarCategoryOrder(c request.CTX, userID, teamID string, c
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return model.NewAppError("UpdateSidebarCategoryOrder", "app.channel.sidebar_categories.app_error", nil, nfErr.Error(), http.StatusNotFound) return model.NewAppError("UpdateSidebarCategoryOrder", "app.channel.sidebar_categories.app_error", nil, "", http.StatusNotFound).Wrap(err)
case errors.As(err, &invErr): case errors.As(err, &invErr):
return model.NewAppError("UpdateSidebarCategoryOrder", "app.channel.sidebar_categories.app_error", nil, invErr.Error(), http.StatusBadRequest) return model.NewAppError("UpdateSidebarCategoryOrder", "app.channel.sidebar_categories.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
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, "", http.StatusInternalServerError).Wrap(err)
} }
} }
message := model.NewWebSocketEvent(model.WebsocketEventSidebarCategoryOrderUpdated, teamID, "", userID, nil) message := model.NewWebSocketEvent(model.WebsocketEventSidebarCategoryOrderUpdated, teamID, "", userID, nil)
@@ -274,9 +274,9 @@ func (a *App) DeleteSidebarCategory(c request.CTX, userID, teamID, categoryId st
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return model.NewAppError("DeleteSidebarCategory", "app.channel.sidebar_categories.app_error", nil, invErr.Error(), http.StatusBadRequest) return model.NewAppError("DeleteSidebarCategory", "app.channel.sidebar_categories.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return model.NewAppError("DeleteSidebarCategory", "app.channel.sidebar_categories.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DeleteSidebarCategory", "app.channel.sidebar_categories.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }

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

@@ -224,6 +224,8 @@ func NewChannels(s *Server, services map[ServiceKey]any) (*Channels, error) {
ch: ch, ch: ch,
} }
services[UserKey] = &App{ch: ch}
return ch, nil return ch, nil
} }

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

@@ -101,7 +101,7 @@ func (a *App) ListAutocompleteCommands(teamID string, T i18n.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, "", http.StatusInternalServerError).Wrap(err)
} }
for _, cmd := range teamCmds { for _, cmd := range teamCmds {
@@ -134,7 +134,7 @@ func (a *App) ListTeamCommands(teamID string) ([]*model.Command, *model.AppError
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, "", http.StatusInternalServerError).Wrap(err)
} }
return teamCmds, nil return teamCmds, nil
@@ -164,7 +164,7 @@ func (a *App) ListAllCommands(teamID string, T i18n.TranslateFunc) ([]*model.Com
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, "", http.StatusInternalServerError).Wrap(err)
} }
for _, cmd := range teamCmds { for _, cmd := range teamCmds {
if !seen[cmd.Trigger] { if !seen[cmd.Trigger] {
@@ -391,7 +391,7 @@ func (a *App) tryExecuteCustomCommand(c request.CTX, args *model.CommandArgs, tr
teamCmds, err := a.Srv().Store.Command().GetByTeam(args.TeamId) teamCmds, err := a.Srv().Store.Command().GetByTeam(args.TeamId)
if err != nil { if err != nil {
return nil, nil, model.NewAppError("tryExecuteCustomCommand", "app.command.tryexecutecustomcommand.internal_error", nil, err.Error(), http.StatusInternalServerError) return nil, nil, model.NewAppError("tryExecuteCustomCommand", "app.command.tryexecutecustomcommand.internal_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
tr := <-teamChan tr := <-teamChan
@@ -399,9 +399,9 @@ func (a *App) tryExecuteCustomCommand(c request.CTX, args *model.CommandArgs, tr
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(tr.NErr, &nfErr): case errors.As(tr.NErr, &nfErr):
return nil, nil, model.NewAppError("tryExecuteCustomCommand", "app.team.get.find.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, nil, model.NewAppError("tryExecuteCustomCommand", "app.team.get.find.app_error", nil, "", http.StatusNotFound).Wrap(tr.NErr)
default: default:
return nil, nil, model.NewAppError("tryExecuteCustomCommand", "app.team.get.finding.app_error", nil, tr.NErr.Error(), http.StatusInternalServerError) return nil, nil, model.NewAppError("tryExecuteCustomCommand", "app.team.get.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(tr.NErr)
} }
} }
team := tr.Data.(*model.Team) team := tr.Data.(*model.Team)
@@ -411,9 +411,9 @@ func (a *App) tryExecuteCustomCommand(c request.CTX, args *model.CommandArgs, tr
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(ur.NErr, &nfErr): case errors.As(ur.NErr, &nfErr):
return nil, nil, model.NewAppError("tryExecuteCustomCommand", MissingAccountError, nil, nfErr.Error(), http.StatusNotFound) return nil, nil, model.NewAppError("tryExecuteCustomCommand", MissingAccountError, nil, "", http.StatusNotFound).Wrap(ur.NErr)
default: default:
return nil, nil, model.NewAppError("tryExecuteCustomCommand", "app.user.get.app_error", nil, ur.NErr.Error(), http.StatusInternalServerError) return nil, nil, model.NewAppError("tryExecuteCustomCommand", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(ur.NErr)
} }
} }
user := ur.Data.(*model.User) user := ur.Data.(*model.User)
@@ -423,9 +423,9 @@ func (a *App) tryExecuteCustomCommand(c request.CTX, args *model.CommandArgs, tr
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(cr.NErr, &nfErr): case errors.As(cr.NErr, &nfErr):
return nil, nil, model.NewAppError("tryExecuteCustomCommand", "app.channel.get.existing.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, nil, model.NewAppError("tryExecuteCustomCommand", "app.channel.get.existing.app_error", nil, "", http.StatusNotFound).Wrap(cr.NErr)
default: default:
return nil, nil, model.NewAppError("tryExecuteCustomCommand", "app.channel.get.find.app_error", nil, cr.NErr.Error(), http.StatusInternalServerError) return nil, nil, model.NewAppError("tryExecuteCustomCommand", "app.channel.get.find.app_error", nil, "", http.StatusInternalServerError).Wrap(cr.NErr)
} }
} }
channel := cr.Data.(*model.Channel) channel := cr.Data.(*model.Channel)
@@ -473,7 +473,7 @@ func (a *App) tryExecuteCustomCommand(c request.CTX, args *model.CommandArgs, tr
hook, appErr := a.CreateCommandWebhook(cmd.Id, args) hook, appErr := a.CreateCommandWebhook(cmd.Id, args)
if appErr != nil { if appErr != nil {
return cmd, nil, model.NewAppError("command", "api.command.execute_command.failed.app_error", map[string]any{"Trigger": trigger}, appErr.Error(), http.StatusInternalServerError) return cmd, nil, model.NewAppError("command", "api.command.execute_command.failed.app_error", map[string]any{"Trigger": trigger}, "", http.StatusInternalServerError).Wrap(appErr)
} }
p.Set("response_url", args.SiteURL+"/hooks/commands/"+hook.Id) p.Set("response_url", args.SiteURL+"/hooks/commands/"+hook.Id)
@@ -491,7 +491,7 @@ func (a *App) DoCommandRequest(cmd *model.Command, p url.Values) (*model.Command
} }
if err != nil { if err != nil {
return cmd, nil, model.NewAppError("command", "api.command.execute_command.failed.app_error", map[string]any{"Trigger": cmd.Trigger}, err.Error(), http.StatusInternalServerError) return cmd, nil, model.NewAppError("command", "api.command.execute_command.failed.app_error", map[string]any{"Trigger": cmd.Trigger}, "", http.StatusInternalServerError).Wrap(err)
} }
if cmd.Method == model.CommandMethodGet { if cmd.Method == model.CommandMethodGet {
@@ -510,7 +510,7 @@ func (a *App) DoCommandRequest(cmd *model.Command, p url.Values) (*model.Command
// Send the request // Send the request
resp, err := a.HTTPService().MakeClient(false).Do(req) resp, err := a.HTTPService().MakeClient(false).Do(req)
if err != nil { if err != nil {
return cmd, nil, model.NewAppError("command", "api.command.execute_command.failed.app_error", map[string]any{"Trigger": cmd.Trigger}, err.Error(), http.StatusInternalServerError) return cmd, nil, model.NewAppError("command", "api.command.execute_command.failed.app_error", map[string]any{"Trigger": cmd.Trigger}, "", http.StatusInternalServerError).Wrap(err)
} }
defer resp.Body.Close() defer resp.Body.Close()
@@ -527,7 +527,7 @@ func (a *App) DoCommandRequest(cmd *model.Command, p url.Values) (*model.Command
response, err := model.CommandResponseFromHTTPBody(resp.Header.Get("Content-Type"), body) response, err := model.CommandResponseFromHTTPBody(resp.Header.Get("Content-Type"), body)
if err != nil { if err != nil {
return cmd, nil, model.NewAppError("command", "api.command.execute_command.failed.app_error", map[string]any{"Trigger": cmd.Trigger}, err.Error(), http.StatusInternalServerError) return cmd, nil, model.NewAppError("command", "api.command.execute_command.failed.app_error", map[string]any{"Trigger": cmd.Trigger}, "", http.StatusInternalServerError).Wrap(err)
} else if response == nil { } else if response == nil {
return cmd, nil, model.NewAppError("command", "api.command.execute_command.failed_empty.app_error", map[string]any{"Trigger": cmd.Trigger}, "", http.StatusInternalServerError) return cmd, nil, model.NewAppError("command", "api.command.execute_command.failed_empty.app_error", map[string]any{"Trigger": cmd.Trigger}, "", http.StatusInternalServerError)
} }
@@ -580,7 +580,7 @@ func (a *App) HandleCommandResponsePost(c request.CTX, command *model.Command, a
if response.ChannelId != "" { if response.ChannelId != "" {
_, err := a.GetChannelMember(c, response.ChannelId, args.UserId) _, err := a.GetChannelMember(c, response.ChannelId, args.UserId)
if err != nil { if err != nil {
err = model.NewAppError("HandleCommandResponsePost", "api.command.command_post.forbidden.app_error", nil, err.Error(), http.StatusForbidden) err = model.NewAppError("HandleCommandResponsePost", "api.command.command_post.forbidden.app_error", nil, "", http.StatusForbidden).Wrap(err)
return nil, err return nil, err
} }
post.ChannelId = response.ChannelId post.ChannelId = response.ChannelId
@@ -640,7 +640,7 @@ func (a *App) createCommand(cmd *model.Command) (*model.Command, *model.AppError
teamCmds, err := a.Srv().Store.Command().GetByTeam(cmd.TeamId) teamCmds, err := a.Srv().Store.Command().GetByTeam(cmd.TeamId)
if err != nil { if err != nil {
return nil, model.NewAppError("CreateCommand", "app.command.createcommand.internal_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateCommand", "app.command.createcommand.internal_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, existingCommand := range teamCmds { for _, existingCommand := range teamCmds {
@@ -663,7 +663,7 @@ func (a *App) createCommand(cmd *model.Command) (*model.Command, *model.AppError
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("CreateCommand", "app.command.createcommand.internal_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateCommand", "app.command.createcommand.internal_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -680,9 +680,9 @@ func (a *App) GetCommand(commandID string) (*model.Command, *model.AppError) {
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]any{"command_id": commandID}, "", http.StatusNotFound) return nil, model.NewAppError("SqlCommandStore.Get", "store.sql_command.get.missing.app_error", map[string]any{"command_id": commandID}, "", http.StatusNotFound).Wrap(err)
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, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return command, nil return command, nil
@@ -709,11 +709,11 @@ func (a *App) UpdateCommand(oldCmd, updatedCmd *model.Command) (*model.Command,
var appErr *model.AppError var appErr *model.AppError
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("SqlCommandStore.Update", "store.sql_command.update.missing.app_error", map[string]any{"command_id": updatedCmd.Id}, "", http.StatusNotFound) return nil, model.NewAppError("SqlCommandStore.Update", "store.sql_command.update.missing.app_error", map[string]any{"command_id": updatedCmd.Id}, "", http.StatusNotFound).Wrap(err)
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("UpdateCommand", "app.command.updatecommand.internal_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateCommand", "app.command.updatecommand.internal_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -729,11 +729,11 @@ func (a *App) MoveCommand(team *model.Team, command *model.Command) *model.AppEr
var appErr *model.AppError var appErr *model.AppError
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return model.NewAppError("SqlCommandStore.Update", "store.sql_command.update.missing.app_error", map[string]any{"command_id": command.Id}, "", http.StatusNotFound) return model.NewAppError("SqlCommandStore.Update", "store.sql_command.update.missing.app_error", map[string]any{"command_id": command.Id}, "", http.StatusNotFound).Wrap(err)
case errors.As(err, &appErr): case errors.As(err, &appErr):
return appErr return appErr
default: default:
return model.NewAppError("MoveCommand", "app.command.movecommand.internal_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("MoveCommand", "app.command.movecommand.internal_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -753,11 +753,11 @@ func (a *App) RegenCommandToken(cmd *model.Command) (*model.Command, *model.AppE
var appErr *model.AppError var appErr *model.AppError
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("SqlCommandStore.Update", "store.sql_command.update.missing.app_error", map[string]any{"command_id": cmd.Id}, "", http.StatusNotFound) return nil, model.NewAppError("SqlCommandStore.Update", "store.sql_command.update.missing.app_error", map[string]any{"command_id": cmd.Id}, "", http.StatusNotFound).Wrap(err)
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("RegenCommandToken", "app.command.regencommandtoken.internal_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("RegenCommandToken", "app.command.regencommandtoken.internal_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -771,7 +771,7 @@ func (a *App) DeleteCommand(commandID string) *model.AppError {
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, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil

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

@@ -20,7 +20,7 @@ func (a *App) GetComplianceReports(page, perPage int) (model.Compliances, *model
compliances, err := a.Srv().Store.Compliance().GetAll(page*perPage, perPage) compliances, err := a.Srv().Store.Compliance().GetAll(page*perPage, perPage)
if err != nil { if err != nil {
return nil, model.NewAppError("GetComplianceReports", "app.compliance.get.finding.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetComplianceReports", "app.compliance.get.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return compliances, nil return compliances, nil
@@ -40,7 +40,7 @@ func (a *App) SaveComplianceReport(job *model.Compliance) (*model.Compliance, *m
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("SaveComplianceReport", "app.compliance.save.saving.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SaveComplianceReport", "app.compliance.save.saving.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -65,9 +65,9 @@ func (a *App) GetComplianceReport(reportId string) (*model.Compliance, *model.Ap
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetComplianceReport", "app.compliance.get.finding.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetComplianceReport", "app.compliance.get.finding.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetComplianceReport", "app.compliance.get.finding.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetComplianceReport", "app.compliance.get.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -77,7 +77,7 @@ func (a *App) GetComplianceReport(reportId string) (*model.Compliance, *model.Ap
func (a *App) GetComplianceFile(job *model.Compliance) ([]byte, *model.AppError) { func (a *App) GetComplianceFile(job *model.Compliance) ([]byte, *model.AppError) {
f, err := os.ReadFile(*a.Config().ComplianceSettings.Directory + "compliance/" + job.JobName() + ".zip") f, err := os.ReadFile(*a.Config().ComplianceSettings.Directory + "compliance/" + job.JobName() + ".zip")
if err != nil { if err != nil {
return nil, model.NewAppError("readFile", "api.file.read_file.reading_local.app_error", nil, err.Error(), http.StatusNotImplemented) return nil, model.NewAppError("readFile", "api.file.read_file.reading_local.app_error", nil, "", http.StatusNotImplemented).Wrap(err)
} }
return f, nil return f, nil
} }

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

@@ -820,7 +820,7 @@ func (es *Service) SendMailWithEmbeddedFiles(to, subject, htmlBody string, embed
func (es *Service) InvalidateVerifyEmailTokensForUser(userID string) *model.AppError { func (es *Service) InvalidateVerifyEmailTokensForUser(userID string) *model.AppError {
tokens, err := es.store.Token().GetAllTokensByType(TokenTypeVerifyEmail) tokens, err := es.store.Token().GetAllTokensByType(TokenTypeVerifyEmail)
if err != nil { if err != nil {
return model.NewAppError("InvalidateVerifyEmailTokensForUser", "api.user.invalidate_verify_email_tokens.error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("InvalidateVerifyEmailTokensForUser", "api.user.invalidate_verify_email_tokens.error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
var appErr *model.AppError = nil var appErr *model.AppError = nil
@@ -830,7 +830,7 @@ func (es *Service) InvalidateVerifyEmailTokensForUser(userID string) *model.AppE
Email string Email string
}{} }{}
if err := json.Unmarshal([]byte(token.Extra), &tokenExtra); err != nil { if err := json.Unmarshal([]byte(token.Extra), &tokenExtra); err != nil {
appErr = model.NewAppError("InvalidateVerifyEmailTokensForUser", "api.user.invalidate_verify_email_tokens_parse.error", nil, err.Error(), http.StatusInternalServerError) appErr = model.NewAppError("InvalidateVerifyEmailTokensForUser", "api.user.invalidate_verify_email_tokens_parse.error", nil, "", http.StatusInternalServerError).Wrap(err)
continue continue
} }
@@ -839,7 +839,7 @@ func (es *Service) InvalidateVerifyEmailTokensForUser(userID string) *model.AppE
} }
if err := es.store.Token().Delete(token.Token); err != nil { if err := es.store.Token().Delete(token.Token); err != nil {
appErr = model.NewAppError("InvalidateVerifyEmailTokensForUser", "api.user.invalidate_verify_email_tokens_delete.error", nil, err.Error(), http.StatusInternalServerError) appErr = model.NewAppError("InvalidateVerifyEmailTokensForUser", "api.user.invalidate_verify_email_tokens_delete.error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }

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

@@ -91,7 +91,7 @@ func (a *App) CreateEmoji(sessionUserId string, emoji *model.Emoji, multiPartIma
func (a *App) GetEmojiList(page, perPage int, sort string) ([]*model.Emoji, *model.AppError) { func (a *App) GetEmojiList(page, perPage int, sort string) ([]*model.Emoji, *model.AppError) {
list, err := a.Srv().Store.Emoji().GetList(page*perPage, perPage, sort) list, err := a.Srv().Store.Emoji().GetList(page*perPage, perPage, sort)
if err != nil { if err != nil {
return nil, model.NewAppError("GetEmojiList", "app.emoji.get_list.internal_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetEmojiList", "app.emoji.get_list.internal_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return list, nil return list, nil
@@ -108,7 +108,7 @@ func (a *App) UploadEmojiImage(id string, imageData *multipart.FileHeader) *mode
file, err := imageData.Open() file, err := imageData.Open()
if err != nil { if err != nil {
return model.NewAppError("uploadEmojiImage", "api.emoji.upload.open.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("uploadEmojiImage", "api.emoji.upload.open.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
defer file.Close() defer file.Close()
@@ -118,7 +118,7 @@ func (a *App) UploadEmojiImage(id string, imageData *multipart.FileHeader) *mode
// make sure the file is an image and is within the required dimensions // make sure the file is an image and is within the required dimensions
config, _, err := image.DecodeConfig(bytes.NewReader(buf.Bytes())) config, _, err := image.DecodeConfig(bytes.NewReader(buf.Bytes()))
if err != nil { if err != nil {
return model.NewAppError("uploadEmojiImage", "api.emoji.upload.image.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("uploadEmojiImage", "api.emoji.upload.image.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
if config.Width > MaxEmojiOriginalWidth || config.Height > MaxEmojiOriginalHeight { if config.Width > MaxEmojiOriginalWidth || config.Height > MaxEmojiOriginalHeight {
@@ -139,24 +139,24 @@ func (a *App) UploadEmojiImage(id string, imageData *multipart.FileHeader) *mode
if info.MimeType == "image/gif" { if info.MimeType == "image/gif" {
gif_data, err := gif.DecodeAll(bytes.NewReader(data)) gif_data, err := gif.DecodeAll(bytes.NewReader(data))
if err != nil { if err != nil {
return model.NewAppError("uploadEmojiImage", "api.emoji.upload.large_image.gif_decode_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("uploadEmojiImage", "api.emoji.upload.large_image.gif_decode_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
resized_gif := resizeEmojiGif(gif_data) resized_gif := resizeEmojiGif(gif_data)
if err := gif.EncodeAll(newbuf, resized_gif); err != nil { if err := gif.EncodeAll(newbuf, resized_gif); err != nil {
return model.NewAppError("uploadEmojiImage", "api.emoji.upload.large_image.gif_encode_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("uploadEmojiImage", "api.emoji.upload.large_image.gif_encode_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
buf = newbuf buf = newbuf
} else { } else {
img, _, err := image.Decode(bytes.NewReader(data)) img, _, err := image.Decode(bytes.NewReader(data))
if err != nil { if err != nil {
return model.NewAppError("uploadEmojiImage", "api.emoji.upload.large_image.decode_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("uploadEmojiImage", "api.emoji.upload.large_image.decode_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
resized_image := resizeEmoji(img, config.Width, config.Height) resized_image := resizeEmoji(img, config.Width, config.Height)
if err := png.Encode(newbuf, resized_image); err != nil { if err := png.Encode(newbuf, resized_image); err != nil {
return model.NewAppError("uploadEmojiImage", "api.emoji.upload.large_image.encode_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("uploadEmojiImage", "api.emoji.upload.large_image.encode_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
buf = newbuf buf = newbuf
} }
@@ -171,9 +171,9 @@ func (a *App) DeleteEmoji(emoji *model.Emoji) *model.AppError {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return model.NewAppError("DeleteEmoji", "app.emoji.delete.no_results", nil, "id="+emoji.Id+", err="+err.Error(), http.StatusNotFound) return model.NewAppError("DeleteEmoji", "app.emoji.delete.no_results", nil, "id="+emoji.Id, http.StatusNotFound).Wrap(err)
default: default:
return model.NewAppError("DeleteEmoji", "app.emoji.delete.app_error", nil, "id="+emoji.Id+", err="+err.Error(), http.StatusInternalServerError) return model.NewAppError("DeleteEmoji", "app.emoji.delete.app_error", nil, "id="+emoji.Id, http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -196,9 +196,9 @@ func (a *App) GetEmoji(emojiId string) (*model.Emoji, *model.AppError) {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return emoji, model.NewAppError("GetEmoji", "app.emoji.get.no_result", nil, err.Error(), http.StatusNotFound) return emoji, model.NewAppError("GetEmoji", "app.emoji.get.no_result", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return emoji, model.NewAppError("GetEmoji", "app.emoji.get.app_error", nil, err.Error(), http.StatusInternalServerError) return emoji, model.NewAppError("GetEmoji", "app.emoji.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -219,9 +219,9 @@ func (a *App) GetEmojiByName(emojiName string) (*model.Emoji, *model.AppError) {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return emoji, model.NewAppError("GetEmojiByName", "app.emoji.get_by_name.no_result", nil, err.Error(), http.StatusNotFound) return emoji, model.NewAppError("GetEmojiByName", "app.emoji.get_by_name.no_result", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return emoji, model.NewAppError("GetEmojiByName", "app.emoji.get_by_name.app_error", nil, err.Error(), http.StatusInternalServerError) return emoji, model.NewAppError("GetEmojiByName", "app.emoji.get_by_name.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -247,20 +247,20 @@ func (a *App) GetEmojiImage(emojiId string) ([]byte, string, *model.AppError) {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(storeErr, &nfErr): case errors.As(storeErr, &nfErr):
return nil, "", model.NewAppError("GetEmojiImage", "app.emoji.get.no_result", nil, storeErr.Error(), http.StatusNotFound) return nil, "", model.NewAppError("GetEmojiImage", "app.emoji.get.no_result", nil, "", http.StatusNotFound).Wrap(storeErr)
default: default:
return nil, "", model.NewAppError("GetEmojiImage", "app.emoji.get.app_error", nil, storeErr.Error(), http.StatusInternalServerError) return nil, "", model.NewAppError("GetEmojiImage", "app.emoji.get.app_error", nil, "", http.StatusInternalServerError).Wrap(storeErr)
} }
} }
img, appErr := a.ReadFile(getEmojiImagePath(emojiId)) img, appErr := a.ReadFile(getEmojiImagePath(emojiId))
if appErr != nil { if appErr != nil {
return nil, "", model.NewAppError("getEmojiImage", "api.emoji.get_image.read.app_error", nil, appErr.Error(), http.StatusNotFound) return nil, "", model.NewAppError("getEmojiImage", "api.emoji.get_image.read.app_error", nil, "", http.StatusNotFound).Wrap(appErr)
} }
_, imageType, err := image.DecodeConfig(bytes.NewReader(img)) _, imageType, err := image.DecodeConfig(bytes.NewReader(img))
if err != nil { if err != nil {
return nil, "", model.NewAppError("getEmojiImage", "api.emoji.get_image.decode.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, "", model.NewAppError("getEmojiImage", "api.emoji.get_image.decode.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return img, imageType, nil return img, imageType, nil
@@ -295,9 +295,9 @@ func (a *App) GetEmojiStaticURL(emojiName string) (string, *model.AppError) {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return "", model.NewAppError("GetEmojiStaticURL", "app.emoji.get_by_name.no_result", nil, err.Error(), http.StatusNotFound) return "", model.NewAppError("GetEmojiStaticURL", "app.emoji.get_by_name.no_result", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return "", model.NewAppError("GetEmojiStaticURL", "app.emoji.get_by_name.app_error", nil, err.Error(), http.StatusInternalServerError) return "", model.NewAppError("GetEmojiStaticURL", "app.emoji.get_by_name.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }

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

@@ -114,6 +114,7 @@ func RegisterLicenseInterface(f func(*Server) einterfaces.LicenseInterface) {
func (s *Server) initEnterprise() { func (s *Server) initEnterprise() {
if clusterInterface != nil && s.Cluster == nil { if clusterInterface != nil && s.Cluster == nil {
s.Cluster = clusterInterface(s) s.Cluster = clusterInterface(s)
s.platform.SetCluster(s.Cluster)
} }
if elasticsearchInterface != nil { if elasticsearchInterface != nil {
s.SearchEngine.RegisterElasticsearchEngine(elasticsearchInterface(s)) s.SearchEngine.RegisterElasticsearchEngine(elasticsearchInterface(s))

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

@@ -24,7 +24,7 @@ func (a *App) NotifySessionsExpired() error {
// Get all mobile sessions that expired within the last hour. // Get all mobile sessions that expired within the last hour.
sessions, err := a.ch.srv.Store.Session().GetSessionsExpired(OneHourMillis, true, true) sessions, err := a.ch.srv.Store.Session().GetSessionsExpired(OneHourMillis, true, true)
if err != nil { if err != nil {
return model.NewAppError("NotifySessionsExpired", "app.session.analytics_session_count.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("NotifySessionsExpired", "app.session.analytics_session_count.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
msg := &model.PushNotification{ msg := &model.PushNotification{

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

@@ -170,7 +170,7 @@ func (a *App) exportAllTeams(writer io.Writer) (map[string]bool, *model.AppError
for { for {
teams, err := a.Srv().Store.Team().GetAllForExportAfter(1000, afterId) teams, err := a.Srv().Store.Team().GetAllForExportAfter(1000, afterId)
if err != nil { if err != nil {
return nil, model.NewAppError("exportAllTeams", "app.team.get_all.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("exportAllTeams", "app.team.get_all.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if len(teams) == 0 { if len(teams) == 0 {
@@ -202,7 +202,7 @@ func (a *App) exportAllChannels(writer io.Writer, teamNames map[string]bool) *mo
channels, err := a.Srv().Store.Channel().GetAllChannelsForExportAfter(1000, afterId) channels, err := a.Srv().Store.Channel().GetAllChannelsForExportAfter(1000, afterId)
if err != nil { if err != nil {
return model.NewAppError("exportAllChannels", "app.channel.get_all.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("exportAllChannels", "app.channel.get_all.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if len(channels) == 0 { if len(channels) == 0 {
@@ -237,7 +237,7 @@ func (a *App) exportAllUsers(writer io.Writer) *model.AppError {
users, err := a.Srv().Store.User().GetAllAfter(1000, afterId) users, err := a.Srv().Store.User().GetAllAfter(1000, afterId)
if err != nil { if err != nil {
return model.NewAppError("exportAllUsers", "app.user.get.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("exportAllUsers", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if len(users) == 0 { if len(users) == 0 {
@@ -312,7 +312,7 @@ func (a *App) buildUserTeamAndChannelMemberships(userID string) (*[]UserTeamImpo
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, "", http.StatusInternalServerError).Wrap(err)
} }
for _, member := range members { for _, member := range members {
@@ -348,7 +348,7 @@ func (a *App) buildUserChannelMemberships(userID string, teamID string) (*[]User
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, "", http.StatusInternalServerError).Wrap(nErr)
} }
category := model.PreferenceCategoryFavoriteChannel category := model.PreferenceCategoryFavoriteChannel
@@ -391,7 +391,7 @@ func (a *App) exportAllPosts(ctx request.CTX, writer io.Writer, withAttachments
for { for {
posts, nErr := a.Srv().Store.Post().GetParentsForExportAfter(1000, afterId) posts, nErr := a.Srv().Store.Post().GetParentsForExportAfter(1000, afterId)
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("exportAllPosts", "app.post.get_posts.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("exportAllPosts", "app.post.get_posts.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
if len(posts) == 0 { if len(posts) == 0 {
@@ -451,7 +451,7 @@ func (a *App) buildPostReplies(ctx request.CTX, postID string, withAttachments b
replyPosts, nErr := a.Srv().Store.Post().GetRepliesForExport(postID) replyPosts, nErr := a.Srv().Store.Post().GetRepliesForExport(postID)
if nErr != nil { if nErr != nil {
return nil, nil, model.NewAppError("buildPostReplies", "app.post.get_posts.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, nil, model.NewAppError("buildPostReplies", "app.post.get_posts.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
for _, reply := range replyPosts { for _, reply := range replyPosts {
@@ -485,7 +485,7 @@ func (a *App) BuildPostReactions(ctx request.CTX, postID string) (*[]ReactionImp
reactions, nErr := a.Srv().Store.Reaction().GetForPost(postID, true) reactions, nErr := a.Srv().Store.Reaction().GetForPost(postID, true)
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("BuildPostReactions", "app.reaction.get_for_post.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("BuildPostReactions", "app.reaction.get_for_post.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
for _, reaction := range reactions { for _, reaction := range reactions {
@@ -496,7 +496,7 @@ func (a *App) BuildPostReactions(ctx request.CTX, postID string) (*[]ReactionImp
ctx.Logger().Info("Skipping reactions by user since the entity doesn't exist anymore", mlog.String("user_id", reaction.UserId)) ctx.Logger().Info("Skipping reactions by user since the entity doesn't exist anymore", mlog.String("user_id", reaction.UserId))
continue continue
} }
return nil, model.NewAppError("BuildPostReactions", "app.user.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("BuildPostReactions", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
reactionsOfPost = append(reactionsOfPost, *ImportReactionFromPost(user, reaction)) reactionsOfPost = append(reactionsOfPost, *ImportReactionFromPost(user, reaction))
} }
@@ -508,7 +508,7 @@ func (a *App) BuildPostReactions(ctx request.CTX, postID string) (*[]ReactionImp
func (a *App) buildPostAttachments(postID string) ([]AttachmentImportData, *model.AppError) { func (a *App) buildPostAttachments(postID string) ([]AttachmentImportData, *model.AppError) {
infos, nErr := a.Srv().Store.FileInfo().GetForPost(postID, false, false, false) infos, nErr := a.Srv().Store.FileInfo().GetForPost(postID, false, false, false)
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("buildPostAttachments", "app.file_info.get_for_post.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("buildPostAttachments", "app.file_info.get_for_post.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
attachments := make([]AttachmentImportData, 0, len(infos)) attachments := make([]AttachmentImportData, 0, len(infos))
@@ -605,7 +605,7 @@ func (a *App) exportAllDirectChannels(writer io.Writer) *model.AppError {
for { for {
channels, err := a.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, afterId) channels, err := a.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, afterId)
if err != nil { if err != nil {
return model.NewAppError("exportAllDirectChannels", "app.channel.get_all_direct.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("exportAllDirectChannels", "app.channel.get_all_direct.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if len(channels) == 0 { if len(channels) == 0 {
@@ -641,7 +641,7 @@ func (a *App) exportAllDirectPosts(ctx request.CTX, writer io.Writer, withAttach
for { for {
posts, err := a.Srv().Store.Post().GetDirectPostParentsForExportAfter(1000, afterId) posts, err := a.Srv().Store.Post().GetDirectPostParentsForExportAfter(1000, afterId)
if err != nil { if err != nil {
return nil, model.NewAppError("exportAllDirectPosts", "app.post.get_direct_posts.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("exportAllDirectPosts", "app.post.get_direct_posts.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if len(posts) == 0 { if len(posts) == 0 {

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

@@ -67,7 +67,7 @@ func (a *App) CheckMandatoryS3Fields(settings *model.FileSettings) *model.AppErr
fileBackendSettings := settings.ToFileBackendSettings(false, false) fileBackendSettings := settings.ToFileBackendSettings(false, false)
err := fileBackendSettings.CheckMandatoryS3Fields() err := fileBackendSettings.CheckMandatoryS3Fields()
if err != nil { if err != nil {
return model.NewAppError("CheckMandatoryS3Fields", "api.admin.test_s3.missing_s3_bucket", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("CheckMandatoryS3Fields", "api.admin.test_s3.missing_s3_bucket", nil, "", http.StatusBadRequest).Wrap(err)
} }
return nil return nil
} }
@@ -75,11 +75,11 @@ func (a *App) CheckMandatoryS3Fields(settings *model.FileSettings) *model.AppErr
func connectionTestErrorToAppError(connTestErr error) *model.AppError { func connectionTestErrorToAppError(connTestErr error) *model.AppError {
switch err := connTestErr.(type) { switch err := connTestErr.(type) {
case *filestore.S3FileBackendAuthError: case *filestore.S3FileBackendAuthError:
return model.NewAppError("TestConnection", "api.file.test_connection_s3_auth.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("TestConnection", "api.file.test_connection_s3_auth.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
case *filestore.S3FileBackendNoBucketError: case *filestore.S3FileBackendNoBucketError:
return model.NewAppError("TestConnection", "api.file.test_connection_s3_bucket_does_not_exist.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("TestConnection", "api.file.test_connection_s3_bucket_does_not_exist.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
default: default:
return model.NewAppError("TestConnection", "api.file.test_connection.app_error", nil, connTestErr.Error(), http.StatusInternalServerError) return model.NewAppError("TestConnection", "api.file.test_connection.app_error", nil, "", http.StatusInternalServerError).Wrap(connTestErr)
} }
} }
@@ -96,7 +96,7 @@ func (a *App) TestFileStoreConnectionWithConfig(cfg *model.FileSettings) *model.
insecure := a.Config().ServiceSettings.EnableInsecureOutgoingConnections insecure := a.Config().ServiceSettings.EnableInsecureOutgoingConnections
backend, err := filestore.NewFileBackend(cfg.ToFileBackendSettings(license != nil && *license.Features.Compliance, insecure != nil && *insecure)) backend, err := filestore.NewFileBackend(cfg.ToFileBackendSettings(license != nil && *license.Features.Compliance, insecure != nil && *insecure))
if err != nil { if err != nil {
return model.NewAppError("FileBackend", "api.file.no_driver.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("FileBackend", "api.file.no_driver.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
nErr := backend.TestConnection() nErr := backend.TestConnection()
if nErr != nil { if nErr != nil {
@@ -112,7 +112,7 @@ func (a *App) ReadFile(path string) ([]byte, *model.AppError) {
func (s *Server) fileReader(path string) (filestore.ReadCloseSeeker, *model.AppError) { func (s *Server) fileReader(path string) (filestore.ReadCloseSeeker, *model.AppError) {
result, nErr := s.FileBackend().Reader(path) result, nErr := s.FileBackend().Reader(path)
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("FileReader", "api.file.file_reader.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("FileReader", "api.file.file_reader.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
return result, nil return result, nil
} }
@@ -129,7 +129,7 @@ func (a *App) FileExists(path string) (bool, *model.AppError) {
func (s *Server) fileExists(path string) (bool, *model.AppError) { func (s *Server) fileExists(path string) (bool, *model.AppError) {
result, nErr := s.FileBackend().FileExists(path) result, nErr := s.FileBackend().FileExists(path)
if nErr != nil { if nErr != nil {
return false, model.NewAppError("FileExists", "api.file.file_exists.app_error", nil, nErr.Error(), http.StatusInternalServerError) return false, model.NewAppError("FileExists", "api.file.file_exists.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
return result, nil return result, nil
} }
@@ -137,7 +137,7 @@ func (s *Server) fileExists(path string) (bool, *model.AppError) {
func (a *App) FileSize(path string) (int64, *model.AppError) { func (a *App) FileSize(path string) (int64, *model.AppError) {
size, nErr := a.FileBackend().FileSize(path) size, nErr := a.FileBackend().FileSize(path)
if nErr != nil { if nErr != nil {
return 0, model.NewAppError("FileSize", "api.file.file_size.app_error", nil, nErr.Error(), http.StatusInternalServerError) return 0, model.NewAppError("FileSize", "api.file.file_size.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
return size, nil return size, nil
} }
@@ -145,7 +145,7 @@ func (a *App) FileSize(path string) (int64, *model.AppError) {
func (a *App) FileModTime(path string) (time.Time, *model.AppError) { func (a *App) FileModTime(path string) (time.Time, *model.AppError) {
modTime, nErr := a.FileBackend().FileModTime(path) modTime, nErr := a.FileBackend().FileModTime(path)
if nErr != nil { if nErr != nil {
return time.Time{}, model.NewAppError("FileModTime", "api.file.file_mod_time.app_error", nil, nErr.Error(), http.StatusInternalServerError) return time.Time{}, model.NewAppError("FileModTime", "api.file.file_mod_time.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
return modTime, nil return modTime, nil
@@ -154,7 +154,7 @@ func (a *App) FileModTime(path string) (time.Time, *model.AppError) {
func (a *App) MoveFile(oldPath, newPath string) *model.AppError { func (a *App) MoveFile(oldPath, newPath string) *model.AppError {
nErr := a.FileBackend().MoveFile(oldPath, newPath) nErr := a.FileBackend().MoveFile(oldPath, newPath)
if nErr != nil { if nErr != nil {
return model.NewAppError("MoveFile", "api.file.move_file.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("MoveFile", "api.file.move_file.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
return nil return nil
} }
@@ -166,7 +166,7 @@ func (a *App) WriteFile(fr io.Reader, path string) (int64, *model.AppError) {
func (s *Server) writeFile(fr io.Reader, path string) (int64, *model.AppError) { func (s *Server) writeFile(fr io.Reader, path string) (int64, *model.AppError) {
result, nErr := s.FileBackend().WriteFile(fr, path) result, nErr := s.FileBackend().WriteFile(fr, path)
if nErr != nil { if nErr != nil {
return result, model.NewAppError("WriteFile", "api.file.write_file.app_error", nil, nErr.Error(), http.StatusInternalServerError) return result, model.NewAppError("WriteFile", "api.file.write_file.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
return result, nil return result, nil
} }
@@ -174,7 +174,7 @@ func (s *Server) writeFile(fr io.Reader, path string) (int64, *model.AppError) {
func (a *App) AppendFile(fr io.Reader, path string) (int64, *model.AppError) { func (a *App) AppendFile(fr io.Reader, path string) (int64, *model.AppError) {
result, nErr := a.FileBackend().AppendFile(fr, path) result, nErr := a.FileBackend().AppendFile(fr, path)
if nErr != nil { if nErr != nil {
return result, model.NewAppError("AppendFile", "api.file.append_file.app_error", nil, nErr.Error(), http.StatusInternalServerError) return result, model.NewAppError("AppendFile", "api.file.append_file.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
return result, nil return result, nil
} }
@@ -186,7 +186,7 @@ func (a *App) RemoveFile(path string) *model.AppError {
func (s *Server) removeFile(path string) *model.AppError { func (s *Server) removeFile(path string) *model.AppError {
nErr := s.FileBackend().RemoveFile(path) nErr := s.FileBackend().RemoveFile(path)
if nErr != nil { if nErr != nil {
return model.NewAppError("RemoveFile", "api.file.remove_file.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("RemoveFile", "api.file.remove_file.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
return nil return nil
} }
@@ -211,7 +211,7 @@ func (s *Server) listDirectory(path string, recursion bool) ([]string, *model.Ap
} }
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("ListDirectory", "api.file.list_directory.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("ListDirectory", "api.file.list_directory.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
return paths, nil return paths, nil
@@ -220,7 +220,7 @@ func (s *Server) listDirectory(path string, recursion bool) ([]string, *model.Ap
func (a *App) RemoveDirectory(path string) *model.AppError { func (a *App) RemoveDirectory(path string) *model.AppError {
nErr := a.FileBackend().RemoveDirectory(path) nErr := a.FileBackend().RemoveDirectory(path)
if nErr != nil { if nErr != nil {
return model.NewAppError("RemoveDirectory", "api.file.remove_directory.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("RemoveDirectory", "api.file.remove_directory.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
return nil return nil
@@ -476,7 +476,7 @@ func (a *App) UploadFile(c request.CTX, data []byte, channelID string, filename
return info, nil return info, nil
} }
func (a *App) DoUploadFile(c *request.Context, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, *model.AppError) { func (a *App) DoUploadFile(c request.CTX, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, *model.AppError) {
info, _, err := a.DoUploadFileExpectModification(c, now, rawTeamId, rawChannelId, rawUserId, rawFilename, data) info, _, err := a.DoUploadFileExpectModification(c, now, rawTeamId, rawChannelId, rawUserId, rawFilename, data)
return info, err return info, err
} }
@@ -676,7 +676,7 @@ func (a *App) UploadFileX(c *request.Context, channelID, name string, input io.R
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("UploadFileX", "app.file_info.save.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UploadFileX", "app.file_info.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -882,7 +882,7 @@ func (a *App) DoUploadFileExpectModification(c request.CTX, now time.Time, rawTe
if info.IsImage() && !info.IsSvg() { if info.IsImage() && !info.IsSvg() {
if limitErr := checkImageResolutionLimit(info.Width, info.Height, *a.Config().FileSettings.MaxImageResolution); limitErr != nil { if limitErr := checkImageResolutionLimit(info.Width, info.Height, *a.Config().FileSettings.MaxImageResolution); limitErr != nil {
err := model.NewAppError("uploadFile", "api.file.upload_file.large_image.app_error", map[string]any{"Filename": filename}, limitErr.Error(), http.StatusBadRequest) err := model.NewAppError("uploadFile", "api.file.upload_file.large_image.app_error", map[string]any{"Filename": filename}, "", http.StatusBadRequest).Wrap(limitErr)
return nil, data, err return nil, data, err
} }
@@ -926,7 +926,7 @@ func (a *App) DoUploadFileExpectModification(c request.CTX, now time.Time, rawTe
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, data, appErr return nil, data, appErr
default: default:
return nil, data, model.NewAppError("DoUploadFileExpectModification", "app.file_info.save.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, data, model.NewAppError("DoUploadFileExpectModification", "app.file_info.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -1073,9 +1073,9 @@ func (s *Server) getFileInfo(fileID string) (*model.FileInfo, *model.AppError) {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetFileInfo", "app.file_info.get.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetFileInfo", "app.file_info.get.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetFileInfo", "app.file_info.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetFileInfo", "app.file_info.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return fileInfo, nil return fileInfo, nil
@@ -1096,11 +1096,11 @@ func (a *App) GetFileInfos(page, perPage int, opt *model.GetFileInfosOptions) ([
var ltErr *store.ErrLimitExceeded var ltErr *store.ErrLimitExceeded
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("GetFileInfos", "app.file_info.get_with_options.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetFileInfos", "app.file_info.get_with_options.app_error", nil, "", http.StatusBadRequest).Wrap(err)
case errors.As(err, &ltErr): case errors.As(err, &ltErr):
return nil, model.NewAppError("GetFileInfos", "app.file_info.get_with_options.app_error", nil, ltErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetFileInfos", "app.file_info.get_with_options.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("GetFileInfos", "app.file_info.get_with_options.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetFileInfos", "app.file_info.get_with_options.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -1134,9 +1134,9 @@ func (a *App) CopyFileInfos(userID string, fileIDs []string) ([]string, *model.A
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("CopyFileInfos", "app.file_info.get.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("CopyFileInfos", "app.file_info.get.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("CopyFileInfos", "app.file_info.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CopyFileInfos", "app.file_info.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -1152,7 +1152,7 @@ func (a *App) CopyFileInfos(userID string, fileIDs []string) ([]string, *model.A
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("CopyFileInfos", "app.file_info.save.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CopyFileInfos", "app.file_info.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -1248,7 +1248,7 @@ func (a *App) SearchFilesInTeamForUser(c *request.Context, terms string, userId
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("SearchFilesInTeamForUser", "app.post.search.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SearchFilesInTeamForUser", "app.post.search.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }

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

@@ -18,16 +18,16 @@ func (a *App) GetGroup(id string, opts *model.GetGroupOpts) (*model.Group, *mode
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetGroup", "app.group.no_rows", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetGroup", "app.group.no_rows", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetGroup", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetGroup", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
if opts != nil && opts.IncludeMemberCount { if opts != nil && opts.IncludeMemberCount {
memberCount, err := a.Srv().Store.Group().GetMemberCount(id) memberCount, err := a.Srv().Store.Group().GetMemberCount(id)
if err != nil { if err != nil {
return nil, model.NewAppError("GetGroup", "app.member_count", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetGroup", "app.member_count", nil, "", http.StatusInternalServerError).Wrap(err)
} }
group.MemberCount = model.NewInt(int(memberCount)) group.MemberCount = model.NewInt(int(memberCount))
} }
@@ -41,9 +41,9 @@ func (a *App) GetGroupByName(name string, opts model.GroupSearchOpts) (*model.Gr
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetGroupByName", "app.group.no_rows", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetGroupByName", "app.group.no_rows", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetGroupByName", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetGroupByName", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -56,9 +56,9 @@ func (a *App) GetGroupByRemoteID(remoteID string, groupSource model.GroupSource)
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetGroupByRemoteID", "app.group.no_rows", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetGroupByRemoteID", "app.group.no_rows", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetGroupByRemoteID", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetGroupByRemoteID", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -68,7 +68,7 @@ func (a *App) GetGroupByRemoteID(remoteID string, groupSource model.GroupSource)
func (a *App) GetGroupsBySource(groupSource model.GroupSource) ([]*model.Group, *model.AppError) { func (a *App) GetGroupsBySource(groupSource model.GroupSource) ([]*model.Group, *model.AppError) {
groups, err := a.Srv().Store.Group().GetAllBySource(groupSource) groups, err := a.Srv().Store.Group().GetAllBySource(groupSource)
if err != nil { if err != nil {
return nil, model.NewAppError("GetGroupsBySource", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetGroupsBySource", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return groups, nil return groups, nil
@@ -77,7 +77,7 @@ func (a *App) GetGroupsBySource(groupSource model.GroupSource) ([]*model.Group,
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, "", http.StatusInternalServerError).Wrap(err)
} }
return groups, nil return groups, nil
@@ -97,9 +97,9 @@ func (a *App) CreateGroup(group *model.Group) (*model.Group, *model.AppError) {
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("CreateGroup", "app.group.id.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("CreateGroup", "app.group.id.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("CreateGroup", "app.insert_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateGroup", "app.insert_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -113,7 +113,7 @@ func (a *App) isUniqueToUsernames(val string) *model.AppError {
var notFoundErr *store.ErrNotFound var notFoundErr *store.ErrNotFound
user, err := a.Srv().Store.User().GetByUsername(val) user, err := a.Srv().Store.User().GetByUsername(val)
if err != nil && !errors.As(err, &notFoundErr) { if err != nil && !errors.As(err, &notFoundErr) {
return model.NewAppError("", "app.group.get_by_username_failure", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("", "app.group.get_by_username_failure", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if user != nil { if user != nil {
return model.NewAppError("", "app.group.username_conflict", nil, "", http.StatusBadRequest) return model.NewAppError("", "app.group.username_conflict", nil, "", http.StatusBadRequest)
@@ -136,9 +136,9 @@ func (a *App) CreateGroupWithUserIds(group *model.GroupWithUserIds) (*model.Grou
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("CreateGroupWithUserIds", "app.group.id.app_error", nil, "", http.StatusBadRequest).Wrap(invErr) return nil, model.NewAppError("CreateGroupWithUserIds", "app.group.id.app_error", nil, "", http.StatusBadRequest).Wrap(err)
case errors.As(err, &dupKey): case errors.As(err, &dupKey):
return nil, model.NewAppError("CreateGroupWithUserIds", "app.custom_group.unique_name", nil, "", http.StatusBadRequest).Wrap(dupKey) return nil, model.NewAppError("CreateGroupWithUserIds", "app.custom_group.unique_name", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("CreateGroupWithUserIds", "app.insert_error", nil, "", http.StatusInternalServerError).Wrap(err) return nil, model.NewAppError("CreateGroupWithUserIds", "app.insert_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
@@ -175,9 +175,9 @@ func (a *App) UpdateGroup(group *model.Group) (*model.Group, *model.AppError) {
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("UpdateGroup", "app.group.no_rows", nil, "", http.StatusNotFound).Wrap(nfErr) return nil, model.NewAppError("UpdateGroup", "app.group.no_rows", nil, "", http.StatusNotFound).Wrap(err)
case errors.As(err, &dupKey): case errors.As(err, &dupKey):
return nil, model.NewAppError("CreateGroup", "app.custom_group.unique_name", nil, "", http.StatusBadRequest).Wrap(dupKey) return nil, model.NewAppError("CreateGroup", "app.custom_group.unique_name", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("UpdateGroup", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err) return nil, model.NewAppError("UpdateGroup", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
@@ -207,9 +207,9 @@ func (a *App) DeleteGroup(groupID string) (*model.Group, *model.AppError) {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("DeleteGroup", "app.group.no_rows", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("DeleteGroup", "app.group.no_rows", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("DeleteGroup", "app.update_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("DeleteGroup", "app.update_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -219,7 +219,7 @@ func (a *App) DeleteGroup(groupID string) (*model.Group, *model.AppError) {
func (a *App) GetGroupMemberCount(groupID string) (int64, *model.AppError) { func (a *App) GetGroupMemberCount(groupID string) (int64, *model.AppError) {
count, err := a.Srv().Store.Group().GetMemberCount(groupID) count, err := a.Srv().Store.Group().GetMemberCount(groupID)
if err != nil { if err != nil {
return 0, model.NewAppError("GetGroupMemberCount", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return 0, model.NewAppError("GetGroupMemberCount", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return count, nil return count, nil
@@ -228,7 +228,7 @@ func (a *App) GetGroupMemberCount(groupID string) (int64, *model.AppError) {
func (a *App) GetGroupMemberUsers(groupID string) ([]*model.User, *model.AppError) { func (a *App) GetGroupMemberUsers(groupID string) ([]*model.User, *model.AppError) {
users, err := a.Srv().Store.Group().GetMemberUsers(groupID) users, err := a.Srv().Store.Group().GetMemberUsers(groupID)
if err != nil { if err != nil {
return nil, model.NewAppError("GetGroupMemberUsers", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetGroupMemberUsers", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return users, nil return users, nil
@@ -237,7 +237,7 @@ func (a *App) GetGroupMemberUsers(groupID string) ([]*model.User, *model.AppErro
func (a *App) GetGroupMemberUsersPage(groupID string, page int, perPage int) ([]*model.User, int, *model.AppError) { func (a *App) GetGroupMemberUsersPage(groupID string, page int, perPage int) ([]*model.User, int, *model.AppError) {
members, err := a.Srv().Store.Group().GetMemberUsersPage(groupID, page, perPage) members, err := a.Srv().Store.Group().GetMemberUsersPage(groupID, page, perPage)
if err != nil { if err != nil {
return nil, 0, model.NewAppError("GetGroupMemberUsersPage", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, 0, model.NewAppError("GetGroupMemberUsersPage", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
count, appErr := a.GetGroupMemberCount(groupID) count, appErr := a.GetGroupMemberCount(groupID)
@@ -249,7 +249,7 @@ func (a *App) GetGroupMemberUsersPage(groupID string, page int, perPage int) ([]
func (a *App) GetUsersNotInGroupPage(groupID string, page int, perPage int) ([]*model.User, *model.AppError) { func (a *App) GetUsersNotInGroupPage(groupID string, page int, perPage int) ([]*model.User, *model.AppError) {
members, err := a.Srv().Store.Group().GetNonMemberUsersPage(groupID, page, perPage) members, err := a.Srv().Store.Group().GetNonMemberUsersPage(groupID, page, perPage)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUsersNotInGroupPage", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUsersNotInGroupPage", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return a.sanitizeProfiles(members, false), nil return a.sanitizeProfiles(members, false), nil
@@ -264,9 +264,9 @@ func (a *App) UpsertGroupMember(groupID string, userID string) (*model.GroupMemb
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("UpsertGroupMember", "app.group.uniqueness_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("UpsertGroupMember", "app.group.uniqueness_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("UpsertGroupMember", "app.update_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpsertGroupMember", "app.update_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -283,9 +283,9 @@ func (a *App) DeleteGroupMember(groupID string, userID string) (*model.GroupMemb
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("DeleteGroupMember", "app.group.no_rows", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("DeleteGroupMember", "app.group.no_rows", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("DeleteGroupMember", "app.update_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("DeleteGroupMember", "app.update_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -300,7 +300,7 @@ func (a *App) UpsertGroupSyncable(groupSyncable *model.GroupSyncable) (*model.Gr
gs, err := a.Srv().Store.Group().GetGroupSyncable(groupSyncable.GroupId, groupSyncable.SyncableId, groupSyncable.Type) gs, err := a.Srv().Store.Group().GetGroupSyncable(groupSyncable.GroupId, groupSyncable.SyncableId, groupSyncable.Type)
var notFoundErr *store.ErrNotFound var notFoundErr *store.ErrNotFound
if err != nil && !errors.As(err, &notFoundErr) { if err != nil && !errors.As(err, &notFoundErr) {
return nil, model.NewAppError("UpsertGroupSyncable", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpsertGroupSyncable", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// reject the syncable creation if the group isn't already associated to the parent team // reject the syncable creation if the group isn't already associated to the parent team
@@ -310,9 +310,9 @@ func (a *App) UpsertGroupSyncable(groupSyncable *model.GroupSyncable) (*model.Gr
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return nil, model.NewAppError("UpsertGroupSyncable", "app.channel.get.existing.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("UpsertGroupSyncable", "app.channel.get.existing.app_error", nil, "", http.StatusNotFound).Wrap(nErr)
default: default:
return nil, model.NewAppError("UpsertGroupSyncable", "app.channel.get.find.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpsertGroupSyncable", "app.channel.get.find.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -322,16 +322,16 @@ func (a *App) UpsertGroupSyncable(groupSyncable *model.GroupSyncable) (*model.Gr
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return nil, model.NewAppError("UpsertGroupSyncable", "app.team.get.find.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("UpsertGroupSyncable", "app.team.get.find.app_error", nil, "", http.StatusNotFound).Wrap(nErr)
default: default:
return nil, model.NewAppError("UpsertGroupSyncable", "app.team.get.finding.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpsertGroupSyncable", "app.team.get.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
if team.IsGroupConstrained() { if team.IsGroupConstrained() {
var teamGroups []*model.GroupWithSchemeAdmin var teamGroups []*model.GroupWithSchemeAdmin
teamGroups, err = a.Srv().Store.Group().GetGroupsByTeam(channel.TeamId, model.GroupSearchOpts{}) teamGroups, err = a.Srv().Store.Group().GetGroupsByTeam(channel.TeamId, model.GroupSearchOpts{})
if err != nil { if err != nil {
return nil, model.NewAppError("UpsertGroupSyncable", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpsertGroupSyncable", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
var permittedGroup bool var permittedGroup bool
for _, teamGroup := range teamGroups { for _, teamGroup := range teamGroups {
@@ -360,9 +360,9 @@ func (a *App) UpsertGroupSyncable(groupSyncable *model.GroupSyncable) (*model.Gr
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("UpsertGroupSyncable", "store.sql_channel.get.existing.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("UpsertGroupSyncable", "store.sql_channel.get.existing.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("UpsertGroupSyncable", "app.insert_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpsertGroupSyncable", "app.insert_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
} else { } else {
@@ -373,7 +373,7 @@ func (a *App) UpsertGroupSyncable(groupSyncable *model.GroupSyncable) (*model.Gr
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("UpsertGroupSyncable", "app.update_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpsertGroupSyncable", "app.update_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
} }
@@ -396,9 +396,9 @@ func (a *App) GetGroupSyncable(groupID string, syncableID string, syncableType m
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetGroupSyncable", "app.group.no_rows", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetGroupSyncable", "app.group.no_rows", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetGroupSyncable", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetGroupSyncable", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -408,7 +408,7 @@ func (a *App) GetGroupSyncable(groupID string, syncableID string, syncableType m
func (a *App) GetGroupSyncables(groupID string, syncableType model.GroupSyncableType) ([]*model.GroupSyncable, *model.AppError) { func (a *App) GetGroupSyncables(groupID string, syncableType model.GroupSyncableType) ([]*model.GroupSyncable, *model.AppError) {
groups, err := a.Srv().Store.Group().GetAllGroupSyncablesByGroupId(groupID, syncableType) groups, err := a.Srv().Store.Group().GetAllGroupSyncablesByGroupId(groupID, syncableType)
if err != nil { if err != nil {
return nil, model.NewAppError("GetGroupSyncables", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetGroupSyncables", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return groups, nil return groups, nil
@@ -424,7 +424,7 @@ func (a *App) UpdateGroupSyncable(groupSyncable *model.GroupSyncable) (*model.Gr
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("UpdateGroupSyncable", "app.update_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateGroupSyncable", "app.update_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -447,11 +447,11 @@ func (a *App) DeleteGroupSyncable(groupID string, syncableID string, syncableTyp
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("DeleteGroupSyncable", "app.group.no_rows", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("DeleteGroupSyncable", "app.group.no_rows", nil, "", http.StatusNotFound).Wrap(err)
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("DeleteGroupSyncable", "app.group.group_syncable_already_deleted", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("DeleteGroupSyncable", "app.group.group_syncable_already_deleted", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("DeleteGroupSyncable", "app.update_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("DeleteGroupSyncable", "app.update_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -459,7 +459,7 @@ func (a *App) DeleteGroupSyncable(groupID string, syncableID string, syncableTyp
if gs.Type == model.GroupSyncableTypeTeam { if gs.Type == model.GroupSyncableTypeTeam {
allGroupChannels, err := a.Srv().Store.Group().GetAllGroupSyncablesByGroupId(gs.GroupId, model.GroupSyncableTypeChannel) allGroupChannels, err := a.Srv().Store.Group().GetAllGroupSyncablesByGroupId(gs.GroupId, model.GroupSyncableTypeChannel)
if err != nil { if err != nil {
return nil, model.NewAppError("DeleteGroupSyncable", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("DeleteGroupSyncable", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, groupChannel := range allGroupChannels { for _, groupChannel := range allGroupChannels {
@@ -469,11 +469,11 @@ func (a *App) DeleteGroupSyncable(groupID string, syncableID string, syncableTyp
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("DeleteGroupSyncable", "app.group.no_rows", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("DeleteGroupSyncable", "app.group.no_rows", nil, "", http.StatusNotFound).Wrap(err)
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("DeleteGroupSyncable", "app.group.group_syncable_already_deleted", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("DeleteGroupSyncable", "app.group.group_syncable_already_deleted", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("DeleteGroupSyncable", "app.update_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("DeleteGroupSyncable", "app.update_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
} }
@@ -501,7 +501,7 @@ func (a *App) DeleteGroupSyncable(groupID string, syncableID string, syncableTyp
func (a *App) TeamMembersToAdd(since int64, teamID *string, includeRemovedMembers bool) ([]*model.UserTeamIDPair, *model.AppError) { func (a *App) TeamMembersToAdd(since int64, teamID *string, includeRemovedMembers bool) ([]*model.UserTeamIDPair, *model.AppError) {
userTeams, err := a.Srv().Store.Group().TeamMembersToAdd(since, teamID, includeRemovedMembers) userTeams, err := a.Srv().Store.Group().TeamMembersToAdd(since, teamID, includeRemovedMembers)
if err != nil { if err != nil {
return nil, model.NewAppError("TeamMembersToAdd", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("TeamMembersToAdd", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return userTeams, nil return userTeams, nil
@@ -516,7 +516,7 @@ func (a *App) TeamMembersToAdd(since int64, teamID *string, includeRemovedMember
func (a *App) ChannelMembersToAdd(since int64, channelID *string, includeRemovedMembers bool) ([]*model.UserChannelIDPair, *model.AppError) { func (a *App) ChannelMembersToAdd(since int64, channelID *string, includeRemovedMembers bool) ([]*model.UserChannelIDPair, *model.AppError) {
userChannels, err := a.Srv().Store.Group().ChannelMembersToAdd(since, channelID, includeRemovedMembers) userChannels, err := a.Srv().Store.Group().ChannelMembersToAdd(since, channelID, includeRemovedMembers)
if err != nil { if err != nil {
return nil, model.NewAppError("ChannelMembersToAdd", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("ChannelMembersToAdd", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return userChannels, nil return userChannels, nil
@@ -525,7 +525,7 @@ func (a *App) ChannelMembersToAdd(since int64, channelID *string, includeRemoved
func (a *App) TeamMembersToRemove(teamID *string) ([]*model.TeamMember, *model.AppError) { func (a *App) TeamMembersToRemove(teamID *string) ([]*model.TeamMember, *model.AppError) {
teamMembers, err := a.Srv().Store.Group().TeamMembersToRemove(teamID) teamMembers, err := a.Srv().Store.Group().TeamMembersToRemove(teamID)
if err != nil { if err != nil {
return nil, model.NewAppError("TeamMembersToRemove", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("TeamMembersToRemove", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return teamMembers, nil return teamMembers, nil
@@ -534,7 +534,7 @@ func (a *App) TeamMembersToRemove(teamID *string) ([]*model.TeamMember, *model.A
func (a *App) ChannelMembersToRemove(teamID *string) ([]*model.ChannelMember, *model.AppError) { func (a *App) ChannelMembersToRemove(teamID *string) ([]*model.ChannelMember, *model.AppError) {
channelMembers, err := a.Srv().Store.Group().ChannelMembersToRemove(teamID) channelMembers, err := a.Srv().Store.Group().ChannelMembersToRemove(teamID)
if err != nil { if err != nil {
return nil, model.NewAppError("ChannelMembersToRemove", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("ChannelMembersToRemove", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return channelMembers, nil return channelMembers, nil
@@ -543,12 +543,12 @@ func (a *App) ChannelMembersToRemove(teamID *string) ([]*model.ChannelMember, *m
func (a *App) GetGroupsByChannel(channelID string, opts model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, int, *model.AppError) { func (a *App) GetGroupsByChannel(channelID string, opts model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, int, *model.AppError) {
groups, err := a.Srv().Store.Group().GetGroupsByChannel(channelID, opts) groups, err := a.Srv().Store.Group().GetGroupsByChannel(channelID, opts)
if err != nil { if err != nil {
return nil, 0, model.NewAppError("GetGroupsByChannel", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, 0, model.NewAppError("GetGroupsByChannel", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
count, err := a.Srv().Store.Group().CountGroupsByChannel(channelID, opts) count, err := a.Srv().Store.Group().CountGroupsByChannel(channelID, opts)
if err != nil { if err != nil {
return nil, 0, model.NewAppError("GetGroupsByChannel", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, 0, model.NewAppError("GetGroupsByChannel", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return groups, int(count), nil return groups, int(count), nil
@@ -558,12 +558,12 @@ func (a *App) GetGroupsByChannel(channelID string, opts model.GroupSearchOpts) (
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, "", http.StatusInternalServerError).Wrap(err)
} }
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, "", http.StatusInternalServerError).Wrap(err)
} }
return groups, int(count), nil return groups, int(count), nil
@@ -572,7 +572,7 @@ func (a *App) GetGroupsByTeam(teamID string, opts model.GroupSearchOpts) ([]*mod
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, "", http.StatusInternalServerError).Wrap(err)
} }
return groupsAssociatedByChannelId, nil return groupsAssociatedByChannelId, nil
@@ -581,7 +581,7 @@ func (a *App) GetGroupsAssociatedToChannelsByTeam(teamID string, opts model.Grou
func (a *App) GetGroups(page, perPage int, opts model.GroupSearchOpts) ([]*model.Group, *model.AppError) { func (a *App) GetGroups(page, perPage int, opts model.GroupSearchOpts) ([]*model.Group, *model.AppError) {
groups, err := a.Srv().Store.Group().GetGroups(page, perPage, opts) groups, err := a.Srv().Store.Group().GetGroups(page, perPage, opts)
if err != nil { if err != nil {
return nil, model.NewAppError("GetGroups", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetGroups", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return groups, nil return groups, nil
@@ -595,7 +595,7 @@ func (a *App) GetGroups(page, perPage int, opts model.GroupSearchOpts) ([]*model
func (a *App) TeamMembersMinusGroupMembers(teamID string, groupIDs []string, page, perPage int) ([]*model.UserWithGroups, int64, *model.AppError) { func (a *App) TeamMembersMinusGroupMembers(teamID string, groupIDs []string, page, perPage int) ([]*model.UserWithGroups, int64, *model.AppError) {
users, err := a.Srv().Store.Group().TeamMembersMinusGroupMembers(teamID, groupIDs, page, perPage) users, err := a.Srv().Store.Group().TeamMembersMinusGroupMembers(teamID, groupIDs, page, perPage)
if err != nil { if err != nil {
return nil, 0, model.NewAppError("TeamMembersMinusGroupMembers", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, 0, model.NewAppError("TeamMembersMinusGroupMembers", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, u := range users { for _, u := range users {
@@ -641,7 +641,7 @@ func (a *App) TeamMembersMinusGroupMembers(teamID string, groupIDs []string, pag
totalCount, err := a.Srv().Store.Group().CountTeamMembersMinusGroupMembers(teamID, groupIDs) totalCount, err := a.Srv().Store.Group().CountTeamMembersMinusGroupMembers(teamID, groupIDs)
if err != nil { if err != nil {
return nil, 0, model.NewAppError("TeamMembersMinusGroupMembers", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, 0, model.NewAppError("TeamMembersMinusGroupMembers", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return users, totalCount, nil return users, totalCount, nil
} }
@@ -649,7 +649,7 @@ func (a *App) TeamMembersMinusGroupMembers(teamID string, groupIDs []string, pag
func (a *App) GetGroupsByIDs(groupIDs []string) ([]*model.Group, *model.AppError) { func (a *App) GetGroupsByIDs(groupIDs []string) ([]*model.Group, *model.AppError) {
groups, err := a.Srv().Store.Group().GetByIDs(groupIDs) groups, err := a.Srv().Store.Group().GetByIDs(groupIDs)
if err != nil { if err != nil {
return nil, model.NewAppError("GetGroupsByIDs", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetGroupsByIDs", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return groups, nil return groups, nil
@@ -663,7 +663,7 @@ func (a *App) GetGroupsByIDs(groupIDs []string) ([]*model.Group, *model.AppError
func (a *App) ChannelMembersMinusGroupMembers(channelID string, groupIDs []string, page, perPage int) ([]*model.UserWithGroups, int64, *model.AppError) { func (a *App) ChannelMembersMinusGroupMembers(channelID string, groupIDs []string, page, perPage int) ([]*model.UserWithGroups, int64, *model.AppError) {
users, err := a.Srv().Store.Group().ChannelMembersMinusGroupMembers(channelID, groupIDs, page, perPage) users, err := a.Srv().Store.Group().ChannelMembersMinusGroupMembers(channelID, groupIDs, page, perPage)
if err != nil { if err != nil {
return nil, 0, model.NewAppError("ChannelMembersMinusGroupMembers", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, 0, model.NewAppError("ChannelMembersMinusGroupMembers", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, u := range users { for _, u := range users {
@@ -709,7 +709,7 @@ func (a *App) ChannelMembersMinusGroupMembers(channelID string, groupIDs []strin
totalCount, err := a.Srv().Store.Group().CountChannelMembersMinusGroupMembers(channelID, groupIDs) totalCount, err := a.Srv().Store.Group().CountChannelMembersMinusGroupMembers(channelID, groupIDs)
if err != nil { if err != nil {
return nil, 0, model.NewAppError("ChannelMembersMinusGroupMembers", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return nil, 0, model.NewAppError("ChannelMembersMinusGroupMembers", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return users, totalCount, nil return users, totalCount, nil
} }
@@ -719,7 +719,7 @@ func (a *App) ChannelMembersMinusGroupMembers(channelID string, groupIDs []strin
func (a *App) UserIsInAdminRoleGroup(userID, syncableID string, syncableType model.GroupSyncableType) (bool, *model.AppError) { func (a *App) UserIsInAdminRoleGroup(userID, syncableID string, syncableType model.GroupSyncableType) (bool, *model.AppError) {
groupIDs, err := a.Srv().Store.Group().AdminRoleGroupsForSyncableMember(userID, syncableID, syncableType) groupIDs, err := a.Srv().Store.Group().AdminRoleGroupsForSyncableMember(userID, syncableID, syncableType)
if err != nil { if err != nil {
return false, model.NewAppError("UserIsInAdminRoleGroup", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return false, model.NewAppError("UserIsInAdminRoleGroup", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if len(groupIDs) == 0 { if len(groupIDs) == 0 {
@@ -738,9 +738,9 @@ func (a *App) UpsertGroupMembers(groupID string, userIDs []string) ([]*model.Gro
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("UpsertGroupMembers", "app.group.uniqueness_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("UpsertGroupMembers", "app.group.uniqueness_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("UpsertGroupMembers", "app.update_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpsertGroupMembers", "app.update_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -762,7 +762,7 @@ func (a *App) DeleteGroupMembers(groupID string, userIDs []string) ([]*model.Gro
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("DeleteGroupMember", "app.group.uniqueness_error", nil, "", http.StatusBadRequest).Wrap(invErr) return nil, model.NewAppError("DeleteGroupMember", "app.group.uniqueness_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("DeleteGroupMember", "app.update_error", nil, "", http.StatusInternalServerError).Wrap(err) return nil, model.NewAppError("DeleteGroupMember", "app.update_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }

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

@@ -25,13 +25,13 @@ const (
maxScanTokenSize = 16 * 1024 * 1024 // Need to set a higher limit than default because some customers cross the limit. See MM-22314 maxScanTokenSize = 16 * 1024 * 1024 // Need to set a higher limit than default because some customers cross the limit. See MM-22314
) )
func stopOnError(err LineImportWorkerError) bool { func stopOnError(c request.CTX, err LineImportWorkerError) bool {
switch err.Error.Id { switch err.Error.Id {
case "api.file.upload_file.large_image.app_error": case "api.file.upload_file.large_image.app_error":
mlog.Warn("Large image import error", mlog.Err(err.Error)) c.Logger().Warn("Large image import error", mlog.Err(err.Error))
return false return false
case "app.import.validate_direct_channel_import_data.members_too_few.error", "app.import.validate_direct_channel_import_data.members_too_many.error": case "app.import.validate_direct_channel_import_data.members_too_few.error", "app.import.validate_direct_channel_import_data.members_too_many.error":
mlog.Warn("Invalid direct channel import data", mlog.Err(err.Error)) c.Logger().Warn("Invalid direct channel import data", mlog.Err(err.Error))
return false return false
default: default:
return true return true
@@ -108,7 +108,7 @@ func processAttachments(line *LineImportData, basePath string, filesMap map[stri
return nil return nil
} }
func (a *App) bulkImportWorker(c *request.Context, dryRun bool, wg *sync.WaitGroup, lines <-chan LineImportWorkerData, errors chan<- LineImportWorkerError) { func (a *App) bulkImportWorker(c request.CTX, dryRun bool, wg *sync.WaitGroup, lines <-chan LineImportWorkerData, errors chan<- LineImportWorkerError) {
postLines := []LineImportWorkerData{} postLines := []LineImportWorkerData{}
directPostLines := []LineImportWorkerData{} directPostLines := []LineImportWorkerData{}
for line := range lines { for line := range lines {
@@ -167,7 +167,7 @@ func (a *App) BulkImportWithPath(c *request.Context, jsonlReader io.Reader, atta
// not nil. If it is nil, it will look for attachments on the // not nil. If it is nil, it will look for attachments on the
// filesystem in the locations specified by the JSONL file according // filesystem in the locations specified by the JSONL file according
// to the older behavior // to the older behavior
func (a *App) bulkImport(c *request.Context, jsonlReader io.Reader, attachmentsReader *zip.Reader, dryRun bool, workers int, importPath string) (*model.AppError, int) { func (a *App) bulkImport(c request.CTX, jsonlReader io.Reader, attachmentsReader *zip.Reader, dryRun bool, workers int, importPath string) (*model.AppError, int) {
scanner := bufio.NewScanner(jsonlReader) scanner := bufio.NewScanner(jsonlReader)
buf := make([]byte, 0, 64*1024) buf := make([]byte, 0, 64*1024)
scanner.Buffer(buf, maxScanTokenSize) scanner.Buffer(buf, maxScanTokenSize)
@@ -196,11 +196,11 @@ func (a *App) bulkImport(c *request.Context, jsonlReader io.Reader, attachmentsR
var line LineImportData var line LineImportData
if err := decoder.Decode(&line); err != nil { if err := decoder.Decode(&line); err != nil {
return model.NewAppError("BulkImport", "app.import.bulk_import.json_decode.error", nil, err.Error(), http.StatusBadRequest), lineNumber return model.NewAppError("BulkImport", "app.import.bulk_import.json_decode.error", nil, "", http.StatusBadRequest).Wrap(err), lineNumber
} }
if err := processAttachments(&line, importPath, attachedFiles); err != nil { if err := processAttachments(&line, importPath, attachedFiles); err != nil {
return model.NewAppError("BulkImport", "app.import.bulk_import.process_attachments.error", nil, err.Error(), http.StatusBadRequest), lineNumber c.Logger().Warn("Error while processing import attachments. Objects might be broken.", mlog.Err(err))
} }
if lineNumber == 1 { if lineNumber == 1 {
@@ -226,7 +226,7 @@ func (a *App) bulkImport(c *request.Context, jsonlReader io.Reader, attachmentsR
// Check no errors occurred while waiting for the queue to empty. // Check no errors occurred while waiting for the queue to empty.
if len(errorsChan) != 0 { if len(errorsChan) != 0 {
err := <-errorsChan err := <-errorsChan
if stopOnError(err) { if stopOnError(c, err) {
return err.Error, err.LineNumber return err.Error, err.LineNumber
} }
} }
@@ -244,7 +244,7 @@ func (a *App) bulkImport(c *request.Context, jsonlReader io.Reader, attachmentsR
select { select {
case linesChan <- LineImportWorkerData{line, lineNumber}: case linesChan <- LineImportWorkerData{line, lineNumber}:
case err := <-errorsChan: case err := <-errorsChan:
if stopOnError(err) { if stopOnError(c, err) {
close(linesChan) close(linesChan)
wg.Wait() wg.Wait()
return err.Error, err.LineNumber return err.Error, err.LineNumber
@@ -261,13 +261,13 @@ func (a *App) bulkImport(c *request.Context, jsonlReader io.Reader, attachmentsR
// Check no errors occurred while waiting for the queue to empty. // Check no errors occurred while waiting for the queue to empty.
if len(errorsChan) != 0 { if len(errorsChan) != 0 {
err := <-errorsChan err := <-errorsChan
if stopOnError(err) { if stopOnError(c, err) {
return err.Error, err.LineNumber return err.Error, err.LineNumber
} }
} }
if err := scanner.Err(); err != nil { if err := scanner.Err(); err != nil {
return model.NewAppError("BulkImport", "app.import.bulk_import.file_scan.error", nil, err.Error(), http.StatusInternalServerError), 0 return model.NewAppError("BulkImport", "app.import.bulk_import.file_scan.error", nil, "", http.StatusInternalServerError).Wrap(err), 0
} }
return nil, 0 return nil, 0
@@ -281,7 +281,7 @@ func processImportDataFileVersionLine(line LineImportData) (int, *model.AppError
return *line.Version, nil return *line.Version, nil
} }
func (a *App) importLine(c *request.Context, line LineImportData, dryRun bool) *model.AppError { func (a *App) importLine(c request.CTX, line LineImportData, dryRun bool) *model.AppError {
switch { switch {
case line.Type == "scheme": case line.Type == "scheme":
if line.Scheme == nil { if line.Scheme == nil {

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

@@ -158,7 +158,7 @@ func (a *App) importRole(data *RoleImportData, dryRun bool, isSchemeRole bool) *
return err return err
} }
func (a *App) importTeam(c *request.Context, data *TeamImportData, dryRun bool) *model.AppError { func (a *App) importTeam(c request.CTX, data *TeamImportData, dryRun bool) *model.AppError {
if err := validateTeamImportData(data); err != nil { if err := validateTeamImportData(data); err != nil {
return err return err
} }
@@ -214,11 +214,11 @@ func (a *App) importTeam(c *request.Context, data *TeamImportData, dryRun bool)
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return model.NewAppError("BulkImport", "app.team.get.find.app_error", nil, nfErr.Error(), http.StatusNotFound) return model.NewAppError("BulkImport", "app.team.get.find.app_error", nil, "", http.StatusNotFound).Wrap(err)
case errors.As(err, &invErr): case errors.As(err, &invErr):
return model.NewAppError("BulkImport", "app.team.update.find.app_error", nil, invErr.Error(), http.StatusBadRequest) return model.NewAppError("BulkImport", "app.team.update.find.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return model.NewAppError("BulkImport", "app.team.update.updating.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("BulkImport", "app.team.update.updating.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
} }
@@ -226,7 +226,7 @@ func (a *App) importTeam(c *request.Context, data *TeamImportData, dryRun bool)
return nil return nil
} }
func (a *App) importChannel(c *request.Context, data *ChannelImportData, dryRun bool) *model.AppError { func (a *App) importChannel(c request.CTX, data *ChannelImportData, dryRun bool) *model.AppError {
if err := validateChannelImportData(data); err != nil { if err := validateChannelImportData(data); err != nil {
return err return err
} }
@@ -238,7 +238,7 @@ func (a *App) importChannel(c *request.Context, data *ChannelImportData, dryRun
team, err := a.Srv().Store.Team().GetByName(*data.Team) team, err := a.Srv().Store.Team().GetByName(*data.Team)
if err != nil { if err != nil {
return model.NewAppError("BulkImport", "app.import.import_channel.team_not_found.error", map[string]any{"TeamName": *data.Team}, err.Error(), http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_channel.team_not_found.error", map[string]any{"TeamName": *data.Team}, "", http.StatusBadRequest).Wrap(err)
} }
var channel *model.Channel var channel *model.Channel
@@ -353,7 +353,7 @@ func (a *App) importUser(c request.CTX, data *UserImportData, dryRun bool) *mode
// If no AuthData or Password is specified, we must generate a password. // If no AuthData or Password is specified, we must generate a password.
password, err = generatePassword(*a.Config().PasswordSettings.MinimumLength) password, err = generatePassword(*a.Config().PasswordSettings.MinimumLength)
if err != nil { if err != nil {
return model.NewAppError("importUser", "app.import.generate_password.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("importUser", "app.import.generate_password.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
authData = nil authData = nil
} }
@@ -501,20 +501,20 @@ func (a *App) importUser(c request.CTX, data *UserImportData, dryRun bool) *mode
case errors.As(err, &appErr): case errors.As(err, &appErr):
return appErr return appErr
case errors.Is(err, users.AcceptedDomainError): case errors.Is(err, users.AcceptedDomainError):
return model.NewAppError("importUser", "api.user.create_user.accepted_domain.app_error", nil, "", http.StatusBadRequest) return model.NewAppError("importUser", "api.user.create_user.accepted_domain.app_error", nil, "", http.StatusBadRequest).Wrap(err)
case errors.Is(err, users.UserStoreIsEmptyError): case errors.Is(err, users.UserStoreIsEmptyError):
return model.NewAppError("importUser", "app.user.store_is_empty.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("importUser", "app.user.store_is_empty.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
case errors.As(err, &invErr): case errors.As(err, &invErr):
switch invErr.Field { switch invErr.Field {
case "email": case "email":
return model.NewAppError("importUser", "app.user.save.email_exists.app_error", nil, invErr.Error(), http.StatusBadRequest) return model.NewAppError("importUser", "app.user.save.email_exists.app_error", nil, "", http.StatusBadRequest).Wrap(err)
case "username": case "username":
return model.NewAppError("importUser", "app.user.save.username_exists.app_error", nil, invErr.Error(), http.StatusBadRequest) return model.NewAppError("importUser", "app.user.save.username_exists.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return model.NewAppError("importUser", "app.user.save.existing.app_error", nil, invErr.Error(), http.StatusBadRequest) return model.NewAppError("importUser", "app.user.save.existing.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
default: default:
return model.NewAppError("importUser", "app.user.save.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("importUser", "app.user.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -553,9 +553,9 @@ func (a *App) importUser(c request.CTX, data *UserImportData, dryRun bool) *mode
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(nErr, &invErr): case errors.As(nErr, &invErr):
return model.NewAppError("importUser", "app.user.update_auth_data.email_exists.app_error", nil, invErr.Error(), http.StatusBadRequest) return model.NewAppError("importUser", "app.user.update_auth_data.email_exists.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
default: default:
return model.NewAppError("importUser", "app.user.update_auth_data.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("importUser", "app.user.update_auth_data.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
} }
@@ -723,7 +723,7 @@ func (a *App) importUser(c request.CTX, data *UserImportData, dryRun bool) *mode
if len(preferences) > 0 { if len(preferences) > 0 {
if err := a.Srv().Store.Preference().Save(preferences); err != nil { if err := a.Srv().Store.Preference().Save(preferences); err != nil {
return model.NewAppError("BulkImport", "app.import.import_user.save_preferences.error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("BulkImport", "app.import.import_user.save_preferences.error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -756,7 +756,7 @@ func (a *App) importUserTeams(c request.CTX, user *model.User, data *[]UserTeamI
isAdminByTeamId := map[string]bool{} isAdminByTeamId := map[string]bool{}
existingMemberships, nErr := a.Srv().Store.Team().GetTeamsForUser(context.Background(), user.Id, "", true) existingMemberships, nErr := a.Srv().Store.Team().GetTeamsForUser(context.Background(), user.Id, "", true)
if nErr != nil { if nErr != nil {
return model.NewAppError("importUserTeams", "app.team.get_members.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("importUserTeams", "app.team.get_members.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
existingMembershipsByTeamId := map[string]*model.TeamMember{} existingMembershipsByTeamId := map[string]*model.TeamMember{}
for _, teamMembership := range existingMemberships { for _, teamMembership := range existingMemberships {
@@ -839,7 +839,7 @@ func (a *App) importUserTeams(c request.CTX, user *model.User, data *[]UserTeamI
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
return appErr return appErr
default: default:
return model.NewAppError("importUserTeams", "app.team.save_member.save.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("importUserTeams", "app.team.save_member.save.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -855,11 +855,11 @@ func (a *App) importUserTeams(c request.CTX, user *model.User, data *[]UserTeamI
case errors.As(nErr, &appErr): // in case we haven't converted to plain error. case errors.As(nErr, &appErr): // in case we haven't converted to plain error.
return appErr return appErr
case errors.As(nErr, &conflictErr): case errors.As(nErr, &conflictErr):
return model.NewAppError("BulkImport", "app.import.import_user_teams.save_members.conflict.app_error", nil, nErr.Error(), http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_user_teams.save_members.conflict.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
case errors.As(nErr, &limitExceededErr): case errors.As(nErr, &limitExceededErr):
return model.NewAppError("BulkImport", "app.import.import_user_teams.save_members.max_accounts.app_error", nil, nErr.Error(), http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_user_teams.save_members.max_accounts.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
default: // last fallback in case it doesn't map to an existing app error. default: // last fallback in case it doesn't map to an existing app error.
return model.NewAppError("BulkImport", "app.import.import_user_teams.save_members.error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("BulkImport", "app.import.import_user_teams.save_members.error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
} }
@@ -878,7 +878,7 @@ func (a *App) importUserTeams(c request.CTX, user *model.User, data *[]UserTeamI
if len(teamThemePreferencesByID[team.Id]) > 0 { if len(teamThemePreferencesByID[team.Id]) > 0 {
pref := teamThemePreferencesByID[team.Id] pref := teamThemePreferencesByID[team.Id]
if err := a.Srv().Store.Preference().Save(pref); err != nil { if err := a.Srv().Store.Preference().Save(pref); err != nil {
return model.NewAppError("BulkImport", "app.import.import_user_teams.save_preferences.error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("BulkImport", "app.import.import_user_teams.save_preferences.error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
channelsToImport := channels[team.Id] channelsToImport := channels[team.Id]
@@ -915,7 +915,7 @@ func (a *App) importUserChannels(c request.CTX, user *model.User, team *model.Te
isAdminByChannelId := map[string]bool{} isAdminByChannelId := map[string]bool{}
existingMemberships, nErr := a.Srv().Store.Channel().GetMembersForUser(team.Id, user.Id) existingMemberships, nErr := a.Srv().Store.Channel().GetMembersForUser(team.Id, user.Id)
if nErr != nil { if nErr != nil {
return model.NewAppError("importUserChannels", "app.channel.get_members.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("importUserChannels", "app.channel.get_members.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
existingMembershipsByChannelId := map[string]model.ChannelMember{} existingMembershipsByChannelId := map[string]model.ChannelMember{}
for _, channelMembership := range existingMemberships { for _, channelMembership := range existingMemberships {
@@ -1012,9 +1012,9 @@ func (a *App) importUserChannels(c request.CTX, user *model.User, team *model.Te
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
return appErr return appErr
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return model.NewAppError("importUserChannels", MissingChannelMemberError, nil, nfErr.Error(), http.StatusNotFound) return model.NewAppError("importUserChannels", MissingChannelMemberError, nil, "", http.StatusNotFound).Wrap(nErr)
default: default:
return model.NewAppError("importUserChannels", "app.channel.get_member.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("importUserChannels", "app.channel.get_member.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -1028,12 +1028,12 @@ func (a *App) importUserChannels(c request.CTX, user *model.User, team *model.Te
case errors.As(nErr, &cErr): case errors.As(nErr, &cErr):
switch cErr.Resource { switch cErr.Resource {
case "ChannelMembers": case "ChannelMembers":
return model.NewAppError("importUserChannels", "app.channel.save_member.exists.app_error", nil, cErr.Error(), http.StatusBadRequest) return model.NewAppError("importUserChannels", "app.channel.save_member.exists.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
} }
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
return appErr return appErr
default: default:
return model.NewAppError("importUserChannels", "app.channel.create_direct_channel.internal_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("importUserChannels", "app.channel.create_direct_channel.internal_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
} }
@@ -1052,7 +1052,7 @@ func (a *App) importUserChannels(c request.CTX, user *model.User, team *model.Te
if len(channelPreferencesByID[channel.Id]) > 0 { if len(channelPreferencesByID[channel.Id]) > 0 {
pref := channelPreferencesByID[channel.Id] pref := channelPreferencesByID[channel.Id]
if err := a.Srv().Store.Preference().Save(pref); err != nil { if err := a.Srv().Store.Preference().Save(pref); err != nil {
return model.NewAppError("BulkImport", "app.import.import_user_channels.save_preferences.error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("BulkImport", "app.import.import_user_channels.save_preferences.error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
} }
@@ -1068,7 +1068,7 @@ func (a *App) importReaction(data *ReactionImportData, post *model.Post) *model.
var user *model.User var user *model.User
var nErr error var nErr error
if user, nErr = a.Srv().Store.User().GetByUsername(*data.User); nErr != nil { if user, nErr = a.Srv().Store.User().GetByUsername(*data.User); nErr != nil {
return model.NewAppError("BulkImport", "app.import.import_post.user_not_found.error", map[string]any{"Username": data.User}, nErr.Error(), http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_post.user_not_found.error", map[string]any{"Username": data.User}, "", http.StatusBadRequest).Wrap(nErr)
} }
reaction := &model.Reaction{ reaction := &model.Reaction{
@@ -1083,14 +1083,14 @@ func (a *App) importReaction(data *ReactionImportData, post *model.Post) *model.
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
return appErr return appErr
default: default:
return model.NewAppError("importReaction", "app.reaction.save.save.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("importReaction", "app.reaction.save.save.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
return nil return nil
} }
func (a *App) importReplies(c *request.Context, data []ReplyImportData, post *model.Post, teamID string) *model.AppError { func (a *App) importReplies(c request.CTX, 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 {
@@ -1117,7 +1117,7 @@ func (a *App) importReplies(c *request.Context, data []ReplyImportData, post *mo
// Check if this post already exists. // Check if this post already exists.
replies, nErr := a.Srv().Store.Post().GetPostsCreatedAt(post.ChannelId, *replyData.CreateAt) replies, nErr := a.Srv().Store.Post().GetPostsCreatedAt(post.ChannelId, *replyData.CreateAt)
if nErr != nil { if nErr != nil {
return model.NewAppError("importReplies", "app.post.get_posts_created_at.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("importReplies", "app.post.get_posts_created_at.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
var reply *model.Post var reply *model.Post
@@ -1174,15 +1174,15 @@ func (a *App) importReplies(c *request.Context, data []ReplyImportData, post *mo
case errors.As(err, &appErr): case errors.As(err, &appErr):
return appErr return appErr
case errors.As(err, &invErr): case errors.As(err, &invErr):
return model.NewAppError("importReplies", "app.post.save.existing.app_error", nil, invErr.Error(), http.StatusBadRequest) return model.NewAppError("importReplies", "app.post.save.existing.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return model.NewAppError("importReplies", "app.post.save.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("importReplies", "app.post.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
} }
if _, _, nErr := a.Srv().Store.Post().OverwriteMultiple(postsForOverwriteList); nErr != nil { if _, _, nErr := a.Srv().Store.Post().OverwriteMultiple(postsForOverwriteList); nErr != nil {
return model.NewAppError("importReplies", "app.post.overwrite.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("importReplies", "app.post.overwrite.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
for _, postWithData := range postsWithData { for _, postWithData := range postsWithData {
@@ -1192,7 +1192,7 @@ func (a *App) importReplies(c *request.Context, data []ReplyImportData, post *mo
return nil return nil
} }
func (a *App) importAttachment(c *request.Context, data *AttachmentImportData, post *model.Post, teamID string) (*model.FileInfo, *model.AppError) { func (a *App) importAttachment(c request.CTX, data *AttachmentImportData, post *model.Post, teamID string) (*model.FileInfo, *model.AppError) {
var ( var (
name string name string
file io.Reader file io.Reader
@@ -1200,7 +1200,7 @@ func (a *App) importAttachment(c *request.Context, data *AttachmentImportData, p
if data.Data != nil { if data.Data != nil {
zipFile, err := data.Data.Open() zipFile, err := data.Data.Open()
if err != nil { if err != nil {
return nil, model.NewAppError("BulkImport", "app.import.attachment.bad_file.error", map[string]any{"FilePath": *data.Path}, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("BulkImport", "app.import.attachment.bad_file.error", map[string]any{"FilePath": *data.Path}, "", http.StatusBadRequest).Wrap(err)
} }
defer zipFile.Close() defer zipFile.Close()
name = data.Data.Name name = data.Data.Name
@@ -1208,7 +1208,7 @@ func (a *App) importAttachment(c *request.Context, data *AttachmentImportData, p
} else { } else {
realFile, err := os.Open(*data.Path) realFile, err := os.Open(*data.Path)
if err != nil { if err != nil {
return nil, model.NewAppError("BulkImport", "app.import.attachment.bad_file.error", map[string]any{"FilePath": *data.Path}, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("BulkImport", "app.import.attachment.bad_file.error", map[string]any{"FilePath": *data.Path}, "", http.StatusBadRequest).Wrap(err)
} }
defer realFile.Close() defer realFile.Close()
name = realFile.Name() name = realFile.Name()
@@ -1275,7 +1275,7 @@ func (a *App) getUsersByUsernames(usernames []string) (map[string]*model.User, *
uniqueUsernames := utils.RemoveDuplicatesFromStringArray(usernames) uniqueUsernames := utils.RemoveDuplicatesFromStringArray(usernames)
allUsers, err := a.Srv().Store.User().GetProfilesByUsernames(uniqueUsernames, nil) allUsers, err := a.Srv().Store.User().GetProfilesByUsernames(uniqueUsernames, nil)
if err != nil { if err != nil {
return nil, model.NewAppError("BulkImport", "app.import.get_users_by_username.some_users_not_found.error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("BulkImport", "app.import.get_users_by_username.some_users_not_found.error", nil, "", http.StatusBadRequest).Wrap(err)
} }
if len(allUsers) != len(uniqueUsernames) { if len(allUsers) != len(uniqueUsernames) {
@@ -1292,7 +1292,7 @@ func (a *App) getUsersByUsernames(usernames []string) (map[string]*model.User, *
func (a *App) getTeamsByNames(names []string) (map[string]*model.Team, *model.AppError) { func (a *App) getTeamsByNames(names []string) (map[string]*model.Team, *model.AppError) {
allTeams, err := a.Srv().Store.Team().GetByNames(names) allTeams, err := a.Srv().Store.Team().GetByNames(names)
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, "", http.StatusBadRequest).Wrap(err)
} }
teams := make(map[string]*model.Team) teams := make(map[string]*model.Team)
@@ -1305,7 +1305,7 @@ func (a *App) getTeamsByNames(names []string) (map[string]*model.Team, *model.Ap
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, "", http.StatusBadRequest).Wrap(err)
} }
channels := make(map[string]*model.Channel) channels := make(map[string]*model.Channel)
@@ -1327,7 +1327,7 @@ func (a *App) getChannelsForPosts(teams map[string]*model.Team, data []*PostImpo
var err error var err error
channel, err = a.Srv().Store.Channel().GetByName(teams[teamName].Id, *postData.Channel, true) channel, err = a.Srv().Store.Channel().GetByName(teams[teamName].Id, *postData.Channel, true)
if err != nil { if err != nil {
return nil, model.NewAppError("BulkImport", "app.import.import_post.channel_not_found.error", map[string]any{"ChannelName": *postData.Channel}, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("BulkImport", "app.import.import_post.channel_not_found.error", map[string]any{"ChannelName": *postData.Channel}, "", http.StatusBadRequest).Wrap(err)
} }
teamChannels[teamName][*postData.Channel] = channel teamChannels[teamName][*postData.Channel] = channel
} }
@@ -1343,7 +1343,7 @@ func getPostStrID(post *model.Post) string {
// importMultiplePostLines will return an error and the line that // importMultiplePostLines will return an error and the line that
// caused it whenever possible // caused it whenever possible
func (a *App) importMultiplePostLines(c *request.Context, lines []LineImportWorkerData, dryRun bool) (int, *model.AppError) { func (a *App) importMultiplePostLines(c request.CTX, lines []LineImportWorkerData, dryRun bool) (int, *model.AppError) {
if len(lines) == 0 { if len(lines) == 0 {
return 0, nil return 0, nil
} }
@@ -1399,7 +1399,7 @@ func (a *App) importMultiplePostLines(c *request.Context, lines []LineImportWork
// Check if this post already exists. // Check if this post already exists.
posts, nErr := a.Srv().Store.Post().GetPostsCreatedAt(channel.Id, *line.Post.CreateAt) posts, nErr := a.Srv().Store.Post().GetPostsCreatedAt(channel.Id, *line.Post.CreateAt)
if nErr != nil { if nErr != nil {
return line.LineNumber, model.NewAppError("importMultiplePostLines", "app.post.get_posts_created_at.app_error", nil, nErr.Error(), http.StatusInternalServerError) return line.LineNumber, model.NewAppError("importMultiplePostLines", "app.post.get_posts_created_at.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
var post *model.Post var post *model.Post
@@ -1463,9 +1463,9 @@ func (a *App) importMultiplePostLines(c *request.Context, lines []LineImportWork
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
retErr = appErr retErr = appErr
case errors.As(nErr, &invErr): case errors.As(nErr, &invErr):
retErr = model.NewAppError("importMultiplePostLines", "app.post.save.existing.app_error", nil, invErr.Error(), http.StatusBadRequest) retErr = model.NewAppError("importMultiplePostLines", "app.post.save.existing.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
default: default:
retErr = model.NewAppError("importMultiplePostLines", "app.post.save.app_error", nil, nErr.Error(), http.StatusInternalServerError) retErr = model.NewAppError("importMultiplePostLines", "app.post.save.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
if idx != -1 && idx < len(postsForCreateList) { if idx != -1 && idx < len(postsForCreateList) {
@@ -1482,10 +1482,10 @@ func (a *App) importMultiplePostLines(c *request.Context, lines []LineImportWork
if idx != -1 && idx < len(postsForOverwriteList) { if idx != -1 && idx < len(postsForOverwriteList) {
post := postsForOverwriteList[idx] post := postsForOverwriteList[idx]
if lineNumber, ok := postsForOverwriteMap[getPostStrID(post)]; ok { if lineNumber, ok := postsForOverwriteMap[getPostStrID(post)]; ok {
return lineNumber, model.NewAppError("importMultiplePostLines", "app.post.overwrite.app_error", nil, err.Error(), http.StatusInternalServerError) return lineNumber, model.NewAppError("importMultiplePostLines", "app.post.overwrite.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return 0, model.NewAppError("importMultiplePostLines", "app.post.overwrite.app_error", nil, err.Error(), http.StatusInternalServerError) return 0, model.NewAppError("importMultiplePostLines", "app.post.overwrite.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, postWithData := range postsWithData { for _, postWithData := range postsWithData {
@@ -1506,7 +1506,7 @@ func (a *App) importMultiplePostLines(c *request.Context, lines []LineImportWork
if len(preferences) > 0 { if len(preferences) > 0 {
if err := a.Srv().Store.Preference().Save(preferences); err != nil { if err := a.Srv().Store.Preference().Save(preferences); err != nil {
return postWithData.lineNumber, model.NewAppError("BulkImport", "app.import.import_post.save_preferences.error", nil, err.Error(), http.StatusInternalServerError) return postWithData.lineNumber, model.NewAppError("BulkImport", "app.import.import_post.save_preferences.error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
} }
@@ -1532,7 +1532,7 @@ func (a *App) importMultiplePostLines(c *request.Context, lines []LineImportWork
} }
// 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(c *request.Context, attachments *[]AttachmentImportData, post *model.Post, teamID string) map[string]bool { func (a *App) uploadAttachments(c request.CTX, attachments *[]AttachmentImportData, post *model.Post, teamID string) map[string]bool {
if attachments == nil { if attachments == nil {
return nil return nil
} }
@@ -1589,13 +1589,13 @@ func (a *App) importDirectChannel(c request.CTX, data *DirectChannelImportData,
if len(userIDs) == 2 { if len(userIDs) == 2 {
ch, err := a.createDirectChannel(c, userIDs[0], userIDs[1]) ch, err := a.createDirectChannel(c, 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, "", http.StatusBadRequest).Wrap(err)
} }
channel = ch channel = ch
} else { } else {
ch, err := a.createGroupChannel(c, userIDs) ch, err := a.createGroupChannel(c, 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, "", http.StatusBadRequest).Wrap(err)
} }
channel = ch channel = ch
} }
@@ -1629,14 +1629,14 @@ func (a *App) importDirectChannel(c request.CTX, data *DirectChannelImportData,
appErr.StatusCode = http.StatusBadRequest appErr.StatusCode = http.StatusBadRequest
return appErr return appErr
default: default:
return model.NewAppError("importDirectChannel", "app.preference.save.updating.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("importDirectChannel", "app.preference.save.updating.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
} }
if data.Header != nil { if data.Header != nil {
channel.Header = *data.Header channel.Header = *data.Header
if _, appErr := a.Srv().Store.Channel().Update(channel); appErr != nil { if _, appErr := a.Srv().Store.Channel().Update(channel); appErr != nil {
return model.NewAppError("BulkImport", "app.import.import_direct_channel.update_header_failed.error", nil, appErr.Error(), http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_direct_channel.update_header_failed.error", nil, "", http.StatusBadRequest).Wrap(appErr)
} }
} }
@@ -1645,7 +1645,7 @@ func (a *App) importDirectChannel(c request.CTX, data *DirectChannelImportData,
// importMultipleDirectPostLines will return an error and the line // importMultipleDirectPostLines will return an error and the line
// that caused it whenever possible // that caused it whenever possible
func (a *App) importMultipleDirectPostLines(c *request.Context, lines []LineImportWorkerData, dryRun bool) (int, *model.AppError) { func (a *App) importMultipleDirectPostLines(c request.CTX, lines []LineImportWorkerData, dryRun bool) (int, *model.AppError) {
if len(lines) == 0 { if len(lines) == 0 {
return 0, nil return 0, nil
} }
@@ -1694,13 +1694,13 @@ func (a *App) importMultipleDirectPostLines(c *request.Context, lines []LineImpo
if len(userIDs) == 2 { if len(userIDs) == 2 {
ch, err = a.GetOrCreateDirectChannel(c, userIDs[0], userIDs[1]) ch, err = a.GetOrCreateDirectChannel(c, 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, "", http.StatusBadRequest).Wrap(err)
} }
channel = ch channel = ch
} else { } else {
ch, err = a.createGroupChannel(c, userIDs) ch, err = a.createGroupChannel(c, 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, "", http.StatusBadRequest).Wrap(err)
} }
channel = ch channel = ch
} }
@@ -1710,7 +1710,7 @@ func (a *App) importMultipleDirectPostLines(c *request.Context, lines []LineImpo
// Check if this post already exists. // Check if this post already exists.
posts, nErr := a.Srv().Store.Post().GetPostsCreatedAt(channel.Id, *line.DirectPost.CreateAt) posts, nErr := a.Srv().Store.Post().GetPostsCreatedAt(channel.Id, *line.DirectPost.CreateAt)
if nErr != nil { if nErr != nil {
return line.LineNumber, model.NewAppError("BulkImport", "app.post.get_posts_created_at.app_error", nil, nErr.Error(), http.StatusInternalServerError) return line.LineNumber, model.NewAppError("BulkImport", "app.post.get_posts_created_at.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
var post *model.Post var post *model.Post
@@ -1774,9 +1774,9 @@ func (a *App) importMultipleDirectPostLines(c *request.Context, lines []LineImpo
case errors.As(err, &appErr): case errors.As(err, &appErr):
retErr = appErr retErr = appErr
case errors.As(err, &invErr): case errors.As(err, &invErr):
retErr = model.NewAppError("importMultiplePostLines", "app.post.save.existing.app_error", nil, invErr.Error(), http.StatusBadRequest) retErr = model.NewAppError("importMultiplePostLines", "app.post.save.existing.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
retErr = model.NewAppError("importMultiplePostLines", "app.post.save.app_error", nil, err.Error(), http.StatusInternalServerError) retErr = model.NewAppError("importMultiplePostLines", "app.post.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if idx != -1 && idx < len(postsForCreateList) { if idx != -1 && idx < len(postsForCreateList) {
@@ -1792,10 +1792,10 @@ func (a *App) importMultipleDirectPostLines(c *request.Context, lines []LineImpo
if idx != -1 && idx < len(postsForOverwriteList) { if idx != -1 && idx < len(postsForOverwriteList) {
post := postsForOverwriteList[idx] post := postsForOverwriteList[idx]
if lineNumber, ok := postsForOverwriteMap[getPostStrID(post)]; ok { if lineNumber, ok := postsForOverwriteMap[getPostStrID(post)]; ok {
return lineNumber, model.NewAppError("importMultiplePostLines", "app.post.overwrite.app_error", nil, err.Error(), http.StatusInternalServerError) return lineNumber, model.NewAppError("importMultiplePostLines", "app.post.overwrite.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return 0, model.NewAppError("importMultiplePostLines", "app.post.overwrite.app_error", nil, err.Error(), http.StatusInternalServerError) return 0, model.NewAppError("importMultiplePostLines", "app.post.overwrite.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, postWithData := range postsWithData { for _, postWithData := range postsWithData {
@@ -1815,7 +1815,7 @@ func (a *App) importMultipleDirectPostLines(c *request.Context, lines []LineImpo
if len(preferences) > 0 { if len(preferences) > 0 {
if err := a.Srv().Store.Preference().Save(preferences); err != nil { if err := a.Srv().Store.Preference().Save(preferences); err != nil {
return postWithData.lineNumber, model.NewAppError("BulkImport", "app.import.import_post.save_preferences.error", nil, err.Error(), http.StatusInternalServerError) return postWithData.lineNumber, model.NewAppError("BulkImport", "app.import.import_post.save_preferences.error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
} }
@@ -1861,7 +1861,7 @@ func (a *App) importEmoji(data *EmojiImportData, dryRun bool) *model.AppError {
if err != nil { if err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
if !errors.As(err, &nfErr) { if !errors.As(err, &nfErr) {
return model.NewAppError("importEmoji", "app.emoji.get_by_name.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("importEmoji", "app.emoji.get_by_name.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -1892,7 +1892,7 @@ func (a *App) importEmoji(data *EmojiImportData, dryRun bool) *model.AppError {
if !alreadyExists { if !alreadyExists {
if _, err := a.Srv().Store.Emoji().Save(emoji); err != nil { if _, err := a.Srv().Store.Emoji().Save(emoji); err != nil {
return model.NewAppError("importEmoji", "api.emoji.create.internal_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("importEmoji", "api.emoji.create.internal_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
} }

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

@@ -4150,45 +4150,45 @@ func TestImportImportEmoji(t *testing.T) {
testImage := filepath.Join(testsDir, "test.png") testImage := filepath.Join(testsDir, "test.png")
data := EmojiImportData{Name: ptrStr(model.NewId())} data := EmojiImportData{Name: ptrStr(model.NewId())}
err := th.App.importEmoji(&data, true) appErr := th.App.importEmoji(&data, true)
assert.NotNil(t, err, "Invalid emoji should have failed dry run") assert.NotNil(t, appErr, "Invalid emoji should have failed dry run")
emoji, nErr := th.App.Srv().Store.Emoji().GetByName(context.Background(), *data.Name, true) emoji, nErr := th.App.Srv().Store.Emoji().GetByName(context.Background(), *data.Name, true)
assert.Nil(t, emoji, "Emoji should not have been imported") assert.Nil(t, emoji, "Emoji should not have been imported")
assert.Error(t, nErr) assert.Error(t, nErr)
data.Image = ptrStr(testImage) data.Image = ptrStr(testImage)
err = th.App.importEmoji(&data, true) appErr = th.App.importEmoji(&data, true)
assert.Nil(t, err, "Valid emoji should have passed dry run") assert.Nil(t, appErr, "Valid emoji should have passed dry run")
data = EmojiImportData{Name: ptrStr(model.NewId())} data = EmojiImportData{Name: ptrStr(model.NewId())}
err = th.App.importEmoji(&data, false) appErr = th.App.importEmoji(&data, false)
assert.NotNil(t, err, "Invalid emoji should have failed apply mode") assert.NotNil(t, appErr, "Invalid emoji should have failed apply mode")
data.Image = ptrStr("non-existent-file") data.Image = ptrStr("non-existent-file")
err = th.App.importEmoji(&data, false) appErr = th.App.importEmoji(&data, false)
assert.NotNil(t, err, "Emoji with bad image file should have failed apply mode") assert.NotNil(t, appErr, "Emoji with bad image file should have failed apply mode")
data.Image = ptrStr(testImage) data.Image = ptrStr(testImage)
err = th.App.importEmoji(&data, false) appErr = th.App.importEmoji(&data, false)
assert.Nil(t, err, "Valid emoji should have succeeded apply mode") assert.Nil(t, appErr, "Valid emoji should have succeeded apply mode")
emoji, nErr = th.App.Srv().Store.Emoji().GetByName(context.Background(), *data.Name, true) emoji, nErr = th.App.Srv().Store.Emoji().GetByName(context.Background(), *data.Name, true)
assert.NotNil(t, emoji, "Emoji should have been imported") assert.NotNil(t, emoji, "Emoji should have been imported")
assert.NoError(t, nErr, "Emoji should have been imported without any error") assert.NoError(t, nErr, "Emoji should have been imported without any error")
err = th.App.importEmoji(&data, false) appErr = th.App.importEmoji(&data, false)
assert.Nil(t, err, "Second run should have succeeded apply mode") assert.Nil(t, appErr, "Second run should have succeeded apply mode")
data = EmojiImportData{Name: ptrStr("smiley"), Image: ptrStr(testImage)} data = EmojiImportData{Name: ptrStr("smiley"), Image: ptrStr(testImage)}
err = th.App.importEmoji(&data, false) appErr = th.App.importEmoji(&data, false)
assert.Nil(t, err, "System emoji should not fail") assert.Nil(t, appErr, "System emoji should not fail")
largeImage := filepath.Join(testsDir, "large_image_file.jpg") largeImage := filepath.Join(testsDir, "large_image_file.jpg")
data = EmojiImportData{Name: ptrStr(model.NewId()), Image: ptrStr(largeImage)} data = EmojiImportData{Name: ptrStr(model.NewId()), Image: ptrStr(largeImage)}
err = th.App.importEmoji(&data, false) appErr = th.App.importEmoji(&data, false)
require.NotNil(t, err) require.NotNil(t, appErr)
require.Contains(t, err.DetailedError, utils.SizeLimitExceeded.Error()) require.ErrorIs(t, appErr.Unwrap(), utils.SizeLimitExceeded)
} }
func TestImportAttachment(t *testing.T) { func TestImportAttachment(t *testing.T) {

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

@@ -127,27 +127,30 @@ func TestImportImportLine(t *testing.T) {
} }
func TestStopOnError(t *testing.T) { func TestStopOnError(t *testing.T) {
assert.True(t, stopOnError(LineImportWorkerError{ th := Setup(t)
defer th.TearDown()
assert.True(t, stopOnError(th.Context, LineImportWorkerError{
model.NewAppError("test", "app.import.attachment.bad_file.error", nil, "", http.StatusBadRequest), model.NewAppError("test", "app.import.attachment.bad_file.error", nil, "", http.StatusBadRequest),
1, 1,
})) }))
assert.True(t, stopOnError(LineImportWorkerError{ assert.True(t, stopOnError(th.Context, LineImportWorkerError{
model.NewAppError("test", "app.import.attachment.file_upload.error", nil, "", http.StatusBadRequest), model.NewAppError("test", "app.import.attachment.file_upload.error", nil, "", http.StatusBadRequest),
1, 1,
})) }))
assert.False(t, stopOnError(LineImportWorkerError{ assert.False(t, stopOnError(th.Context, LineImportWorkerError{
model.NewAppError("test", "api.file.upload_file.large_image.app_error", nil, "", http.StatusBadRequest), model.NewAppError("test", "api.file.upload_file.large_image.app_error", nil, "", http.StatusBadRequest),
1, 1,
})) }))
assert.False(t, stopOnError(LineImportWorkerError{ assert.False(t, stopOnError(th.Context, LineImportWorkerError{
model.NewAppError("test", "app.import.validate_direct_channel_import_data.members_too_few.error", nil, "", http.StatusBadRequest), model.NewAppError("test", "app.import.validate_direct_channel_import_data.members_too_few.error", nil, "", http.StatusBadRequest),
1, 1,
})) }))
assert.False(t, stopOnError(LineImportWorkerError{ assert.False(t, stopOnError(th.Context, LineImportWorkerError{
model.NewAppError("test", "app.import.validate_direct_channel_import_data.members_too_many.error", nil, "", http.StatusBadRequest), model.NewAppError("test", "app.import.validate_direct_channel_import_data.members_too_many.error", nil, "", http.StatusBadRequest),
1, 1,
})) }))

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

@@ -98,7 +98,7 @@ func (a *App) DoPostActionWithCookie(c *request.Context, postID, actionId, userI
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(result.NErr, &nfErr): case errors.As(result.NErr, &nfErr):
return "", model.NewAppError("DoPostActionWithCookie", "app.post.get.app_error", nil, "", http.StatusNotFound).Wrap(nfErr) return "", model.NewAppError("DoPostActionWithCookie", "app.post.get.app_error", nil, "", http.StatusNotFound).Wrap(result.NErr)
default: default:
return "", model.NewAppError("DoPostActionWithCookie", "app.post.get.app_error", nil, "", http.StatusInternalServerError).Wrap(result.NErr) return "", model.NewAppError("DoPostActionWithCookie", "app.post.get.app_error", nil, "", http.StatusInternalServerError).Wrap(result.NErr)
} }
@@ -116,7 +116,7 @@ func (a *App) DoPostActionWithCookie(c *request.Context, postID, actionId, userI
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return "", model.NewAppError("DoPostActionWithCookie", "app.channel.get.existing.app_error", nil, "", http.StatusNotFound).Wrap(nfErr) return "", model.NewAppError("DoPostActionWithCookie", "app.channel.get.existing.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return "", model.NewAppError("DoPostActionWithCookie", "app.channel.get.find.app_error", nil, "", http.StatusInternalServerError).Wrap(err) return "", model.NewAppError("DoPostActionWithCookie", "app.channel.get.find.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
@@ -195,7 +195,7 @@ func (a *App) DoPostActionWithCookie(c *request.Context, postID, actionId, userI
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(ur.NErr, &nfErr): case errors.As(ur.NErr, &nfErr):
return "", model.NewAppError("DoPostActionWithCookie", MissingAccountError, nil, "", http.StatusNotFound).Wrap(nfErr) return "", model.NewAppError("DoPostActionWithCookie", MissingAccountError, nil, "", http.StatusNotFound).Wrap(ur.NErr)
default: default:
return "", model.NewAppError("DoPostActionWithCookie", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(ur.NErr) return "", model.NewAppError("DoPostActionWithCookie", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(ur.NErr)
} }
@@ -209,7 +209,7 @@ func (a *App) DoPostActionWithCookie(c *request.Context, postID, actionId, userI
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(tr.NErr, &nfErr): case errors.As(tr.NErr, &nfErr):
return "", model.NewAppError("DoPostActionWithCookie", "app.team.get.find.app_error", nil, "", http.StatusNotFound).Wrap(nfErr) return "", model.NewAppError("DoPostActionWithCookie", "app.team.get.find.app_error", nil, "", http.StatusNotFound).Wrap(tr.NErr)
default: default:
return "", model.NewAppError("DoPostActionWithCookie", "app.team.get.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(tr.NErr) return "", model.NewAppError("DoPostActionWithCookie", "app.team.get.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(tr.NErr)
} }
@@ -313,7 +313,7 @@ func (a *App) DoPostActionWithCookie(c *request.Context, postID, actionId, userI
func (a *App) DoActionRequest(c *request.Context, rawURL string, body []byte) (*http.Response, *model.AppError) { func (a *App) DoActionRequest(c *request.Context, rawURL string, body []byte) (*http.Response, *model.AppError) {
inURL, err := url.Parse(rawURL) inURL, err := url.Parse(rawURL)
if err != nil { if err != nil {
return nil, model.NewAppError("DoActionRequest", "api.post.do_action.action_integration.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("DoActionRequest", "api.post.do_action.action_integration.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
rawURLPath := path.Clean(rawURL) rawURLPath := path.Clean(rawURL)
@@ -323,7 +323,7 @@ func (a *App) DoActionRequest(c *request.Context, rawURL string, body []byte) (*
req, err := http.NewRequest("POST", rawURL, bytes.NewReader(body)) req, err := http.NewRequest("POST", rawURL, bytes.NewReader(body))
if err != nil { if err != nil {
return nil, model.NewAppError("DoActionRequest", "api.post.do_action.action_integration.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("DoActionRequest", "api.post.do_action.action_integration.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
req.Header.Set("Content-Type", "application/json") req.Header.Set("Content-Type", "application/json")
req.Header.Set("Accept", "application/json") req.Header.Set("Accept", "application/json")
@@ -447,7 +447,7 @@ func (ch *Channels) doPluginRequest(c *request.Context, method, rawURL string, v
func (a *App) doLocalWarnMetricsRequest(c *request.Context, rawURL string, upstreamRequest *model.PostActionIntegrationRequest) *model.AppError { func (a *App) doLocalWarnMetricsRequest(c *request.Context, rawURL string, upstreamRequest *model.PostActionIntegrationRequest) *model.AppError {
_, err := url.Parse(rawURL) _, err := url.Parse(rawURL)
if err != nil { if err != nil {
return model.NewAppError("doLocalWarnMetricsRequest", "api.post.do_action.action_integration.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("doLocalWarnMetricsRequest", "api.post.do_action.action_integration.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
warnMetricId := filepath.Base(rawURL) warnMetricId := filepath.Base(rawURL)

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

@@ -38,7 +38,7 @@ func (ch *Channels) getInstalledIntegrations() ([]*model.InstalledIntegration, *
plugins, err := pluginsEnvironment.Available() plugins, err := pluginsEnvironment.Available()
if err != nil { if err != nil {
return nil, model.NewAppError("getInstalledIntegrations", "app.plugin.sync.read_local_folder.app_error", nil, err.Error(), 0) return nil, model.NewAppError("getInstalledIntegrations", "app.plugin.sync.read_local_folder.app_error", nil, "", 0).Wrap(err)
} }
pluginStates := ch.cfgSvc.Config().PluginSettings.PluginStates pluginStates := ch.cfgSvc.Config().PluginSettings.PluginStates

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

@@ -17,9 +17,9 @@ func (a *App) GetJob(id string) (*model.Job, *model.AppError) {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetJob", "app.job.get.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetJob", "app.job.get.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetJob", "app.job.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetJob", "app.job.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -33,7 +33,7 @@ func (a *App) GetJobsPage(page int, perPage int) ([]*model.Job, *model.AppError)
func (a *App) GetJobs(offset int, limit int) ([]*model.Job, *model.AppError) { func (a *App) GetJobs(offset int, limit int) ([]*model.Job, *model.AppError) {
jobs, err := a.Srv().Store.Job().GetAllPage(offset, limit) jobs, err := a.Srv().Store.Job().GetAllPage(offset, limit)
if err != nil { if err != nil {
return nil, model.NewAppError("GetJobs", "app.job.get_all.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetJobs", "app.job.get_all.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return jobs, nil return jobs, nil
@@ -46,7 +46,7 @@ func (a *App) GetJobsByTypePage(jobType string, page int, perPage int) ([]*model
func (a *App) GetJobsByType(jobType string, offset int, limit int) ([]*model.Job, *model.AppError) { func (a *App) GetJobsByType(jobType string, offset int, limit int) ([]*model.Job, *model.AppError) {
jobs, err := a.Srv().Store.Job().GetAllByTypePage(jobType, offset, limit) jobs, err := a.Srv().Store.Job().GetAllByTypePage(jobType, offset, limit)
if err != nil { if err != nil {
return nil, model.NewAppError("GetJobsByType", "app.job.get_all.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetJobsByType", "app.job.get_all.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return jobs, nil return jobs, nil
@@ -59,7 +59,7 @@ func (a *App) GetJobsByTypesPage(jobType []string, page int, perPage int) ([]*mo
func (a *App) GetJobsByTypes(jobTypes []string, offset int, limit int) ([]*model.Job, *model.AppError) { func (a *App) GetJobsByTypes(jobTypes []string, offset int, limit int) ([]*model.Job, *model.AppError) {
jobs, err := a.Srv().Store.Job().GetAllByTypesPage(jobTypes, offset, limit) jobs, err := a.Srv().Store.Job().GetAllByTypesPage(jobTypes, offset, limit)
if err != nil { if err != nil {
return nil, model.NewAppError("GetJobsByType", "app.job.get_all.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetJobsByType", "app.job.get_all.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return jobs, nil return jobs, nil
} }

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

@@ -171,7 +171,7 @@ func (a *App) MigrateIdLDAP(toAttribute string) *model.AppError {
case *model.AppError: case *model.AppError:
return err return err
default: default:
return model.NewAppError("IdMigrateLDAP", "ent.ldap_id_migrate.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("IdMigrateLDAP", "ent.ldap_id_migrate.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return nil return nil
@@ -182,18 +182,18 @@ func (a *App) MigrateIdLDAP(toAttribute string) *model.AppError {
func (a *App) writeLdapFile(filename string, fileData *multipart.FileHeader) *model.AppError { func (a *App) writeLdapFile(filename string, fileData *multipart.FileHeader) *model.AppError {
file, err := fileData.Open() file, err := fileData.Open()
if err != nil { if err != nil {
return model.NewAppError("AddLdapCertificate", "api.admin.add_certificate.open.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("AddLdapCertificate", "api.admin.add_certificate.open.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
defer file.Close() defer file.Close()
data, err := io.ReadAll(file) data, err := io.ReadAll(file)
if err != nil { if err != nil {
return model.NewAppError("AddLdapCertificate", "api.admin.add_certificate.saving.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("AddLdapCertificate", "api.admin.add_certificate.saving.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
err = a.Srv().platform.SetConfigFile(filename, data) err = a.Srv().platform.SetConfigFile(filename, data)
if err != nil { if err != nil {
return model.NewAppError("AddLdapCertificate", "api.admin.add_certificate.saving.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("AddLdapCertificate", "api.admin.add_certificate.saving.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
@@ -235,7 +235,7 @@ func (a *App) AddLdapPrivateCertificate(fileData *multipart.FileHeader) *model.A
func (a *App) removeLdapFile(filename string) *model.AppError { func (a *App) removeLdapFile(filename string) *model.AppError {
if err := a.Srv().platform.RemoveConfigFile(filename); err != nil { if err := a.Srv().platform.RemoveConfigFile(filename); err != nil {
return model.NewAppError("RemoveLdapFile", "api.admin.remove_certificate.delete.app_error", map[string]any{"Filename": filename}, err.Error(), http.StatusInternalServerError) return model.NewAppError("RemoveLdapFile", "api.admin.remove_certificate.delete.app_error", map[string]any{"Filename": filename}, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
} }

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

@@ -65,9 +65,9 @@ func (w *licenseWrapper) RequestTrialLicense(requesterID string, users int, term
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return model.NewAppError("RequestTrialLicense", MissingAccountError, nil, nfErr.Error(), http.StatusNotFound) return model.NewAppError("RequestTrialLicense", MissingAccountError, nil, "", http.StatusNotFound).Wrap(err)
default: default:
return model.NewAppError("RequestTrialLicense", "app.user.get_by_username.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("RequestTrialLicense", "app.user.get_by_username.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -166,12 +166,12 @@ func (s *Server) SaveLicense(licenseBytes []byte) (*model.License, *model.AppErr
var license model.License var license model.License
if jsonErr := json.Unmarshal([]byte(licenseStr), &license); jsonErr != nil { if jsonErr := json.Unmarshal([]byte(licenseStr), &license); jsonErr != nil {
return nil, model.NewAppError("addLicense", "api.unmarshal_error", nil, jsonErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("addLicense", "api.unmarshal_error", nil, "", http.StatusInternalServerError).Wrap(jsonErr)
} }
uniqueUserCount, err := s.Store.User().Count(model.UserCountOptions{}) uniqueUserCount, err := s.Store.User().Count(model.UserCountOptions{})
if err != nil { if err != nil {
return nil, model.NewAppError("addLicense", "api.license.add_license.invalid_count.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("addLicense", "api.license.add_license.invalid_count.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
if uniqueUserCount > int64(*license.Features.Users) { if uniqueUserCount > int64(*license.Features.Users) {
@@ -226,7 +226,7 @@ func (s *Server) SaveLicense(licenseBytes []byte) (*model.License, *model.AppErr
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("addLicense", "api.license.add_license.save.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("addLicense", "api.license.add_license.save.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -316,7 +316,7 @@ func (s *Server) RemoveLicense() *model.AppError {
sysVar.Value = "" sysVar.Value = ""
if err := s.Store.System().SaveOrUpdate(sysVar); err != nil { if err := s.Store.System().SaveOrUpdate(sysVar); err != nil {
return model.NewAppError("RemoveLicense", "app.system.save.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("RemoveLicense", "app.system.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
s.SetLicense(nil) s.SetLicense(nil)
@@ -397,7 +397,7 @@ func (s *Server) GenerateRenewalToken(expiration time.Duration) (string, *model.
activeUsers, err := s.Store.User().Count(model.UserCountOptions{}) activeUsers, err := s.Store.User().Count(model.UserCountOptions{})
if err != nil { if err != nil {
return "", model.NewAppError("GenerateRenewalToken", "app.license.generate_renewal_token.app_error", return "", model.NewAppError("GenerateRenewalToken", "app.license.generate_renewal_token.app_error",
nil, err.Error(), http.StatusInternalServerError) nil, "", http.StatusInternalServerError).Wrap(err)
} }
expirationTime := time.Now().UTC().Add(expiration) expirationTime := time.Now().UTC().Add(expiration)
@@ -412,7 +412,7 @@ func (s *Server) GenerateRenewalToken(expiration time.Duration) (string, *model.
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
tokenString, err := token.SignedString([]byte(license.Customer.Email)) tokenString, err := token.SignedString([]byte(license.Customer.Email))
if err != nil { if err != nil {
return "", model.NewAppError("GenerateRenewalToken", "app.license.generate_renewal_token.app_error", nil, err.Error(), http.StatusInternalServerError) return "", model.NewAppError("GenerateRenewalToken", "app.license.generate_renewal_token.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return tokenString, nil return tokenString, nil

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

@@ -74,7 +74,7 @@ func (a *App) AuthenticateUserForLogin(c *request.Context, id, loginId, password
if nfErr := new(store.ErrNotFound); err != nil && !errors.As(err, &nfErr) { if nfErr := new(store.ErrNotFound); err != nil && !errors.As(err, &nfErr) {
mlog.Debug("Error retrieving the cws token from the store", mlog.Err(err)) mlog.Debug("Error retrieving the cws token from the store", mlog.Err(err))
return nil, model.NewAppError("AuthenticateUserForLogin", return nil, model.NewAppError("AuthenticateUserForLogin",
"api.user.login_by_cws.invalid_token.app_error", nil, "", http.StatusInternalServerError) "api.user.login_by_cws.invalid_token.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// If token is stored in the database that means it was used // If token is stored in the database that means it was used
if token != nil { if token != nil {

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

@@ -257,7 +257,7 @@ func (a *App) SendNotifications(c request.CTX, post *model.Post, team *model.Tea
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
if err != nil && !errors.As(err, &nfErr) { if err != nil && !errors.As(err, &nfErr) {
mac <- model.NewAppError("SendNotifications", "app.channel.autofollow.app_error", nil, err.Error(), http.StatusInternalServerError) mac <- model.NewAppError("SendNotifications", "app.channel.autofollow.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
return return
} }
@@ -280,7 +280,7 @@ func (a *App) SendNotifications(c request.CTX, post *model.Post, team *model.Tea
} }
threadMembership, err := a.Srv().Store.Thread().MaintainMembership(userID, post.RootId, opts) threadMembership, err := a.Srv().Store.Thread().MaintainMembership(userID, post.RootId, opts)
if err != nil { if err != nil {
mac <- model.NewAppError("SendNotifications", "app.channel.autofollow.app_error", nil, err.Error(), http.StatusInternalServerError) mac <- model.NewAppError("SendNotifications", "app.channel.autofollow.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
return return
} }
@@ -1128,7 +1128,7 @@ func (a *App) insertGroupMentions(group *model.Group, channel *model.Channel, pr
} }
if err != nil { if err != nil {
return false, model.NewAppError("insertGroupMentions", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return false, model.NewAppError("insertGroupMentions", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if mentions.Mentions == nil { if mentions.Mentions == nil {

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

@@ -232,14 +232,14 @@ func (a *App) clearPushNotificationSync(c request.CTX, currentSessionId, userID,
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, "", http.StatusInternalServerError).Wrap(err)
} }
msg.Badge = int(unreadCount) msg.Badge = int(unreadCount)
if msg.IsCRTEnabled { if msg.IsCRTEnabled {
totalUnreadMentions, err := a.Srv().Store.Thread().GetTotalUnreadMentions(userID, "", model.GetUserThreadsOpts{}) totalUnreadMentions, err := a.Srv().Store.Thread().GetTotalUnreadMentions(userID, "", model.GetUserThreadsOpts{})
if err != nil { if err != nil {
return model.NewAppError("clearPushNotificationSync", "app.user.get_thread_count_for_user.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("clearPushNotificationSync", "app.user.get_thread_count_for_user.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
msg.Badge += int(totalUnreadMentions) msg.Badge += int(totalUnreadMentions)
} }
@@ -270,7 +270,7 @@ func (a *App) updateMobileAppBadgeSync(userID string) *model.AppError {
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, "", http.StatusInternalServerError).Wrap(err)
} }
msg.Badge = int(unreadCount) msg.Badge = int(unreadCount)

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

@@ -48,9 +48,9 @@ func (a *App) CreateOAuthApp(app *model.OAuthApp) (*model.OAuthApp, *model.AppEr
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("CreateOAuthApp", "app.oauth.save_app.existing.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("CreateOAuthApp", "app.oauth.save_app.existing.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("CreateOAuthApp", "app.oauth.save_app.save.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateOAuthApp", "app.oauth.save_app.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -67,9 +67,9 @@ func (a *App) GetOAuthApp(appID string) (*model.OAuthApp, *model.AppError) {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetOAuthApp", "app.oauth.get_app.find.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetOAuthApp", "app.oauth.get_app.find.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetOAuthApp", "app.oauth.get_app.finding.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetOAuthApp", "app.oauth.get_app.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -94,9 +94,9 @@ func (a *App) UpdateOAuthApp(oldApp, updatedApp *model.OAuthApp) (*model.OAuthAp
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("UpdateOAuthApp", "app.oauth.update_app.find.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("UpdateOAuthApp", "app.oauth.update_app.find.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("UpdateOAuthApp", "app.oauth.update_app.updating.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateOAuthApp", "app.oauth.update_app.updating.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -109,7 +109,7 @@ func (a *App) DeleteOAuthApp(appID string) *model.AppError {
} }
if err := a.Srv().Store.OAuth().DeleteApp(appID); err != nil { if err := a.Srv().Store.OAuth().DeleteApp(appID); err != nil {
return model.NewAppError("DeleteOAuthApp", "app.oauth.delete_app.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DeleteOAuthApp", "app.oauth.delete_app.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.Srv().InvalidateAllCaches(); err != nil { if err := a.Srv().InvalidateAllCaches(); err != nil {
@@ -126,7 +126,7 @@ func (a *App) GetOAuthApps(page, perPage int) ([]*model.OAuthApp, *model.AppErro
oauthApps, err := a.Srv().Store.OAuth().GetApps(page*perPage, perPage) oauthApps, err := a.Srv().Store.OAuth().GetApps(page*perPage, perPage)
if err != nil { if err != nil {
return nil, model.NewAppError("GetOAuthApps", "app.oauth.get_apps.find.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetOAuthApps", "app.oauth.get_apps.find.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return oauthApps, nil return oauthApps, nil
@@ -139,7 +139,7 @@ func (a *App) GetOAuthAppsByCreator(userID string, page, perPage int) ([]*model.
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, "", http.StatusInternalServerError).Wrap(err)
} }
return oauthApps, nil return oauthApps, nil
@@ -186,9 +186,9 @@ func (a *App) AllowOAuthAppAccessToUser(userID string, authRequest *model.Author
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return "", model.NewAppError("AllowOAuthAppAccessToUser", "app.oauth.get_app.find.app_error", nil, nfErr.Error(), http.StatusNotFound) return "", model.NewAppError("AllowOAuthAppAccessToUser", "app.oauth.get_app.find.app_error", nil, "", http.StatusNotFound).Wrap(nErr)
default: default:
return "", model.NewAppError("AllowOAuthAppAccessToUser", "app.oauth.get_app.finding.app_error", nil, nErr.Error(), http.StatusInternalServerError) return "", model.NewAppError("AllowOAuthAppAccessToUser", "app.oauth.get_app.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -458,7 +458,7 @@ func (a *App) GetAuthorizedAppsForUser(userID string, page, perPage int) ([]*mod
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, "", http.StatusInternalServerError).Wrap(err)
} }
for k, a := range apps { for k, a := range apps {
@@ -477,7 +477,7 @@ func (a *App) DeauthorizeOAuthAppForUser(userID, appID string) *model.AppError {
// 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, "", http.StatusInternalServerError).Wrap(err)
} }
for _, ad := range accessData { for _, ad := range accessData {
@@ -486,13 +486,13 @@ func (a *App) DeauthorizeOAuthAppForUser(userID, appID string) *model.AppError {
} }
if err := a.Srv().Store.OAuth().RemoveAccessData(ad.Token); err != nil { if err := a.Srv().Store.OAuth().RemoveAccessData(ad.Token); err != nil {
return model.NewAppError("DeauthorizeOAuthAppForUser", "app.oauth.remove_access_data.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DeauthorizeOAuthAppForUser", "app.oauth.remove_access_data.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
// Deauthorize the app // Deauthorize the app
if err := a.Srv().Store.Preference().Delete(userID, model.PreferenceCategoryAuthorizedOAuthApp, appID); err != nil { if err := a.Srv().Store.Preference().Delete(userID, model.PreferenceCategoryAuthorizedOAuthApp, 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, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
@@ -511,9 +511,9 @@ func (a *App) RegenerateOAuthAppSecret(app *model.OAuthApp) (*model.OAuthApp, *m
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("RegenerateOAuthAppSecret", "app.oauth.update_app.find.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("RegenerateOAuthAppSecret", "app.oauth.update_app.find.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("RegenerateOAuthAppSecret", "app.oauth.update_app.updating.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("RegenerateOAuthAppSecret", "app.oauth.update_app.updating.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -524,11 +524,11 @@ func (a *App) RevokeAccessToken(token string) *model.AppError {
if err := a.ch.srv.userService.RevokeAccessToken(token); err != nil { if err := a.ch.srv.userService.RevokeAccessToken(token); err != nil {
switch { switch {
case errors.Is(err, users.GetTokenError): case errors.Is(err, users.GetTokenError):
return model.NewAppError("RevokeAccessToken", "api.oauth.revoke_access_token.get.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("RevokeAccessToken", "api.oauth.revoke_access_token.get.app_error", nil, "", http.StatusBadRequest).Wrap(err)
case errors.Is(err, users.DeleteTokenError): case errors.Is(err, users.DeleteTokenError):
return model.NewAppError("RevokeAccessToken", "api.oauth.revoke_access_token.del_token.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("RevokeAccessToken", "api.oauth.revoke_access_token.del_token.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
case errors.Is(err, users.DeleteSessionError): case errors.Is(err, users.DeleteSessionError):
return model.NewAppError("RevokeAccessToken", "api.oauth.revoke_access_token.del_session.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("RevokeAccessToken", "api.oauth.revoke_access_token.del_session.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -586,7 +586,7 @@ func (a *App) LoginByOAuth(c *request.Context, service string, userData io.Reade
authUser, err1 := provider.GetUserFromJSON(bytes.NewReader(buf.Bytes()), tokenUser) authUser, err1 := provider.GetUserFromJSON(bytes.NewReader(buf.Bytes()), tokenUser)
if err1 != nil { if err1 != nil {
return nil, model.NewAppError("LoginByOAuth", "api.user.login_by_oauth.parse.app_error", return nil, model.NewAppError("LoginByOAuth", "api.user.login_by_oauth.parse.app_error",
map[string]any{"Service": service}, err1.Error(), http.StatusBadRequest) map[string]any{"Service": service}, "", http.StatusBadRequest).Wrap(err1)
} }
if *authUser.AuthData == "" { if *authUser.AuthData == "" {
@@ -637,7 +637,7 @@ func (a *App) CompleteSwitchWithOAuth(service string, userData io.Reader, email
ssoUser, err1 := provider.GetUserFromJSON(userData, tokenUser) ssoUser, err1 := provider.GetUserFromJSON(userData, tokenUser)
if err1 != nil { if err1 != nil {
return nil, model.NewAppError("CompleteSwitchWithOAuth", "api.user.complete_switch_with_oauth.parse.app_error", return nil, model.NewAppError("CompleteSwitchWithOAuth", "api.user.complete_switch_with_oauth.parse.app_error",
map[string]any{"Service": service}, err1.Error(), http.StatusBadRequest) map[string]any{"Service": service}, "", http.StatusBadRequest).Wrap(err1)
} }
if *ssoUser.AuthData == "" { if *ssoUser.AuthData == "" {
@@ -647,7 +647,7 @@ func (a *App) CompleteSwitchWithOAuth(service string, userData io.Reader, email
user, nErr := a.Srv().Store.User().GetByEmail(email) user, nErr := a.Srv().Store.User().GetByEmail(email)
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("CompleteSwitchWithOAuth", MissingAccountError, nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CompleteSwitchWithOAuth", MissingAccountError, nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
if err := a.RevokeAllSessions(user.Id); err != nil { if err := a.RevokeAllSessions(user.Id); err != nil {
@@ -658,9 +658,9 @@ func (a *App) CompleteSwitchWithOAuth(service string, userData io.Reader, email
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(nErr, &invErr): case errors.As(nErr, &invErr):
return nil, model.NewAppError("importUser", "app.user.update_auth_data.email_exists.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("importUser", "app.user.update_auth_data.email_exists.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
default: default:
return nil, model.NewAppError("importUser", "app.user.update_auth_data.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("importUser", "app.user.update_auth_data.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -682,7 +682,7 @@ func (a *App) CreateOAuthStateToken(extra string) (*model.Token, *model.AppError
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("CreateOAuthStateToken", "app.recover.save.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateOAuthStateToken", "app.recover.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -692,7 +692,7 @@ func (a *App) CreateOAuthStateToken(extra string) (*model.Token, *model.AppError
func (a *App) GetOAuthStateToken(token string) (*model.Token, *model.AppError) { func (a *App) GetOAuthStateToken(token string) (*model.Token, *model.AppError) {
mToken, err := a.Srv().Store.Token().GetByToken(token) mToken, err := a.Srv().Store.Token().GetByToken(token)
if err != nil { if err != nil {
return nil, model.NewAppError("GetOAuthStateToken", "api.oauth.invalid_state_token.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetOAuthStateToken", "api.oauth.invalid_state_token.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
if mToken.Type != model.TokenTypeOAuth { if mToken.Type != model.TokenTypeOAuth {
@@ -710,7 +710,7 @@ func (a *App) GetAuthorizationCode(w http.ResponseWriter, r *http.Request, servi
sso, e2 := provider.GetSSOSettings(a.Config(), service) sso, e2 := provider.GetSSOSettings(a.Config(), service)
if e2 != nil { if e2 != nil {
return "", model.NewAppError("GetAuthorizationCode.GetSSOSettings", "api.user.get_authorization_code.endpoint.app_error", nil, e2.Error(), http.StatusNotImplemented) return "", model.NewAppError("GetAuthorizationCode.GetSSOSettings", "api.user.get_authorization_code.endpoint.app_error", nil, "", http.StatusNotImplemented).Wrap(e2)
} }
secure := false secure := false
@@ -775,12 +775,12 @@ func (a *App) AuthorizeOAuthUser(w http.ResponseWriter, r *http.Request, service
sso, e2 := provider.GetSSOSettings(a.Config(), service) sso, e2 := provider.GetSSOSettings(a.Config(), service)
if e2 != nil { if e2 != nil {
return nil, "", nil, nil, model.NewAppError("AuthorizeOAuthUser.GetSSOSettings", "api.user.get_authorization_code.endpoint.app_error", nil, e2.Error(), http.StatusNotImplemented) return nil, "", nil, nil, model.NewAppError("AuthorizeOAuthUser.GetSSOSettings", "api.user.get_authorization_code.endpoint.app_error", nil, "", http.StatusNotImplemented).Wrap(e2)
} }
b, strErr := b64.StdEncoding.DecodeString(state) b, strErr := b64.StdEncoding.DecodeString(state)
if strErr != nil { if strErr != nil {
return nil, "", nil, nil, model.NewAppError("AuthorizeOAuthUser", "api.user.authorize_oauth_user.invalid_state.app_error", nil, strErr.Error(), http.StatusBadRequest) return nil, "", nil, nil, model.NewAppError("AuthorizeOAuthUser", "api.user.authorize_oauth_user.invalid_state.app_error", nil, "", http.StatusBadRequest).Wrap(strErr)
} }
stateStr := string(b) stateStr := string(b)
@@ -835,7 +835,7 @@ func (a *App) AuthorizeOAuthUser(w http.ResponseWriter, r *http.Request, service
req, requestErr := http.NewRequest("POST", *sso.TokenEndpoint, strings.NewReader(p.Encode())) req, requestErr := http.NewRequest("POST", *sso.TokenEndpoint, strings.NewReader(p.Encode()))
if requestErr != nil { if requestErr != nil {
return nil, "", stateProps, nil, model.NewAppError("AuthorizeOAuthUser", "api.user.authorize_oauth_user.token_failed.app_error", nil, requestErr.Error(), http.StatusInternalServerError) return nil, "", stateProps, nil, model.NewAppError("AuthorizeOAuthUser", "api.user.authorize_oauth_user.token_failed.app_error", nil, "", http.StatusInternalServerError).Wrap(requestErr)
} }
req.Header.Set("Content-Type", "application/x-www-form-urlencoded") req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
@@ -843,7 +843,7 @@ func (a *App) AuthorizeOAuthUser(w http.ResponseWriter, r *http.Request, service
resp, err := a.HTTPService().MakeClient(true).Do(req) resp, err := a.HTTPService().MakeClient(true).Do(req)
if err != nil { if err != nil {
return nil, "", stateProps, nil, model.NewAppError("AuthorizeOAuthUser", "api.user.authorize_oauth_user.token_failed.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, "", stateProps, nil, model.NewAppError("AuthorizeOAuthUser", "api.user.authorize_oauth_user.token_failed.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
defer resp.Body.Close() defer resp.Body.Close()
@@ -870,13 +870,13 @@ func (a *App) AuthorizeOAuthUser(w http.ResponseWriter, r *http.Request, service
if ar.IdToken != "" { if ar.IdToken != "" {
userFromToken, err = provider.GetUserFromIdToken(ar.IdToken) userFromToken, err = provider.GetUserFromIdToken(ar.IdToken)
if err != nil { if err != nil {
return nil, "", stateProps, nil, model.NewAppError("AuthorizeOAuthUser", "api.user.authorize_oauth_user.token_failed.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, "", stateProps, nil, model.NewAppError("AuthorizeOAuthUser", "api.user.authorize_oauth_user.token_failed.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
req, requestErr = http.NewRequest("GET", *sso.UserAPIEndpoint, strings.NewReader("")) req, requestErr = http.NewRequest("GET", *sso.UserAPIEndpoint, strings.NewReader(""))
if requestErr != nil { if requestErr != nil {
return nil, "", stateProps, nil, model.NewAppError("AuthorizeOAuthUser", "api.user.authorize_oauth_user.service.app_error", map[string]any{"Service": service}, requestErr.Error(), http.StatusInternalServerError) return nil, "", stateProps, nil, model.NewAppError("AuthorizeOAuthUser", "api.user.authorize_oauth_user.service.app_error", map[string]any{"Service": service}, "", http.StatusInternalServerError).Wrap(requestErr)
} }
req.Header.Set("Content-Type", "application/x-www-form-urlencoded") req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
@@ -885,7 +885,7 @@ func (a *App) AuthorizeOAuthUser(w http.ResponseWriter, r *http.Request, service
resp, err = a.HTTPService().MakeClient(true).Do(req) resp, err = a.HTTPService().MakeClient(true).Do(req)
if err != nil { if err != nil {
return nil, "", stateProps, nil, model.NewAppError("AuthorizeOAuthUser", "api.user.authorize_oauth_user.service.app_error", map[string]any{"Service": service}, err.Error(), http.StatusInternalServerError) return nil, "", stateProps, nil, model.NewAppError("AuthorizeOAuthUser", "api.user.authorize_oauth_user.service.app_error", map[string]any{"Service": service}, "", http.StatusInternalServerError).Wrap(err)
} else if resp.StatusCode != http.StatusOK { } else if resp.StatusCode != http.StatusOK {
defer resp.Body.Close() defer resp.Body.Close()

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

@@ -210,7 +210,7 @@ func TestAuthorizeOAuthUser(t *testing.T) {
_, _, _, _, err := th.App.AuthorizeOAuthUser(nil, nil, model.ServiceGitlab, "", state, "") _, _, _, _, err := th.App.AuthorizeOAuthUser(nil, nil, model.ServiceGitlab, "", state, "")
require.NotNil(t, err) require.NotNil(t, err)
assert.Equal(t, "api.oauth.invalid_state_token.app_error", err.Id) assert.Equal(t, "api.oauth.invalid_state_token.app_error", err.Id)
assert.NotEqual(t, "", err.DetailedError) assert.Error(t, err.Unwrap())
}) })
t.Run("with a stored token of the wrong type", func(t *testing.T) { t.Run("with a stored token of the wrong type", func(t *testing.T) {

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

@@ -21,7 +21,7 @@ func (a *App) markAdminOnboardingComplete(c *request.Context) *model.AppError {
} }
if err := a.Srv().Store.System().SaveOrUpdate(&firstAdminCompleteSetupObj); err != nil { if err := a.Srv().Store.System().SaveOrUpdate(&firstAdminCompleteSetupObj); err != nil {
return model.NewAppError("setFirstAdminCompleteSetup", "api.error_set_first_admin_complete_setup", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("setFirstAdminCompleteSetup", "api.error_set_first_admin_complete_setup", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
@@ -82,7 +82,7 @@ func (a *App) GetOnboarding() (*model.System, *model.AppError) {
Value: "false", Value: "false",
}, nil }, nil
default: default:
return nil, model.NewAppError("getFirstAdminCompleteSetup", "api.error_get_first_admin_complete_setup", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("getFirstAdminCompleteSetup", "api.error_get_first_admin_complete_setup", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return firstAdminCompleteSetupObj, nil return firstAdminCompleteSetupObj, nil

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

@@ -2491,7 +2491,7 @@ func (a *OpenTracingAppLayer) CreateSidebarCategory(c request.CTX, userID string
return resultVar0, resultVar1 return resultVar0, resultVar1
} }
func (a *OpenTracingAppLayer) CreateTeam(c *request.Context, team *model.Team) (*model.Team, *model.AppError) { func (a *OpenTracingAppLayer) CreateTeam(c request.CTX, team *model.Team) (*model.Team, *model.AppError) {
origCtx := a.ctx origCtx := a.ctx
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.CreateTeam") span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.CreateTeam")
@@ -3830,7 +3830,7 @@ func (a *OpenTracingAppLayer) DoSystemConsoleRolesCreationMigration() {
a.app.DoSystemConsoleRolesCreationMigration() a.app.DoSystemConsoleRolesCreationMigration()
} }
func (a *OpenTracingAppLayer) DoUploadFile(c *request.Context, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, *model.AppError) { func (a *OpenTracingAppLayer) DoUploadFile(c request.CTX, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, *model.AppError) {
origCtx := a.ctx origCtx := a.ctx
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.DoUploadFile") span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.DoUploadFile")

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

@@ -40,52 +40,52 @@ func (s *permissionsServiceWrapper) HasPermissionToChannel(askingUserID string,
func (a *App) ResetPermissionsSystem() *model.AppError { func (a *App) ResetPermissionsSystem() *model.AppError {
// Reset all Teams to not have a scheme. // Reset all Teams to not have a scheme.
if err := a.Srv().Store.Team().ResetAllTeamSchemes(); err != nil { if err := a.Srv().Store.Team().ResetAllTeamSchemes(); err != nil {
return model.NewAppError("ResetPermissionsSystem", "app.team.reset_all_team_schemes.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("ResetPermissionsSystem", "app.team.reset_all_team_schemes.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// Reset all Channels to not have a scheme. // Reset all Channels to not have a scheme.
if err := a.Srv().Store.Channel().ResetAllChannelSchemes(); err != nil { if err := a.Srv().Store.Channel().ResetAllChannelSchemes(); err != nil {
return model.NewAppError("ResetPermissionsSystem", "app.channel.reset_all_channel_schemes.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("ResetPermissionsSystem", "app.channel.reset_all_channel_schemes.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// Reset all Custom Role assignments to Users. // Reset all Custom Role assignments to Users.
if err := a.Srv().Store.User().ClearAllCustomRoleAssignments(); err != nil { if err := a.Srv().Store.User().ClearAllCustomRoleAssignments(); err != nil {
return model.NewAppError("ResetPermissionsSystem", "app.user.clear_all_custom_role_assignments.select.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("ResetPermissionsSystem", "app.user.clear_all_custom_role_assignments.select.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// Reset all Custom Role assignments to TeamMembers. // Reset all Custom Role assignments to TeamMembers.
if err := a.Srv().Store.Team().ClearAllCustomRoleAssignments(); err != nil { if err := a.Srv().Store.Team().ClearAllCustomRoleAssignments(); err != nil {
return model.NewAppError("ResetPermissionsSystem", "app.team.clear_all_custom_role_assignments.select.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("ResetPermissionsSystem", "app.team.clear_all_custom_role_assignments.select.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// Reset all Custom Role assignments to ChannelMembers. // Reset all Custom Role assignments to ChannelMembers.
if err := a.Srv().Store.Channel().ClearAllCustomRoleAssignments(); err != nil { if err := a.Srv().Store.Channel().ClearAllCustomRoleAssignments(); err != nil {
return model.NewAppError("ResetPermissionsSystem", "app.channel.clear_all_custom_role_assignments.select.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("ResetPermissionsSystem", "app.channel.clear_all_custom_role_assignments.select.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// Purge all schemes from the database. // Purge all schemes from the database.
if err := a.Srv().Store.Scheme().PermanentDeleteAll(); err != nil { if err := a.Srv().Store.Scheme().PermanentDeleteAll(); err != nil {
return model.NewAppError("ResetPermissionsSystem", "app.scheme.permanent_delete_all.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("ResetPermissionsSystem", "app.scheme.permanent_delete_all.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// Purge all roles from the database. // Purge all roles from the database.
if err := a.Srv().Store.Role().PermanentDeleteAll(); err != nil { if err := a.Srv().Store.Role().PermanentDeleteAll(); err != nil {
return model.NewAppError("ResetPermissionsSystem", "app.role.permanent_delete_all.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("ResetPermissionsSystem", "app.role.permanent_delete_all.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// Remove the "System" table entry that marks the advanced permissions migration as done. // Remove the "System" table entry that marks the advanced permissions migration as done.
if _, err := a.Srv().Store.System().PermanentDeleteByName(model.AdvancedPermissionsMigrationKey); err != nil { if _, err := a.Srv().Store.System().PermanentDeleteByName(model.AdvancedPermissionsMigrationKey); err != nil {
return model.NewAppError("ResetPermissionSystem", "app.system.permanent_delete_by_name.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("ResetPermissionSystem", "app.system.permanent_delete_by_name.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// Remove the "System" table entry that marks the emoji permissions migration as done. // Remove the "System" table entry that marks the emoji permissions migration as done.
if _, err := a.Srv().Store.System().PermanentDeleteByName(EmojisPermissionsMigrationKey); err != nil { if _, err := a.Srv().Store.System().PermanentDeleteByName(EmojisPermissionsMigrationKey); err != nil {
return model.NewAppError("ResetPermissionSystem", "app.system.permanent_delete_by_name.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("ResetPermissionSystem", "app.system.permanent_delete_by_name.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// Remove the "System" table entry that marks the guest roles permissions migration as done. // Remove the "System" table entry that marks the guest roles permissions migration as done.
if _, err := a.Srv().Store.System().PermanentDeleteByName(GuestRolesCreationMigrationKey); err != nil { if _, err := a.Srv().Store.System().PermanentDeleteByName(GuestRolesCreationMigrationKey); err != nil {
return model.NewAppError("ResetPermissionSystem", "app.system.permanent_delete_by_name.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("ResetPermissionSystem", "app.system.permanent_delete_by_name.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// Now that the permissions system has been reset, re-run the migration to reinitialise it. // Now that the permissions system has been reset, re-run the migration to reinitialise it.

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

@@ -176,15 +176,15 @@ func (s *Server) doPermissionsMigration(key string, migrationMap permissionsMap,
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return model.NewAppError("doPermissionsMigration", "app.role.save.invalid_role.app_error", nil, invErr.Error(), http.StatusBadRequest) return model.NewAppError("doPermissionsMigration", "app.role.save.invalid_role.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return model.NewAppError("doPermissionsMigration", "app.role.save.insert.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("doPermissionsMigration", "app.role.save.insert.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
} }
if err := s.Store.System().SaveOrUpdate(&model.System{Name: key, Value: "true"}); err != nil { if err := s.Store.System().SaveOrUpdate(&model.System{Name: key, Value: "true"}); err != nil {
return model.NewAppError("doPermissionsMigration", "app.system.save.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("doPermissionsMigration", "app.system.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
} }

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

@@ -3,6 +3,8 @@
package platform package platform
import "github.com/mattermost/mattermost-server/v6/einterfaces"
func (ps *PlatformService) IsLeader() bool { func (ps *PlatformService) IsLeader() bool {
if ps.License() != nil && *ps.Config().ClusterSettings.Enable && ps.cluster != nil { if ps.License() != nil && *ps.Config().ClusterSettings.Enable && ps.cluster != nil {
return ps.cluster.IsLeader() return ps.cluster.IsLeader()
@@ -10,3 +12,7 @@ func (ps *PlatformService) IsLeader() bool {
return true return true
} }
func (ps *PlatformService) SetCluster(impl einterfaces.ClusterInterface) {
ps.cluster = impl
}

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

@@ -82,9 +82,9 @@ func (ps *PlatformService) UpdateConfig(f func(*model.Config)) {
func (ps *PlatformService) SaveConfig(newCfg *model.Config, sendConfigChangeClusterMessage bool) (*model.Config, *model.Config, *model.AppError) { func (ps *PlatformService) SaveConfig(newCfg *model.Config, sendConfigChangeClusterMessage bool) (*model.Config, *model.Config, *model.AppError) {
oldCfg, newCfg, err := ps.configStore.Set(newCfg) oldCfg, newCfg, err := ps.configStore.Set(newCfg)
if errors.Is(err, config.ErrReadOnlyConfiguration) { if errors.Is(err, config.ErrReadOnlyConfiguration) {
return nil, nil, model.NewAppError("saveConfig", "ent.cluster.save_config.error", nil, err.Error(), http.StatusForbidden) return nil, nil, model.NewAppError("saveConfig", "ent.cluster.save_config.error", nil, "", http.StatusForbidden).Wrap(err)
} else if err != nil { } else if err != nil {
return nil, nil, model.NewAppError("saveConfig", "app.save_config.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, nil, model.NewAppError("saveConfig", "app.save_config.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if ps.serviceConfig.StartMetrics && *ps.Config().MetricsSettings.Enable { if ps.serviceConfig.StartMetrics && *ps.Config().MetricsSettings.Enable {

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

@@ -7,7 +7,9 @@ import (
"testing" "testing"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/mattermost/mattermost-server/v6/einterfaces/mocks"
"github.com/mattermost/mattermost-server/v6/model" "github.com/mattermost/mattermost-server/v6/model"
) )
@@ -45,3 +47,28 @@ func TestConfigListener(t *testing.T) {
assert.True(t, listenerCalled, "listener should've been called") assert.True(t, listenerCalled, "listener should've been called")
assert.True(t, listener2Called, "listener 2 should've been called") assert.True(t, listener2Called, "listener 2 should've been called")
} }
func TestConfigSave(t *testing.T) {
th := Setup(t)
defer th.TearDown()
cm := &mocks.ClusterInterface{}
th.Service.SetCluster(cm)
t.Run("trigger a config changed event for the cluster", func(t *testing.T) {
oldCfg := th.Service.Config()
newCfg := oldCfg.Clone()
newCfg.ServiceSettings.SiteURL = model.NewString("http://newhost.me")
sanitizedOldCfg := th.Service.configStore.RemoveEnvironmentOverrides(oldCfg)
sanitizedNewCfg := th.Service.configStore.RemoveEnvironmentOverrides(newCfg)
cm.On("ConfigChanged", sanitizedOldCfg, sanitizedNewCfg, true).Return(nil)
_, _, appErr := th.Service.SaveConfig(newCfg, true)
require.Nil(t, appErr)
updatedCfg := th.Service.Config()
assert.Equal(t, "http://newhost.me", *updatedCfg.ServiceSettings.SiteURL)
})
}

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

@@ -292,7 +292,7 @@ func (ch *Channels) syncPlugins() *model.AppError {
availablePlugins, err := pluginsEnvironment.Available() availablePlugins, err := pluginsEnvironment.Available()
if err != nil { if err != nil {
return model.NewAppError("SyncPlugins", "app.plugin.sync.read_local_folder.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SyncPlugins", "app.plugin.sync.read_local_folder.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
var wg sync.WaitGroup var wg sync.WaitGroup
@@ -416,7 +416,7 @@ func (ch *Channels) enablePlugin(id string) *model.AppError {
availablePlugins, err := pluginsEnvironment.Available() availablePlugins, err := pluginsEnvironment.Available()
if err != nil { if err != nil {
return model.NewAppError("EnablePlugin", "app.plugin.config.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("EnablePlugin", "app.plugin.config.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
id = strings.ToLower(id) id = strings.ToLower(id)
@@ -442,7 +442,7 @@ func (ch *Channels) enablePlugin(id string) *model.AppError {
if err.Id == "ent.cluster.save_config.error" { if err.Id == "ent.cluster.save_config.error" {
return model.NewAppError("EnablePlugin", "app.plugin.cluster.save_config.app_error", nil, "", http.StatusInternalServerError) return model.NewAppError("EnablePlugin", "app.plugin.cluster.save_config.app_error", nil, "", http.StatusInternalServerError)
} }
return model.NewAppError("EnablePlugin", "app.plugin.config.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("EnablePlugin", "app.plugin.config.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
@@ -467,7 +467,7 @@ func (ch *Channels) disablePlugin(id string) *model.AppError {
availablePlugins, err := pluginsEnvironment.Available() availablePlugins, err := pluginsEnvironment.Available()
if err != nil { if err != nil {
return model.NewAppError("DisablePlugin", "app.plugin.config.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DisablePlugin", "app.plugin.config.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
id = strings.ToLower(id) id = strings.ToLower(id)
@@ -491,7 +491,7 @@ func (ch *Channels) disablePlugin(id string) *model.AppError {
// This call will implicitly invoke SyncPluginsActiveState which will deactivate disabled plugins. // This call will implicitly invoke SyncPluginsActiveState which will deactivate disabled plugins.
if _, _, err := ch.cfgSvc.SaveConfig(ch.cfgSvc.Config(), true); err != nil { if _, _, err := ch.cfgSvc.SaveConfig(ch.cfgSvc.Config(), true); err != nil {
return model.NewAppError("DisablePlugin", "app.plugin.config.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DisablePlugin", "app.plugin.config.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
@@ -519,7 +519,7 @@ func (a *App) GetPlugins() (*model.PluginsResponse, *model.AppError) {
availablePlugins, err := pluginsEnvironment.Available() availablePlugins, err := pluginsEnvironment.Available()
if err != nil { if err != nil {
return nil, model.NewAppError("GetPlugins", "app.plugin.get_plugins.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetPlugins", "app.plugin.get_plugins.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
resp := &model.PluginsResponse{Active: []*model.PluginInfo{}, Inactive: []*model.PluginInfo{}} resp := &model.PluginsResponse{Active: []*model.PluginInfo{}, Inactive: []*model.PluginInfo{}}
for _, plugin := range availablePlugins { for _, plugin := range availablePlugins {
@@ -616,7 +616,7 @@ func (ch *Channels) getRemoteMarketplacePlugin(pluginID, version string) (*model
ch.srv.HTTPService(), ch.srv.HTTPService(),
) )
if err != nil { if err != nil {
return nil, model.NewAppError("GetMarketplacePlugin", "app.plugin.marketplace_client.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetMarketplacePlugin", "app.plugin.marketplace_client.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
filter := ch.getBaseMarketplaceFilter() filter := ch.getBaseMarketplaceFilter()
@@ -629,7 +629,7 @@ func (ch *Channels) getRemoteMarketplacePlugin(pluginID, version string) (*model
plugin, err = marketplaceClient.GetLatestPlugin(filter) plugin, err = marketplaceClient.GetLatestPlugin(filter)
} }
if err != nil { if err != nil {
return nil, model.NewAppError("GetMarketplacePlugin", "app.plugin.marketplace_plugins.not_found.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetMarketplacePlugin", "app.plugin.marketplace_plugins.not_found.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return plugin, nil return plugin, nil
@@ -648,7 +648,7 @@ func (a *App) getRemotePlugins() (map[string]*model.MarketplacePlugin, *model.Ap
a.HTTPService(), a.HTTPService(),
) )
if err != nil { if err != nil {
return nil, model.NewAppError("getRemotePlugins", "app.plugin.marketplace_client.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("getRemotePlugins", "app.plugin.marketplace_client.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
filter := a.getBaseMarketplaceFilter() filter := a.getBaseMarketplaceFilter()
@@ -657,7 +657,7 @@ func (a *App) getRemotePlugins() (map[string]*model.MarketplacePlugin, *model.Ap
marketplacePlugins, err := marketplaceClient.GetPlugins(filter) marketplacePlugins, err := marketplaceClient.GetPlugins(filter)
if err != nil { if err != nil {
return nil, model.NewAppError("getRemotePlugins", "app.plugin.marketplace_client.failed_to_fetch", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("getRemotePlugins", "app.plugin.marketplace_client.failed_to_fetch", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, p := range marketplacePlugins { for _, p := range marketplacePlugins {
@@ -701,13 +701,13 @@ func (a *App) mergePrepackagedPlugins(remoteMarketplacePlugins map[string]*model
// If available in the marketplace, only overwrite if newer. // If available in the marketplace, only overwrite if newer.
prepackagedVersion, err := semver.Parse(prepackaged.Manifest.Version) prepackagedVersion, err := semver.Parse(prepackaged.Manifest.Version)
if err != nil { if err != nil {
return model.NewAppError("mergePrepackagedPlugins", "app.plugin.invalid_version.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("mergePrepackagedPlugins", "app.plugin.invalid_version.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
marketplacePlugin := remoteMarketplacePlugins[prepackaged.Manifest.Id] marketplacePlugin := remoteMarketplacePlugins[prepackaged.Manifest.Id]
marketplaceVersion, err := semver.Parse(marketplacePlugin.Manifest.Version) marketplaceVersion, err := semver.Parse(marketplacePlugin.Manifest.Version)
if err != nil { if err != nil {
return model.NewAppError("mergePrepackagedPlugins", "app.plugin.invalid_version.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("mergePrepackagedPlugins", "app.plugin.invalid_version.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
if prepackagedVersion.GT(marketplaceVersion) { if prepackagedVersion.GT(marketplaceVersion) {
@@ -727,7 +727,7 @@ func (a *App) mergeLocalPlugins(remoteMarketplacePlugins map[string]*model.Marke
localPlugins, err := pluginsEnvironment.Available() localPlugins, err := pluginsEnvironment.Available()
if err != nil { if err != nil {
return model.NewAppError("GetMarketplacePlugins", "app.plugin.config.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("GetMarketplacePlugins", "app.plugin.config.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, plugin := range localPlugins { for _, plugin := range localPlugins {
@@ -876,7 +876,7 @@ func (ch *Channels) notifyPluginEnabled(manifest *model.Manifest) error {
func (ch *Channels) getPluginsFromFolder() (map[string]*pluginSignaturePath, *model.AppError) { func (ch *Channels) getPluginsFromFolder() (map[string]*pluginSignaturePath, *model.AppError) {
fileStorePaths, appErr := ch.srv.listDirectory(fileStorePluginFolder, false) fileStorePaths, appErr := ch.srv.listDirectory(fileStorePluginFolder, false)
if appErr != nil { if appErr != nil {
return nil, model.NewAppError("getPluginsFromDir", "app.plugin.sync.list_filestore.app_error", nil, appErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("getPluginsFromDir", "app.plugin.sync.list_filestore.app_error", nil, "", http.StatusInternalServerError).Wrap(appErr)
} }
return ch.getPluginsFromFilePaths(fileStorePaths), nil return ch.getPluginsFromFilePaths(fileStorePaths), nil

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

@@ -289,11 +289,11 @@ func (api *PluginAPI) CreateSession(session *model.Session) (*model.Session, *mo
func (api *PluginAPI) ExtendSessionExpiry(sessionID string, expiresAt int64) *model.AppError { func (api *PluginAPI) ExtendSessionExpiry(sessionID string, expiresAt int64) *model.AppError {
session, err := api.app.ch.srv.userService.GetSessionByID(sessionID) session, err := api.app.ch.srv.userService.GetSessionByID(sessionID)
if err != nil { if err != nil {
return model.NewAppError("extendSessionExpiry", "app.session.get_sessions.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("extendSessionExpiry", "app.session.get_sessions.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := api.app.ch.srv.userService.ExtendSessionExpiry(session, expiresAt); err != nil { if err := api.app.ch.srv.userService.ExtendSessionExpiry(session, expiresAt); err != nil {
return model.NewAppError("extendSessionExpiry", "app.session.extend_session_expiry.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("extendSessionExpiry", "app.session.extend_session_expiry.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
@@ -852,7 +852,7 @@ func (api *PluginAPI) SendMail(to, subject, htmlBody string) *model.AppError {
} }
if err := api.app.Srv().EmailService.SendNotificationMail(to, subject, htmlBody); err != nil { if err := api.app.Srv().EmailService.SendNotificationMail(to, subject, htmlBody); err != nil {
return model.NewAppError("SendMail", "plugin_api.send_mail.missing_htmlbody", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SendMail", "plugin_api.send_mail.missing_htmlbody", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil

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

@@ -152,14 +152,14 @@ func (ch *Channels) installPlugin(pluginFile, signature io.ReadSeeker, installat
if signature != nil { if signature != nil {
signature.Seek(0, 0) signature.Seek(0, 0)
if _, appErr = ch.srv.writeFile(signature, getSignatureStorePath(manifest.Id)); appErr != nil { if _, appErr = ch.srv.writeFile(signature, getSignatureStorePath(manifest.Id)); appErr != nil {
return nil, model.NewAppError("saveSignature", "app.plugin.store_signature.app_error", nil, appErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("saveSignature", "app.plugin.store_signature.app_error", nil, "", http.StatusInternalServerError).Wrap(appErr)
} }
} }
// Store bundle in the file store to allow access from other servers. // Store bundle in the file store to allow access from other servers.
pluginFile.Seek(0, 0) pluginFile.Seek(0, 0)
if _, appErr := ch.srv.writeFile(pluginFile, getBundleStorePath(manifest.Id)); appErr != nil { if _, appErr := ch.srv.writeFile(pluginFile, getBundleStorePath(manifest.Id)); appErr != nil {
return nil, model.NewAppError("uploadPlugin", "app.plugin.store_bundle.app_error", nil, appErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("uploadPlugin", "app.plugin.store_bundle.app_error", nil, "", http.StatusInternalServerError).Wrap(appErr)
} }
ch.notifyClusterPluginEvent( ch.notifyClusterPluginEvent(
@@ -216,23 +216,23 @@ func (ch *Channels) InstallMarketplacePlugin(request *model.InstallMarketplacePl
var err error var err error
prepackagedVersion, err = semver.Parse(prepackagedPlugin.Manifest.Version) prepackagedVersion, err = semver.Parse(prepackagedPlugin.Manifest.Version)
if err != nil { if err != nil {
return nil, model.NewAppError("InstallMarketplacePlugin", "app.plugin.invalid_version.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("InstallMarketplacePlugin", "app.plugin.invalid_version.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
} }
marketplaceVersion, err := semver.Parse(plugin.Manifest.Version) marketplaceVersion, err := semver.Parse(plugin.Manifest.Version)
if err != nil { if err != nil {
return nil, model.NewAppError("InstallMarketplacePlugin", "app.prepackged-plugin.invalid_version.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("InstallMarketplacePlugin", "app.prepackged-plugin.invalid_version.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
if prepackagedVersion.LT(marketplaceVersion) { // Always true if no prepackaged plugin was found if prepackagedVersion.LT(marketplaceVersion) { // Always true if no prepackaged plugin was found
downloadedPluginBytes, err := ch.srv.downloadFromURL(plugin.DownloadURL) downloadedPluginBytes, err := ch.srv.downloadFromURL(plugin.DownloadURL)
if err != nil { if err != nil {
return nil, model.NewAppError("InstallMarketplacePlugin", "app.plugin.install_marketplace_plugin.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("InstallMarketplacePlugin", "app.plugin.install_marketplace_plugin.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
signature, err := plugin.DecodeSignature() signature, err := plugin.DecodeSignature()
if err != nil { if err != nil {
return nil, model.NewAppError("InstallMarketplacePlugin", "app.plugin.signature_decode.app_error", nil, err.Error(), http.StatusNotImplemented) return nil, model.NewAppError("InstallMarketplacePlugin", "app.plugin.signature_decode.app_error", nil, "", http.StatusNotImplemented).Wrap(err)
} }
pluginFile = bytes.NewReader(downloadedPluginBytes) pluginFile = bytes.NewReader(downloadedPluginBytes)
signatureFile = signature signatureFile = signature
@@ -280,7 +280,7 @@ func (ch *Channels) installPluginLocally(pluginFile, signature io.ReadSeeker, in
tmpDir, err := os.MkdirTemp("", "plugintmp") tmpDir, err := os.MkdirTemp("", "plugintmp")
if err != nil { if err != nil {
return nil, model.NewAppError("installPluginLocally", "app.plugin.filesystem.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("installPluginLocally", "app.plugin.filesystem.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
defer os.RemoveAll(tmpDir) defer os.RemoveAll(tmpDir)
@@ -300,12 +300,12 @@ func (ch *Channels) installPluginLocally(pluginFile, signature io.ReadSeeker, in
func extractPlugin(pluginFile io.ReadSeeker, extractDir string) (*model.Manifest, string, *model.AppError) { func extractPlugin(pluginFile io.ReadSeeker, extractDir string) (*model.Manifest, string, *model.AppError) {
pluginFile.Seek(0, 0) pluginFile.Seek(0, 0)
if err := extractTarGz(pluginFile, extractDir); err != nil { if err := extractTarGz(pluginFile, extractDir); err != nil {
return nil, "", model.NewAppError("extractPlugin", "app.plugin.extract.app_error", nil, err.Error(), http.StatusBadRequest) return nil, "", model.NewAppError("extractPlugin", "app.plugin.extract.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
dir, err := os.ReadDir(extractDir) dir, err := os.ReadDir(extractDir)
if err != nil { if err != nil {
return nil, "", model.NewAppError("extractPlugin", "app.plugin.filesystem.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, "", model.NewAppError("extractPlugin", "app.plugin.filesystem.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if len(dir) == 1 && dir[0].IsDir() { if len(dir) == 1 && dir[0].IsDir() {
@@ -314,7 +314,7 @@ func extractPlugin(pluginFile io.ReadSeeker, extractDir string) (*model.Manifest
manifest, _, err := model.FindManifest(extractDir) manifest, _, err := model.FindManifest(extractDir)
if err != nil { if err != nil {
return nil, "", model.NewAppError("extractPlugin", "app.plugin.manifest.app_error", nil, err.Error(), http.StatusBadRequest) return nil, "", model.NewAppError("extractPlugin", "app.plugin.manifest.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
if !model.IsValidPluginId(manifest.Id) { if !model.IsValidPluginId(manifest.Id) {
@@ -332,7 +332,7 @@ func (ch *Channels) installExtractedPlugin(manifest *model.Manifest, fromPluginD
bundles, err := pluginsEnvironment.Available() bundles, err := pluginsEnvironment.Available()
if err != nil { if err != nil {
return nil, model.NewAppError("installExtractedPlugin", "app.plugin.install.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("installExtractedPlugin", "app.plugin.install.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// Check for plugins installed with the same ID. // Check for plugins installed with the same ID.
@@ -380,20 +380,20 @@ func (ch *Channels) installExtractedPlugin(manifest *model.Manifest, fromPluginD
pluginPath := filepath.Join(*ch.cfgSvc.Config().PluginSettings.Directory, manifest.Id) pluginPath := filepath.Join(*ch.cfgSvc.Config().PluginSettings.Directory, manifest.Id)
err = utils.CopyDir(fromPluginDir, pluginPath) err = utils.CopyDir(fromPluginDir, pluginPath)
if err != nil { if err != nil {
return nil, model.NewAppError("installExtractedPlugin", "app.plugin.mvdir.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("installExtractedPlugin", "app.plugin.mvdir.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// Flag plugin locally as managed by the filestore. // Flag plugin locally as managed by the filestore.
f, err := os.Create(filepath.Join(pluginPath, managedPluginFileName)) f, err := os.Create(filepath.Join(pluginPath, managedPluginFileName))
if err != nil { if err != nil {
return nil, model.NewAppError("installExtractedPlugin", "app.plugin.flag_managed.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("installExtractedPlugin", "app.plugin.flag_managed.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
f.Close() f.Close()
if manifest.HasWebapp() { if manifest.HasWebapp() {
updatedManifest, err := pluginsEnvironment.UnpackWebappBundle(manifest.Id) updatedManifest, err := pluginsEnvironment.UnpackWebappBundle(manifest.Id)
if err != nil { if err != nil {
return nil, model.NewAppError("installExtractedPlugin", "app.plugin.webapp_bundle.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("installExtractedPlugin", "app.plugin.webapp_bundle.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
manifest = updatedManifest manifest = updatedManifest
} }
@@ -407,7 +407,7 @@ func (ch *Channels) installExtractedPlugin(manifest *model.Manifest, fromPluginD
updatedManifest, _, err := pluginsEnvironment.Activate(manifest.Id) updatedManifest, _, err := pluginsEnvironment.Activate(manifest.Id)
if err != nil { if err != nil {
return nil, model.NewAppError("installExtractedPlugin", "app.plugin.restart.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("installExtractedPlugin", "app.plugin.restart.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} else if updatedManifest == nil { } else if updatedManifest == nil {
return nil, model.NewAppError("installExtractedPlugin", "app.plugin.restart.app_error", nil, "failed to activate plugin: plugin already active", http.StatusInternalServerError) return nil, model.NewAppError("installExtractedPlugin", "app.plugin.restart.app_error", nil, "failed to activate plugin: plugin already active", http.StatusInternalServerError)
} }
@@ -432,13 +432,13 @@ func (ch *Channels) RemovePlugin(id string) *model.AppError {
storePluginFileName := getBundleStorePath(id) storePluginFileName := getBundleStorePath(id)
bundleExist, err := ch.srv.fileExists(storePluginFileName) bundleExist, err := ch.srv.fileExists(storePluginFileName)
if err != nil { if err != nil {
return model.NewAppError("removePlugin", "app.plugin.remove_bundle.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("removePlugin", "app.plugin.remove_bundle.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if !bundleExist { if !bundleExist {
return nil return nil
} }
if err = ch.srv.removeFile(storePluginFileName); err != nil { if err = ch.srv.removeFile(storePluginFileName); err != nil {
return model.NewAppError("removePlugin", "app.plugin.remove_bundle.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("removePlugin", "app.plugin.remove_bundle.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err = ch.removeSignature(id); err != nil { if err = ch.removeSignature(id); err != nil {
mlog.Warn("Can't remove signature", mlog.Err(err)) mlog.Warn("Can't remove signature", mlog.Err(err))
@@ -470,7 +470,7 @@ func (ch *Channels) removePluginLocally(id string) *model.AppError {
plugins, err := pluginsEnvironment.Available() plugins, err := pluginsEnvironment.Available()
if err != nil { if err != nil {
return model.NewAppError("removePlugin", "app.plugin.deactivate.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("removePlugin", "app.plugin.deactivate.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
var manifest *model.Manifest var manifest *model.Manifest
@@ -492,7 +492,7 @@ func (ch *Channels) removePluginLocally(id string) *model.AppError {
ch.unregisterPluginCommands(id) ch.unregisterPluginCommands(id)
if err := os.RemoveAll(pluginPath); err != nil { if err := os.RemoveAll(pluginPath); err != nil {
return model.NewAppError("removePlugin", "app.plugin.remove.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("removePlugin", "app.plugin.remove.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
@@ -502,14 +502,14 @@ func (ch *Channels) removeSignature(pluginID string) *model.AppError {
filePath := getSignatureStorePath(pluginID) filePath := getSignatureStorePath(pluginID)
exists, err := ch.srv.fileExists(filePath) exists, err := ch.srv.fileExists(filePath)
if err != nil { if err != nil {
return model.NewAppError("removeSignature", "app.plugin.remove_bundle.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("removeSignature", "app.plugin.remove_bundle.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if !exists { if !exists {
mlog.Debug("no plugin signature to remove", mlog.String("plugin_id", pluginID)) mlog.Debug("no plugin signature to remove", mlog.String("plugin_id", pluginID))
return nil return nil
} }
if err = ch.srv.removeFile(filePath); err != nil { if err = ch.srv.removeFile(filePath); err != nil {
return model.NewAppError("removeSignature", "app.plugin.remove_bundle.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("removeSignature", "app.plugin.remove_bundle.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
} }

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

@@ -67,7 +67,7 @@ func (s *Server) setPluginKeyWithOptions(pluginID string, key string, value []by
case errors.As(err, &appErr): case errors.As(err, &appErr):
return false, appErr return false, appErr
default: default:
return false, model.NewAppError("SetPluginKeyWithOptions", "app.plugin_store.save.app_error", nil, err.Error(), http.StatusInternalServerError) return false, model.NewAppError("SetPluginKeyWithOptions", "app.plugin_store.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -97,7 +97,7 @@ func (a *App) CompareAndDeletePluginKey(pluginID string, key string, oldValue []
case errors.As(err, &appErr): case errors.As(err, &appErr):
return deleted, appErr return deleted, appErr
default: default:
return false, model.NewAppError("CompareAndDeletePluginKey", "app.plugin_store.delete.app_error", nil, err.Error(), http.StatusInternalServerError) return false, model.NewAppError("CompareAndDeletePluginKey", "app.plugin_store.delete.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -114,7 +114,7 @@ func (s *Server) getPluginKey(pluginID string, key string) ([]byte, *model.AppEr
return kv.Value, nil return kv.Value, nil
} else if nfErr := new(store.ErrNotFound); !errors.As(err, &nfErr) { } else if nfErr := new(store.ErrNotFound); !errors.As(err, &nfErr) {
mlog.Error("Failed to query plugin key value", mlog.String("plugin_id", pluginID), mlog.String("key", key), mlog.Err(err)) mlog.Error("Failed to query plugin key value", mlog.String("plugin_id", pluginID), mlog.String("key", key), mlog.Err(err))
return nil, model.NewAppError("GetPluginKey", "app.plugin_store.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetPluginKey", "app.plugin_store.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// Lookup using the hashed version of the key for keys written prior to v5.6. // Lookup using the hashed version of the key for keys written prior to v5.6.
@@ -122,7 +122,7 @@ func (s *Server) getPluginKey(pluginID string, key string) ([]byte, *model.AppEr
return kv.Value, nil return kv.Value, nil
} else if nfErr := new(store.ErrNotFound); !errors.As(err, &nfErr) { } else if nfErr := new(store.ErrNotFound); !errors.As(err, &nfErr) {
mlog.Error("Failed to query plugin key value using hashed key", mlog.String("plugin_id", pluginID), mlog.String("key", key), mlog.Err(err)) mlog.Error("Failed to query plugin key value using hashed key", mlog.String("plugin_id", pluginID), mlog.String("key", key), mlog.Err(err))
return nil, model.NewAppError("GetPluginKey", "app.plugin_store.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetPluginKey", "app.plugin_store.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil, nil return nil, nil
@@ -135,13 +135,13 @@ func (a *App) GetPluginKey(pluginID string, key string) ([]byte, *model.AppError
func (s *Server) deletePluginKey(pluginID string, key string) *model.AppError { func (s *Server) deletePluginKey(pluginID string, key string) *model.AppError {
if err := s.Store.Plugin().Delete(pluginID, getKeyHash(key)); err != nil { if err := s.Store.Plugin().Delete(pluginID, getKeyHash(key)); err != nil {
mlog.Error("Failed to delete plugin key value", mlog.String("plugin_id", pluginID), mlog.String("key", key), mlog.Err(err)) mlog.Error("Failed to delete plugin key value", mlog.String("plugin_id", pluginID), mlog.String("key", key), mlog.Err(err))
return model.NewAppError("DeletePluginKey", "app.plugin_store.delete.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DeletePluginKey", "app.plugin_store.delete.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// Also delete the key without hashing // Also delete the key without hashing
if err := s.Store.Plugin().Delete(pluginID, key); err != nil { if err := s.Store.Plugin().Delete(pluginID, key); err != nil {
mlog.Error("Failed to delete plugin key value using hashed key", mlog.String("plugin_id", pluginID), mlog.String("key", key), mlog.Err(err)) mlog.Error("Failed to delete plugin key value using hashed key", mlog.String("plugin_id", pluginID), mlog.String("key", key), mlog.Err(err))
return model.NewAppError("DeletePluginKey", "app.plugin_store.delete.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DeletePluginKey", "app.plugin_store.delete.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
@@ -154,7 +154,7 @@ func (a *App) DeletePluginKey(pluginID string, key string) *model.AppError {
func (a *App) DeleteAllKeysForPlugin(pluginID string) *model.AppError { func (a *App) DeleteAllKeysForPlugin(pluginID string) *model.AppError {
if err := a.Srv().Store.Plugin().DeleteAllForPlugin(pluginID); err != nil { if err := a.Srv().Store.Plugin().DeleteAllForPlugin(pluginID); err != nil {
mlog.Error("Failed to delete all plugin key values", mlog.String("plugin_id", pluginID), mlog.Err(err)) mlog.Error("Failed to delete all plugin key values", mlog.String("plugin_id", pluginID), mlog.Err(err))
return model.NewAppError("DeleteAllKeysForPlugin", "app.plugin_store.delete.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DeleteAllKeysForPlugin", "app.plugin_store.delete.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
@@ -167,7 +167,7 @@ func (a *App) DeleteAllExpiredPluginKeys() *model.AppError {
if err := a.Srv().Store.Plugin().DeleteAllExpired(); err != nil { if err := a.Srv().Store.Plugin().DeleteAllExpired(); err != nil {
mlog.Error("Failed to delete all expired plugin key values", mlog.Err(err)) mlog.Error("Failed to delete all expired plugin key values", mlog.Err(err))
return model.NewAppError("DeleteAllExpiredPluginKeys", "app.plugin_store.delete.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DeleteAllExpiredPluginKeys", "app.plugin_store.delete.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
@@ -178,7 +178,7 @@ func (s *Server) listPluginKeys(pluginID string, page, perPage int) ([]string, *
if err != nil { if err != nil {
mlog.Error("Failed to list plugin key values", mlog.Int("page", page), mlog.Int("perPage", perPage), mlog.Err(err)) mlog.Error("Failed to list plugin key values", mlog.Int("page", page), mlog.Int("perPage", perPage), mlog.Err(err))
return nil, model.NewAppError("ListPluginKeys", "app.plugin_store.list.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("ListPluginKeys", "app.plugin_store.list.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return data, nil return data, nil

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

@@ -26,7 +26,7 @@ func (a *App) GetPublicKey(name string) ([]byte, *model.AppError) {
func (s *Server) getPublicKey(name string) ([]byte, *model.AppError) { func (s *Server) getPublicKey(name string) ([]byte, *model.AppError) {
data, err := s.platform.GetConfigFile(name) data, err := s.platform.GetConfigFile(name)
if err != nil { if err != nil {
return nil, model.NewAppError("GetPublicKey", "app.plugin.get_public_key.get_file.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetPublicKey", "app.plugin.get_public_key.get_file.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return data, nil return data, nil
} }
@@ -38,11 +38,11 @@ func (a *App) AddPublicKey(name string, key io.Reader) *model.AppError {
} }
data, err := io.ReadAll(key) data, err := io.ReadAll(key)
if err != nil { if err != nil {
return model.NewAppError("AddPublicKey", "app.plugin.write_file.read.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("AddPublicKey", "app.plugin.write_file.read.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
err = a.Srv().platform.SetConfigFile(name, data) err = a.Srv().platform.SetConfigFile(name, data)
if err != nil { if err != nil {
return model.NewAppError("AddPublicKey", "app.plugin.write_file.saving.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("AddPublicKey", "app.plugin.write_file.saving.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
a.UpdateConfig(func(cfg *model.Config) { a.UpdateConfig(func(cfg *model.Config) {
@@ -61,7 +61,7 @@ func (a *App) DeletePublicKey(name string) *model.AppError {
} }
filename := filepath.Base(name) filename := filepath.Base(name)
if err := a.Srv().platform.RemoveConfigFile(filename); err != nil { if err := a.Srv().platform.RemoveConfigFile(filename); err != nil {
return model.NewAppError("DeletePublicKey", "app.plugin.delete_public_key.delete.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DeletePublicKey", "app.plugin.delete_public_key.delete.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
a.UpdateConfig(func(cfg *model.Config) { a.UpdateConfig(func(cfg *model.Config) {

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

@@ -18,7 +18,7 @@ func (ch *Channels) GetPluginStatus(id string) (*model.PluginStatus, *model.AppE
pluginStatuses, err := pluginsEnvironment.Statuses() pluginStatuses, err := pluginsEnvironment.Statuses()
if err != nil { if err != nil {
return nil, model.NewAppError("GetPluginStatus", "app.plugin.get_statuses.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetPluginStatus", "app.plugin.get_statuses.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, status := range pluginStatuses { for _, status := range pluginStatuses {
@@ -49,7 +49,7 @@ func (ch *Channels) GetPluginStatuses() (model.PluginStatuses, *model.AppError)
pluginStatuses, err := pluginsEnvironment.Statuses() pluginStatuses, err := pluginsEnvironment.Statuses()
if err != nil { if err != nil {
return nil, model.NewAppError("GetPluginStatuses", "app.plugin.get_statuses.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetPluginStatuses", "app.plugin.get_statuses.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// Add our cluster ID // Add our cluster ID
@@ -83,7 +83,7 @@ func (ch *Channels) getClusterPluginStatuses() (model.PluginStatuses, *model.App
if ch.srv.Cluster != nil && *ch.cfgSvc.Config().ClusterSettings.Enable { if ch.srv.Cluster != nil && *ch.cfgSvc.Config().ClusterSettings.Enable {
clusterPluginStatuses, err := ch.srv.Cluster.GetPluginStatuses() clusterPluginStatuses, err := ch.srv.Cluster.GetPluginStatuses()
if err != nil { if err != nil {
return nil, model.NewAppError("GetClusterPluginStatuses", "app.plugin.get_cluster_plugin_statuses.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetClusterPluginStatuses", "app.plugin.get_cluster_plugin_statuses.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
pluginStatuses = append(pluginStatuses, clusterPluginStatuses...) pluginStatuses = append(pluginStatuses, clusterPluginStatuses...)

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

@@ -50,7 +50,7 @@ func (a *App) CreatePostAsUser(c request.CTX, post *model.Post, currentSessionId
// Check that channel has not been deleted // Check that channel has not been deleted
channel, errCh := a.Srv().Store.Channel().Get(post.ChannelId, true) channel, errCh := a.Srv().Store.Channel().Get(post.ChannelId, true)
if errCh != nil { if errCh != nil {
err := model.NewAppError("CreatePostAsUser", "api.context.invalid_param.app_error", map[string]any{"Name": "post.channel_id"}, errCh.Error(), http.StatusBadRequest) err := model.NewAppError("CreatePostAsUser", "api.context.invalid_param.app_error", map[string]any{"Name": "post.channel_id"}, "", http.StatusBadRequest).Wrap(errCh)
return nil, err return nil, err
} }
@@ -101,9 +101,9 @@ func (a *App) CreatePostMissingChannel(c request.CTX, post *model.Post, triggerW
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("CreatePostMissingChannel", "app.channel.get.existing.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("CreatePostMissingChannel", "app.channel.get.existing.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("CreatePostMissingChannel", "app.channel.get.find.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreatePostMissingChannel", "app.channel.get.find.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -144,7 +144,7 @@ func (a *App) deduplicateCreatePost(post *model.Post) (foundPost *model.Post, er
// client, making the API call feel idempotent. // client, making the API call feel idempotent.
actualPost, err := a.GetSinglePost(postID, false) actualPost, err := a.GetSinglePost(postID, false)
if err != nil { if err != nil {
return nil, model.NewAppError("deduplicateCreatePost", "api.post.deduplicate_create_post.failed_to_get", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("deduplicateCreatePost", "api.post.deduplicate_create_post.failed_to_get", nil, "", http.StatusInternalServerError).Wrap(err)
} }
mlog.Debug("Deduplicated create post", mlog.String("post_id", actualPost.Id), mlog.String("pending_post_id", post.PendingPostId)) mlog.Debug("Deduplicated create post", mlog.String("post_id", actualPost.Id), mlog.String("pending_post_id", post.PendingPostId))
@@ -193,9 +193,9 @@ func (a *App) CreatePost(c request.CTX, post *model.Post, channel *model.Channel
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return nil, model.NewAppError("CreatePost", MissingAccountError, nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("CreatePost", MissingAccountError, nil, "", http.StatusNotFound).Wrap(nErr)
default: default:
return nil, model.NewAppError("CreatePost", "app.user.get.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreatePost", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -300,9 +300,9 @@ func (a *App) CreatePost(c request.CTX, post *model.Post, channel *model.Channel
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
return nil, appErr return nil, appErr
case errors.As(nErr, &invErr): case errors.As(nErr, &invErr):
return nil, model.NewAppError("CreatePost", "app.post.save.existing.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("CreatePost", "app.post.save.existing.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
default: default:
return nil, model.NewAppError("CreatePost", "app.post.save.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreatePost", "app.post.save.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -397,7 +397,7 @@ func (a *App) attachFilesToPost(post *model.Post) *model.AppError {
post.FileIds = attachedIds post.FileIds = attachedIds
if _, err := a.Srv().Store.Post().Overwrite(post); err != nil { if _, err := a.Srv().Store.Post().Overwrite(post); err != nil {
return model.NewAppError("attachFilesToPost", "app.post.overwrite.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("attachFilesToPost", "app.post.overwrite.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -416,7 +416,7 @@ func (a *App) FillInPostProps(c request.CTX, post *model.Post, channel *model.Ch
if channel == nil { if channel == nil {
postChannel, err := a.Srv().Store.Channel().GetForPost(post.Id) postChannel, err := a.Srv().Store.Channel().GetForPost(post.Id)
if err != nil { if err != nil {
return model.NewAppError("FillInPostProps", "api.context.invalid_param.app_error", map[string]any{"Name": "post.channel_id"}, err.Error(), http.StatusBadRequest) return model.NewAppError("FillInPostProps", "api.context.invalid_param.app_error", map[string]any{"Name": "post.channel_id"}, "", http.StatusBadRequest).Wrap(err)
} }
channel = postChannel channel = postChannel
} }
@@ -573,11 +573,11 @@ func (a *App) UpdatePost(c *request.Context, post *model.Post, safeUpdate bool)
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(nErr, &invErr): case errors.As(nErr, &invErr):
return nil, model.NewAppError("UpdatePost", "app.post.get.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("UpdatePost", "app.post.get.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return nil, model.NewAppError("UpdatePost", "app.post.get.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("UpdatePost", "app.post.get.app_error", nil, "", http.StatusNotFound).Wrap(nErr)
default: default:
return nil, model.NewAppError("UpdatePost", "app.post.get.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdatePost", "app.post.get.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
oldPost := postLists.Posts[post.Id] oldPost := postLists.Posts[post.Id]
@@ -662,7 +662,7 @@ func (a *App) UpdatePost(c *request.Context, post *model.Post, safeUpdate bool)
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("UpdatePost", "app.post.update.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdatePost", "app.post.update.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -687,13 +687,13 @@ func (a *App) UpdatePost(c *request.Context, post *model.Post, safeUpdate bool)
rpost, nErr = a.addPostPreviewProp(rpost) rpost, nErr = a.addPostPreviewProp(rpost)
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("UpdatePost", "app.post.update.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdatePost", "app.post.update.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
message := model.NewWebSocketEvent(model.WebsocketEventPostEdited, "", rpost.ChannelId, "", nil) message := model.NewWebSocketEvent(model.WebsocketEventPostEdited, "", rpost.ChannelId, "", nil)
postJSON, jsonErr := rpost.ToJSON() postJSON, jsonErr := rpost.ToJSON()
if jsonErr != nil { if jsonErr != nil {
return nil, model.NewAppError("UpdatePost", "app.post.marshal.app_error", nil, jsonErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdatePost", "app.post.marshal.app_error", nil, "", http.StatusInternalServerError).Wrap(jsonErr)
} }
message.Add("post", postJSON) message.Add("post", postJSON)
@@ -808,9 +808,9 @@ func (a *App) GetPostsPage(options model.GetPostsOptions) (*model.PostList, *mod
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("GetPostsPage", "app.post.get_posts.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetPostsPage", "app.post.get_posts.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("GetPostsPage", "app.post.get_root_posts.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetPostsPage", "app.post.get_root_posts.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -828,9 +828,9 @@ func (a *App) GetPosts(channelID string, offset int, limit int) (*model.PostList
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("GetPosts", "app.post.get_posts.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetPosts", "app.post.get_posts.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("GetPosts", "app.post.get_root_posts.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetPosts", "app.post.get_root_posts.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -848,7 +848,7 @@ func (a *App) GetPostsEtag(channelID string, collapsedThreads bool) string {
func (a *App) GetPostsSince(options model.GetPostsSinceOptions) (*model.PostList, *model.AppError) { func (a *App) GetPostsSince(options model.GetPostsSinceOptions) (*model.PostList, *model.AppError) {
postList, err := a.Srv().Store.Post().GetPostsSince(options, true, a.Config().GetSanitizeOptions()) postList, err := a.Srv().Store.Post().GetPostsSince(options, true, a.Config().GetSanitizeOptions())
if err != nil { if err != nil {
return nil, model.NewAppError("GetPostsSince", "app.post.get_posts_since.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetPostsSince", "app.post.get_posts_since.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if appErr := a.filterInaccessiblePosts(postList, filterPostOptions{assumeSortedCreatedAt: true}); appErr != nil { if appErr := a.filterInaccessiblePosts(postList, filterPostOptions{assumeSortedCreatedAt: true}); appErr != nil {
@@ -864,9 +864,9 @@ func (a *App) GetSinglePost(postID string, includeDeleted bool) (*model.Post, *m
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetSinglePost", "app.post.get.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetSinglePost", "app.post.get.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetSinglePost", "app.post.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetSinglePost", "app.post.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -888,11 +888,11 @@ func (a *App) GetPostThread(postID string, opts model.GetPostsOptions, userID st
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("GetPostThread", "app.post.get.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetPostThread", "app.post.get.app_error", nil, "", http.StatusBadRequest).Wrap(err)
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetPostThread", "app.post.get.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetPostThread", "app.post.get.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetPostThread", "app.post.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetPostThread", "app.post.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -914,7 +914,7 @@ func (a *App) GetPostThread(postID string, opts model.GetPostsOptions, userID st
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, "", http.StatusInternalServerError).Wrap(err)
} }
if appErr := a.filterInaccessiblePosts(postList, filterPostOptions{assumeSortedCreatedAt: true}); appErr != nil { if appErr := a.filterInaccessiblePosts(postList, filterPostOptions{assumeSortedCreatedAt: true}); appErr != nil {
@@ -927,7 +927,7 @@ func (a *App) GetFlaggedPosts(userID string, offset int, limit int) (*model.Post
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, "", http.StatusInternalServerError).Wrap(err)
} }
if appErr := a.filterInaccessiblePosts(postList, filterPostOptions{assumeSortedCreatedAt: true}); appErr != nil { if appErr := a.filterInaccessiblePosts(postList, filterPostOptions{assumeSortedCreatedAt: true}); appErr != nil {
@@ -940,7 +940,7 @@ func (a *App) GetFlaggedPostsForTeam(userID, teamID string, offset int, limit in
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, "", http.StatusInternalServerError).Wrap(err)
} }
if appErr := a.filterInaccessiblePosts(postList, filterPostOptions{assumeSortedCreatedAt: true}); appErr != nil { if appErr := a.filterInaccessiblePosts(postList, filterPostOptions{assumeSortedCreatedAt: true}); appErr != nil {
@@ -957,11 +957,11 @@ func (a *App) GetPermalinkPost(c request.CTX, postID string, userID string) (*mo
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(nErr, &invErr): case errors.As(nErr, &invErr):
return nil, model.NewAppError("GetPermalinkPost", "app.post.get.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetPermalinkPost", "app.post.get.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return nil, model.NewAppError("GetPermalinkPost", "app.post.get.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetPermalinkPost", "app.post.get.app_error", nil, "", http.StatusNotFound).Wrap(nErr)
default: default:
return nil, model.NewAppError("GetPermalinkPost", "app.post.get.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetPermalinkPost", "app.post.get.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -992,9 +992,9 @@ func (a *App) GetPostsBeforePost(options model.GetPostsOptions) (*model.PostList
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("GetPostsBeforePost", "app.post.get_posts_around.get.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetPostsBeforePost", "app.post.get_posts_around.get.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("GetPostsBeforePost", "app.post.get_posts_around.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetPostsBeforePost", "app.post.get_posts_around.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -1020,9 +1020,9 @@ func (a *App) GetPostsAfterPost(options model.GetPostsOptions) (*model.PostList,
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("GetPostsAfterPost", "app.post.get_posts_around.get.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetPostsAfterPost", "app.post.get_posts_around.get.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("GetPostsAfterPost", "app.post.get_posts_around.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetPostsAfterPost", "app.post.get_posts_around.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -1056,9 +1056,9 @@ func (a *App) GetPostsAroundPost(before bool, options model.GetPostsOptions) (*m
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("GetPostsAroundPost", "app.post.get_posts_around.get.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetPostsAroundPost", "app.post.get_posts_around.get.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("GetPostsAroundPost", "app.post.get_posts_around.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetPostsAroundPost", "app.post.get_posts_around.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -1081,7 +1081,7 @@ func (a *App) GetPostsAroundPost(before bool, options model.GetPostsOptions) (*m
func (a *App) GetPostAfterTime(channelID string, time int64, collapsedThreads bool) (*model.Post, *model.AppError) { func (a *App) GetPostAfterTime(channelID string, time int64, collapsedThreads bool) (*model.Post, *model.AppError) {
post, err := a.Srv().Store.Post().GetPostAfterTime(channelID, time, collapsedThreads) post, err := a.Srv().Store.Post().GetPostAfterTime(channelID, time, collapsedThreads)
if err != nil { if err != nil {
return nil, model.NewAppError("GetPostAfterTime", "app.post.get_post_after_time.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetPostAfterTime", "app.post.get_post_after_time.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return post, nil return post, nil
@@ -1090,7 +1090,7 @@ func (a *App) GetPostAfterTime(channelID string, time int64, collapsedThreads bo
func (a *App) GetPostIdAfterTime(channelID string, time int64, collapsedThreads bool) (string, *model.AppError) { func (a *App) GetPostIdAfterTime(channelID string, time int64, collapsedThreads bool) (string, *model.AppError) {
postID, err := a.Srv().Store.Post().GetPostIdAfterTime(channelID, time, collapsedThreads) postID, err := a.Srv().Store.Post().GetPostIdAfterTime(channelID, time, collapsedThreads)
if err != nil { if err != nil {
return "", model.NewAppError("GetPostIdAfterTime", "app.post.get_post_id_around.app_error", nil, err.Error(), http.StatusInternalServerError) return "", model.NewAppError("GetPostIdAfterTime", "app.post.get_post_id_around.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return postID, nil return postID, nil
@@ -1099,7 +1099,7 @@ func (a *App) GetPostIdAfterTime(channelID string, time int64, collapsedThreads
func (a *App) GetPostIdBeforeTime(channelID string, time int64, collapsedThreads bool) (string, *model.AppError) { func (a *App) GetPostIdBeforeTime(channelID string, time int64, collapsedThreads bool) (string, *model.AppError) {
postID, err := a.Srv().Store.Post().GetPostIdBeforeTime(channelID, time, collapsedThreads) postID, err := a.Srv().Store.Post().GetPostIdBeforeTime(channelID, time, collapsedThreads)
if err != nil { if err != nil {
return "", model.NewAppError("GetPostIdBeforeTime", "app.post.get_post_id_around.app_error", nil, err.Error(), http.StatusInternalServerError) return "", model.NewAppError("GetPostIdBeforeTime", "app.post.get_post_id_around.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return postID, nil return postID, nil
@@ -1205,12 +1205,17 @@ func (a *App) GetPostsForChannelAroundLastUnread(c request.CTX, channelID, userI
} }
// Reset order to only include the last unread post: if the thread appears in the centre // Reset order to only include the last unread post: if the thread appears in the centre
// channel organically, those replies will be added below. // channel organically, those replies will be added below.
postList.Order = []string{lastUnreadPostId} postList.Order = []string{}
// Add lastUnreadPostId in order, only if it hasn't been filtered as per the cloud plan's limit
if _, ok := postList.Posts[lastUnreadPostId]; ok {
postList.Order = []string{lastUnreadPostId}
if postListBefore, err := a.GetPostsBeforePost(model.GetPostsOptions{ChannelId: channelID, PostId: lastUnreadPostId, Page: PageDefault, PerPage: limitBefore, SkipFetchThreads: skipFetchThreads, CollapsedThreads: collapsedThreads, CollapsedThreadsExtended: collapsedThreadsExtended, UserId: userID}); err != nil { // BeforePosts will only be accessible if the lastUnreadPostId is itself accessible
return nil, err if postListBefore, err := a.GetPostsBeforePost(model.GetPostsOptions{ChannelId: channelID, PostId: lastUnreadPostId, Page: PageDefault, PerPage: limitBefore, SkipFetchThreads: skipFetchThreads, CollapsedThreads: collapsedThreads, CollapsedThreadsExtended: collapsedThreadsExtended, UserId: userID}); err != nil {
} else if postListBefore != nil { return nil, err
postList.Extend(postListBefore) } else if postListBefore != nil {
postList.Extend(postListBefore)
}
} }
if postListAfter, err := a.GetPostsAfterPost(model.GetPostsOptions{ChannelId: channelID, PostId: lastUnreadPostId, Page: PageDefault, PerPage: limitAfter - 1, SkipFetchThreads: skipFetchThreads, CollapsedThreads: collapsedThreads, CollapsedThreadsExtended: collapsedThreadsExtended, UserId: userID}); err != nil { if postListAfter, err := a.GetPostsAfterPost(model.GetPostsOptions{ChannelId: channelID, PostId: lastUnreadPostId, Page: PageDefault, PerPage: limitAfter - 1, SkipFetchThreads: skipFetchThreads, CollapsedThreads: collapsedThreads, CollapsedThreadsExtended: collapsedThreadsExtended, UserId: userID}); err != nil {
@@ -1226,7 +1231,7 @@ func (a *App) GetPostsForChannelAroundLastUnread(c request.CTX, channelID, userI
func (a *App) DeletePost(c request.CTX, postID, deleteByID string) (*model.Post, *model.AppError) { func (a *App) DeletePost(c request.CTX, postID, deleteByID string) (*model.Post, *model.AppError) {
post, err := a.Srv().Store.Post().GetSingle(postID, false) post, err := a.Srv().Store.Post().GetSingle(postID, false)
if err != nil { if err != nil {
return nil, model.NewAppError("DeletePost", "app.post.get.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("DeletePost", "app.post.get.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
channel, appErr := a.GetChannel(c, post.ChannelId) channel, appErr := a.GetChannel(c, post.ChannelId)
@@ -1244,7 +1249,7 @@ func (a *App) DeletePost(c request.CTX, postID, deleteByID string) (*model.Post,
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("DeletePost", "app.post.delete.app_error", nil, "", http.StatusNotFound).Wrap(nfErr) return nil, model.NewAppError("DeletePost", "app.post.delete.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("DeletePost", "app.post.delete.app_error", nil, "", http.StatusInternalServerError).Wrap(err) return nil, model.NewAppError("DeletePost", "app.post.delete.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
@@ -1565,9 +1570,9 @@ func (a *App) GetFileInfosForPostWithMigration(postID string, includeDeleted boo
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(result.NErr, &nfErr): case errors.As(result.NErr, &nfErr):
return nil, model.NewAppError("GetFileInfosForPostWithMigration", "app.post.get.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetFileInfosForPostWithMigration", "app.post.get.app_error", nil, "", http.StatusNotFound).Wrap(result.NErr)
default: default:
return nil, model.NewAppError("GetFileInfosForPostWithMigration", "app.post.get.app_error", nil, result.NErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetFileInfosForPostWithMigration", "app.post.get.app_error", nil, "", http.StatusInternalServerError).Wrap(result.NErr)
} }
} }
post := result.Data.(*model.Post) post := result.Data.(*model.Post)
@@ -1586,7 +1591,7 @@ func (a *App) GetFileInfosForPostWithMigration(postID string, includeDeleted boo
func (a *App) GetFileInfosForPost(postID string, fromMaster bool, includeDeleted bool) ([]*model.FileInfo, *model.AppError) { func (a *App) GetFileInfosForPost(postID string, fromMaster bool, includeDeleted bool) ([]*model.FileInfo, *model.AppError) {
fileInfos, err := a.Srv().Store.FileInfo().GetForPost(postID, fromMaster, includeDeleted, true) fileInfos, err := a.Srv().Store.FileInfo().GetForPost(postID, fromMaster, includeDeleted, true)
if err != nil { if err != nil {
return nil, model.NewAppError("GetFileInfosForPost", "app.file_info.get_for_post.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetFileInfosForPost", "app.file_info.get_for_post.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
a.generateMiniPreviewForInfos(fileInfos) a.generateMiniPreviewForInfos(fileInfos)
@@ -1665,7 +1670,7 @@ func (a *App) countThreadMentions(c request.CTX, user *model.User, post *model.P
posts, nErr := a.Srv().Store.Thread().GetPosts(post.Id, timestamp) posts, nErr := a.Srv().Store.Thread().GetPosts(post.Id, timestamp)
if nErr != nil { if nErr != nil {
return 0, model.NewAppError("countMentionsFromPost", "app.channel.count_posts_since.app_error", nil, nErr.Error(), http.StatusInternalServerError) return 0, model.NewAppError("countMentionsFromPost", "app.channel.count_posts_since.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
count := 0 count := 0
@@ -1692,7 +1697,7 @@ func (a *App) countThreadMentions(c request.CTX, user *model.User, post *model.P
groups, nErr := a.getGroupsAllowedForReferenceInChannel(channel, team) groups, nErr := a.getGroupsAllowedForReferenceInChannel(channel, team)
if nErr != nil { if nErr != nil {
return 0, model.NewAppError("countMentionsFromPost", "app.channel.count_posts_since.app_error", nil, nErr.Error(), http.StatusInternalServerError) return 0, model.NewAppError("countMentionsFromPost", "app.channel.count_posts_since.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
for _, p := range posts { for _, p := range posts {
@@ -1719,7 +1724,7 @@ func (a *App) countMentionsFromPost(c request.CTX, user *model.User, post *model
// In a DM channel, every post made by the other user is a mention // In a DM channel, every post made by the other user is a mention
count, countRoot, nErr := a.Srv().Store.Channel().CountPostsAfter(post.ChannelId, post.CreateAt-1, channel.GetOtherUserIdForDM(user.Id)) count, countRoot, nErr := a.Srv().Store.Channel().CountPostsAfter(post.ChannelId, post.CreateAt-1, channel.GetOtherUserIdForDM(user.Id))
if nErr != nil { if nErr != nil {
return 0, 0, model.NewAppError("countMentionsFromPost", "app.channel.count_posts_since.app_error", nil, nErr.Error(), http.StatusInternalServerError) return 0, 0, model.NewAppError("countMentionsFromPost", "app.channel.count_posts_since.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
return count, countRoot, nil return count, countRoot, nil
@@ -1888,9 +1893,9 @@ func (a *App) GetPostsByIds(postIDs []string) ([]*model.Post, int64, *model.AppE
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, 0, model.NewAppError("GetPostsByIds", "app.post.get.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, 0, model.NewAppError("GetPostsByIds", "app.post.get.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, 0, model.NewAppError("GetPostsByIds", "app.post.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, 0, model.NewAppError("GetPostsByIds", "app.post.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -1909,11 +1914,11 @@ func (a *App) GetTopThreadsForTeamSince(c request.CTX, teamID, userID string, op
topThreads, err := a.Srv().Store.Thread().GetTopThreadsForTeamSince(teamID, userID, opts.StartUnixMilli, opts.Page*opts.PerPage, opts.PerPage) topThreads, err := a.Srv().Store.Thread().GetTopThreadsForTeamSince(teamID, userID, opts.StartUnixMilli, opts.Page*opts.PerPage, opts.PerPage)
if err != nil { if err != nil {
return nil, model.NewAppError("GetTopChannelsForTeamSince", "app.post.get_top_threads_for_team_since.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTopChannelsForTeamSince", "app.post.get_top_threads_for_team_since.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
topThreadsWithEmbedAndImage, err := includeEmbedsAndImages(a, c, topThreads, userID) topThreadsWithEmbedAndImage, err := includeEmbedsAndImages(a, c, topThreads, userID)
if err != nil { if err != nil {
return nil, model.NewAppError("GetTopChannelsForTeamSince", "app.post.get_top_threads_for_team_since.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTopChannelsForTeamSince", "app.post.get_top_threads_for_team_since.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return topThreadsWithEmbedAndImage, nil return topThreadsWithEmbedAndImage, nil
} }
@@ -1925,11 +1930,11 @@ func (a *App) GetTopThreadsForUserSince(c request.CTX, teamID, userID string, op
topThreads, err := a.Srv().Store.Thread().GetTopThreadsForUserSince(teamID, userID, opts.StartUnixMilli, opts.Page*opts.PerPage, opts.PerPage) topThreads, err := a.Srv().Store.Thread().GetTopThreadsForUserSince(teamID, userID, opts.StartUnixMilli, opts.Page*opts.PerPage, opts.PerPage)
if err != nil { if err != nil {
return nil, model.NewAppError("GetTopChannelsForTeamSince", "app.post.get_top_threads_for_team_since.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTopChannelsForTeamSince", "app.post.get_top_threads_for_team_since.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
topThreadsWithEmbedAndImage, err := includeEmbedsAndImages(a, c, topThreads, userID) topThreadsWithEmbedAndImage, err := includeEmbedsAndImages(a, c, topThreads, userID)
if err != nil { if err != nil {
return nil, model.NewAppError("GetTopChannelsForUserSince", "app.post.get_top_threads_for_user_since.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTopChannelsForUserSince", "app.post.get_top_threads_for_user_since.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return topThreadsWithEmbedAndImage, nil return topThreadsWithEmbedAndImage, nil
} }
@@ -1954,12 +1959,12 @@ func (a *App) SetPostReminder(postID, userID string, targetTime int64) *model.Ap
} }
err := a.Srv().Store.Post().SetPostReminder(reminder) err := a.Srv().Store.Post().SetPostReminder(reminder)
if err != nil { if err != nil {
return model.NewAppError("SetPostReminder", "app.post_reminder.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SetPostReminder", "app.post_reminder.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
metadata, err := a.Srv().Store.Post().GetPostReminderMetadata(postID) metadata, err := a.Srv().Store.Post().GetPostReminderMetadata(postID)
if err != nil { if err != nil {
return model.NewAppError("SetPostReminder", "app.post_reminder.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SetPostReminder", "app.post_reminder.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
parsed := time.Unix(targetTime, 0).UTC().Format(time.RFC822) parsed := time.Unix(targetTime, 0).UTC().Format(time.RFC822)

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

@@ -147,7 +147,7 @@ func (a *App) filterInaccessiblePosts(postList *model.PostList, options filterPo
lastAccessiblePostTime, appErr := a.GetLastAccessiblePostTime() lastAccessiblePostTime, appErr := a.GetLastAccessiblePostTime()
if appErr != nil { if appErr != nil {
return model.NewAppError("filterInaccessiblePosts", "app.last_accessible_post.app_error", nil, appErr.Error(), http.StatusInternalServerError) return model.NewAppError("filterInaccessiblePosts", "app.last_accessible_post.app_error", nil, "", http.StatusInternalServerError).Wrap(appErr)
} }
if lastAccessiblePostTime == 0 { if lastAccessiblePostTime == 0 {
// No need to filter, all posts are accessible // No need to filter, all posts are accessible
@@ -229,7 +229,7 @@ func (a *App) getFilteredAccessiblePosts(posts []*model.Post, options filterPost
filteredPosts := []*model.Post{} filteredPosts := []*model.Post{}
lastAccessiblePostTime, appErr := a.GetLastAccessiblePostTime() lastAccessiblePostTime, appErr := a.GetLastAccessiblePostTime()
if appErr != nil { if appErr != nil {
return filteredPosts, 0, model.NewAppError("getFilteredAccessiblePosts", "app.last_accessible_post.app_error", nil, appErr.Error(), http.StatusInternalServerError) return filteredPosts, 0, model.NewAppError("getFilteredAccessiblePosts", "app.last_accessible_post.app_error", nil, "", http.StatusInternalServerError).Wrap(appErr)
} else if lastAccessiblePostTime == 0 { } else if lastAccessiblePostTime == 0 {
// No need to filter, all posts are accessible // No need to filter, all posts are accessible
return posts, 0, nil return posts, 0, nil

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

@@ -14,7 +14,7 @@ import (
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, "", http.StatusBadRequest).Wrap(err)
} }
return preferences, nil return preferences, nil
} }
@@ -22,7 +22,7 @@ func (a *App) GetPreferencesForUser(userID string) (model.Preferences, *model.Ap
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, "", http.StatusBadRequest).Wrap(err)
} }
if len(preferences) == 0 { if len(preferences) == 0 {
err := model.NewAppError("GetPreferenceByCategoryForUser", "api.preference.preferences_category.get.app_error", nil, "", http.StatusNotFound) err := model.NewAppError("GetPreferenceByCategoryForUser", "api.preference.preferences_category.get.app_error", nil, "", http.StatusNotFound)
@@ -34,7 +34,7 @@ func (a *App) GetPreferenceByCategoryForUser(userID string, category string) (mo
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, "", http.StatusBadRequest).Wrap(err)
} }
return res, nil return res, nil
} }

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

@@ -246,7 +246,7 @@ func (a *App) GetProductNotices(c *request.Context, userID, teamID string, clien
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, "", http.StatusBadRequest).Wrap(err)
} }
sku := a.Srv().ClientLicense()["SkuShortName"] sku := a.Srv().ClientLicense()["SkuShortName"]
@@ -301,7 +301,7 @@ func (a *App) GetProductNotices(c *request.Context, userID, teamID string, clien
searchEngineVersion, searchEngineVersion,
&a.ch.cachedNotices[noticeIndex]) &a.ch.cachedNotices[noticeIndex])
if err != nil { if err != nil {
return nil, model.NewAppError("GetProductNotices", "api.system.update_notices.validating_failed", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetProductNotices", "api.system.update_notices.validating_failed", nil, "", http.StatusBadRequest).Wrap(err)
} }
if result { if result {
selectedLocale := "en" selectedLocale := "en"
@@ -320,7 +320,7 @@ func (a *App) GetProductNotices(c *request.Context, userID, teamID string, clien
// 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, "", http.StatusBadRequest).Wrap(err)
} }
return nil return nil
} }
@@ -362,15 +362,15 @@ func (a *App) UpdateProductNotices() *model.AppError {
data, err := utils.GetURLWithCache(url, &noticesCache, skip) data, err := utils.GetURLWithCache(url, &noticesCache, skip)
if err != nil { if err != nil {
return model.NewAppError("UpdateProductNotices", "api.system.update_notices.fetch_failed", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("UpdateProductNotices", "api.system.update_notices.fetch_failed", nil, "", http.StatusBadRequest).Wrap(err)
} }
a.ch.cachedNotices, err = model.UnmarshalProductNotices(data) a.ch.cachedNotices, err = model.UnmarshalProductNotices(data)
if err != nil { if err != nil {
return model.NewAppError("UpdateProductNotices", "api.system.update_notices.parse_failed", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("UpdateProductNotices", "api.system.update_notices.parse_failed", nil, "", http.StatusBadRequest).Wrap(err)
} }
if err := a.Srv().Store.ProductNotices().ClearOldNotices(a.ch.cachedNotices); err != nil { if err := a.Srv().Store.ProductNotices().ClearOldNotices(a.ch.cachedNotices); err != nil {
return model.NewAppError("UpdateProductNotices", "api.system.update_notices.clear_failed", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("UpdateProductNotices", "api.system.update_notices.clear_failed", nil, "", http.StatusBadRequest).Wrap(err)
} }
return nil return nil
} }

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

@@ -36,7 +36,7 @@ func (a *App) SaveReactionForPost(c *request.Context, reaction *model.Reaction)
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("SaveReactionForPost", "app.reaction.save.save.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SaveReactionForPost", "app.reaction.save.save.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -63,7 +63,7 @@ func (a *App) SaveReactionForPost(c *request.Context, reaction *model.Reaction)
func (a *App) GetReactionsForPost(postID string) ([]*model.Reaction, *model.AppError) { func (a *App) GetReactionsForPost(postID string) ([]*model.Reaction, *model.AppError) {
reactions, err := a.Srv().Store.Reaction().GetForPost(postID, true) reactions, err := a.Srv().Store.Reaction().GetForPost(postID, true)
if err != nil { if err != nil {
return nil, model.NewAppError("GetReactionsForPost", "app.reaction.get_for_post.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetReactionsForPost", "app.reaction.get_for_post.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return reactions, nil return reactions, nil
} }
@@ -73,7 +73,7 @@ func (a *App) GetBulkReactionsForPosts(postIDs []string) (map[string][]*model.Re
allReactions, err := a.Srv().Store.Reaction().BulkGetForPosts(postIDs) allReactions, err := a.Srv().Store.Reaction().BulkGetForPosts(postIDs)
if err != nil { if err != nil {
return nil, model.NewAppError("GetBulkReactionsForPosts", "app.reaction.bulk_get_for_post_ids.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetBulkReactionsForPosts", "app.reaction.bulk_get_for_post_ids.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, reaction := range allReactions { for _, reaction := range allReactions {
@@ -103,7 +103,7 @@ func (a *App) GetTopReactionsForTeamSince(teamID string, userID string, opts *mo
topReactionList, err := a.Srv().Store.Reaction().GetTopForTeamSince(teamID, userID, opts.StartUnixMilli, opts.Page*opts.PerPage, opts.PerPage) topReactionList, err := a.Srv().Store.Reaction().GetTopForTeamSince(teamID, userID, opts.StartUnixMilli, opts.Page*opts.PerPage, opts.PerPage)
if err != nil { if err != nil {
return nil, model.NewAppError("GetTopReactionsForTeamSince", "app.reaction.get_top_for_team_since.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTopReactionsForTeamSince", "app.reaction.get_top_for_team_since.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return topReactionList, nil return topReactionList, nil
} }
@@ -115,7 +115,7 @@ func (a *App) GetTopReactionsForUserSince(userID string, teamID string, opts *mo
topReactionList, err := a.Srv().Store.Reaction().GetTopForUserSince(userID, teamID, opts.StartUnixMilli, opts.Page*opts.PerPage, opts.PerPage) topReactionList, err := a.Srv().Store.Reaction().GetTopForUserSince(userID, teamID, opts.StartUnixMilli, opts.Page*opts.PerPage, opts.PerPage)
if err != nil { if err != nil {
return nil, model.NewAppError("GetTopReactionsForUserSince", "app.reaction.get_top_for_user_since.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTopReactionsForUserSince", "app.reaction.get_top_for_user_since.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return topReactionList, nil return topReactionList, nil
} }
@@ -136,7 +136,7 @@ func (a *App) DeleteReactionForPost(c *request.Context, reaction *model.Reaction
} }
if _, err := a.Srv().Store.Reaction().Delete(reaction); err != nil { if _, err := a.Srv().Store.Reaction().Delete(reaction); err != nil {
return model.NewAppError("DeleteReactionForPost", "app.reaction.delete_all_with_emoji_name.get_reactions.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DeleteReactionForPost", "app.reaction.delete_all_with_emoji_name.get_reactions.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// The post is always modified since the UpdateAt always changes // The post is always modified since the UpdateAt always changes

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

@@ -18,10 +18,10 @@ func (a *App) AddRemoteCluster(rc *model.RemoteCluster) (*model.RemoteCluster, *
rc, err := a.Srv().Store.RemoteCluster().Save(rc) rc, err := a.Srv().Store.RemoteCluster().Save(rc)
if err != nil { if err != nil {
if sqlstore.IsUniqueConstraintError(errors.Cause(err), []string{sqlstore.RemoteClusterSiteURLUniqueIndex}) { if sqlstore.IsUniqueConstraintError(errors.Cause(err), []string{sqlstore.RemoteClusterSiteURLUniqueIndex}) {
return nil, model.NewAppError("AddRemoteCluster", "api.remote_cluster.save_not_unique.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("AddRemoteCluster", "api.remote_cluster.save_not_unique.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil, model.NewAppError("AddRemoteCluster", "api.remote_cluster.save.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("AddRemoteCluster", "api.remote_cluster.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return rc, nil return rc, nil
} }
@@ -30,10 +30,10 @@ func (a *App) UpdateRemoteCluster(rc *model.RemoteCluster) (*model.RemoteCluster
rc, err := a.Srv().Store.RemoteCluster().Update(rc) rc, err := a.Srv().Store.RemoteCluster().Update(rc)
if err != nil { if err != nil {
if sqlstore.IsUniqueConstraintError(errors.Cause(err), []string{sqlstore.RemoteClusterSiteURLUniqueIndex}) { if sqlstore.IsUniqueConstraintError(errors.Cause(err), []string{sqlstore.RemoteClusterSiteURLUniqueIndex}) {
return nil, model.NewAppError("UpdateRemoteCluster", "api.remote_cluster.update_not_unique.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateRemoteCluster", "api.remote_cluster.update_not_unique.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil, model.NewAppError("UpdateRemoteCluster", "api.remote_cluster.update.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateRemoteCluster", "api.remote_cluster.update.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return rc, nil return rc, nil
} }
@@ -41,7 +41,7 @@ func (a *App) UpdateRemoteCluster(rc *model.RemoteCluster) (*model.RemoteCluster
func (a *App) DeleteRemoteCluster(remoteClusterId string) (bool, *model.AppError) { func (a *App) DeleteRemoteCluster(remoteClusterId string) (bool, *model.AppError) {
deleted, err := a.Srv().Store.RemoteCluster().Delete(remoteClusterId) deleted, err := a.Srv().Store.RemoteCluster().Delete(remoteClusterId)
if err != nil { if err != nil {
return false, model.NewAppError("DeleteRemoteCluster", "api.remote_cluster.delete.app_error", nil, err.Error(), http.StatusInternalServerError) return false, model.NewAppError("DeleteRemoteCluster", "api.remote_cluster.delete.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return deleted, nil return deleted, nil
} }
@@ -49,7 +49,7 @@ func (a *App) DeleteRemoteCluster(remoteClusterId string) (bool, *model.AppError
func (a *App) GetRemoteCluster(remoteClusterId string) (*model.RemoteCluster, *model.AppError) { func (a *App) GetRemoteCluster(remoteClusterId string) (*model.RemoteCluster, *model.AppError) {
rc, err := a.Srv().Store.RemoteCluster().Get(remoteClusterId) rc, err := a.Srv().Store.RemoteCluster().Get(remoteClusterId)
if err != nil { if err != nil {
return nil, model.NewAppError("GetRemoteCluster", "api.remote_cluster.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetRemoteCluster", "api.remote_cluster.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return rc, nil return rc, nil
} }
@@ -57,7 +57,7 @@ func (a *App) GetRemoteCluster(remoteClusterId string) (*model.RemoteCluster, *m
func (a *App) GetAllRemoteClusters(filter model.RemoteClusterQueryFilter) ([]*model.RemoteCluster, *model.AppError) { func (a *App) GetAllRemoteClusters(filter model.RemoteClusterQueryFilter) ([]*model.RemoteCluster, *model.AppError) {
list, err := a.Srv().Store.RemoteCluster().GetAll(filter) list, err := a.Srv().Store.RemoteCluster().GetAll(filter)
if err != nil { if err != nil {
return nil, model.NewAppError("GetAllRemoteClusters", "api.remote_cluster.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetAllRemoteClusters", "api.remote_cluster.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return list, nil return list, nil
} }
@@ -65,7 +65,7 @@ func (a *App) GetAllRemoteClusters(filter model.RemoteClusterQueryFilter) ([]*mo
func (a *App) UpdateRemoteClusterTopics(remoteClusterId string, topics string) (*model.RemoteCluster, *model.AppError) { func (a *App) UpdateRemoteClusterTopics(remoteClusterId string, topics string) (*model.RemoteCluster, *model.AppError) {
rc, err := a.Srv().Store.RemoteCluster().UpdateTopics(remoteClusterId, topics) rc, err := a.Srv().Store.RemoteCluster().UpdateTopics(remoteClusterId, topics)
if err != nil { if err != nil {
return nil, model.NewAppError("UpdateRemoteClusterTopics", "api.remote_cluster.save.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateRemoteClusterTopics", "api.remote_cluster.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return rc, nil return rc, nil
} }
@@ -73,7 +73,7 @@ func (a *App) UpdateRemoteClusterTopics(remoteClusterId string, topics string) (
func (a *App) SetRemoteClusterLastPingAt(remoteClusterId string) *model.AppError { func (a *App) SetRemoteClusterLastPingAt(remoteClusterId string) *model.AppError {
err := a.Srv().Store.RemoteCluster().SetLastPingAt(remoteClusterId) err := a.Srv().Store.RemoteCluster().SetLastPingAt(remoteClusterId)
if err != nil { if err != nil {
return model.NewAppError("SetRemoteClusterLastPingAt", "api.remote_cluster.save.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SetRemoteClusterLastPingAt", "api.remote_cluster.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
} }

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

@@ -22,9 +22,9 @@ func (a *App) GetRole(id string) (*model.Role, *model.AppError) {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetRole", "app.role.get.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetRole", "app.role.get.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetRole", "app.role.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetRole", "app.role.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -39,7 +39,7 @@ func (a *App) GetRole(id string) (*model.Role, *model.AppError) {
func (a *App) GetAllRoles() ([]*model.Role, *model.AppError) { func (a *App) GetAllRoles() ([]*model.Role, *model.AppError) {
roles, err := a.Srv().Store.Role().GetAll() roles, err := a.Srv().Store.Role().GetAll()
if err != nil { if err != nil {
return nil, model.NewAppError("GetAllRoles", "app.role.get_all.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetAllRoles", "app.role.get_all.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
appErr := a.Srv().mergeChannelHigherScopedPermissions(roles) appErr := a.Srv().mergeChannelHigherScopedPermissions(roles)
@@ -56,9 +56,9 @@ func (s *Server) GetRoleByName(ctx context.Context, name string) (*model.Role, *
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return nil, model.NewAppError("GetRoleByName", "app.role.get_by_name.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetRoleByName", "app.role.get_by_name.app_error", nil, "", http.StatusNotFound).Wrap(nErr)
default: default:
return nil, model.NewAppError("GetRoleByName", "app.role.get_by_name.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetRoleByName", "app.role.get_by_name.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -77,7 +77,7 @@ func (a *App) GetRoleByName(ctx context.Context, name string) (*model.Role, *mod
func (a *App) GetRolesByNames(names []string) ([]*model.Role, *model.AppError) { func (a *App) GetRolesByNames(names []string) ([]*model.Role, *model.AppError) {
roles, nErr := a.Srv().Store.Role().GetByNames(names) roles, nErr := a.Srv().Store.Role().GetByNames(names)
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("GetRolesByNames", "app.role.get_by_names.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetRolesByNames", "app.role.get_by_names.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
err := a.mergeChannelHigherScopedPermissions(roles) err := a.mergeChannelHigherScopedPermissions(roles)
@@ -105,7 +105,7 @@ func (s *Server) mergeChannelHigherScopedPermissions(roles []*model.Role) *model
higherScopedPermissionsMap, err := s.Store.Role().ChannelHigherScopedPermissions(higherScopeNamesToQuery) higherScopedPermissionsMap, err := s.Store.Role().ChannelHigherScopedPermissions(higherScopeNamesToQuery)
if err != nil { if err != nil {
return model.NewAppError("mergeChannelHigherScopedPermissions", "app.role.get_by_names.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("mergeChannelHigherScopedPermissions", "app.role.get_by_names.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, role := range roles { for _, role := range roles {
@@ -158,9 +158,9 @@ func (a *App) CreateRole(role *model.Role) (*model.Role, *model.AppError) {
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("CreateRole", "app.role.save.invalid_role.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("CreateRole", "app.role.save.invalid_role.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("CreateRole", "app.role.save.insert.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateRole", "app.role.save.insert.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -173,9 +173,9 @@ func (a *App) UpdateRole(role *model.Role) (*model.Role, *model.AppError) {
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("UpdateRole", "app.role.save.invalid_role.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("UpdateRole", "app.role.save.invalid_role.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("UpdateRole", "app.role.save.insert.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateRole", "app.role.save.insert.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -197,7 +197,7 @@ func (a *App) UpdateRole(role *model.Role) (*model.Role, *model.AppError) {
roleRetrievalFunc = func() ([]*model.Role, *model.AppError) { roleRetrievalFunc = func() ([]*model.Role, *model.AppError) {
roles, nErr := a.Srv().Store.Role().AllChannelSchemeRoles() roles, nErr := a.Srv().Store.Role().AllChannelSchemeRoles()
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("UpdateRole", "app.role.get.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateRole", "app.role.get.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
return roles, nil return roles, nil
@@ -206,7 +206,7 @@ func (a *App) UpdateRole(role *model.Role) (*model.Role, *model.AppError) {
roleRetrievalFunc = func() ([]*model.Role, *model.AppError) { roleRetrievalFunc = func() ([]*model.Role, *model.AppError) {
roles, nErr := a.Srv().Store.Role().ChannelRolesUnderTeamRole(savedRole.Name) roles, nErr := a.Srv().Store.Role().ChannelRolesUnderTeamRole(savedRole.Name)
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("UpdateRole", "app.role.get.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateRole", "app.role.get.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
return roles, nil return roles, nil

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

@@ -38,18 +38,18 @@ func (a *App) GetSamlMetadata() (string, *model.AppError) {
func (a *App) writeSamlFile(filename string, fileData *multipart.FileHeader) *model.AppError { func (a *App) writeSamlFile(filename string, fileData *multipart.FileHeader) *model.AppError {
file, err := fileData.Open() file, err := fileData.Open()
if err != nil { if err != nil {
return model.NewAppError("AddSamlCertificate", "api.admin.add_certificate.open.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("AddSamlCertificate", "api.admin.add_certificate.open.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
defer file.Close() defer file.Close()
data, err := io.ReadAll(file) data, err := io.ReadAll(file)
if err != nil { if err != nil {
return model.NewAppError("AddSamlCertificate", "api.admin.add_certificate.saving.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("AddSamlCertificate", "api.admin.add_certificate.saving.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
err = a.Srv().platform.SetConfigFile(filename, data) err = a.Srv().platform.SetConfigFile(filename, data)
if err != nil { if err != nil {
return model.NewAppError("AddSamlCertificate", "api.admin.add_certificate.saving.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("AddSamlCertificate", "api.admin.add_certificate.saving.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
@@ -108,7 +108,7 @@ func (a *App) AddSamlIdpCertificate(fileData *multipart.FileHeader) *model.AppEr
func (a *App) removeSamlFile(filename string) *model.AppError { func (a *App) removeSamlFile(filename string) *model.AppError {
if err := a.Srv().platform.RemoveConfigFile(filename); err != nil { if err := a.Srv().platform.RemoveConfigFile(filename); err != nil {
return model.NewAppError("RemoveSamlFile", "api.admin.remove_certificate.delete.app_error", map[string]any{"Filename": filename}, err.Error(), http.StatusInternalServerError) return model.NewAppError("RemoveSamlFile", "api.admin.remove_certificate.delete.app_error", map[string]any{"Filename": filename}, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
@@ -204,7 +204,7 @@ func (a *App) GetSamlMetadataFromIdp(idpMetadataURL string) (*model.SamlMetadata
func (a *App) FetchSamlMetadataFromIdp(url string) ([]byte, *model.AppError) { func (a *App) FetchSamlMetadataFromIdp(url string) ([]byte, *model.AppError) {
resp, err := a.HTTPService().MakeClient(false).Get(url) resp, err := a.HTTPService().MakeClient(false).Get(url)
if err != nil { if err != nil {
return nil, model.NewAppError("FetchSamlMetadataFromIdp", "app.admin.saml.invalid_response_from_idp.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("FetchSamlMetadataFromIdp", "app.admin.saml.invalid_response_from_idp.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
if resp.StatusCode != http.StatusOK { if resp.StatusCode != http.StatusOK {
@@ -214,7 +214,7 @@ func (a *App) FetchSamlMetadataFromIdp(url string) ([]byte, *model.AppError) {
bodyXML, err := io.ReadAll(resp.Body) bodyXML, err := io.ReadAll(resp.Body)
if err != nil { if err != nil {
return nil, model.NewAppError("FetchSamlMetadataFromIdp", "app.admin.saml.failure_read_response_body_from_idp.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("FetchSamlMetadataFromIdp", "app.admin.saml.failure_read_response_body_from_idp.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return bodyXML, nil return bodyXML, nil
@@ -224,7 +224,7 @@ func (a *App) BuildSamlMetadataObject(idpMetadata []byte) (*model.SamlMetadataRe
entityDescriptor := model.EntityDescriptor{} entityDescriptor := model.EntityDescriptor{}
err := xml.Unmarshal(idpMetadata, &entityDescriptor) err := xml.Unmarshal(idpMetadata, &entityDescriptor)
if err != nil { if err != nil {
return nil, model.NewAppError("BuildSamlMetadataObject", "app.admin.saml.failure_decode_metadata_xml_from_idp.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("BuildSamlMetadataObject", "app.admin.saml.failure_decode_metadata_xml_from_idp.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
data := &model.SamlMetadataResponse{} data := &model.SamlMetadataResponse{}
@@ -259,7 +259,7 @@ func (a *App) SetSamlIdpCertificateFromMetadata(data []byte) *model.AppError {
block, _ := pem.Decode([]byte(fixedCertTxt)) block, _ := pem.Decode([]byte(fixedCertTxt))
if _, e := x509.ParseCertificate(block.Bytes); e != nil { if _, e := x509.ParseCertificate(block.Bytes); e != nil {
return model.NewAppError("SetSamlIdpCertificateFromMetadata", "api.admin.saml.failure_parse_idp_certificate.app_error", nil, e.Error(), http.StatusInternalServerError) return model.NewAppError("SetSamlIdpCertificateFromMetadata", "api.admin.saml.failure_parse_idp_certificate.app_error", nil, "", http.StatusInternalServerError).Wrap(e)
} }
data = pem.EncodeToMemory(&pem.Block{ data = pem.EncodeToMemory(&pem.Block{
@@ -268,7 +268,7 @@ func (a *App) SetSamlIdpCertificateFromMetadata(data []byte) *model.AppError {
}) })
if err := a.Srv().platform.SetConfigFile(SamlIdpCertificateName, data); err != nil { if err := a.Srv().platform.SetConfigFile(SamlIdpCertificateName, data); err != nil {
return model.NewAppError("SetSamlIdpCertificateFromMetadata", "api.admin.saml.failure_save_idp_certificate_file.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SetSamlIdpCertificateFromMetadata", "api.admin.saml.failure_save_idp_certificate_file.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
cfg := a.Config().Clone() cfg := a.Config().Clone()
@@ -290,7 +290,7 @@ func (a *App) ResetSamlAuthDataToEmail(includeDeleted bool, dryRun bool, userIDs
} }
numAffected, err := a.Srv().Store.User().ResetAuthDataToEmailForUsers(model.UserAuthServiceSaml, userIDs, includeDeleted, dryRun) numAffected, err := a.Srv().Store.User().ResetAuthDataToEmailForUsers(model.UserAuthServiceSaml, userIDs, includeDeleted, dryRun)
if err != nil { if err != nil {
appErr = model.NewAppError("ResetAuthDataToEmail", "api.admin.saml.failure_reset_authdata_to_email.app_error", nil, err.Error(), http.StatusInternalServerError) appErr = model.NewAppError("ResetAuthDataToEmail", "api.admin.saml.failure_reset_authdata_to_email.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
return return
} }
return return

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

@@ -21,9 +21,9 @@ func (a *App) GetScheme(id string) (*model.Scheme, *model.AppError) {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetScheme", "app.scheme.get.app_error", nil, err.Error(), http.StatusNotFound) return nil, model.NewAppError("GetScheme", "app.scheme.get.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetScheme", "app.scheme.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetScheme", "app.scheme.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return scheme, nil return scheme, nil
@@ -39,9 +39,9 @@ func (a *App) GetSchemeByName(name string) (*model.Scheme, *model.AppError) {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetSchemeByName", "app.scheme.get.app_error", nil, err.Error(), http.StatusNotFound) return nil, model.NewAppError("GetSchemeByName", "app.scheme.get.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetSchemeByName", "app.scheme.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetSchemeByName", "app.scheme.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return scheme, nil return scheme, nil
@@ -62,7 +62,7 @@ func (s *Server) GetSchemes(scope string, offset int, limit int) ([]*model.Schem
scheme, err := s.Store.Scheme().GetAllPage(scope, offset, limit) scheme, err := s.Store.Scheme().GetAllPage(scope, offset, limit)
if err != nil { if err != nil {
return nil, model.NewAppError("GetSchemes", "app.scheme.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetSchemes", "app.scheme.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return scheme, nil return scheme, nil
} }
@@ -99,9 +99,9 @@ func (a *App) CreateScheme(scheme *model.Scheme) (*model.Scheme, *model.AppError
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("CreateScheme", "app.scheme.save.invalid_scheme.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("CreateScheme", "app.scheme.save.invalid_scheme.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("CreateScheme", "app.scheme.save.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateScheme", "app.scheme.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return scheme, nil return scheme, nil
@@ -134,9 +134,9 @@ func (a *App) UpdateScheme(scheme *model.Scheme) (*model.Scheme, *model.AppError
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("UpdateScheme", "app.scheme.save.invalid_scheme.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("UpdateScheme", "app.scheme.save.invalid_scheme.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("UpdateScheme", "app.scheme.save.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateScheme", "app.scheme.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return scheme, nil return scheme, nil
@@ -152,9 +152,9 @@ func (a *App) DeleteScheme(schemeId string) (*model.Scheme, *model.AppError) {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("DeleteScheme", "app.scheme.get.app_error", nil, err.Error(), http.StatusNotFound) return nil, model.NewAppError("DeleteScheme", "app.scheme.get.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("DeleteScheme", "app.scheme.delete.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("DeleteScheme", "app.scheme.delete.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return scheme, nil return scheme, nil
@@ -175,7 +175,7 @@ func (a *App) GetTeamsForScheme(scheme *model.Scheme, offset int, limit int) ([]
teams, err := a.Srv().Store.Team().GetTeamsByScheme(scheme.Id, offset, limit) teams, err := a.Srv().Store.Team().GetTeamsByScheme(scheme.Id, offset, limit)
if err != nil { if err != nil {
return nil, model.NewAppError("GetTeamsForScheme", "app.team.get_by_scheme.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTeamsForScheme", "app.team.get_by_scheme.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return teams, nil return teams, nil
} }
@@ -195,7 +195,7 @@ func (a *App) GetChannelsForScheme(scheme *model.Scheme, offset int, limit int)
channelList, nErr := a.Srv().Store.Channel().GetChannelsByScheme(scheme.Id, offset, limit) channelList, nErr := a.Srv().Store.Channel().GetChannelsByScheme(scheme.Id, offset, limit)
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("GetChannelsForScheme", "app.channel.get_by_scheme.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetChannelsForScheme", "app.channel.get_by_scheme.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
return channelList, nil return channelList, nil
@@ -207,7 +207,7 @@ func (s *Server) IsPhase2MigrationCompleted() *model.AppError {
} }
if _, err := s.Store.System().GetByName(model.MigrationKeyAdvancedPermissionsPhase2); err != nil { if _, err := s.Store.System().GetByName(model.MigrationKeyAdvancedPermissionsPhase2); err != nil {
return model.NewAppError("App.IsPhase2MigrationCompleted", "app.schemes.is_phase_2_migration_completed.not_completed.app_error", nil, err.Error(), http.StatusNotImplemented) return model.NewAppError("App.IsPhase2MigrationCompleted", "app.schemes.is_phase_2_migration_completed.not_completed.app_error", nil, "", http.StatusNotImplemented).Wrap(err)
} }
s.phase2PermissionsMigrationComplete = true s.phase2PermissionsMigrationComplete = true

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

@@ -1614,7 +1614,7 @@ func (s *Server) sendLicenseUpForRenewalEmail(users map[string]*model.User, lice
renewalLink, _, appErr := s.GenerateLicenseRenewalLink() renewalLink, _, appErr := s.GenerateLicenseRenewalLink()
if appErr != nil { if appErr != nil {
return model.NewAppError("s.sendLicenseUpForRenewalEmail", "api.server.license_up_for_renewal.error_generating_link", nil, appErr.Error(), http.StatusInternalServerError) return model.NewAppError("s.sendLicenseUpForRenewalEmail", "api.server.license_up_for_renewal.error_generating_link", nil, "", http.StatusInternalServerError).Wrap(appErr)
} }
// we want to at least have one email sent out to an admin // we want to at least have one email sent out to an admin
@@ -1721,7 +1721,7 @@ func (s *Server) doLicenseExpirationCheck() {
func (s *Server) SendRemoveExpiredLicenseEmail(email string, renewalLink, locale, siteURL string) *model.AppError { func (s *Server) SendRemoveExpiredLicenseEmail(email string, renewalLink, locale, siteURL string) *model.AppError {
if err := s.EmailService.SendRemoveExpiredLicenseEmail(renewalLink, email, locale, siteURL); err != nil { if err := s.EmailService.SendRemoveExpiredLicenseEmail(renewalLink, email, locale, siteURL); err != nil {
return model.NewAppError("SendRemoveExpiredLicenseEmail", "api.license.remove_expired_license.failed.error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SendRemoveExpiredLicenseEmail", "api.license.remove_expired_license.failed.error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
@@ -2035,11 +2035,11 @@ func (s *Server) GetDefaultProfileImage(user *model.User) ([]byte, *model.AppErr
if err != nil { if err != nil {
switch { switch {
case errors.Is(err, users.DefaultFontError): case errors.Is(err, users.DefaultFontError):
return nil, model.NewAppError("GetDefaultProfileImage", "api.user.create_profile_image.default_font.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetDefaultProfileImage", "api.user.create_profile_image.default_font.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
case errors.Is(err, users.UserInitialsError): case errors.Is(err, users.UserInitialsError):
return nil, model.NewAppError("GetDefaultProfileImage", "api.user.create_profile_image.initial.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetDefaultProfileImage", "api.user.create_profile_image.initial.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
default: default:
return nil, model.NewAppError("GetDefaultProfileImage", "api.user.create_profile_image.encode.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetDefaultProfileImage", "api.user.create_profile_image.encode.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -2049,7 +2049,7 @@ func (s *Server) GetDefaultProfileImage(user *model.User) ([]byte, *model.AppErr
func (s *Server) ReadFile(path string) ([]byte, *model.AppError) { func (s *Server) ReadFile(path string) ([]byte, *model.AppError) {
result, nErr := s.FileBackend().ReadFile(path) result, nErr := s.FileBackend().ReadFile(path)
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("ReadFile", "api.file.read_file.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("ReadFile", "api.file.read_file.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
return result, nil return result, nil
} }
@@ -2108,7 +2108,7 @@ func runPostReminderJob(a *App) {
func (a *App) GetAppliedSchemaMigrations() ([]model.AppliedMigration, *model.AppError) { func (a *App) GetAppliedSchemaMigrations() ([]model.AppliedMigration, *model.AppError) {
table, err := a.Srv().Store.GetAppliedMigrations() table, err := a.Srv().Store.GetAppliedMigrations()
if err != nil { if err != nil {
return nil, model.NewAppError("GetDBSchemaTable", "api.file.read_file.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetDBSchemaTable", "api.file.read_file.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return table, nil return table, nil
} }

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

@@ -23,9 +23,9 @@ func (a *App) CreateSession(session *model.Session) (*model.Session, *model.AppE
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("CreateSession", "app.session.save.existing.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("CreateSession", "app.session.save.existing.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("CreateSession", "app.session.save.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateSession", "app.session.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -126,7 +126,7 @@ func (a *App) GetSession(token string) (*model.Session, *model.AppError) {
func (a *App) GetSessions(userID string) ([]*model.Session, *model.AppError) { func (a *App) GetSessions(userID string) ([]*model.Session, *model.AppError) {
sessions, err := a.ch.srv.userService.GetSessions(userID) sessions, err := a.ch.srv.userService.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, "", http.StatusInternalServerError).Wrap(err)
} }
return sessions, nil return sessions, nil
@@ -136,11 +136,11 @@ func (a *App) RevokeAllSessions(userID string) *model.AppError {
if err := a.ch.srv.userService.RevokeAllSessions(userID); err != nil { if err := a.ch.srv.userService.RevokeAllSessions(userID); err != nil {
switch { switch {
case errors.Is(err, users.GetSessionError): case errors.Is(err, users.GetSessionError):
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, "", http.StatusInternalServerError).Wrap(err)
case errors.Is(err, users.DeleteSessionError): case errors.Is(err, users.DeleteSessionError):
return model.NewAppError("RevokeAllSessions", "app.session.remove.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("RevokeAllSessions", "app.session.remove.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
default: default:
return model.NewAppError("RevokeAllSessions", "app.session.remove.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("RevokeAllSessions", "app.session.remove.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -157,9 +157,9 @@ func (a *App) RevokeSessionsFromAllUsers() *model.AppError {
if err := a.ch.srv.userService.RevokeSessionsFromAllUsers(); err != nil { if err := a.ch.srv.userService.RevokeSessionsFromAllUsers(); err != nil {
switch { switch {
case errors.Is(err, users.DeleteAllAccessDataError): case errors.Is(err, users.DeleteAllAccessDataError):
return model.NewAppError("RevokeSessionsFromAllUsers", "app.oauth.remove_access_data.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("RevokeSessionsFromAllUsers", "app.oauth.remove_access_data.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
default: default:
return model.NewAppError("RevokeSessionsFromAllUsers", "app.session.remove_all_sessions_for_team.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("RevokeSessionsFromAllUsers", "app.session.remove_all_sessions_for_team.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -188,7 +188,7 @@ func (a *App) ClearSessionCacheForAllUsersSkipClusterSend() {
func (a *App) RevokeSessionsForDeviceId(userID string, deviceID string, currentSessionId string) *model.AppError { func (a *App) RevokeSessionsForDeviceId(userID string, deviceID string, currentSessionId string) *model.AppError {
if err := a.ch.srv.userService.RevokeSessionsForDeviceId(userID, deviceID, currentSessionId); err != nil { if err := a.ch.srv.userService.RevokeSessionsForDeviceId(userID, deviceID, currentSessionId); 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, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
@@ -197,7 +197,7 @@ func (a *App) RevokeSessionsForDeviceId(userID string, deviceID string, currentS
func (a *App) GetSessionById(sessionID string) (*model.Session, *model.AppError) { func (a *App) GetSessionById(sessionID string) (*model.Session, *model.AppError) {
session, err := a.ch.srv.userService.GetSessionByID(sessionID) session, err := a.ch.srv.userService.GetSessionByID(sessionID)
if err != nil { if err != nil {
return nil, model.NewAppError("GetSessionById", "app.session.get.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetSessionById", "app.session.get.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
return session, nil return session, nil
@@ -206,7 +206,7 @@ func (a *App) GetSessionById(sessionID string) (*model.Session, *model.AppError)
func (a *App) RevokeSessionById(sessionID string) *model.AppError { func (a *App) RevokeSessionById(sessionID string) *model.AppError {
session, err := a.GetSessionById(sessionID) session, err := a.GetSessionById(sessionID)
if err != nil { if err != nil {
return model.NewAppError("RevokeSessionById", "app.session.get.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("RevokeSessionById", "app.session.get.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
return a.RevokeSession(session) return a.RevokeSession(session)
@@ -216,9 +216,9 @@ func (a *App) RevokeSession(session *model.Session) *model.AppError {
if err := a.ch.srv.userService.RevokeSession(session); err != nil { if err := a.ch.srv.userService.RevokeSession(session); err != nil {
switch { switch {
case errors.Is(err, users.DeleteSessionError): case errors.Is(err, users.DeleteSessionError):
return model.NewAppError("RevokeSession", "app.session.remove.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("RevokeSession", "app.session.remove.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
default: default:
return model.NewAppError("RevokeSession", "app.session.remove.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("RevokeSession", "app.session.remove.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -228,7 +228,7 @@ func (a *App) RevokeSession(session *model.Session) *model.AppError {
func (a *App) AttachDeviceId(sessionID string, deviceID string, expiresAt int64) *model.AppError { func (a *App) AttachDeviceId(sessionID string, deviceID string, expiresAt int64) *model.AppError {
_, err := a.Srv().Store.Session().UpdateDeviceId(sessionID, deviceID, expiresAt) _, err := a.Srv().Store.Session().UpdateDeviceId(sessionID, deviceID, expiresAt)
if err != nil { if err != nil {
return model.NewAppError("AttachDeviceId", "app.session.update_device_id.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("AttachDeviceId", "app.session.update_device_id.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
@@ -331,9 +331,9 @@ func (a *App) CreateUserAccessToken(token *model.UserAccessToken) (*model.UserAc
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return nil, model.NewAppError("CreateUserAccessToken", MissingAccountError, nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("CreateUserAccessToken", MissingAccountError, nil, "", http.StatusNotFound).Wrap(nErr)
default: default:
return nil, model.NewAppError("CreateUserAccessToken", "app.user.get.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateUserAccessToken", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -350,7 +350,7 @@ func (a *App) CreateUserAccessToken(token *model.UserAccessToken) (*model.UserAc
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("CreateUserAccessToken", "app.user_access_token.save.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateUserAccessToken", "app.user_access_token.save.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -368,7 +368,7 @@ func (a *App) CreateUserAccessToken(token *model.UserAccessToken) (*model.UserAc
func (a *App) createSessionForUserAccessToken(tokenString string) (*model.Session, *model.AppError) { func (a *App) createSessionForUserAccessToken(tokenString string) (*model.Session, *model.AppError) {
token, nErr := a.Srv().Store.UserAccessToken().GetByToken(tokenString) token, nErr := a.Srv().Store.UserAccessToken().GetByToken(tokenString)
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("createSessionForUserAccessToken", "app.user_access_token.invalid_or_missing", nil, nErr.Error(), http.StatusUnauthorized) return nil, model.NewAppError("createSessionForUserAccessToken", "app.user_access_token.invalid_or_missing", nil, "", http.StatusUnauthorized).Wrap(nErr)
} }
if !token.IsActive { if !token.IsActive {
@@ -380,9 +380,9 @@ func (a *App) createSessionForUserAccessToken(tokenString string) (*model.Sessio
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return nil, model.NewAppError("createSessionForUserAccessToken", MissingAccountError, nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("createSessionForUserAccessToken", MissingAccountError, nil, "", http.StatusNotFound).Wrap(nErr)
default: default:
return nil, model.NewAppError("createSessionForUserAccessToken", "app.user.get.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("createSessionForUserAccessToken", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -418,9 +418,9 @@ func (a *App) createSessionForUserAccessToken(tokenString string) (*model.Sessio
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(nErr, &invErr): case errors.As(nErr, &invErr):
return nil, model.NewAppError("CreateSession", "app.session.save.existing.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("CreateSession", "app.session.save.existing.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
default: default:
return nil, model.NewAppError("CreateSession", "app.session.save.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateSession", "app.session.save.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -435,7 +435,7 @@ func (a *App) RevokeUserAccessToken(token *model.UserAccessToken) *model.AppErro
session, _ = a.ch.srv.userService.GetSessionContext(context.Background(), token.Token) session, _ = a.ch.srv.userService.GetSessionContext(context.Background(), token.Token)
if err := a.Srv().Store.UserAccessToken().Delete(token.Id); err != nil { if err := a.Srv().Store.UserAccessToken().Delete(token.Id); err != nil {
return model.NewAppError("RevokeUserAccessToken", "app.user_access_token.delete.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("RevokeUserAccessToken", "app.user_access_token.delete.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if session == nil { if session == nil {
@@ -450,7 +450,7 @@ func (a *App) DisableUserAccessToken(token *model.UserAccessToken) *model.AppErr
session, _ = a.ch.srv.userService.GetSessionContext(context.Background(), token.Token) session, _ = a.ch.srv.userService.GetSessionContext(context.Background(), token.Token)
if err := a.Srv().Store.UserAccessToken().UpdateTokenDisable(token.Id); err != nil { if err := a.Srv().Store.UserAccessToken().UpdateTokenDisable(token.Id); err != nil {
return model.NewAppError("DisableUserAccessToken", "app.user_access_token.update_token_disable.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DisableUserAccessToken", "app.user_access_token.update_token_disable.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if session == nil { if session == nil {
@@ -466,7 +466,7 @@ func (a *App) EnableUserAccessToken(token *model.UserAccessToken) *model.AppErro
err := a.Srv().Store.UserAccessToken().UpdateTokenEnable(token.Id) err := a.Srv().Store.UserAccessToken().UpdateTokenEnable(token.Id)
if err != nil { if err != nil {
return model.NewAppError("EnableUserAccessToken", "app.user_access_token.update_token_enable.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("EnableUserAccessToken", "app.user_access_token.update_token_enable.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if session == nil { if session == nil {
@@ -479,7 +479,7 @@ func (a *App) EnableUserAccessToken(token *model.UserAccessToken) *model.AppErro
func (a *App) GetUserAccessTokens(page, perPage int) ([]*model.UserAccessToken, *model.AppError) { func (a *App) GetUserAccessTokens(page, perPage int) ([]*model.UserAccessToken, *model.AppError) {
tokens, err := a.Srv().Store.UserAccessToken().GetAll(page*perPage, perPage) tokens, err := a.Srv().Store.UserAccessToken().GetAll(page*perPage, perPage)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUserAccessTokens", "app.user_access_token.get_all.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUserAccessTokens", "app.user_access_token.get_all.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, token := range tokens { for _, token := range tokens {
@@ -492,7 +492,7 @@ func (a *App) GetUserAccessTokens(page, perPage int) ([]*model.UserAccessToken,
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, "", http.StatusInternalServerError).Wrap(err)
} }
for _, token := range tokens { for _, token := range tokens {
token.Token = "" token.Token = ""
@@ -508,9 +508,9 @@ func (a *App) GetUserAccessToken(tokenID string, sanitize bool) (*model.UserAcce
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetUserAccessToken", "app.user_access_token.get_by_user.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetUserAccessToken", "app.user_access_token.get_by_user.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetUserAccessToken", "app.user_access_token.get_by_user.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUserAccessToken", "app.user_access_token.get_by_user.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -523,7 +523,7 @@ func (a *App) GetUserAccessToken(tokenID string, sanitize bool) (*model.UserAcce
func (a *App) SearchUserAccessTokens(term string) ([]*model.UserAccessToken, *model.AppError) { func (a *App) SearchUserAccessTokens(term string) ([]*model.UserAccessToken, *model.AppError) {
tokens, err := a.Srv().Store.UserAccessToken().Search(term) tokens, err := a.Srv().Store.UserAccessToken().Search(term)
if err != nil { if err != nil {
return nil, model.NewAppError("SearchUserAccessTokens", "app.user_access_token.search.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SearchUserAccessTokens", "app.user_access_token.search.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, token := range tokens { for _, token := range tokens {
token.Token = "" token.Token = ""

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

@@ -23,7 +23,7 @@ func (a *App) checkChannelNotShared(c request.CTX, channelId string) error {
if _, err := a.GetSharedChannel(channelId); err == nil { if _, err := a.GetSharedChannel(channelId); err == nil {
var errNotFound *store.ErrNotFound var errNotFound *store.ErrNotFound
if errors.As(err, &errNotFound) { if errors.As(err, &errNotFound) {
return errors.New("channel is already shared") return fmt.Errorf("channel is already shared: %w", err)
} }
return fmt.Errorf("cannot find channel: %w", err) return fmt.Errorf("cannot find channel: %w", err)
} }
@@ -34,7 +34,7 @@ func (a *App) checkChannelIsShared(channelId string) error {
if _, err := a.GetSharedChannel(channelId); err != nil { if _, err := a.GetSharedChannel(channelId); err != nil {
var errNotFound *store.ErrNotFound var errNotFound *store.ErrNotFound
if errors.As(err, &errNotFound) { if errors.As(err, &errNotFound) {
return errors.New("channel is not shared") return fmt.Errorf("channel is not shared: %w", err)
} }
return fmt.Errorf("cannot find channel: %w", err) return fmt.Errorf("cannot find channel: %w", err)
} }
@@ -46,7 +46,7 @@ func (a *App) CheckCanInviteToSharedChannel(channelId string) error {
if err != nil { if err != nil {
var errNotFound *store.ErrNotFound var errNotFound *store.ErrNotFound
if errors.As(err, &errNotFound) { if errors.As(err, &errNotFound) {
return errors.New("channel is not shared") return fmt.Errorf("channel is not shared: %w", err)
} }
return fmt.Errorf("cannot find channel: %w", err) return fmt.Errorf("cannot find channel: %w", err)
} }
@@ -77,7 +77,7 @@ func (a *App) HasSharedChannel(channelID string) (bool, error) {
func (a *App) GetSharedChannels(page int, perPage int, opts model.SharedChannelFilterOpts) ([]*model.SharedChannel, *model.AppError) { func (a *App) GetSharedChannels(page int, perPage int, opts model.SharedChannelFilterOpts) ([]*model.SharedChannel, *model.AppError) {
channels, err := a.Srv().Store.SharedChannel().GetAll(page*perPage, perPage, opts) channels, err := a.Srv().Store.SharedChannel().GetAll(page*perPage, perPage, opts)
if err != nil { if err != nil {
return nil, model.NewAppError("GetSharedChannels", "app.channel.get_channels.not_found.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetSharedChannels", "app.channel.get_channels.not_found.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return channels, nil return channels, nil
} }
@@ -126,9 +126,9 @@ func (a *App) GetRemoteClusterForUser(remoteID string, userID string) (*model.Re
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetRemoteClusterForUser", "api.context.remote_id_invalid.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetRemoteClusterForUser", "api.context.remote_id_invalid.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetRemoteClusterForUser", "api.context.remote_id_invalid.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetRemoteClusterForUser", "api.context.remote_id_invalid.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return rc, nil return rc, nil

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

@@ -57,7 +57,7 @@ func CreateBasicUser(a *app.App, client *model.Client4) error {
} }
_, err = a.Srv().Store.User().VerifyEmail(ruser.Id, ruser.Email) _, err = a.Srv().Store.User().VerifyEmail(ruser.Id, ruser.Email)
if err != nil { if err != nil {
return model.NewAppError("CreateBasicUser", "app.user.verify_email.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("CreateBasicUser", "app.user.verify_email.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if _, nErr := a.Srv().Store.Team().SaveMember(&model.TeamMember{TeamId: basicteam.Id, UserId: ruser.Id, CreateAt: model.GetMillis()}, *a.Config().TeamSettings.MaxUsersPerTeam); nErr != nil { if _, nErr := a.Srv().Store.Team().SaveMember(&model.TeamMember{TeamId: basicteam.Id, UserId: ruser.Id, CreateAt: model.GetMillis()}, *a.Config().TeamSettings.MaxUsersPerTeam); nErr != nil {
var appErr *model.AppError var appErr *model.AppError
@@ -67,11 +67,11 @@ func CreateBasicUser(a *app.App, client *model.Client4) error {
case errors.As(nErr, &appErr): // in case we haven't converted to plain error. case errors.As(nErr, &appErr): // in case we haven't converted to plain error.
return appErr return appErr
case errors.As(nErr, &conflictErr): case errors.As(nErr, &conflictErr):
return model.NewAppError("CreateBasicUser", "app.create_basic_user.save_member.conflict.app_error", nil, nErr.Error(), http.StatusBadRequest) return model.NewAppError("CreateBasicUser", "app.create_basic_user.save_member.conflict.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
case errors.As(nErr, &limitExceededErr): case errors.As(nErr, &limitExceededErr):
return model.NewAppError("CreateBasicUser", "app.create_basic_user.save_member.max_accounts.app_error", nil, nErr.Error(), http.StatusBadRequest) return model.NewAppError("CreateBasicUser", "app.create_basic_user.save_member.max_accounts.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
default: // last fallback in case it doesn't map to an existing app error. default: // last fallback in case it doesn't map to an existing app error.
return model.NewAppError("CreateBasicUser", "app.create_basic_user.save_member.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("CreateBasicUser", "app.create_basic_user.save_member.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }

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

@@ -79,7 +79,7 @@ func (a *App) GetStatusesByIds(userIDs []string) (map[string]any, *model.AppErro
if len(missingUserIds) > 0 { if len(missingUserIds) > 0 {
statuses, err := a.Srv().Store.Status().GetByIds(missingUserIds) statuses, err := a.Srv().Store.Status().GetByIds(missingUserIds)
if err != nil { if err != nil {
return nil, model.NewAppError("GetStatusesByIds", "app.status.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetStatusesByIds", "app.status.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, s := range statuses { for _, s := range statuses {
@@ -99,7 +99,7 @@ func (a *App) GetStatusesByIds(userIDs []string) (map[string]any, *model.AppErro
return statusMap, nil return statusMap, nil
} }
//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
@@ -127,7 +127,7 @@ func (a *App) GetUserStatusesByIds(userIDs []string) ([]*model.Status, *model.Ap
if len(missingUserIds) > 0 { if len(missingUserIds) > 0 {
statuses, err := a.Srv().Store.Status().GetByIds(missingUserIds) statuses, err := a.Srv().Store.Status().GetByIds(missingUserIds)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUserStatusesByIds", "app.status.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUserStatusesByIds", "app.status.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, s := range statuses { for _, s := range statuses {
@@ -379,9 +379,9 @@ func (a *App) GetStatus(userID string) (*model.Status, *model.AppError) {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetStatus", "app.status.get.missing.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetStatus", "app.status.get.missing.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetStatus", "app.status.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetStatus", "app.status.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }

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

@@ -204,7 +204,7 @@ func (a *App) deleteGroupConstrainedChannelMemberships(c request.CTX, channelID
func (a *App) SyncSyncableRoles(syncableID string, syncableType model.GroupSyncableType) *model.AppError { func (a *App) SyncSyncableRoles(syncableID string, syncableType model.GroupSyncableType) *model.AppError {
permittedAdmins, err := a.Srv().Store.Group().PermittedSyncableAdmins(syncableID, syncableType) permittedAdmins, err := a.Srv().Store.Group().PermittedSyncableAdmins(syncableID, syncableType)
if err != nil { if err != nil {
return model.NewAppError("SyncSyncableRoles", "app.select_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SyncSyncableRoles", "app.select_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
a.Log().Info( a.Log().Info(
@@ -217,13 +217,13 @@ func (a *App) SyncSyncableRoles(syncableID string, syncableType model.GroupSynca
case model.GroupSyncableTypeTeam: case model.GroupSyncableTypeTeam:
nErr := a.Srv().Store.Team().UpdateMembersRole(syncableID, permittedAdmins) nErr := a.Srv().Store.Team().UpdateMembersRole(syncableID, permittedAdmins)
if nErr != nil { if nErr != nil {
return model.NewAppError("App.SyncSyncableRoles", "app.update_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("App.SyncSyncableRoles", "app.update_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
return nil return nil
case model.GroupSyncableTypeChannel: case model.GroupSyncableTypeChannel:
nErr := a.Srv().Store.Channel().UpdateMembersRole(syncableID, permittedAdmins) nErr := a.Srv().Store.Channel().UpdateMembersRole(syncableID, permittedAdmins)
if nErr != nil { if nErr != nil {
return model.NewAppError("App.SyncSyncableRoles", "app.update_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("App.SyncSyncableRoles", "app.update_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
return nil return nil
default: default:

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

@@ -147,7 +147,7 @@ func (a *App) SoftDeleteAllTeamsExcept(teamID string) *model.AppError {
return nil return nil
} }
func (a *App) CreateTeam(c *request.Context, team *model.Team) (*model.Team, *model.AppError) { func (a *App) CreateTeam(c request.CTX, team *model.Team) (*model.Team, *model.AppError) {
rteam, err := a.ch.srv.teamService.CreateTeam(team) rteam, err := a.ch.srv.teamService.CreateTeam(team)
if err != nil { if err != nil {
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
@@ -159,22 +159,22 @@ func (a *App) CreateTeam(c *request.Context, team *model.Team) (*model.Team, *mo
case errors.As(err, &invErr): case errors.As(err, &invErr):
switch { switch {
case invErr.Entity == "Channel" && invErr.Field == "DeleteAt": case invErr.Entity == "Channel" && invErr.Field == "DeleteAt":
return nil, model.NewAppError("CreateTeam", "store.sql_channel.save.archived_channel.app_error", nil, "", http.StatusBadRequest) return nil, model.NewAppError("CreateTeam", "store.sql_channel.save.archived_channel.app_error", nil, "", http.StatusBadRequest).Wrap(err)
case invErr.Entity == "Channel" && invErr.Field == "Type": case invErr.Entity == "Channel" && invErr.Field == "Type":
return nil, model.NewAppError("CreateTeam", "store.sql_channel.save.direct_channel.app_error", nil, "", http.StatusBadRequest) return nil, model.NewAppError("CreateTeam", "store.sql_channel.save.direct_channel.app_error", nil, "", http.StatusBadRequest).Wrap(err)
case invErr.Entity == "Channel" && invErr.Field == "Id": case invErr.Entity == "Channel" && invErr.Field == "Id":
return nil, model.NewAppError("CreateTeam", "store.sql_channel.save_channel.existing.app_error", nil, "id="+invErr.Value.(string), http.StatusBadRequest) return nil, model.NewAppError("CreateTeam", "store.sql_channel.save_channel.existing.app_error", nil, "id="+invErr.Value.(string), http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("CreateTeam", "app.team.save.existing.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("CreateTeam", "app.team.save.existing.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
case errors.As(err, &cErr): case errors.As(err, &cErr):
return nil, model.NewAppError("CreateTeam", store.ChannelExistsError, nil, cErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("CreateTeam", store.ChannelExistsError, nil, "", http.StatusBadRequest).Wrap(err)
case errors.As(err, &ltErr): case errors.As(err, &ltErr):
return nil, model.NewAppError("CreateTeam", "store.sql_channel.save_channel.limit.app_error", nil, ltErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("CreateTeam", "store.sql_channel.save_channel.limit.app_error", nil, "", http.StatusBadRequest).Wrap(err)
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("CreateTeam", "app.team.save.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateTeam", "app.team.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -219,15 +219,15 @@ func (a *App) UpdateTeam(team *model.Team) (*model.Team, *model.AppError) {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("UpdateTeam", "app.team.get.find.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("UpdateTeam", "app.team.get.find.app_error", nil, "", http.StatusNotFound).Wrap(err)
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("UpdateTeam", "app.team.update.find.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("UpdateTeam", "app.team.update.find.app_error", nil, "", http.StatusBadRequest).Wrap(err)
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
case errors.As(err, &domErr): case errors.As(err, &domErr):
return nil, model.NewAppError("UpdateTeam", "api.team.update_restricted_domains.mismatch.app_error", map[string]any{"Domain": domErr.Domain}, "", http.StatusBadRequest) return nil, model.NewAppError("UpdateTeam", "api.team.update_restricted_domains.mismatch.app_error", map[string]any{"Domain": domErr.Domain}, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("UpdateTeam", "app.team.update.updating.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateTeam", "app.team.update.updating.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -266,15 +266,15 @@ func (a *App) RenameTeam(team *model.Team, newTeamName string, newDisplayName st
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("RenameTeam", "app.team.get.find.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("RenameTeam", "app.team.get.find.app_error", nil, "", http.StatusNotFound).Wrap(err)
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("RenameTeam", "app.team.update.find.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("RenameTeam", "app.team.update.find.app_error", nil, "", http.StatusBadRequest).Wrap(err)
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
case errors.As(err, &domErr): case errors.As(err, &domErr):
return nil, model.NewAppError("RenameTeam", "api.team.update_restricted_domains.mismatch.app_error", map[string]any{"Domain": domErr.Domain}, "", http.StatusBadRequest) return nil, model.NewAppError("RenameTeam", "api.team.update_restricted_domains.mismatch.app_error", map[string]any{"Domain": domErr.Domain}, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("RenameTeam", "app.team.update.updating.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("RenameTeam", "app.team.update.updating.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -295,11 +295,11 @@ func (a *App) UpdateTeamScheme(team *model.Team) (*model.Team, *model.AppError)
var appErr *model.AppError var appErr *model.AppError
switch { switch {
case errors.As(nErr, &invErr): case errors.As(nErr, &invErr):
return nil, model.NewAppError("UpdateTeamScheme", "app.team.update.find.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("UpdateTeamScheme", "app.team.update.find.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("UpdateTeamScheme", "app.team.update.updating.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateTeamScheme", "app.team.update.updating.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -335,11 +335,11 @@ func (a *App) UpdateTeamPrivacy(teamID string, teamType string, allowOpenInvite
var appErr *model.AppError var appErr *model.AppError
switch { switch {
case errors.As(nErr, &invErr): case errors.As(nErr, &invErr):
return model.NewAppError("UpdateTeamPrivacy", "app.team.update.find.app_error", nil, invErr.Error(), http.StatusBadRequest) return model.NewAppError("UpdateTeamPrivacy", "app.team.update.find.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
return appErr return appErr
default: default:
return model.NewAppError("UpdateTeamPrivacy", "app.team.update.updating.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("UpdateTeamPrivacy", "app.team.update.updating.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -359,15 +359,15 @@ func (a *App) PatchTeam(teamID string, patch *model.TeamPatch) (*model.Team, *mo
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("PatchTeam", "app.team.get.find.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("PatchTeam", "app.team.get.find.app_error", nil, "", http.StatusNotFound).Wrap(err)
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("PatchTeam", "app.team.update.find.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("PatchTeam", "app.team.update.find.app_error", nil, "", http.StatusBadRequest).Wrap(err)
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
case errors.As(err, &domErr): case errors.As(err, &domErr):
return nil, model.NewAppError("PatchTeam", "api.team.update_restricted_domains.mismatch.app_error", map[string]any{"Domain": domErr.Domain}, "", http.StatusBadRequest) return nil, model.NewAppError("PatchTeam", "api.team.update_restricted_domains.mismatch.app_error", map[string]any{"Domain": domErr.Domain}, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("PatchTeam", "app.team.update.updating.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("PatchTeam", "app.team.update.updating.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -392,11 +392,11 @@ func (a *App) RegenerateTeamInviteId(teamID string) (*model.Team, *model.AppErro
var appErr *model.AppError var appErr *model.AppError
switch { switch {
case errors.As(nErr, &invErr): case errors.As(nErr, &invErr):
return nil, model.NewAppError("RegenerateTeamInviteId", "app.team.update.find.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("RegenerateTeamInviteId", "app.team.update.find.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("RegenerateTeamInviteId", "app.team.update.updating.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("RegenerateTeamInviteId", "app.team.update.updating.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -450,9 +450,9 @@ func (a *App) UpdateTeamMemberRoles(teamID string, userID string, newRoles strin
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return nil, model.NewAppError("UpdateTeamMemberRoles", "app.team.get_member.missing.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("UpdateTeamMemberRoles", "app.team.get_member.missing.app_error", nil, "", http.StatusNotFound).Wrap(nErr)
default: default:
return nil, model.NewAppError("UpdateTeamMemberRoles", "app.team.get_member.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateTeamMemberRoles", "app.team.get_member.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -515,7 +515,7 @@ func (a *App) UpdateTeamMemberRoles(teamID string, userID string, newRoles strin
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("UpdateTeamMemberRoles", "app.team.save_member.save.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateTeamMemberRoles", "app.team.save_member.save.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -554,7 +554,7 @@ func (a *App) UpdateTeamMemberSchemeRoles(teamID string, userID string, isScheme
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("UpdateTeamMemberSchemeRoles", "app.team.save_member.save.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateTeamMemberSchemeRoles", "app.team.save_member.save.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -598,9 +598,9 @@ func (a *App) AddUserToTeam(c request.CTX, teamID string, userID string, userReq
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(result.NErr, &nfErr): case errors.As(result.NErr, &nfErr):
return nil, nil, model.NewAppError("AddUserToTeam", "app.team.get.find.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, nil, model.NewAppError("AddUserToTeam", "app.team.get.find.app_error", nil, "", http.StatusNotFound).Wrap(result.NErr)
default: default:
return nil, nil, model.NewAppError("AddUserToTeam", "app.team.get.finding.app_error", nil, result.NErr.Error(), http.StatusInternalServerError) return nil, nil, model.NewAppError("AddUserToTeam", "app.team.get.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(result.NErr)
} }
} }
team := result.Data.(*model.Team) team := result.Data.(*model.Team)
@@ -610,9 +610,9 @@ func (a *App) AddUserToTeam(c request.CTX, teamID string, userID string, userReq
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(result.NErr, &nfErr): case errors.As(result.NErr, &nfErr):
return nil, nil, model.NewAppError("AddUserToTeam", MissingAccountError, nil, nfErr.Error(), http.StatusNotFound) return nil, nil, model.NewAppError("AddUserToTeam", MissingAccountError, nil, "", http.StatusNotFound).Wrap(result.NErr)
default: default:
return nil, nil, model.NewAppError("AddUserToTeam", "app.user.get.app_error", nil, result.NErr.Error(), http.StatusInternalServerError) return nil, nil, model.NewAppError("AddUserToTeam", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(result.NErr)
} }
} }
user := result.Data.(*model.User) user := result.Data.(*model.User)
@@ -631,9 +631,9 @@ func (a *App) AddUserToTeamByTeamId(c *request.Context, teamID string, user *mod
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return model.NewAppError("AddUserToTeamByTeamId", "app.team.get.find.app_error", nil, nfErr.Error(), http.StatusNotFound) return model.NewAppError("AddUserToTeamByTeamId", "app.team.get.find.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return model.NewAppError("AddUserToTeamByTeamId", "app.team.get.finding.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("AddUserToTeamByTeamId", "app.team.get.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -646,7 +646,7 @@ func (a *App) AddUserToTeamByTeamId(c *request.Context, teamID string, user *mod
func (a *App) AddUserToTeamByToken(c *request.Context, userID string, tokenID string) (*model.Team, *model.TeamMember, *model.AppError) { func (a *App) AddUserToTeamByToken(c *request.Context, userID string, tokenID string) (*model.Team, *model.TeamMember, *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, nil, model.NewAppError("AddUserToTeamByToken", "api.user.create_user.signup_link_invalid.app_error", nil, err.Error(), http.StatusBadRequest) return nil, nil, model.NewAppError("AddUserToTeamByToken", "api.user.create_user.signup_link_invalid.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
if token.Type != TokenTypeTeamInvitation && token.Type != TokenTypeGuestInvitation { if token.Type != TokenTypeTeamInvitation && token.Type != TokenTypeGuestInvitation {
@@ -679,9 +679,9 @@ func (a *App) AddUserToTeamByToken(c *request.Context, userID string, tokenID st
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(result.NErr, &nfErr): case errors.As(result.NErr, &nfErr):
return nil, nil, model.NewAppError("AddUserToTeamByToken", "app.team.get.find.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, nil, model.NewAppError("AddUserToTeamByToken", "app.team.get.find.app_error", nil, "", http.StatusNotFound).Wrap(result.NErr)
default: default:
return nil, nil, model.NewAppError("AddUserToTeamByToken", "app.team.get.finding.app_error", nil, result.NErr.Error(), http.StatusInternalServerError) return nil, nil, model.NewAppError("AddUserToTeamByToken", "app.team.get.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(result.NErr)
} }
} }
team := result.Data.(*model.Team) team := result.Data.(*model.Team)
@@ -695,9 +695,9 @@ func (a *App) AddUserToTeamByToken(c *request.Context, userID string, tokenID st
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(result.NErr, &nfErr): case errors.As(result.NErr, &nfErr):
return nil, nil, model.NewAppError("AddUserToTeamByToken", MissingAccountError, nil, nfErr.Error(), http.StatusNotFound) return nil, nil, model.NewAppError("AddUserToTeamByToken", MissingAccountError, nil, "", http.StatusNotFound).Wrap(result.NErr)
default: default:
return nil, nil, model.NewAppError("AddUserToTeamByToken", "app.user.get.app_error", nil, result.NErr.Error(), http.StatusInternalServerError) return nil, nil, model.NewAppError("AddUserToTeamByToken", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(result.NErr)
} }
} }
user := result.Data.(*model.User) user := result.Data.(*model.User)
@@ -717,7 +717,7 @@ func (a *App) AddUserToTeamByToken(c *request.Context, userID string, tokenID st
if token.Type == TokenTypeGuestInvitation { if token.Type == TokenTypeGuestInvitation {
channels, err := a.Srv().Store.Channel().GetChannelsByIds(strings.Split(tokenData["channels"], " "), false) channels, err := a.Srv().Store.Channel().GetChannelsByIds(strings.Split(tokenData["channels"], " "), false)
if err != nil { if err != nil {
return nil, nil, model.NewAppError("AddUserToTeamByToken", "app.channel.get_channels_by_ids.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, nil, model.NewAppError("AddUserToTeamByToken", "app.channel.get_channels_by_ids.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, channel := range channels { for _, channel := range channels {
@@ -755,9 +755,9 @@ func (a *App) AddUserToTeamByInviteId(c *request.Context, inviteId string, userI
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(result.NErr, &nfErr): case errors.As(result.NErr, &nfErr):
return nil, nil, model.NewAppError("AddUserToTeamByInviteId", "app.team.get_by_invite_id.finding.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, nil, model.NewAppError("AddUserToTeamByInviteId", "app.team.get_by_invite_id.finding.app_error", nil, "", http.StatusNotFound).Wrap(result.NErr)
default: default:
return nil, nil, model.NewAppError("AddUserToTeamByInviteId", "app.team.get_by_invite_id.finding.app_error", nil, result.NErr.Error(), http.StatusInternalServerError) return nil, nil, model.NewAppError("AddUserToTeamByInviteId", "app.team.get_by_invite_id.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(result.NErr)
} }
} }
team := result.Data.(*model.Team) team := result.Data.(*model.Team)
@@ -767,9 +767,9 @@ func (a *App) AddUserToTeamByInviteId(c *request.Context, inviteId string, userI
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(result.NErr, &nfErr): case errors.As(result.NErr, &nfErr):
return nil, nil, model.NewAppError("AddUserToTeamByInviteId", MissingAccountError, nil, nfErr.Error(), http.StatusNotFound) return nil, nil, model.NewAppError("AddUserToTeamByInviteId", MissingAccountError, nil, "", http.StatusNotFound).Wrap(result.NErr)
default: default:
return nil, nil, model.NewAppError("AddUserToTeamByInviteId", "app.user.get.app_error", nil, result.NErr.Error(), http.StatusInternalServerError) return nil, nil, model.NewAppError("AddUserToTeamByInviteId", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(result.NErr)
} }
} }
user := result.Data.(*model.User) user := result.Data.(*model.User)
@@ -790,19 +790,19 @@ func (a *App) JoinUserToTeam(c request.CTX, team *model.Team, user *model.User,
var limitExceededErr *store.ErrLimitExceeded var limitExceededErr *store.ErrLimitExceeded
switch { switch {
case errors.Is(err, teams.AcceptedDomainError): case errors.Is(err, teams.AcceptedDomainError):
return nil, model.NewAppError("JoinUserToTeam", "api.team.join_user_to_team.allowed_domains.app_error", nil, "", http.StatusBadRequest) return nil, model.NewAppError("JoinUserToTeam", "api.team.join_user_to_team.allowed_domains.app_error", nil, "", http.StatusBadRequest).Wrap(err)
case errors.Is(err, teams.MemberCountError): case errors.Is(err, teams.MemberCountError):
return nil, model.NewAppError("JoinUserToTeam", "app.team.get_active_member_count.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("JoinUserToTeam", "app.team.get_active_member_count.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
case errors.Is(err, teams.MaxMemberCountError): case errors.Is(err, teams.MaxMemberCountError):
return nil, model.NewAppError("JoinUserToTeam", "app.team.join_user_to_team.max_accounts.app_error", nil, "teamId="+team.Id, http.StatusBadRequest) return nil, model.NewAppError("JoinUserToTeam", "app.team.join_user_to_team.max_accounts.app_error", nil, "teamId="+team.Id, http.StatusBadRequest).Wrap(err)
case errors.As(err, &appErr): // in case we haven't converted to plain error. case errors.As(err, &appErr): // in case we haven't converted to plain error.
return nil, appErr return nil, appErr
case errors.As(err, &conflictErr): case errors.As(err, &conflictErr):
return nil, model.NewAppError("JoinUserToTeam", "app.team.join_user_to_team.save_member.conflict.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("JoinUserToTeam", "app.team.join_user_to_team.save_member.conflict.app_error", nil, "", http.StatusBadRequest).Wrap(err)
case errors.As(err, &limitExceededErr): case errors.As(err, &limitExceededErr):
return nil, model.NewAppError("JoinUserToTeam", "app.team.join_user_to_team.save_member.max_accounts.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("JoinUserToTeam", "app.team.join_user_to_team.save_member.max_accounts.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: // last fallback in case it doesn't map to an existing app error. default: // last fallback in case it doesn't map to an existing app error.
return nil, model.NewAppError("JoinUserToTeam", "app.team.join_user_to_team.save_member.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("JoinUserToTeam", "app.team.join_user_to_team.save_member.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
if alreadyAdded { if alreadyAdded {
@@ -810,7 +810,7 @@ func (a *App) JoinUserToTeam(c request.CTX, team *model.Team, user *model.User,
} }
if _, err := a.Srv().Store.User().UpdateUpdateAt(user.Id); err != nil { if _, err := a.Srv().Store.User().UpdateUpdateAt(user.Id); err != nil {
return nil, model.NewAppError("JoinUserToTeam", "app.user.update_update.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("JoinUserToTeam", "app.user.update_update.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
opts := &store.SidebarCategorySearchOpts{ opts := &store.SidebarCategorySearchOpts{
@@ -873,9 +873,9 @@ func (a *App) GetTeam(teamID string) (*model.Team, *model.AppError) {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetTeam", "app.team.get.find.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetTeam", "app.team.get.find.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetTeam", "app.team.get.finding.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTeam", "app.team.get.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -888,9 +888,9 @@ func (a *App) GetTeams(teamIDs []string) ([]*model.Team, *model.AppError) {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetTeam", "app.team.get.find.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetTeam", "app.team.get.find.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetTeam", "app.team.get.finding.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTeam", "app.team.get.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -903,9 +903,9 @@ func (a *App) GetTeamByName(name string) (*model.Team, *model.AppError) {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetTeamByName", "app.team.get_by_name.missing.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetTeamByName", "app.team.get_by_name.missing.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetTeamByName", "app.team.get_by_name.app_error", nil, err.Error(), http.StatusNotFound) return nil, model.NewAppError("GetTeamByName", "app.team.get_by_name.app_error", nil, "", http.StatusNotFound).Wrap(err)
} }
} }
@@ -918,9 +918,9 @@ func (a *App) GetTeamByInviteId(inviteId string) (*model.Team, *model.AppError)
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetTeamByInviteId", "app.team.get_by_invite_id.finding.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetTeamByInviteId", "app.team.get_by_invite_id.finding.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetTeamByInviteId", "app.team.get_by_invite_id.finding.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTeamByInviteId", "app.team.get_by_invite_id.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -930,7 +930,7 @@ func (a *App) GetTeamByInviteId(inviteId string) (*model.Team, *model.AppError)
func (a *App) GetAllTeams() ([]*model.Team, *model.AppError) { func (a *App) GetAllTeams() ([]*model.Team, *model.AppError) {
teams, err := a.Srv().Store.Team().GetAll() teams, err := a.Srv().Store.Team().GetAll()
if err != nil { if err != nil {
return nil, model.NewAppError("GetAllTeams", "app.team.get_all.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetAllTeams", "app.team.get_all.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return teams, nil return teams, nil
@@ -939,7 +939,7 @@ func (a *App) GetAllTeams() ([]*model.Team, *model.AppError) {
func (a *App) GetAllTeamsPage(offset int, limit int, opts *model.TeamSearch) ([]*model.Team, *model.AppError) { func (a *App) GetAllTeamsPage(offset int, limit int, opts *model.TeamSearch) ([]*model.Team, *model.AppError) {
teams, err := a.Srv().Store.Team().GetAllPage(offset, limit, opts) teams, err := a.Srv().Store.Team().GetAllPage(offset, limit, opts)
if err != nil { if err != nil {
return nil, model.NewAppError("GetAllTeamsPage", "app.team.get_all.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetAllTeamsPage", "app.team.get_all.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return teams, nil return teams, nil
@@ -948,11 +948,11 @@ func (a *App) GetAllTeamsPage(offset int, limit int, opts *model.TeamSearch) ([]
func (a *App) GetAllTeamsPageWithCount(offset int, limit int, opts *model.TeamSearch) (*model.TeamsWithCount, *model.AppError) { func (a *App) GetAllTeamsPageWithCount(offset int, limit int, opts *model.TeamSearch) (*model.TeamsWithCount, *model.AppError) {
totalCount, err := a.Srv().Store.Team().AnalyticsTeamCount(opts) totalCount, err := a.Srv().Store.Team().AnalyticsTeamCount(opts)
if err != nil { if err != nil {
return nil, model.NewAppError("GetAllTeamsPageWithCount", "app.team.analytics_team_count.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetAllTeamsPageWithCount", "app.team.analytics_team_count.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
teams, err := a.Srv().Store.Team().GetAllPage(offset, limit, opts) teams, err := a.Srv().Store.Team().GetAllPage(offset, limit, opts)
if err != nil { if err != nil {
return nil, model.NewAppError("GetAllTeamsPageWithCount", "app.team.get_all.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetAllTeamsPageWithCount", "app.team.get_all.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return &model.TeamsWithCount{Teams: teams, TotalCount: totalCount}, nil return &model.TeamsWithCount{Teams: teams, TotalCount: totalCount}, nil
} }
@@ -960,7 +960,7 @@ func (a *App) GetAllTeamsPageWithCount(offset int, limit int, opts *model.TeamSe
func (a *App) GetAllPrivateTeams() ([]*model.Team, *model.AppError) { func (a *App) GetAllPrivateTeams() ([]*model.Team, *model.AppError) {
teams, err := a.Srv().Store.Team().GetAllPrivateTeamListing() teams, err := a.Srv().Store.Team().GetAllPrivateTeamListing()
if err != nil { if err != nil {
return nil, model.NewAppError("GetAllPrivateTeams", "app.team.get_all_private_team_listing.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetAllPrivateTeams", "app.team.get_all_private_team_listing.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return teams, nil return teams, nil
@@ -969,7 +969,7 @@ func (a *App) GetAllPrivateTeams() ([]*model.Team, *model.AppError) {
func (a *App) GetAllPublicTeams() ([]*model.Team, *model.AppError) { func (a *App) GetAllPublicTeams() ([]*model.Team, *model.AppError) {
teams, err := a.Srv().Store.Team().GetAllTeamListing() teams, err := a.Srv().Store.Team().GetAllTeamListing()
if err != nil { if err != nil {
return nil, model.NewAppError("GetAllPublicTeams", "app.team.get_all_team_listing.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetAllPublicTeams", "app.team.get_all_team_listing.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return teams, nil return teams, nil
@@ -980,14 +980,14 @@ func (a *App) SearchAllTeams(searchOpts *model.TeamSearch) ([]*model.Team, int64
if searchOpts.IsPaginated() { if searchOpts.IsPaginated() {
teams, count, err := a.Srv().Store.Team().SearchAllPaged(searchOpts) teams, count, err := a.Srv().Store.Team().SearchAllPaged(searchOpts)
if err != nil { if err != nil {
return nil, 0, model.NewAppError("SearchAllTeams", "app.team.search_all_team.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, 0, model.NewAppError("SearchAllTeams", "app.team.search_all_team.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return teams, count, nil return teams, count, nil
} }
results, err := a.Srv().Store.Team().SearchAll(searchOpts) results, err := a.Srv().Store.Team().SearchAll(searchOpts)
if err != nil { if err != nil {
return nil, 0, model.NewAppError("SearchAllTeams", "app.team.search_all_team.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, 0, model.NewAppError("SearchAllTeams", "app.team.search_all_team.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return results, int64(len(results)), nil return results, int64(len(results)), nil
} }
@@ -995,7 +995,7 @@ func (a *App) SearchAllTeams(searchOpts *model.TeamSearch) ([]*model.Team, int64
func (a *App) SearchPublicTeams(searchOpts *model.TeamSearch) ([]*model.Team, *model.AppError) { func (a *App) SearchPublicTeams(searchOpts *model.TeamSearch) ([]*model.Team, *model.AppError) {
teams, err := a.Srv().Store.Team().SearchOpen(searchOpts) teams, err := a.Srv().Store.Team().SearchOpen(searchOpts)
if err != nil { if err != nil {
return nil, model.NewAppError("SearchPublicTeams", "app.team.search_open_team.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SearchPublicTeams", "app.team.search_open_team.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return teams, nil return teams, nil
@@ -1004,7 +1004,7 @@ func (a *App) SearchPublicTeams(searchOpts *model.TeamSearch) ([]*model.Team, *m
func (a *App) SearchPrivateTeams(searchOpts *model.TeamSearch) ([]*model.Team, *model.AppError) { func (a *App) SearchPrivateTeams(searchOpts *model.TeamSearch) ([]*model.Team, *model.AppError) {
teams, err := a.Srv().Store.Team().SearchPrivate(searchOpts) teams, err := a.Srv().Store.Team().SearchPrivate(searchOpts)
if err != nil { if err != nil {
return nil, model.NewAppError("SearchPrivateTeams", "app.team.search_private_team.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SearchPrivateTeams", "app.team.search_private_team.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return teams, nil return teams, nil
@@ -1013,7 +1013,7 @@ func (a *App) SearchPrivateTeams(searchOpts *model.TeamSearch) ([]*model.Team, *
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, "", http.StatusInternalServerError).Wrap(err)
} }
return teams, nil return teams, nil
@@ -1025,9 +1025,9 @@ func (a *App) GetTeamMember(teamID, userID string) (*model.TeamMember, *model.Ap
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetTeamMember", "app.team.get_member.missing.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetTeamMember", "app.team.get_member.missing.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetTeamMember", "app.team.get_member.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTeamMember", "app.team.get_member.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -1037,7 +1037,7 @@ func (a *App) GetTeamMember(teamID, userID string) (*model.TeamMember, *model.Ap
func (a *App) GetTeamMembersForUser(userID string, excludeTeamID string, includeDeleted bool) ([]*model.TeamMember, *model.AppError) { func (a *App) GetTeamMembersForUser(userID string, excludeTeamID string, includeDeleted bool) ([]*model.TeamMember, *model.AppError) {
teamMembers, err := a.Srv().Store.Team().GetTeamsForUser(context.Background(), userID, excludeTeamID, includeDeleted) teamMembers, err := a.Srv().Store.Team().GetTeamsForUser(context.Background(), userID, excludeTeamID, includeDeleted)
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, "", http.StatusInternalServerError).Wrap(err)
} }
return teamMembers, nil return teamMembers, nil
@@ -1046,7 +1046,7 @@ func (a *App) GetTeamMembersForUser(userID string, excludeTeamID string, include
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, "", http.StatusInternalServerError).Wrap(err)
} }
return teamMembers, nil return teamMembers, nil
@@ -1055,7 +1055,7 @@ func (a *App) GetTeamMembersForUserWithPagination(userID string, page, perPage i
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, "", http.StatusInternalServerError).Wrap(err)
} }
return teamMembers, nil return teamMembers, nil
@@ -1064,7 +1064,7 @@ func (a *App) GetTeamMembers(teamID string, offset int, limit int, teamMembersGe
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, "", http.StatusInternalServerError).Wrap(err)
} }
return teamMembers, nil return teamMembers, nil
@@ -1073,7 +1073,7 @@ func (a *App) GetTeamMembersByIds(teamID string, userIDs []string, restrictions
func (a *App) GetCommonTeamIDsForTwoUsers(userID, otherUserID string) ([]string, *model.AppError) { func (a *App) GetCommonTeamIDsForTwoUsers(userID, otherUserID string) ([]string, *model.AppError) {
teamIDs, err := a.Srv().Store.Team().GetCommonTeamIDsForTwoUsers(userID, otherUserID) teamIDs, err := a.Srv().Store.Team().GetCommonTeamIDsForTwoUsers(userID, otherUserID)
if err != nil { if err != nil {
return nil, model.NewAppError("GetCommonTeamIDsForUsers", "app.team.get_common_team_ids_for_users.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetCommonTeamIDsForUsers", "app.team.get_common_team_ids_for_users.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return teamIDs, nil return teamIDs, nil
} }
@@ -1148,7 +1148,7 @@ func (a *App) GetTeamUnread(teamID, userID string) (*model.TeamUnread, *model.Ap
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, "", http.StatusInternalServerError).Wrap(err)
} }
var teamUnread = &model.TeamUnread{ var teamUnread = &model.TeamUnread{
@@ -1191,9 +1191,9 @@ func (a *App) RemoveUserFromTeam(c request.CTX, teamID string, userID string, re
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(result.NErr, &nfErr): case errors.As(result.NErr, &nfErr):
return model.NewAppError("RemoveUserFromTeam", "app.team.get_by_invite_id.finding.app_error", nil, nfErr.Error(), http.StatusNotFound) return model.NewAppError("RemoveUserFromTeam", "app.team.get_by_invite_id.finding.app_error", nil, "", http.StatusNotFound).Wrap(result.NErr)
default: default:
return model.NewAppError("RemoveUserFromTeam", "app.team.get_by_invite_id.finding.app_error", nil, result.NErr.Error(), http.StatusInternalServerError) return model.NewAppError("RemoveUserFromTeam", "app.team.get_by_invite_id.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(result.NErr)
} }
} }
team := result.Data.(*model.Team) team := result.Data.(*model.Team)
@@ -1203,9 +1203,9 @@ func (a *App) RemoveUserFromTeam(c request.CTX, teamID string, userID string, re
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(result.NErr, &nfErr): case errors.As(result.NErr, &nfErr):
return model.NewAppError("RemoveUserFromTeam", MissingAccountError, nil, nfErr.Error(), http.StatusNotFound) return model.NewAppError("RemoveUserFromTeam", MissingAccountError, nil, "", http.StatusNotFound).Wrap(result.NErr)
default: default:
return model.NewAppError("RemoveUserFromTeam", "app.user.get.app_error", nil, result.NErr.Error(), http.StatusInternalServerError) return model.NewAppError("RemoveUserFromTeam", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(result.NErr)
} }
} }
user := result.Data.(*model.User) user := result.Data.(*model.User)
@@ -1238,23 +1238,23 @@ func (a *App) postProcessTeamMemberLeave(c request.CTX, teamMember *model.TeamMe
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return model.NewAppError("postProcessTeamMemberLeave", MissingAccountError, nil, nfErr.Error(), http.StatusNotFound) return model.NewAppError("postProcessTeamMemberLeave", MissingAccountError, nil, "", http.StatusNotFound).Wrap(nErr)
default: default:
return model.NewAppError("postProcessTeamMemberLeave", "app.user.get.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("postProcessTeamMemberLeave", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
if _, err := a.Srv().Store.User().UpdateUpdateAt(user.Id); err != nil { if _, err := a.Srv().Store.User().UpdateUpdateAt(user.Id); err != nil {
return model.NewAppError("postProcessTeamMemberLeave", "app.user.update_update.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("postProcessTeamMemberLeave", "app.user.update_update.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.Srv().Store.Channel().ClearSidebarOnTeamLeave(user.Id, teamMember.TeamId); err != nil { if err := a.Srv().Store.Channel().ClearSidebarOnTeamLeave(user.Id, teamMember.TeamId); err != nil {
return model.NewAppError("postProcessTeamMemberLeave", "app.channel.sidebar_categories.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("postProcessTeamMemberLeave", "app.channel.sidebar_categories.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// delete the preferences that set the last channel used in the team and other team specific preferences // delete the preferences that set the last channel used in the team and other team specific preferences
if err := a.Srv().Store.Preference().DeleteCategory(user.Id, teamMember.TeamId); err != nil { if err := a.Srv().Store.Preference().DeleteCategory(user.Id, teamMember.TeamId); err != nil {
return model.NewAppError("postProcessTeamMemberLeave", "app.preference.delete.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("postProcessTeamMemberLeave", "app.preference.delete.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
a.ClearSessionCacheForUser(user.Id) a.ClearSessionCacheForUser(user.Id)
@@ -1267,7 +1267,7 @@ func (a *App) postProcessTeamMemberLeave(c request.CTX, teamMember *model.TeamMe
func (a *App) LeaveTeam(c request.CTX, team *model.Team, user *model.User, requestorId string) *model.AppError { func (a *App) LeaveTeam(c request.CTX, team *model.Team, user *model.User, requestorId string) *model.AppError {
teamMember, err := a.GetTeamMember(team.Id, user.Id) teamMember, err := a.GetTeamMember(team.Id, user.Id)
if err != nil { if err != nil {
return model.NewAppError("LeaveTeam", "api.team.remove_user_from_team.missing.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("LeaveTeam", "api.team.remove_user_from_team.missing.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
var channelList model.ChannelList var channelList model.ChannelList
@@ -1280,7 +1280,7 @@ func (a *App) LeaveTeam(c request.CTX, team *model.Team, user *model.User, reque
if errors.As(nErr, &nfErr) { if errors.As(nErr, &nfErr) {
channelList = model.ChannelList{} channelList = model.ChannelList{}
} else { } else {
return model.NewAppError("LeaveTeam", "app.channel.get_channels.get.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("LeaveTeam", "app.channel.get_channels.get.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -1288,7 +1288,7 @@ func (a *App) LeaveTeam(c request.CTX, team *model.Team, user *model.User, reque
if !channel.IsGroupOrDirect() { if !channel.IsGroupOrDirect() {
a.invalidateCacheForChannelMembers(channel.Id) a.invalidateCacheForChannelMembers(channel.Id)
if nErr = a.Srv().Store.Channel().RemoveMember(channel.Id, user.Id); nErr != nil { if nErr = a.Srv().Store.Channel().RemoveMember(channel.Id, user.Id); nErr != nil {
return model.NewAppError("LeaveTeam", "app.channel.remove_member.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("LeaveTeam", "app.channel.remove_member.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
} }
@@ -1299,9 +1299,9 @@ func (a *App) LeaveTeam(c request.CTX, team *model.Team, user *model.User, reque
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(cErr, &nfErr): case errors.As(cErr, &nfErr):
return model.NewAppError("LeaveTeam", "app.channel.get_by_name.missing.app_error", nil, nfErr.Error(), http.StatusNotFound) return model.NewAppError("LeaveTeam", "app.channel.get_by_name.missing.app_error", nil, "", http.StatusNotFound).Wrap(cErr)
default: default:
return model.NewAppError("LeaveTeam", "app.channel.get_by_name.existing.app_error", nil, cErr.Error(), http.StatusInternalServerError) return model.NewAppError("LeaveTeam", "app.channel.get_by_name.existing.app_error", nil, "", http.StatusInternalServerError).Wrap(cErr)
} }
} }
@@ -1317,7 +1317,7 @@ func (a *App) LeaveTeam(c request.CTX, team *model.Team, user *model.User, reque
} }
if err := a.ch.srv.teamService.RemoveTeamMember(teamMember); err != nil { if err := a.ch.srv.teamService.RemoveTeamMember(teamMember); err != nil {
return model.NewAppError("RemoveTeamMemberFromTeam", "app.team.save_member.save.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("RemoveTeamMemberFromTeam", "app.team.save_member.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.postProcessTeamMemberLeave(c, teamMember, requestorId); err != nil { if err := a.postProcessTeamMemberLeave(c, teamMember, requestorId); err != nil {
@@ -1339,7 +1339,7 @@ func (a *App) postLeaveTeamMessage(c request.CTX, user *model.User, channel *mod
} }
if _, err := a.CreatePost(c, post, channel, false, true); err != nil { if _, err := a.CreatePost(c, post, channel, false, true); err != nil {
return model.NewAppError("postRemoveFromChannelMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("postRemoveFromChannelMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
@@ -1357,7 +1357,7 @@ func (a *App) postRemoveFromTeamMessage(c request.CTX, user *model.User, channel
} }
if _, err := a.CreatePost(c, post, channel, false, true); err != nil { if _, err := a.CreatePost(c, post, channel, false, true); err != nil {
return model.NewAppError("postRemoveFromTeamMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("postRemoveFromTeamMessage", "api.channel.post_user_add_remove_message_and_forget.error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
@@ -1383,7 +1383,7 @@ func (a *App) prepareInviteNewUsersToTeam(teamID, senderId string, channelIds []
if len(channelIds) > 0 { if len(channelIds) > 0 {
channels, err = a.Srv().Store.Channel().GetChannelsByIds(channelIds, false) channels, err = a.Srv().Store.Channel().GetChannelsByIds(channelIds, false)
if err != nil { if err != nil {
return nil, nil, nil, model.NewAppError("prepareInviteNewUsersToTeam", "app.channel.get_channels_by_ids.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, nil, nil, model.NewAppError("prepareInviteNewUsersToTeam", "app.channel.get_channels_by_ids.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
result := <-tchan result := <-tchan
@@ -1391,9 +1391,9 @@ func (a *App) prepareInviteNewUsersToTeam(teamID, senderId string, channelIds []
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(result.NErr, &nfErr): case errors.As(result.NErr, &nfErr):
return nil, nil, nil, model.NewAppError("prepareInviteNewUsersToTeam", "app.team.get_by_invite_id.finding.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, nil, nil, model.NewAppError("prepareInviteNewUsersToTeam", "app.team.get_by_invite_id.finding.app_error", nil, "", http.StatusNotFound).Wrap(result.NErr)
default: default:
return nil, nil, nil, model.NewAppError("prepareInviteNewUsersToTeam", "app.team.get_by_invite_id.finding.app_error", nil, result.NErr.Error(), http.StatusInternalServerError) return nil, nil, nil, model.NewAppError("prepareInviteNewUsersToTeam", "app.team.get_by_invite_id.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(result.NErr)
} }
} }
team := result.Data.(*model.Team) team := result.Data.(*model.Team)
@@ -1403,9 +1403,9 @@ func (a *App) prepareInviteNewUsersToTeam(teamID, senderId string, channelIds []
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(result.NErr, &nfErr): case errors.As(result.NErr, &nfErr):
return nil, nil, nil, model.NewAppError("prepareInviteNewUsersToTeam", MissingAccountError, nil, nfErr.Error(), http.StatusNotFound) return nil, nil, nil, model.NewAppError("prepareInviteNewUsersToTeam", MissingAccountError, nil, "", http.StatusNotFound).Wrap(result.NErr)
default: default:
return nil, nil, nil, model.NewAppError("prepareInviteNewUsersToTeam", "app.user.get.app_error", nil, result.NErr.Error(), http.StatusInternalServerError) return nil, nil, nil, model.NewAppError("prepareInviteNewUsersToTeam", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(result.NErr)
} }
} }
user := result.Data.(*model.User) user := result.Data.(*model.User)
@@ -1520,7 +1520,7 @@ func (a *App) prepareInviteGuestsToChannels(teamID string, guestsInvite *model.G
result := <-cchan result := <-cchan
if result.NErr != nil { if result.NErr != nil {
return nil, nil, nil, model.NewAppError("prepareInviteGuestsToChannels", "app.channel.get_channels_by_ids.app_error", nil, result.NErr.Error(), http.StatusInternalServerError) return nil, nil, nil, model.NewAppError("prepareInviteGuestsToChannels", "app.channel.get_channels_by_ids.app_error", nil, "", http.StatusInternalServerError).Wrap(result.NErr)
} }
channels := result.Data.([]*model.Channel) channels := result.Data.([]*model.Channel)
@@ -1529,9 +1529,9 @@ func (a *App) prepareInviteGuestsToChannels(teamID string, guestsInvite *model.G
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(result.NErr, &nfErr): case errors.As(result.NErr, &nfErr):
return nil, nil, nil, model.NewAppError("prepareInviteGuestsToChannels", MissingAccountError, nil, nfErr.Error(), http.StatusNotFound) return nil, nil, nil, model.NewAppError("prepareInviteGuestsToChannels", MissingAccountError, nil, "", http.StatusNotFound).Wrap(result.NErr)
default: default:
return nil, nil, nil, model.NewAppError("prepareInviteGuestsToChannels", "app.user.get.app_error", nil, result.NErr.Error(), http.StatusInternalServerError) return nil, nil, nil, model.NewAppError("prepareInviteGuestsToChannels", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(result.NErr)
} }
} }
user := result.Data.(*model.User) user := result.Data.(*model.User)
@@ -1541,9 +1541,9 @@ func (a *App) prepareInviteGuestsToChannels(teamID string, guestsInvite *model.G
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(result.NErr, &nfErr): case errors.As(result.NErr, &nfErr):
return nil, nil, nil, model.NewAppError("prepareInviteGuestsToChannels", "app.team.get_by_invite_id.finding.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, nil, nil, model.NewAppError("prepareInviteGuestsToChannels", "app.team.get_by_invite_id.finding.app_error", nil, "", http.StatusNotFound).Wrap(result.NErr)
default: default:
return nil, nil, nil, model.NewAppError("prepareInviteGuestsToChannels", "app.team.get_by_invite_id.finding.app_error", nil, result.NErr.Error(), http.StatusInternalServerError) return nil, nil, nil, model.NewAppError("prepareInviteGuestsToChannels", "app.team.get_by_invite_id.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(result.NErr)
} }
} }
team := result.Data.(*model.Team) team := result.Data.(*model.Team)
@@ -1711,7 +1711,7 @@ func (a *App) FindTeamByName(name string) bool {
func (a *App) GetTeamsUnreadForUser(excludeTeamId string, userID string, includeCollapsedThreads bool) ([]*model.TeamUnread, *model.AppError) { func (a *App) GetTeamsUnreadForUser(excludeTeamId string, userID string, includeCollapsedThreads bool) ([]*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, "", http.StatusInternalServerError).Wrap(err)
} }
members := []*model.TeamUnread{} members := []*model.TeamUnread{}
@@ -1753,7 +1753,7 @@ func (a *App) GetTeamsUnreadForUser(excludeTeamId string, userID string, include
if includeCollapsedThreads { if includeCollapsedThreads {
teamUnreads, err := a.Srv().Store.Thread().GetTeamsUnreadForUser(userID, teamIDs) teamUnreads, err := a.Srv().Store.Thread().GetTeamsUnreadForUser(userID, teamIDs)
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, "", http.StatusInternalServerError).Wrap(err)
} }
for teamID, member := range membersMap { for teamID, member := range membersMap {
if _, ok := teamUnreads[teamID]; ok { if _, ok := teamUnreads[teamID]; ok {
@@ -1785,18 +1785,18 @@ func (a *App) PermanentDeleteTeam(c request.CTX, team *model.Team) *model.AppErr
var appErr *model.AppError var appErr *model.AppError
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return model.NewAppError("PermanentDeleteTeam", "app.team.update.find.app_error", nil, invErr.Error(), http.StatusBadRequest) return model.NewAppError("PermanentDeleteTeam", "app.team.update.find.app_error", nil, "", http.StatusBadRequest).Wrap(err)
case errors.As(err, &appErr): case errors.As(err, &appErr):
return appErr return appErr
default: default:
return model.NewAppError("PermanentDeleteTeam", "app.team.update.updating.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteTeam", "app.team.update.updating.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
if channels, err := a.Srv().Store.Channel().GetTeamChannels(team.Id); err != nil { if channels, err := a.Srv().Store.Channel().GetTeamChannels(team.Id); err != nil {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
if !errors.As(err, &nfErr) { if !errors.As(err, &nfErr) {
return model.NewAppError("PermanentDeleteTeam", "app.channel.get_channels.get.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteTeam", "app.channel.get_channels.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} else { } else {
for _, ch := range channels { for _, ch := range channels {
@@ -1805,15 +1805,15 @@ func (a *App) PermanentDeleteTeam(c request.CTX, team *model.Team) *model.AppErr
} }
if err := a.Srv().Store.Team().RemoveAllMembersByTeam(team.Id); err != nil { if err := a.Srv().Store.Team().RemoveAllMembersByTeam(team.Id); err != nil {
return model.NewAppError("PermanentDeleteTeam", "app.team.remove_member.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteTeam", "app.team.remove_member.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.Srv().Store.Command().PermanentDeleteByTeam(team.Id); err != nil { if err := a.Srv().Store.Command().PermanentDeleteByTeam(team.Id); err != nil {
return model.NewAppError("PermanentDeleteTeam", "app.team.permanentdeleteteam.internal_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteTeam", "app.team.permanentdeleteteam.internal_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.Srv().Store.Team().PermanentDelete(team.Id); err != nil { if err := a.Srv().Store.Team().PermanentDelete(team.Id); err != nil {
return model.NewAppError("PermanentDeleteTeam", "app.team.permanent_delete.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteTeam", "app.team.permanent_delete.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if appErr := a.sendTeamEvent(team, model.WebsocketEventDeleteTeam); appErr != nil { if appErr := a.sendTeamEvent(team, model.WebsocketEventDeleteTeam); appErr != nil {
@@ -1836,11 +1836,11 @@ func (a *App) SoftDeleteTeam(teamID string) *model.AppError {
var appErr *model.AppError var appErr *model.AppError
switch { switch {
case errors.As(nErr, &invErr): case errors.As(nErr, &invErr):
return model.NewAppError("SoftDeleteTeam", "app.team.update.find.app_error", nil, invErr.Error(), http.StatusBadRequest) return model.NewAppError("SoftDeleteTeam", "app.team.update.find.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
return appErr return appErr
default: default:
return model.NewAppError("SoftDeleteTeam", "app.team.update.updating.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("SoftDeleteTeam", "app.team.update.updating.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -1864,11 +1864,11 @@ func (a *App) RestoreTeam(teamID string) *model.AppError {
var appErr *model.AppError var appErr *model.AppError
switch { switch {
case errors.As(nErr, &invErr): case errors.As(nErr, &invErr):
return model.NewAppError("RestoreTeam", "app.team.update.find.app_error", nil, invErr.Error(), http.StatusBadRequest) return model.NewAppError("RestoreTeam", "app.team.update.find.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
return appErr return appErr
default: default:
return model.NewAppError("RestoreTeam", "app.team.update.updating.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("RestoreTeam", "app.team.update.updating.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -1898,13 +1898,13 @@ func (a *App) GetTeamStats(teamID string, restrictions *model.ViewUsersRestricti
result := <-tchan result := <-tchan
if result.NErr != nil { if result.NErr != nil {
return nil, model.NewAppError("GetTeamStats", "app.team.get_member_count.app_error", nil, result.NErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTeamStats", "app.team.get_member_count.app_error", nil, "", http.StatusInternalServerError).Wrap(result.NErr)
} }
stats.TotalMemberCount = result.Data.(int64) stats.TotalMemberCount = result.Data.(int64)
result = <-achan result = <-achan
if result.NErr != nil { if result.NErr != nil {
return nil, model.NewAppError("GetTeamStats", "app.team.get_active_member_count.app_error", nil, result.NErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTeamStats", "app.team.get_active_member_count.app_error", nil, "", http.StatusInternalServerError).Wrap(result.NErr)
} }
stats.ActiveMemberCount = result.Data.(int64) stats.ActiveMemberCount = result.Data.(int64)
@@ -1979,7 +1979,7 @@ func (a *App) GetTeamIcon(team *model.Team) ([]byte, *model.AppError) {
path := "teams/" + team.Id + "/teamIcon.png" path := "teams/" + team.Id + "/teamIcon.png"
data, err := a.ReadFile(path) data, err := a.ReadFile(path)
if err != nil { if err != nil {
return nil, model.NewAppError("GetTeamIcon", "api.team.get_team_icon.read_file.app_error", nil, err.Error(), http.StatusNotFound) return nil, model.NewAppError("GetTeamIcon", "api.team.get_team_icon.read_file.app_error", nil, "", http.StatusNotFound).Wrap(err)
} }
return data, nil return data, nil
@@ -1988,7 +1988,7 @@ func (a *App) GetTeamIcon(team *model.Team) ([]byte, *model.AppError) {
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, "", http.StatusBadRequest).Wrap(err)
} }
defer file.Close() defer file.Close()
return a.SetTeamIconFromMultiPartFile(teamID, file) return a.SetTeamIconFromMultiPartFile(teamID, file)
@@ -1998,7 +1998,7 @@ func (a *App) SetTeamIconFromMultiPartFile(teamID string, file multipart.File) *
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, "", http.StatusBadRequest).Wrap(getTeamErr)
} }
if *a.Config().FileSettings.DriverName == "" { if *a.Config().FileSettings.DriverName == "" {
@@ -2007,7 +2007,7 @@ func (a *App) SetTeamIconFromMultiPartFile(teamID string, file multipart.File) *
if limitErr := checkImageLimits(file, *a.Config().FileSettings.MaxImageResolution); limitErr != nil { if limitErr := checkImageLimits(file, *a.Config().FileSettings.MaxImageResolution); limitErr != nil {
return model.NewAppError("SetTeamIcon", "api.team.set_team_icon.check_image_limits.app_error", return model.NewAppError("SetTeamIcon", "api.team.set_team_icon.check_image_limits.app_error",
nil, limitErr.Error(), http.StatusBadRequest) nil, "", http.StatusBadRequest).Wrap(limitErr)
} }
return a.SetTeamIconFromFile(team, file) return a.SetTeamIconFromFile(team, file)
@@ -2017,7 +2017,7 @@ func (a *App) SetTeamIconFromFile(team *model.Team, file io.Reader) *model.AppEr
// Decode image into Image object // Decode image into Image object
img, _, err := image.Decode(file) img, _, err := image.Decode(file)
if err != nil { if err != nil {
return model.NewAppError("SetTeamIcon", "api.team.set_team_icon.decode.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("SetTeamIcon", "api.team.set_team_icon.decode.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
orientation, _ := imaging.GetImageOrientation(file) orientation, _ := imaging.GetImageOrientation(file)
@@ -2030,19 +2030,19 @@ func (a *App) SetTeamIconFromFile(team *model.Team, file io.Reader) *model.AppEr
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
err = a.ch.imgEncoder.EncodePNG(buf, img) err = a.ch.imgEncoder.EncodePNG(buf, img)
if err != nil { if err != nil {
return model.NewAppError("SetTeamIcon", "api.team.set_team_icon.encode.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SetTeamIcon", "api.team.set_team_icon.encode.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
path := "teams/" + team.Id + "/teamIcon.png" path := "teams/" + team.Id + "/teamIcon.png"
if _, err := a.WriteFile(buf, path); err != nil { if _, err := a.WriteFile(buf, path); err != nil {
return model.NewAppError("SetTeamIcon", "api.team.set_team_icon.write_file.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SetTeamIcon", "api.team.set_team_icon.write_file.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
curTime := model.GetMillis() curTime := model.GetMillis()
if err := a.Srv().Store.Team().UpdateLastTeamIconUpdate(team.Id, curTime); err != nil { if err := a.Srv().Store.Team().UpdateLastTeamIconUpdate(team.Id, curTime); err != nil {
return model.NewAppError("SetTeamIcon", "api.team.team_icon.update.app_error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("SetTeamIcon", "api.team.team_icon.update.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
// manually set time to avoid possible cluster inconsistencies // manually set time to avoid possible cluster inconsistencies
@@ -2058,11 +2058,11 @@ func (a *App) SetTeamIconFromFile(team *model.Team, file io.Reader) *model.AppEr
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, "", http.StatusBadRequest).Wrap(err)
} }
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, "", http.StatusBadRequest).Wrap(err)
} }
team.LastTeamIconUpdate = 0 team.LastTeamIconUpdate = 0
@@ -2076,13 +2076,13 @@ func (a *App) RemoveTeamIcon(teamID string) *model.AppError {
func (a *App) InvalidateAllEmailInvites() *model.AppError { func (a *App) InvalidateAllEmailInvites() *model.AppError {
if err := a.Srv().Store.Token().RemoveAllTokensByType(TokenTypeTeamInvitation); err != nil { if err := a.Srv().Store.Token().RemoveAllTokensByType(TokenTypeTeamInvitation); err != nil {
return model.NewAppError("InvalidateAllEmailInvites", "api.team.invalidate_all_email_invites.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("InvalidateAllEmailInvites", "api.team.invalidate_all_email_invites.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.Srv().Store.Token().RemoveAllTokensByType(TokenTypeGuestInvitation); err != nil { if err := a.Srv().Store.Token().RemoveAllTokensByType(TokenTypeGuestInvitation); err != nil {
return model.NewAppError("InvalidateAllEmailInvites", "api.team.invalidate_all_email_invites.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("InvalidateAllEmailInvites", "api.team.invalidate_all_email_invites.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.InvalidateAllResendInviteEmailJobs(); err != nil { if err := a.InvalidateAllResendInviteEmailJobs(); err != nil {
return model.NewAppError("InvalidateAllEmailInvites", "api.team.invalidate_all_email_invites.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("InvalidateAllEmailInvites", "api.team.invalidate_all_email_invites.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
} }

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

@@ -27,11 +27,11 @@ func (a *App) CreateTermsOfService(text, userID string) (*model.TermsOfService,
var appErr *model.AppError var appErr *model.AppError
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("CreateTermsOfService", "app.terms_of_service.create.existing.app_error", nil, "id="+termsOfService.Id, http.StatusBadRequest) return nil, model.NewAppError("CreateTermsOfService", "app.terms_of_service.create.existing.app_error", nil, "id="+termsOfService.Id, http.StatusBadRequest).Wrap(err)
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("CreateTermsOfService", "app.terms_of_service.create.app_error", nil, "terms_of_service_id="+termsOfService.Id+",err="+err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateTermsOfService", "app.terms_of_service.create.app_error", nil, "terms_of_service_id="+termsOfService.Id, http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -44,9 +44,9 @@ func (a *App) GetLatestTermsOfService() (*model.TermsOfService, *model.AppError)
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetLatestTermsOfService", "app.terms_of_service.get.no_rows.app_error", nil, "err="+err.Error(), http.StatusNotFound) return nil, model.NewAppError("GetLatestTermsOfService", "app.terms_of_service.get.no_rows.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetLatestTermsOfService", "app.terms_of_service.get.app_error", nil, "err="+err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetLatestTermsOfService", "app.terms_of_service.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return termsOfService, nil return termsOfService, nil
@@ -58,9 +58,9 @@ func (a *App) GetTermsOfService(id string) (*model.TermsOfService, *model.AppErr
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetTermsOfService", "app.terms_of_service.get.no_rows.app_error", nil, "", http.StatusNotFound) return nil, model.NewAppError("GetTermsOfService", "app.terms_of_service.get.no_rows.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetTermsOfService", "app.terms_of_service.get.app_error", nil, "err="+err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTermsOfService", "app.terms_of_service.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return termsOfService, nil return termsOfService, nil

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

@@ -115,7 +115,7 @@ func (a *App) runPluginsHook(c *request.Context, info *model.FileInfo, file io.R
info.Size = written info.Size = written
if fileErr := a.MoveFile(tmpPath, info.Path); fileErr != nil { if fileErr := a.MoveFile(tmpPath, info.Path); fileErr != nil {
return model.NewAppError("runPluginsHook", "app.upload.run_plugins_hook.move_fail", return model.NewAppError("runPluginsHook", "app.upload.run_plugins_hook.move_fail",
nil, fileErr.Error(), http.StatusInternalServerError) nil, "", http.StatusInternalServerError).Wrap(fileErr)
} }
} else { } else {
if fileErr := a.RemoveFile(tmpPath); fileErr != nil { if fileErr := a.RemoveFile(tmpPath); fileErr != nil {
@@ -158,7 +158,7 @@ func (a *App) CreateUploadSession(c request.CTX, us *model.UploadSession) (*mode
us, storeErr := a.Srv().Store.UploadSession().Save(us) us, storeErr := a.Srv().Store.UploadSession().Save(us)
if storeErr != nil { if storeErr != nil {
return nil, model.NewAppError("CreateUploadSession", "app.upload.create.save.app_error", nil, storeErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateUploadSession", "app.upload.create.save.app_error", nil, "", http.StatusInternalServerError).Wrap(storeErr)
} }
return us, nil return us, nil
@@ -171,10 +171,10 @@ func (a *App) GetUploadSession(uploadId string) (*model.UploadSession, *model.Ap
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetUpload", "app.upload.get.app_error", return nil, model.NewAppError("GetUpload", "app.upload.get.app_error",
nil, nfErr.Error(), http.StatusNotFound) nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetUpload", "app.upload.get.app_error", return nil, model.NewAppError("GetUpload", "app.upload.get.app_error",
nil, err.Error(), http.StatusInternalServerError) nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return us, nil return us, nil
@@ -184,7 +184,7 @@ func (a *App) GetUploadSessionsForUser(userID string) ([]*model.UploadSession, *
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, "", http.StatusInternalServerError).Wrap(err)
} }
return uss, nil return uss, nil
} }
@@ -253,7 +253,7 @@ func (a *App) UploadData(c *request.Context, us *model.UploadSession, rd io.Read
if written > 0 { if written > 0 {
us.FileOffset += written us.FileOffset += written
if storeErr := a.Srv().Store.UploadSession().Update(us); storeErr != nil { if storeErr := a.Srv().Store.UploadSession().Update(us); storeErr != nil {
return nil, model.NewAppError("UploadData", "app.upload.upload_data.update.app_error", nil, storeErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UploadData", "app.upload.upload_data.update.app_error", nil, "", http.StatusInternalServerError).Wrap(storeErr)
} }
} }
if err != nil { if err != nil {
@@ -268,14 +268,14 @@ func (a *App) UploadData(c *request.Context, us *model.UploadSession, rd io.Read
// upload is done, create FileInfo // upload is done, create FileInfo
file, err := a.FileReader(uploadPath) file, err := a.FileReader(uploadPath)
if err != nil { if err != nil {
return nil, model.NewAppError("UploadData", "app.upload.upload_data.read_file.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UploadData", "app.upload.upload_data.read_file.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// generate file info // generate file info
info, genErr := a.genFileInfoFromReader(us.Filename, file, us.FileSize) info, genErr := a.genFileInfoFromReader(us.Filename, file, us.FileSize)
file.Close() file.Close()
if genErr != nil { if genErr != nil {
return nil, model.NewAppError("UploadData", "app.upload.upload_data.gen_info.app_error", nil, genErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UploadData", "app.upload.upload_data.gen_info.app_error", nil, "", http.StatusInternalServerError).Wrap(genErr)
} }
info.CreatorId = us.UserId info.CreatorId = us.UserId
@@ -309,7 +309,7 @@ func (a *App) UploadData(c *request.Context, us *model.UploadSession, rd io.Read
if us.Type == model.UploadTypeImport { if us.Type == model.UploadTypeImport {
if err := a.MoveFile(uploadPath, us.Path); err != nil { if err := a.MoveFile(uploadPath, us.Path); err != nil {
return nil, model.NewAppError("UploadData", "app.upload.upload_data.move_file.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UploadData", "app.upload.upload_data.move_file.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -320,7 +320,7 @@ func (a *App) UploadData(c *request.Context, us *model.UploadSession, rd io.Read
case errors.As(storeErr, &appErr): case errors.As(storeErr, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("uploadData", "app.upload.upload_data.save.app_error", nil, storeErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("uploadData", "app.upload.upload_data.save.app_error", nil, "", http.StatusInternalServerError).Wrap(storeErr)
} }
} }

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

@@ -46,7 +46,7 @@ func (ch *Channels) getIntegrationsUsage() (*model.IntegrationsUsage, *model.App
func (a *App) GetPostsUsage() (int64, *model.AppError) { func (a *App) GetPostsUsage() (int64, *model.AppError) {
count, err := a.Srv().Store.Post().AnalyticsPostCount(&model.PostCountOptions{ExcludeDeleted: true, UsersPostsOnly: true, AllowFromCache: true}) count, err := a.Srv().Store.Post().AnalyticsPostCount(&model.PostCountOptions{ExcludeDeleted: true, UsersPostsOnly: true, AllowFromCache: true})
if err != nil { if err != nil {
return 0, model.NewAppError("GetPostsUsage", "app.post.analytics_posts_count.app_error", nil, err.Error(), http.StatusInternalServerError) return 0, model.NewAppError("GetPostsUsage", "app.post.analytics_posts_count.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return utils.RoundOffToZeroesResolution(float64(count), 3), nil return utils.RoundOffToZeroesResolution(float64(count), 3), nil
@@ -56,7 +56,7 @@ func (a *App) GetPostsUsage() (int64, *model.AppError) {
func (a *App) GetStorageUsage() (int64, *model.AppError) { func (a *App) GetStorageUsage() (int64, *model.AppError) {
usage, err := a.Srv().Store.FileInfo().GetStorageUsage(true, false) usage, err := a.Srv().Store.FileInfo().GetStorageUsage(true, false)
if err != nil { if err != nil {
return 0, model.NewAppError("GetStorageUsage", "app.usage.get_storage_usage.app_error", nil, err.Error(), http.StatusInternalServerError) return 0, model.NewAppError("GetStorageUsage", "app.usage.get_storage_usage.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return usage, nil return usage, nil
} }
@@ -66,7 +66,7 @@ func (a *App) GetTeamsUsage() (*model.TeamsUsage, *model.AppError) {
includeDeleted := false includeDeleted := false
teamCount, err := a.Srv().Store.Team().AnalyticsTeamCount(&model.TeamSearch{IncludeDeleted: &includeDeleted}) teamCount, err := a.Srv().Store.Team().AnalyticsTeamCount(&model.TeamSearch{IncludeDeleted: &includeDeleted})
if err != nil { if err != nil {
return nil, model.NewAppError("GetTeamsUsage", "app.post.analytics_teams_count.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTeamsUsage", "app.post.analytics_teams_count.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
usage.Active = teamCount usage.Active = teamCount

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

@@ -64,15 +64,15 @@ func (a *App) CreateUserWithToken(c request.CTX, user *model.User, token *model.
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return nil, model.NewAppError("CreateUserWithToken", "app.team.get.find.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("CreateUserWithToken", "app.team.get.find.app_error", nil, "", http.StatusNotFound).Wrap(nErr)
default: default:
return nil, model.NewAppError("CreateUserWithToken", "app.team.get.finding.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateUserWithToken", "app.team.get.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
channels, nErr := a.Srv().Store.Channel().GetChannelsByIds(strings.Split(tokenData["channels"], " "), false) channels, nErr := a.Srv().Store.Channel().GetChannelsByIds(strings.Split(tokenData["channels"], " "), false)
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("CreateUserWithToken", "app.channel.get_channels_by_ids.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateUserWithToken", "app.channel.get_channels_by_ids.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
emailFromToken := tokenData["email"] emailFromToken := tokenData["email"]
@@ -126,9 +126,9 @@ func (a *App) CreateUserWithInviteId(c request.CTX, user *model.User, inviteId,
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return nil, model.NewAppError("CreateUserWithInviteId", "app.team.get_by_invite_id.finding.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("CreateUserWithInviteId", "app.team.get_by_invite_id.finding.app_error", nil, "", http.StatusNotFound).Wrap(nErr)
default: default:
return nil, model.NewAppError("CreateUserWithInviteId", "app.team.get_by_invite_id.finding.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateUserWithInviteId", "app.team.get_by_invite_id.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -236,22 +236,22 @@ func (a *App) createUserOrGuest(c request.CTX, user *model.User, guest bool) (*m
case errors.As(nErr, &appErr): case errors.As(nErr, &appErr):
return nil, appErr return nil, appErr
case errors.Is(nErr, users.AcceptedDomainError): case errors.Is(nErr, users.AcceptedDomainError):
return nil, model.NewAppError("createUserOrGuest", "api.user.create_user.accepted_domain.app_error", nil, "", http.StatusBadRequest) return nil, model.NewAppError("createUserOrGuest", "api.user.create_user.accepted_domain.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return nil, model.NewAppError("createUserOrGuest", "api.user.check_user_password.invalid.app_error", nil, "", http.StatusBadRequest) return nil, model.NewAppError("createUserOrGuest", "api.user.check_user_password.invalid.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
case errors.Is(nErr, users.UserStoreIsEmptyError): case errors.Is(nErr, users.UserStoreIsEmptyError):
return nil, model.NewAppError("createUserOrGuest", "app.user.store_is_empty.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("createUserOrGuest", "app.user.store_is_empty.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
case errors.As(nErr, &invErr): case errors.As(nErr, &invErr):
switch invErr.Field { switch invErr.Field {
case "email": case "email":
return nil, model.NewAppError("createUserOrGuest", "app.user.save.email_exists.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("createUserOrGuest", "app.user.save.email_exists.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
case "username": case "username":
return nil, model.NewAppError("createUserOrGuest", "app.user.save.username_exists.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("createUserOrGuest", "app.user.save.username_exists.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
default: default:
return nil, model.NewAppError("createUserOrGuest", "app.user.save.existing.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("createUserOrGuest", "app.user.save.existing.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
} }
default: default:
return nil, model.NewAppError("createUserOrGuest", "app.user.save.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("createUserOrGuest", "app.user.save.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -263,9 +263,9 @@ func (a *App) createUserOrGuest(c request.CTX, user *model.User, guest bool) (*m
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("createUserOrGuest", MissingAccountError, nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("createUserOrGuest", MissingAccountError, nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("createUserOrGuest", "app.user.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("createUserOrGuest", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -319,7 +319,7 @@ func (a *App) CreateOAuthUser(c *request.Context, service string, userData io.Re
} }
user, err1 := provider.GetUserFromJSON(userData, tokenUser) user, err1 := provider.GetUserFromJSON(userData, tokenUser)
if err1 != nil { if err1 != nil {
return nil, model.NewAppError("CreateOAuthUser", "api.user.create_oauth_user.create.app_error", map[string]any{"Service": service}, err1.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateOAuthUser", "api.user.create_oauth_user.create.app_error", map[string]any{"Service": service}, "", http.StatusInternalServerError).Wrap(err1)
} }
if user.AuthService == "" { if user.AuthService == "" {
user.AuthService = service user.AuthService = service
@@ -382,9 +382,9 @@ func (a *App) GetUser(userID string) (*model.User, *model.AppError) {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetUser", MissingAccountError, nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetUser", MissingAccountError, nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetUser", "app.user.get_by_username.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUser", "app.user.get_by_username.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -394,7 +394,7 @@ func (a *App) GetUser(userID string) (*model.User, *model.AppError) {
func (a *App) GetUsers(userIDs []string) ([]*model.User, *model.AppError) { func (a *App) GetUsers(userIDs []string) ([]*model.User, *model.AppError) {
users, err := a.ch.srv.userService.GetUsers(userIDs) users, err := a.ch.srv.userService.GetUsers(userIDs)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUsers", "app.user.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUsers", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return users, nil return users, nil
@@ -406,9 +406,9 @@ func (a *App) GetUserByUsername(username string) (*model.User, *model.AppError)
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetUserByUsername", "app.user.get_by_username.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetUserByUsername", "app.user.get_by_username.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetUserByUsername", "app.user.get_by_username.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUserByUsername", "app.user.get_by_username.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return result, nil return result, nil
@@ -420,9 +420,9 @@ func (a *App) GetUserByEmail(email string) (*model.User, *model.AppError) {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetUserByEmail", MissingAccountError, nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetUserByEmail", MissingAccountError, nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetUserByEmail", MissingAccountError, nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUserByEmail", MissingAccountError, nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
return user, nil return user, nil
@@ -435,11 +435,11 @@ func (a *App) GetUserByAuth(authData *string, authService string) (*model.User,
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("GetUserByAuth", MissingAuthAccountError, nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetUserByAuth", MissingAuthAccountError, nil, "", http.StatusBadRequest).Wrap(err)
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetUserByAuth", MissingAuthAccountError, nil, nfErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUserByAuth", MissingAuthAccountError, nil, "", http.StatusInternalServerError).Wrap(err)
default: default:
return nil, model.NewAppError("GetUserByAuth", "app.user.get_by_auth.other.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUserByAuth", "app.user.get_by_auth.other.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -449,7 +449,7 @@ func (a *App) GetUserByAuth(authData *string, authService string) (*model.User,
func (a *App) GetUsersFromProfiles(options *model.UserGetOptions) ([]*model.User, *model.AppError) { func (a *App) GetUsersFromProfiles(options *model.UserGetOptions) ([]*model.User, *model.AppError) {
users, err := a.ch.srv.userService.GetUsersFromProfiles(options) users, err := a.ch.srv.userService.GetUsersFromProfiles(options)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUsers", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUsers", "app.user.get_profiles.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return users, nil return users, nil
@@ -458,7 +458,7 @@ func (a *App) GetUsersFromProfiles(options *model.UserGetOptions) ([]*model.User
func (a *App) GetUsersPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError) { func (a *App) GetUsersPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError) {
users, err := a.ch.srv.userService.GetUsersPage(options, asAdmin) users, err := a.ch.srv.userService.GetUsersPage(options, asAdmin)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUsersPage", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUsersPage", "app.user.get_profiles.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return users, nil return users, nil
@@ -471,7 +471,7 @@ func (a *App) GetUsersEtag(restrictionsHash string) string {
func (a *App) GetUsersInTeam(options *model.UserGetOptions) ([]*model.User, *model.AppError) { func (a *App) GetUsersInTeam(options *model.UserGetOptions) ([]*model.User, *model.AppError) {
users, err := a.ch.srv.userService.GetUsersInTeam(options) users, err := a.ch.srv.userService.GetUsersInTeam(options)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUsersInTeam", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUsersInTeam", "app.user.get_profiles.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return users, nil return users, nil
@@ -480,7 +480,7 @@ func (a *App) GetUsersInTeam(options *model.UserGetOptions) ([]*model.User, *mod
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.ch.srv.userService.GetUsersNotInTeam(teamID, groupConstrained, offset, limit, viewRestrictions) users, err := a.ch.srv.userService.GetUsersNotInTeam(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, "", http.StatusInternalServerError).Wrap(err)
} }
return users, nil return users, nil
@@ -489,7 +489,7 @@ func (a *App) GetUsersNotInTeam(teamID string, groupConstrained bool, offset int
func (a *App) GetUsersInTeamPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError) { func (a *App) GetUsersInTeamPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError) {
users, err := a.ch.srv.userService.GetUsersInTeamPage(options, asAdmin) users, err := a.ch.srv.userService.GetUsersInTeamPage(options, asAdmin)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUsersInTeamPage", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUsersInTeamPage", "app.user.get_profiles.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return a.sanitizeProfiles(users, asAdmin), nil return a.sanitizeProfiles(users, asAdmin), nil
@@ -498,7 +498,7 @@ func (a *App) GetUsersInTeamPage(options *model.UserGetOptions, asAdmin bool) ([
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.ch.srv.userService.GetUsersNotInTeamPage(teamID, groupConstrained, page*perPage, perPage, asAdmin, viewRestrictions) users, err := a.ch.srv.userService.GetUsersNotInTeamPage(teamID, groupConstrained, page*perPage, perPage, asAdmin, viewRestrictions)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUsersNotInTeamPage", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUsersNotInTeamPage", "app.user.get_profiles.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return a.sanitizeProfiles(users, asAdmin), nil return a.sanitizeProfiles(users, asAdmin), nil
@@ -515,7 +515,7 @@ func (a *App) GetUsersNotInTeamEtag(teamID string, restrictionsHash string) stri
func (a *App) GetUsersInChannel(options *model.UserGetOptions) ([]*model.User, *model.AppError) { func (a *App) GetUsersInChannel(options *model.UserGetOptions) ([]*model.User, *model.AppError) {
users, err := a.Srv().Store.User().GetProfilesInChannel(options) users, err := a.Srv().Store.User().GetProfilesInChannel(options)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUsersInChannel", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUsersInChannel", "app.user.get_profiles.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return users, nil return users, nil
@@ -524,7 +524,7 @@ func (a *App) GetUsersInChannel(options *model.UserGetOptions) ([]*model.User, *
func (a *App) GetUsersInChannelByStatus(options *model.UserGetOptions) ([]*model.User, *model.AppError) { func (a *App) GetUsersInChannelByStatus(options *model.UserGetOptions) ([]*model.User, *model.AppError) {
users, err := a.Srv().Store.User().GetProfilesInChannelByStatus(options) users, err := a.Srv().Store.User().GetProfilesInChannelByStatus(options)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUsersInChannelByStatus", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUsersInChannelByStatus", "app.user.get_profiles.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return users, nil return users, nil
@@ -533,7 +533,7 @@ func (a *App) GetUsersInChannelByStatus(options *model.UserGetOptions) ([]*model
func (a *App) GetUsersInChannelByAdmin(options *model.UserGetOptions) ([]*model.User, *model.AppError) { func (a *App) GetUsersInChannelByAdmin(options *model.UserGetOptions) ([]*model.User, *model.AppError) {
users, err := a.Srv().Store.User().GetProfilesInChannelByAdmin(options) users, err := a.Srv().Store.User().GetProfilesInChannelByAdmin(options)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUsersInChannelByAdmin", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUsersInChannelByAdmin", "app.user.get_profiles.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return users, nil return users, nil
@@ -582,7 +582,7 @@ func (a *App) GetUsersInChannelPageByAdmin(options *model.UserGetOptions, asAdmi
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, "", http.StatusInternalServerError).Wrap(err)
} }
return users, nil return users, nil
@@ -616,7 +616,7 @@ func (a *App) GetUsersNotInChannelPage(teamID string, channelID string, groupCon
func (a *App) GetUsersWithoutTeamPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError) { func (a *App) GetUsersWithoutTeamPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError) {
users, err := a.ch.srv.userService.GetUsersWithoutTeamPage(options, asAdmin) users, err := a.ch.srv.userService.GetUsersWithoutTeamPage(options, asAdmin)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUsersWithoutTeamPage", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUsersWithoutTeamPage", "app.user.get_profiles.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return a.sanitizeProfiles(users, asAdmin), nil return a.sanitizeProfiles(users, asAdmin), nil
@@ -625,7 +625,7 @@ func (a *App) GetUsersWithoutTeamPage(options *model.UserGetOptions, asAdmin boo
func (a *App) GetUsersWithoutTeam(options *model.UserGetOptions) ([]*model.User, *model.AppError) { func (a *App) GetUsersWithoutTeam(options *model.UserGetOptions) ([]*model.User, *model.AppError) {
users, err := a.ch.srv.userService.GetUsersWithoutTeam(options) users, err := a.ch.srv.userService.GetUsersWithoutTeam(options)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUsersWithoutTeam", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUsersWithoutTeam", "app.user.get_profiles.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return users, nil return users, nil
@@ -635,7 +635,7 @@ func (a *App) GetUsersWithoutTeam(options *model.UserGetOptions) ([]*model.User,
func (a *App) GetTeamGroupUsers(teamID string) ([]*model.User, *model.AppError) { func (a *App) GetTeamGroupUsers(teamID string) ([]*model.User, *model.AppError) {
users, err := a.Srv().Store.User().GetTeamGroupUsers(teamID) users, err := a.Srv().Store.User().GetTeamGroupUsers(teamID)
if err != nil { if err != nil {
return nil, model.NewAppError("GetTeamGroupUsers", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTeamGroupUsers", "app.user.get_profiles.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return users, nil return users, nil
@@ -645,7 +645,7 @@ func (a *App) GetTeamGroupUsers(teamID string) ([]*model.User, *model.AppError)
func (a *App) GetChannelGroupUsers(channelID string) ([]*model.User, *model.AppError) { func (a *App) GetChannelGroupUsers(channelID string) ([]*model.User, *model.AppError) {
users, err := a.Srv().Store.User().GetChannelGroupUsers(channelID) users, err := a.Srv().Store.User().GetChannelGroupUsers(channelID)
if err != nil { if err != nil {
return nil, model.NewAppError("GetChannelGroupUsers", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetChannelGroupUsers", "app.user.get_profiles.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return users, nil return users, nil
@@ -654,7 +654,7 @@ func (a *App) GetChannelGroupUsers(channelID string) ([]*model.User, *model.AppE
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) {
users, err := a.ch.srv.userService.GetUsersByIds(userIDs, options) users, err := a.ch.srv.userService.GetUsersByIds(userIDs, options)
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, "", http.StatusInternalServerError).Wrap(err)
} }
return users, nil return users, nil
@@ -663,7 +663,7 @@ func (a *App) GetUsersByIds(userIDs []string, options *store.UserGetByIdsOpts) (
func (a *App) GetUsersByGroupChannelIds(c *request.Context, channelIDs []string, asAdmin bool) (map[string][]*model.User, *model.AppError) { func (a *App) GetUsersByGroupChannelIds(c *request.Context, channelIDs []string, asAdmin bool) (map[string][]*model.User, *model.AppError) {
usersByChannelId, err := a.Srv().Store.User().GetProfileByGroupChannelIdsForUser(c.Session().UserId, channelIDs) usersByChannelId, err := a.Srv().Store.User().GetProfileByGroupChannelIdsForUser(c.Session().UserId, channelIDs)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUsersByGroupChannelIds", "app.user.get_profile_by_group_channel_ids_for_user.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUsersByGroupChannelIds", "app.user.get_profile_by_group_channel_ids_for_user.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for channelID, userList := range usersByChannelId { for channelID, userList := range usersByChannelId {
usersByChannelId[channelID] = a.sanitizeProfiles(userList, asAdmin) usersByChannelId[channelID] = a.sanitizeProfiles(userList, asAdmin)
@@ -675,7 +675,7 @@ func (a *App) GetUsersByGroupChannelIds(c *request.Context, channelIDs []string,
func (a *App) GetUsersByUsernames(usernames []string, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError) { func (a *App) GetUsersByUsernames(usernames []string, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError) {
users, err := a.ch.srv.userService.GetUsersByUsernames(usernames, &model.UserGetOptions{ViewRestrictions: viewRestrictions}) users, err := a.ch.srv.userService.GetUsersByUsernames(usernames, &model.UserGetOptions{ViewRestrictions: viewRestrictions})
if err != nil { if err != nil {
return nil, model.NewAppError("GetUsersByUsernames", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUsersByUsernames", "app.user.get_profiles.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return a.sanitizeProfiles(users, asAdmin), nil return a.sanitizeProfiles(users, asAdmin), nil
} }
@@ -700,7 +700,7 @@ func (a *App) GenerateMfaSecret(userID string) (*model.MfaSecret, *model.AppErro
mfaSecret, err := a.ch.srv.userService.GenerateMfaSecret(user) mfaSecret, err := a.ch.srv.userService.GenerateMfaSecret(user)
if err != nil { if err != nil {
return nil, model.NewAppError("GenerateMfaSecret", "mfa.generate_qr_code.create_code.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GenerateMfaSecret", "mfa.generate_qr_code.create_code.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return mfaSecret, nil return mfaSecret, nil
@@ -725,7 +725,7 @@ func (a *App) ActivateMfa(userID, token string) *model.AppError {
case errors.Is(err, mfa.InvalidToken): case errors.Is(err, mfa.InvalidToken):
return model.NewAppError("ActivateMfa", "mfa.activate.bad_token.app_error", nil, "", http.StatusUnauthorized) return model.NewAppError("ActivateMfa", "mfa.activate.bad_token.app_error", nil, "", http.StatusUnauthorized)
default: default:
return model.NewAppError("ActivateMfa", "mfa.activate.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("ActivateMfa", "mfa.activate.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -742,7 +742,7 @@ func (a *App) DeactivateMfa(userID string) *model.AppError {
} }
if err := a.ch.srv.userService.DeactivateMfa(user); err != nil { if err := a.ch.srv.userService.DeactivateMfa(user); err != nil {
return model.NewAppError("DeactivateMfa", "mfa.deactivate.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DeactivateMfa", "mfa.deactivate.app_error", nil, "", http.StatusInternalServerError).Wrap(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.
@@ -795,7 +795,7 @@ func (a *App) SetDefaultProfileImage(c request.CTX, user *model.User) *model.App
func (a *App) SetProfileImage(c request.CTX, userID string, imageData *multipart.FileHeader) *model.AppError { func (a *App) SetProfileImage(c request.CTX, 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, "", http.StatusBadRequest).Wrap(err)
} }
defer file.Close() defer file.Close()
return a.SetProfileImageFromMultiPartFile(c, userID, file) return a.SetProfileImageFromMultiPartFile(c, userID, file)
@@ -813,7 +813,7 @@ func (a *App) AdjustImage(file io.Reader) (*bytes.Buffer, *model.AppError) {
// Decode image into Image object // Decode image into Image object
img, _, err := a.ch.imgDecoder.Decode(file) img, _, err := a.ch.imgDecoder.Decode(file)
if err != nil { if err != nil {
return nil, model.NewAppError("SetProfileImage", "api.user.upload_profile_user.decode.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("SetProfileImage", "api.user.upload_profile_user.decode.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
orientation, _ := imaging.GetImageOrientation(file) orientation, _ := imaging.GetImageOrientation(file)
@@ -826,7 +826,7 @@ func (a *App) AdjustImage(file io.Reader) (*bytes.Buffer, *model.AppError) {
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
err = a.ch.imgEncoder.EncodePNG(buf, img) err = a.ch.imgEncoder.EncodePNG(buf, img)
if err != nil { if err != nil {
return nil, model.NewAppError("SetProfileImage", "api.user.upload_profile_user.encode.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SetProfileImage", "api.user.upload_profile_user.encode.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return buf, nil return buf, nil
} }
@@ -843,7 +843,7 @@ func (a *App) SetProfileImageFromFile(c request.CTX, userID string, file io.Read
} }
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, err.Error(), http.StatusInternalServerError) return model.NewAppError("SetProfileImage", "api.user.upload_profile_user.upload_profile.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.Srv().Store.User().UpdateLastPictureUpdate(userID); err != nil { if err := a.Srv().Store.User().UpdateLastPictureUpdate(userID); err != nil {
@@ -862,13 +862,11 @@ func (a *App) UpdatePasswordAsUser(c request.CTX, userID, currentPassword, newPa
} }
if user == nil { if user == nil {
err = model.NewAppError("updatePassword", "api.user.update_password.valid_account.app_error", nil, "", http.StatusBadRequest) return model.NewAppError("updatePassword", "api.user.update_password.valid_account.app_error", nil, "", http.StatusBadRequest)
return err
} }
if user.AuthData != nil && *user.AuthData != "" { if user.AuthData != nil && *user.AuthData != "" {
err = model.NewAppError("updatePassword", "api.user.update_password.oauth.app_error", nil, "auth_service="+user.AuthService, http.StatusBadRequest) return model.NewAppError("updatePassword", "api.user.update_password.oauth.app_error", nil, "auth_service="+user.AuthService, http.StatusBadRequest)
return err
} }
if err := a.DoubleCheckPassword(user, currentPassword); err != nil { if err := a.DoubleCheckPassword(user, currentPassword); err != nil {
@@ -944,9 +942,9 @@ func (a *App) UpdateActive(c request.CTX, user *model.User, active bool) (*model
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("UpdateActive", "app.user.update.find.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("UpdateActive", "app.user.update.find.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("UpdateActive", "app.user.update.finding.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateActive", "app.user.update.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
ruser := userUpdate.New ruser := userUpdate.New
@@ -971,7 +969,7 @@ func (a *App) UpdateActive(c request.CTX, user *model.User, active bool) (*model
func (a *App) DeactivateGuests(c *request.Context) *model.AppError { func (a *App) DeactivateGuests(c *request.Context) *model.AppError {
userIDs, err := a.ch.srv.userService.DeactivateAllGuests() userIDs, err := a.ch.srv.userService.DeactivateAllGuests()
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, "", http.StatusInternalServerError).Wrap(err)
} }
for _, userID := range userIDs { for _, userID := range userIDs {
@@ -1061,9 +1059,9 @@ func (a *App) UpdateUserAuth(userID string, userAuth *model.UserAuth) (*model.Us
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("UpdateUserAuth", "app.user.update_auth_data.email_exists.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("UpdateUserAuth", "app.user.update_auth_data.email_exists.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("UpdateUserAuth", "app.user.update_auth_data.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateUserAuth", "app.user.update_auth_data.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -1104,7 +1102,7 @@ func (a *App) isUniqueToGroupNames(val string) *model.AppError {
var notFoundErr *store.ErrNotFound var notFoundErr *store.ErrNotFound
group, err := a.Srv().Store.Group().GetByName(val, model.GroupSearchOpts{}) group, err := a.Srv().Store.Group().GetByName(val, model.GroupSearchOpts{})
if err != nil && !errors.As(err, &notFoundErr) { if err != nil && !errors.As(err, &notFoundErr) {
return model.NewAppError("", "app.user.get_by_name_failure", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("", "app.user.get_by_name_failure", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if group != nil { if group != nil {
return model.NewAppError("", "app.user.group_name_conflict", nil, "", http.StatusBadRequest) return model.NewAppError("", "app.user.group_name_conflict", nil, "", http.StatusBadRequest)
@@ -1118,9 +1116,9 @@ func (a *App) UpdateUser(c request.CTX, user *model.User, sendNotifications bool
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("UpdateUser", MissingAccountError, nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("UpdateUser", MissingAccountError, nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("UpdateUser", "app.user.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateUser", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -1176,14 +1174,14 @@ func (a *App) UpdateUser(c request.CTX, user *model.User, sendNotifications bool
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("UpdateUser", "app.user.update.find.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("UpdateUser", "app.user.update.find.app_error", nil, "", http.StatusBadRequest).Wrap(err)
case errors.As(err, &conErr): case errors.As(err, &conErr):
if cErr, ok := err.(*store.ErrConflict); ok && cErr.Resource == "Username" { if conErr.Resource == "Username" {
return nil, model.NewAppError("UpdateUser", "app.user.save.username_exists.app_error", nil, "", http.StatusBadRequest) return nil, model.NewAppError("UpdateUser", "app.user.save.username_exists.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
return nil, model.NewAppError("UpdateUser", "app.user.save.email_exists.app_error", nil, "", http.StatusBadRequest) return nil, model.NewAppError("UpdateUser", "app.user.save.email_exists.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("UpdateUser", "app.user.update.finding.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateUser", "app.user.update.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -1294,7 +1292,7 @@ func (a *App) UpdatePassword(user *model.User, newPassword string) *model.AppErr
hashedPassword := model.HashPassword(newPassword) hashedPassword := model.HashPassword(newPassword)
if err := a.Srv().Store.User().UpdatePassword(user.Id, hashedPassword); err != nil { if err := a.Srv().Store.User().UpdatePassword(user.Id, hashedPassword); err != nil {
return model.NewAppError("UpdatePassword", "api.user.update_password.failed.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("UpdatePassword", "api.user.update_password.failed.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
a.InvalidateCacheForUser(user.Id) a.InvalidateCacheForUser(user.Id)
@@ -1327,7 +1325,7 @@ func (a *App) UpdateHashedPasswordByUserId(userID, newHashedPassword string) *mo
func (a *App) UpdateHashedPassword(user *model.User, newHashedPassword string) *model.AppError { func (a *App) UpdateHashedPassword(user *model.User, newHashedPassword string) *model.AppError {
if err := a.Srv().Store.User().UpdatePassword(user.Id, newHashedPassword); err != nil { if err := a.Srv().Store.User().UpdatePassword(user.Id, newHashedPassword); err != nil {
return model.NewAppError("UpdatePassword", "api.user.update_password.failed.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("UpdatePassword", "api.user.update_password.failed.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
a.InvalidateCacheForUser(user.Id) a.InvalidateCacheForUser(user.Id)
@@ -1428,7 +1426,7 @@ func (a *App) CreatePasswordRecoveryToken(userID, email string) (*model.Token, *
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("CreatePasswordRecoveryToken", "app.recover.save.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreatePasswordRecoveryToken", "app.recover.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -1438,7 +1436,7 @@ func (a *App) CreatePasswordRecoveryToken(userID, email string) (*model.Token, *
func (a *App) GetPasswordRecoveryToken(token string) (*model.Token, *model.AppError) { func (a *App) GetPasswordRecoveryToken(token string) (*model.Token, *model.AppError) {
rtoken, err := a.Srv().Store.Token().GetByToken(token) rtoken, err := a.Srv().Store.Token().GetByToken(token)
if err != nil { if err != nil {
return nil, model.NewAppError("GetPasswordRecoveryToken", "api.user.reset_password.invalid_link.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetPasswordRecoveryToken", "api.user.reset_password.invalid_link.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
if rtoken.Type != TokenTypePasswordRecovery { if rtoken.Type != TokenTypePasswordRecovery {
return nil, model.NewAppError("GetPasswordRecoveryToken", "api.user.reset_password.broken_token.app_error", nil, "", http.StatusBadRequest) return nil, model.NewAppError("GetPasswordRecoveryToken", "api.user.reset_password.broken_token.app_error", nil, "", http.StatusBadRequest)
@@ -1459,7 +1457,7 @@ func (a *App) GetTokenById(token string) (*model.Token, *model.AppError) {
status = http.StatusInternalServerError status = http.StatusInternalServerError
} }
return nil, model.NewAppError("GetTokenById", "api.user.create_user.signup_link_invalid.app_error", nil, err.Error(), status) return nil, model.NewAppError("GetTokenById", "api.user.create_user.signup_link_invalid.app_error", nil, "", status).Wrap(err)
} }
return rtoken, nil return rtoken, nil
@@ -1468,7 +1466,7 @@ func (a *App) GetTokenById(token string) (*model.Token, *model.AppError) {
func (a *App) DeleteToken(token *model.Token) *model.AppError { func (a *App) DeleteToken(token *model.Token) *model.AppError {
err := a.Srv().Store.Token().Delete(token.Token) err := a.Srv().Store.Token().Delete(token.Token)
if err != nil { if err != nil {
return model.NewAppError("DeleteToken", "app.recover.delete.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DeleteToken", "app.recover.delete.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
} }
@@ -1512,9 +1510,9 @@ func (a *App) UpdateUserRolesWithUser(c request.CTX, user *model.User, newRoles
case errors.As(result.NErr, &appErr): case errors.As(result.NErr, &appErr):
return nil, appErr return nil, appErr
case errors.As(result.NErr, &invErr): case errors.As(result.NErr, &invErr):
return nil, model.NewAppError("UpdateUserRoles", "app.user.update.find.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("UpdateUserRoles", "app.user.update.find.app_error", nil, "", http.StatusBadRequest).Wrap(result.NErr)
default: default:
return nil, model.NewAppError("UpdateUserRoles", "app.user.update.finding.app_error", nil, result.NErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateUserRoles", "app.user.update.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(result.NErr)
} }
} }
ruser := result.Data.(*model.UserUpdate).New ruser := result.Data.(*model.UserUpdate).New
@@ -1548,52 +1546,52 @@ func (a *App) PermanentDeleteUser(c *request.Context, user *model.User) *model.A
} }
if err := a.Srv().Store.Session().PermanentDeleteSessionsByUser(user.Id); err != nil { if err := a.Srv().Store.Session().PermanentDeleteSessionsByUser(user.Id); err != nil {
return model.NewAppError("PermanentDeleteUser", "app.session.permanent_delete_sessions_by_user.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteUser", "app.session.permanent_delete_sessions_by_user.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.Srv().Store.UserAccessToken().DeleteAllForUser(user.Id); err != nil { if err := a.Srv().Store.UserAccessToken().DeleteAllForUser(user.Id); err != nil {
return model.NewAppError("PermanentDeleteUser", "app.user_access_token.delete.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteUser", "app.user_access_token.delete.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.Srv().Store.OAuth().PermanentDeleteAuthDataByUser(user.Id); err != nil { if err := a.Srv().Store.OAuth().PermanentDeleteAuthDataByUser(user.Id); err != nil {
return model.NewAppError("PermanentDeleteUser", "app.oauth.permanent_delete_auth_data_by_user.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteUser", "app.oauth.permanent_delete_auth_data_by_user.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.Srv().Store.Webhook().PermanentDeleteIncomingByUser(user.Id); err != nil { if err := a.Srv().Store.Webhook().PermanentDeleteIncomingByUser(user.Id); err != nil {
return model.NewAppError("PermanentDeleteUser", "app.webhooks.permanent_delete_incoming_by_user.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteUser", "app.webhooks.permanent_delete_incoming_by_user.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.Srv().Store.Webhook().PermanentDeleteOutgoingByUser(user.Id); err != nil { if err := a.Srv().Store.Webhook().PermanentDeleteOutgoingByUser(user.Id); err != nil {
return model.NewAppError("PermanentDeleteUser", "app.webhooks.permanent_delete_outgoing_by_user.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteUser", "app.webhooks.permanent_delete_outgoing_by_user.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.Srv().Store.Command().PermanentDeleteByUser(user.Id); err != nil { if err := a.Srv().Store.Command().PermanentDeleteByUser(user.Id); err != nil {
return model.NewAppError("PermanentDeleteUser", "app.user.permanentdeleteuser.internal_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteUser", "app.user.permanentdeleteuser.internal_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.Srv().Store.Preference().PermanentDeleteByUser(user.Id); err != nil { if err := a.Srv().Store.Preference().PermanentDeleteByUser(user.Id); err != nil {
return model.NewAppError("PermanentDeleteUser", "app.preference.permanent_delete_by_user.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteUser", "app.preference.permanent_delete_by_user.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.Srv().Store.Channel().PermanentDeleteMembersByUser(user.Id); err != nil { if err := a.Srv().Store.Channel().PermanentDeleteMembersByUser(user.Id); err != nil {
return model.NewAppError("PermanentDeleteUser", "app.channel.permanent_delete_members_by_user.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteUser", "app.channel.permanent_delete_members_by_user.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.Srv().Store.Group().PermanentDeleteMembersByUser(user.Id); err != nil { if err := a.Srv().Store.Group().PermanentDeleteMembersByUser(user.Id); err != nil {
return model.NewAppError("PermanentDeleteUser", "app.group.permanent_delete_members_by_user.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteUser", "app.group.permanent_delete_members_by_user.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.Srv().Store.Post().PermanentDeleteByUser(user.Id); err != nil { if err := a.Srv().Store.Post().PermanentDeleteByUser(user.Id); err != nil {
return model.NewAppError("PermanentDeleteUser", "app.post.permanent_delete_by_user.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteUser", "app.post.permanent_delete_by_user.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.Srv().Store.Bot().PermanentDelete(user.Id); err != nil { if err := a.Srv().Store.Bot().PermanentDelete(user.Id); err != nil {
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return model.NewAppError("PermanentDeleteUser", "app.bot.permenent_delete.bad_id", map[string]any{"user_id": invErr.Value}, invErr.Error(), http.StatusBadRequest) return model.NewAppError("PermanentDeleteUser", "app.bot.permenent_delete.bad_id", map[string]any{"user_id": invErr.Value}, "", http.StatusBadRequest).Wrap(err)
default: // last fallback in case it doesn't map to an existing app error. default: // last fallback in case it doesn't map to an existing app error.
return model.NewAppError("PermanentDeleteUser", "app.bot.permanent_delete.internal_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteUser", "app.bot.permanent_delete.internal_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -1630,19 +1628,19 @@ func (a *App) PermanentDeleteUser(c *request.Context, user *model.User) *model.A
} }
if _, err := a.Srv().Store.FileInfo().PermanentDeleteByUser(user.Id); err != nil { if _, err := a.Srv().Store.FileInfo().PermanentDeleteByUser(user.Id); err != nil {
return model.NewAppError("PermanentDeleteUser", "app.file_info.permanent_delete_by_user.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteUser", "app.file_info.permanent_delete_by_user.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.Srv().Store.User().PermanentDelete(user.Id); err != nil { if err := a.Srv().Store.User().PermanentDelete(user.Id); err != nil {
return model.NewAppError("PermanentDeleteUser", "app.user.permanent_delete.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteUser", "app.user.permanent_delete.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.Srv().Store.Audit().PermanentDeleteByUser(user.Id); err != nil { if err := a.Srv().Store.Audit().PermanentDeleteByUser(user.Id); err != nil {
return model.NewAppError("PermanentDeleteUser", "app.audit.permanent_delete_by_user.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteUser", "app.audit.permanent_delete_by_user.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if err := a.Srv().Store.Team().RemoveAllMembersByUser(user.Id); err != nil { if err := a.Srv().Store.Team().RemoveAllMembersByUser(user.Id); err != nil {
return model.NewAppError("PermanentDeleteUser", "app.team.remove_member.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteUser", "app.team.remove_member.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
c.Logger().Warn("Permanently deleted account", mlog.String("user_email", user.Email), mlog.String("user_id", user.Id)) c.Logger().Warn("Permanently deleted account", mlog.String("user_email", user.Email), mlog.String("user_id", user.Id))
@@ -1653,7 +1651,7 @@ func (a *App) PermanentDeleteUser(c *request.Context, user *model.User) *model.A
func (a *App) PermanentDeleteAllUsers(c *request.Context) *model.AppError { func (a *App) PermanentDeleteAllUsers(c *request.Context) *model.AppError {
users, err := a.Srv().Store.User().GetAll() users, err := a.Srv().Store.User().GetAll()
if err != nil { if err != nil {
return model.NewAppError("PermanentDeleteAllUsers", "app.user.get.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("PermanentDeleteAllUsers", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, user := range users { for _, user := range users {
a.PermanentDeleteUser(c, user) a.PermanentDeleteUser(c, user)
@@ -1669,7 +1667,7 @@ func (a *App) SendEmailVerification(user *model.User, newEmail, redirect string)
case errors.Is(err, email.CreateEmailTokenError): case errors.Is(err, email.CreateEmailTokenError):
return model.NewAppError("CreateVerifyEmailToken", "api.user.create_email_token.error", nil, "", http.StatusInternalServerError) return model.NewAppError("CreateVerifyEmailToken", "api.user.create_email_token.error", nil, "", http.StatusInternalServerError)
default: default:
return model.NewAppError("CreateVerifyEmailToken", "app.recover.save.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("CreateVerifyEmailToken", "app.recover.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -1679,14 +1677,14 @@ func (a *App) SendEmailVerification(user *model.User, newEmail, redirect string)
} }
eErr := a.Srv().EmailService.SendVerifyEmail(newEmail, user.Locale, a.GetSiteURL(), token.Token, redirect) eErr := a.Srv().EmailService.SendVerifyEmail(newEmail, user.Locale, a.GetSiteURL(), token.Token, redirect)
if eErr != nil { if eErr != nil {
return model.NewAppError("SendVerifyEmail", "api.user.send_verify_email_and_forget.failed.error", nil, eErr.Error(), http.StatusInternalServerError) return model.NewAppError("SendVerifyEmail", "api.user.send_verify_email_and_forget.failed.error", nil, "", http.StatusInternalServerError).Wrap(eErr)
} }
return nil return nil
} }
if err := a.Srv().EmailService.SendEmailChangeVerifyEmail(newEmail, user.Locale, a.GetSiteURL(), token.Token); err != nil { if err := a.Srv().EmailService.SendEmailChangeVerifyEmail(newEmail, user.Locale, a.GetSiteURL(), token.Token); err != nil {
return model.NewAppError("sendEmailChangeVerifyEmail", "api.user.send_email_change_verify_email_and_forget.error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("sendEmailChangeVerifyEmail", "api.user.send_email_change_verify_email_and_forget.error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
@@ -1739,7 +1737,7 @@ func (a *App) VerifyEmailFromToken(c request.CTX, userSuppliedTokenString string
func (a *App) GetVerifyEmailToken(token string) (*model.Token, *model.AppError) { func (a *App) GetVerifyEmailToken(token string) (*model.Token, *model.AppError) {
rtoken, err := a.Srv().Store.Token().GetByToken(token) rtoken, err := a.Srv().Store.Token().GetByToken(token)
if err != nil { if err != nil {
return nil, model.NewAppError("GetVerifyEmailToken", "api.user.verify_email.bad_link.app_error", nil, err.Error(), http.StatusBadRequest) return nil, model.NewAppError("GetVerifyEmailToken", "api.user.verify_email.bad_link.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
if rtoken.Type != TokenTypeVerifyEmail { if rtoken.Type != TokenTypeVerifyEmail {
return nil, model.NewAppError("GetVerifyEmailToken", "api.user.verify_email.broken_token.app_error", nil, "", http.StatusBadRequest) return nil, model.NewAppError("GetVerifyEmailToken", "api.user.verify_email.broken_token.app_error", nil, "", http.StatusBadRequest)
@@ -1754,7 +1752,7 @@ func (a *App) GetTotalUsersStats(viewRestrictions *model.ViewUsersRestrictions)
ViewRestrictions: viewRestrictions, ViewRestrictions: viewRestrictions,
}) })
if err != nil { if err != nil {
return nil, model.NewAppError("GetTotalUsersStats", "app.user.get_total_users_count.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetTotalUsersStats", "app.user.get_total_users_count.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
stats := &model.UsersStats{ stats := &model.UsersStats{
TotalUsersCount: count, TotalUsersCount: count,
@@ -1766,7 +1764,7 @@ func (a *App) GetTotalUsersStats(viewRestrictions *model.ViewUsersRestrictions)
func (a *App) GetFilteredUsersStats(options *model.UserCountOptions) (*model.UsersStats, *model.AppError) { func (a *App) GetFilteredUsersStats(options *model.UserCountOptions) (*model.UsersStats, *model.AppError) {
count, err := a.Srv().Store.User().Count(*options) count, err := a.Srv().Store.User().Count(*options)
if err != nil { if err != nil {
return nil, model.NewAppError("GetFilteredUsersStats", "app.user.get_total_users_count.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetFilteredUsersStats", "app.user.get_total_users_count.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
stats := &model.UsersStats{ stats := &model.UsersStats{
TotalUsersCount: count, TotalUsersCount: count,
@@ -1776,7 +1774,7 @@ func (a *App) GetFilteredUsersStats(options *model.UserCountOptions) (*model.Use
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, "", http.StatusInternalServerError).Wrap(err)
} }
a.InvalidateCacheForUser(userID) a.InvalidateCacheForUser(userID)
@@ -1818,7 +1816,7 @@ func (a *App) SearchUsersInChannel(channelID string, term string, options *model
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
users, err := a.Srv().Store.User().SearchInChannel(channelID, term, options) users, err := a.Srv().Store.User().SearchInChannel(channelID, term, options)
if err != nil { if err != nil {
return nil, model.NewAppError("SearchUsersInChannel", "app.user.search.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SearchUsersInChannel", "app.user.search.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, user := range users { for _, user := range users {
a.SanitizeProfile(user, options.IsAdmin) a.SanitizeProfile(user, options.IsAdmin)
@@ -1831,7 +1829,7 @@ func (a *App) SearchUsersNotInChannel(teamID string, channelID string, term stri
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, "", http.StatusInternalServerError).Wrap(err)
} }
for _, user := range users { for _, user := range users {
@@ -1846,7 +1844,7 @@ func (a *App) SearchUsersInTeam(teamID, term string, options *model.UserSearchOp
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, "", http.StatusInternalServerError).Wrap(err)
} }
for _, user := range users { for _, user := range users {
@@ -1860,7 +1858,7 @@ func (a *App) SearchUsersNotInTeam(notInTeamId string, term string, options *mod
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
users, err := a.Srv().Store.User().SearchNotInTeam(notInTeamId, term, options) users, err := a.Srv().Store.User().SearchNotInTeam(notInTeamId, term, options)
if err != nil { if err != nil {
return nil, model.NewAppError("SearchUsersNotInTeam", "app.user.search.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SearchUsersNotInTeam", "app.user.search.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, user := range users { for _, user := range users {
@@ -1874,7 +1872,7 @@ func (a *App) SearchUsersWithoutTeam(term string, options *model.UserSearchOptio
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
users, err := a.Srv().Store.User().SearchWithoutTeam(term, options) users, err := a.Srv().Store.User().SearchWithoutTeam(term, options)
if err != nil { if err != nil {
return nil, model.NewAppError("SearchUsersWithoutTeam", "app.user.search.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SearchUsersWithoutTeam", "app.user.search.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, user := range users { for _, user := range users {
@@ -1888,7 +1886,7 @@ func (a *App) SearchUsersInGroup(groupID string, term string, options *model.Use
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
users, err := a.Srv().Store.User().SearchInGroup(groupID, term, options) users, err := a.Srv().Store.User().SearchInGroup(groupID, term, options)
if err != nil { if err != nil {
return nil, model.NewAppError("SearchUsersInGroup", "app.user.search.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SearchUsersInGroup", "app.user.search.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, user := range users { for _, user := range users {
@@ -1902,7 +1900,7 @@ func (a *App) SearchUsersNotInGroup(groupID string, term string, options *model.
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
users, err := a.Srv().Store.User().SearchNotInGroup(groupID, term, options) users, err := a.Srv().Store.User().SearchNotInGroup(groupID, term, options)
if err != nil { if err != nil {
return nil, model.NewAppError("SearchUsersNotInGroup", "app.user.search.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("SearchUsersNotInGroup", "app.user.search.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, user := range users { for _, user := range users {
@@ -1917,7 +1915,7 @@ func (a *App) AutocompleteUsersInChannel(teamID string, channelID string, term s
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, "", http.StatusInternalServerError).Wrap(err)
} }
for _, user := range autocomplete.InChannel { for _, user := range autocomplete.InChannel {
@@ -1936,7 +1934,7 @@ func (a *App) AutocompleteUsersInTeam(teamID string, term string, options *model
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, "", http.StatusInternalServerError).Wrap(err)
} }
for _, user := range users { for _, user := range users {
@@ -1951,7 +1949,7 @@ func (a *App) AutocompleteUsersInTeam(teamID string, term string, options *model
func (a *App) UpdateOAuthUserAttrs(userData io.Reader, user *model.User, provider einterfaces.OAuthProvider, service string, tokenUser *model.User) *model.AppError { func (a *App) UpdateOAuthUserAttrs(userData io.Reader, user *model.User, provider einterfaces.OAuthProvider, service string, tokenUser *model.User) *model.AppError {
oauthUser, err1 := provider.GetUserFromJSON(userData, tokenUser) oauthUser, err1 := provider.GetUserFromJSON(userData, tokenUser)
if err1 != nil { if err1 != nil {
return model.NewAppError("UpdateOAuthUserAttrs", "api.user.update_oauth_user_attrs.get_user.app_error", map[string]any{"Service": service}, err1.Error(), http.StatusBadRequest) return model.NewAppError("UpdateOAuthUserAttrs", "api.user.update_oauth_user_attrs.get_user.app_error", map[string]any{"Service": service}, "", http.StatusBadRequest).Wrap(err1)
} }
userAttrsChanged := false userAttrsChanged := false
@@ -1991,9 +1989,9 @@ func (a *App) UpdateOAuthUserAttrs(userData io.Reader, user *model.User, provide
case errors.As(err, &appErr): case errors.As(err, &appErr):
return appErr return appErr
case errors.As(err, &invErr): case errors.As(err, &invErr):
return model.NewAppError("UpdateOAuthUserAttrs", "app.user.update.find.app_error", nil, invErr.Error(), http.StatusBadRequest) return model.NewAppError("UpdateOAuthUserAttrs", "app.user.update.find.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return model.NewAppError("UpdateOAuthUserAttrs", "app.user.update.finding.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("UpdateOAuthUserAttrs", "app.user.update.finding.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -2087,7 +2085,7 @@ func (a *App) UserCanSeeOtherUser(userID string, otherUserId string) (bool, *mod
if len(restrictions.Teams) > 0 { if len(restrictions.Teams) > 0 {
result, err := a.Srv().Store.Team().UserBelongsToTeams(otherUserId, restrictions.Teams) result, err := a.Srv().Store.Team().UserBelongsToTeams(otherUserId, restrictions.Teams)
if err != nil { if err != nil {
return false, model.NewAppError("UserCanSeeOtherUser", "app.team.user_belongs_to_teams.app_error", nil, err.Error(), http.StatusInternalServerError) return false, model.NewAppError("UserCanSeeOtherUser", "app.team.user_belongs_to_teams.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if result { if result {
return true, nil return true, nil
@@ -2110,7 +2108,7 @@ func (a *App) UserCanSeeOtherUser(userID string, otherUserId string) (bool, *mod
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, "", http.StatusInternalServerError).Wrap(err)
} }
return belongs, nil return belongs, nil
@@ -2123,7 +2121,7 @@ func (a *App) GetViewUsersRestrictions(userID string) (*model.ViewUsersRestricti
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, "", http.StatusInternalServerError).Wrap(nErr)
} }
teamIDsWithPermission := []string{} teamIDsWithPermission := []string{}
@@ -2135,7 +2133,7 @@ func (a *App) GetViewUsersRestrictions(userID string) (*model.ViewUsersRestricti
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, "", http.StatusInternalServerError).Wrap(err)
} }
channelIDs := []string{} channelIDs := []string{}
@@ -2152,11 +2150,11 @@ func (a *App) PromoteGuestToUser(c *request.Context, user *model.User, requestor
nErr := a.ch.srv.userService.PromoteGuestToUser(user) nErr := a.ch.srv.userService.PromoteGuestToUser(user)
a.InvalidateCacheForUser(user.Id) a.InvalidateCacheForUser(user.Id)
if nErr != nil { if nErr != nil {
return model.NewAppError("PromoteGuestToUser", "app.user.promote_guest.user_update.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("PromoteGuestToUser", "app.user.promote_guest.user_update.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
userTeams, nErr := a.Srv().Store.Team().GetTeamsByUserId(user.Id) userTeams, nErr := a.Srv().Store.Team().GetTeamsByUserId(user.Id)
if nErr != nil { if nErr != nil {
return model.NewAppError("PromoteGuestToUser", "app.team.get_all.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("PromoteGuestToUser", "app.team.get_all.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
for _, team := range userTeams { for _, team := range userTeams {
@@ -2212,7 +2210,7 @@ func (a *App) DemoteUserToGuest(c request.CTX, user *model.User) *model.AppError
demotedUser, nErr := a.ch.srv.userService.DemoteUserToGuest(user) demotedUser, nErr := a.ch.srv.userService.DemoteUserToGuest(user)
a.InvalidateCacheForUser(user.Id) a.InvalidateCacheForUser(user.Id)
if nErr != nil { if nErr != nil {
return model.NewAppError("DemoteUserToGuest", "app.user.demote_user_to_guest.user_update.app_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("DemoteUserToGuest", "app.user.demote_user_to_guest.user_update.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
a.sendUpdatedUserEvent(*demotedUser) a.sendUpdatedUserEvent(*demotedUser)
@@ -2287,7 +2285,7 @@ func (a *App) invalidateUserCacheAndPublish(userID string) {
func (a *App) GetKnownUsers(userID string) ([]string, *model.AppError) { func (a *App) GetKnownUsers(userID string) ([]string, *model.AppError) {
users, err := a.Srv().Store.User().GetKnownUsers(userID) users, err := a.Srv().Store.User().GetKnownUsers(userID)
if err != nil { if err != nil {
return nil, model.NewAppError("GetKnownUsers", "app.user.get_known_users.get_users.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetKnownUsers", "app.user.get_known_users.get_users.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return users, nil return users, nil
@@ -2300,9 +2298,9 @@ func (a *App) ConvertBotToUser(c request.CTX, bot *model.Bot, userPatch *model.U
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(nErr, &nfErr): case errors.As(nErr, &nfErr):
return nil, model.NewAppError("ConvertBotToUser", MissingAccountError, nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("ConvertBotToUser", MissingAccountError, nil, "", http.StatusNotFound).Wrap(nErr)
default: default:
return nil, model.NewAppError("ConvertBotToUser", "app.user.get.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("ConvertBotToUser", "app.user.get.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -2330,7 +2328,7 @@ func (a *App) ConvertBotToUser(c request.CTX, bot *model.Bot, userPatch *model.U
appErr := a.Srv().Store.Bot().PermanentDelete(bot.UserId) appErr := a.Srv().Store.Bot().PermanentDelete(bot.UserId)
if appErr != nil { if appErr != nil {
return nil, model.NewAppError("ConvertBotToUser", "app.user.convert_bot_to_user.app_error", nil, appErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("ConvertBotToUser", "app.user.convert_bot_to_user.app_error", nil, "", http.StatusInternalServerError).Wrap(appErr)
} }
return user, nil return user, nil
@@ -2390,7 +2388,7 @@ func (a *App) GetThreadsForUser(userID, teamID string, options model.GetUserThre
} }
if err := eg.Wait(); err != nil { if err := eg.Wait(); 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, "", http.StatusInternalServerError).Wrap(err)
} }
if options.Unread { if options.Unread {
@@ -2408,7 +2406,7 @@ func (a *App) GetThreadsForUser(userID, teamID string, options model.GetUserThre
func (a *App) GetThreadMembershipForUser(userId, threadId string) (*model.ThreadMembership, *model.AppError) { func (a *App) GetThreadMembershipForUser(userId, threadId string) (*model.ThreadMembership, *model.AppError) {
threadMembership, err := a.Srv().Store.Thread().GetMembershipForUser(userId, threadId) threadMembership, err := a.Srv().Store.Thread().GetMembershipForUser(userId, threadId)
if err != nil { if err != nil {
return nil, model.NewAppError("GetThreadMembershipForUser", "app.user.get_thread_membership_for_user.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetThreadMembershipForUser", "app.user.get_thread_membership_for_user.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if threadMembership == nil { if threadMembership == nil {
return nil, model.NewAppError("GetThreadMembershipForUser", "app.user.get_thread_membership_for_user.not_found", nil, "thread membership not found/followed", http.StatusNotFound) return nil, model.NewAppError("GetThreadMembershipForUser", "app.user.get_thread_membership_for_user.not_found", nil, "thread membership not found/followed", http.StatusNotFound)
@@ -2419,7 +2417,7 @@ func (a *App) GetThreadMembershipForUser(userId, threadId string) (*model.Thread
func (a *App) GetThreadForUser(teamID string, threadMembership *model.ThreadMembership, extended bool) (*model.ThreadResponse, *model.AppError) { func (a *App) GetThreadForUser(teamID string, threadMembership *model.ThreadMembership, extended bool) (*model.ThreadResponse, *model.AppError) {
thread, err := a.Srv().Store.Thread().GetThreadForUser(teamID, threadMembership, extended) thread, err := a.Srv().Store.Thread().GetThreadForUser(teamID, threadMembership, 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, "", http.StatusInternalServerError).Wrap(err)
} }
if thread == nil { if thread == nil {
return nil, model.NewAppError("GetThreadForUser", "app.user.get_threads_for_user.not_found", nil, "thread not found/followed", http.StatusNotFound) return nil, model.NewAppError("GetThreadForUser", "app.user.get_threads_for_user.not_found", nil, "thread not found/followed", http.StatusNotFound)
@@ -2432,7 +2430,7 @@ func (a *App) GetThreadForUser(teamID string, threadMembership *model.ThreadMemb
func (a *App) UpdateThreadsReadForUser(userID, teamID string) *model.AppError { func (a *App) UpdateThreadsReadForUser(userID, teamID string) *model.AppError {
nErr := a.Srv().Store.Thread().MarkAllAsReadByTeam(userID, teamID) nErr := a.Srv().Store.Thread().MarkAllAsReadByTeam(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, "", http.StatusInternalServerError).Wrap(nErr)
} }
message := model.NewWebSocketEvent(model.WebsocketEventThreadReadChanged, teamID, "", userID, nil) message := model.NewWebSocketEvent(model.WebsocketEventThreadReadChanged, teamID, "", userID, nil)
a.Publish(message) a.Publish(message)
@@ -2449,11 +2447,11 @@ func (a *App) UpdateThreadFollowForUser(userID, teamID, threadID string, state b
} }
_, err := a.Srv().Store.Thread().MaintainMembership(userID, threadID, opts) _, err := a.Srv().Store.Thread().MaintainMembership(userID, threadID, opts)
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, "", http.StatusInternalServerError).Wrap(err)
} }
thread, err := a.Srv().Store.Thread().Get(threadID) thread, err := a.Srv().Store.Thread().Get(threadID)
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, "", http.StatusInternalServerError).Wrap(err)
} }
replyCount := int64(0) replyCount := int64(0)
if thread != nil { if thread != nil {
@@ -2477,7 +2475,7 @@ func (a *App) UpdateThreadFollowForUserFromChannelAdd(c request.CTX, userID, tea
} }
tm, err := a.Srv().Store.Thread().MaintainMembership(userID, threadID, opts) tm, err := a.Srv().Store.Thread().MaintainMembership(userID, threadID, opts)
if err != nil { if err != nil {
return model.NewAppError("UpdateThreadFollowForUserFromChannelAdd", "app.user.update_thread_follow_for_user.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("UpdateThreadFollowForUserFromChannelAdd", "app.user.update_thread_follow_for_user.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
post, appErr := a.GetSinglePost(threadID, false) post, appErr := a.GetSinglePost(threadID, false)
@@ -2495,7 +2493,7 @@ func (a *App) UpdateThreadFollowForUserFromChannelAdd(c request.CTX, userID, tea
tm.LastViewed = post.CreateAt - 1 tm.LastViewed = post.CreateAt - 1
_, err = a.Srv().Store.Thread().UpdateMembership(tm) _, err = a.Srv().Store.Thread().UpdateMembership(tm)
if err != nil { if err != nil {
return model.NewAppError("UpdateThreadFollowForUserFromChannelAdd", "app.user.update_thread_follow_for_user.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("UpdateThreadFollowForUserFromChannelAdd", "app.user.update_thread_follow_for_user.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
message := model.NewWebSocketEvent(model.WebsocketEventThreadUpdated, teamID, "", userID, nil) message := model.NewWebSocketEvent(model.WebsocketEventThreadUpdated, teamID, "", userID, nil)
@@ -2505,7 +2503,7 @@ func (a *App) UpdateThreadFollowForUserFromChannelAdd(c request.CTX, userID, tea
if errors.As(err, &errNotFound) { if errors.As(err, &errNotFound) {
return nil return nil
} }
return model.NewAppError("UpdateThreadFollowForUserFromChannelAdd", "app.user.update_thread_follow_for_user.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("UpdateThreadFollowForUserFromChannelAdd", "app.user.update_thread_follow_for_user.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
a.sanitizeProfiles(userThread.Participants, false) a.sanitizeProfiles(userThread.Participants, false)
userThread.Post.SanitizeProps() userThread.Post.SanitizeProps()
@@ -2552,13 +2550,13 @@ func (a *App) UpdateThreadReadForUser(c request.CTX, currentSessionId, userID, t
} }
membership, storeErr := a.Srv().Store.Thread().MaintainMembership(userID, threadID, opts) membership, storeErr := a.Srv().Store.Thread().MaintainMembership(userID, threadID, opts)
if storeErr != nil { if storeErr != nil {
return nil, model.NewAppError("UpdateThreadReadForUser", "app.user.update_thread_read_for_user.app_error", nil, storeErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateThreadReadForUser", "app.user.update_thread_read_for_user.app_error", nil, "", http.StatusInternalServerError).Wrap(storeErr)
} }
previousUnreadMentions := membership.UnreadMentions previousUnreadMentions := membership.UnreadMentions
previousUnreadReplies, nErr := a.Srv().Store.Thread().GetThreadUnreadReplyCount(membership) previousUnreadReplies, nErr := a.Srv().Store.Thread().GetThreadUnreadReplyCount(membership)
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("UpdateThreadReadForUser", "app.user.update_thread_read_for_user.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateThreadReadForUser", "app.user.update_thread_read_for_user.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
post, err := a.GetSinglePost(threadID, false) post, err := a.GetSinglePost(threadID, false)
@@ -2571,14 +2569,14 @@ func (a *App) UpdateThreadReadForUser(c request.CTX, currentSessionId, userID, t
} }
_, nErr = a.Srv().Store.Thread().UpdateMembership(membership) _, nErr = a.Srv().Store.Thread().UpdateMembership(membership)
if nErr != nil { if nErr != nil {
return nil, model.NewAppError("UpdateThreadReadForUser", "app.user.update_thread_read_for_user.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateThreadReadForUser", "app.user.update_thread_read_for_user.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
membership.LastViewed = timestamp membership.LastViewed = timestamp
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 nil, model.NewAppError("UpdateThreadReadForUser", "app.user.update_thread_read_for_user.app_error", nil, nErr.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateThreadReadForUser", "app.user.update_thread_read_for_user.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
thread, err := a.GetThreadForUser(teamID, membership, false) thread, err := a.GetThreadForUser(teamID, membership, false)
if err != nil { if err != nil {
@@ -2605,7 +2603,7 @@ func (a *App) UpdateThreadReadForUser(c request.CTX, currentSessionId, userID, t
func (a *App) GetUsersWithInvalidEmails(page int, perPage int) ([]*model.User, *model.AppError) { func (a *App) GetUsersWithInvalidEmails(page int, perPage int) ([]*model.User, *model.AppError) {
users, err := a.Srv().Store.User().GetUsersWithInvalidEmails(page, perPage, *a.Config().TeamSettings.RestrictCreationToDomains) users, err := a.Srv().Store.User().GetUsersWithInvalidEmails(page, perPage, *a.Config().TeamSettings.RestrictCreationToDomains)
if err != nil { if err != nil {
return nil, model.NewAppError("GetUsersPage", "app.user.get_profiles.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUsersPage", "app.user.get_profiles.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return users, nil return users, nil

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

@@ -17,9 +17,9 @@ func (a *App) GetUserTermsOfService(userID string) (*model.UserTermsOfService, *
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetUserTermsOfService", "app.user_terms_of_service.get_by_user.no_rows.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetUserTermsOfService", "app.user_terms_of_service.get_by_user.no_rows.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetUserTermsOfService", "app.user_terms_of_service.get_by_user.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetUserTermsOfService", "app.user_terms_of_service.get_by_user.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -39,12 +39,12 @@ func (a *App) SaveUserTermsOfService(userID, termsOfServiceId string, accepted b
case errors.As(err, &appErr): case errors.As(err, &appErr):
return appErr return appErr
default: default:
return model.NewAppError("SaveUserTermsOfService", "app.user_terms_of_service.save.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SaveUserTermsOfService", "app.user_terms_of_service.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
} 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, "", http.StatusInternalServerError).Wrap(err)
} }
} }

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

@@ -39,7 +39,7 @@ func (a *App) handleWebhookEvents(c request.CTX, post *model.Post, team *model.T
hooks, err := a.Srv().Store.Webhook().GetOutgoingByTeam(team.Id, -1, -1) hooks, err := a.Srv().Store.Webhook().GetOutgoingByTeam(team.Id, -1, -1)
if err != nil { if err != nil {
return model.NewAppError("handleWebhookEvents", "app.webhooks.get_outgoing_by_team.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("handleWebhookEvents", "app.webhooks.get_outgoing_by_team.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if len(hooks) == 0 { if len(hooks) == 0 {
@@ -349,9 +349,9 @@ func (a *App) CreateIncomingWebhookForChannel(creatorId string, channel *model.C
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("CreateIncomingWebhookForChannel", "app.webhooks.save_incoming.existing.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("CreateIncomingWebhookForChannel", "app.webhooks.save_incoming.existing.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("CreateIncomingWebhookForChannel", "app.webhooks.save_incoming.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateIncomingWebhookForChannel", "app.webhooks.save_incoming.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -383,7 +383,7 @@ func (a *App) UpdateIncomingWebhook(oldHook, updatedHook *model.IncomingWebhook)
newWebhook, err := a.Srv().Store.Webhook().UpdateIncoming(updatedHook) newWebhook, err := a.Srv().Store.Webhook().UpdateIncoming(updatedHook)
if err != nil { if err != nil {
return nil, model.NewAppError("UpdateIncomingWebhook", "app.webhooks.update_incoming.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateIncomingWebhook", "app.webhooks.update_incoming.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
a.invalidateCacheForWebhook(oldHook.Id) a.invalidateCacheForWebhook(oldHook.Id)
return newWebhook, nil return newWebhook, nil
@@ -395,7 +395,7 @@ func (a *App) DeleteIncomingWebhook(hookID string) *model.AppError {
} }
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, "", http.StatusInternalServerError).Wrap(err)
} }
a.invalidateCacheForWebhook(hookID) a.invalidateCacheForWebhook(hookID)
@@ -413,9 +413,9 @@ func (a *App) GetIncomingWebhook(hookID string) (*model.IncomingWebhook, *model.
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetIncomingWebhook", "app.webhooks.get_incoming.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetIncomingWebhook", "app.webhooks.get_incoming.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetIncomingWebhook", "app.webhooks.get_incoming.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetIncomingWebhook", "app.webhooks.get_incoming.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -433,7 +433,7 @@ func (a *App) GetIncomingWebhooksForTeamPageByUser(teamID string, userID string,
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, "", http.StatusInternalServerError).Wrap(err)
} }
return webhooks, nil return webhooks, nil
@@ -446,7 +446,7 @@ func (a *App) GetIncomingWebhooksPageByUser(userID string, page, perPage int) ([
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, "", http.StatusInternalServerError).Wrap(err)
} }
return webhooks, nil return webhooks, nil
@@ -467,9 +467,9 @@ func (a *App) CreateOutgoingWebhook(hook *model.OutgoingWebhook) (*model.Outgoin
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(errCh, &nfErr): case errors.As(errCh, &nfErr):
return nil, model.NewAppError("CreateOutgoingWebhook", "app.channel.get.existing.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("CreateOutgoingWebhook", "app.channel.get.existing.app_error", nil, "", http.StatusNotFound).Wrap(errCh)
default: default:
return nil, model.NewAppError("CreateOutgoingWebhook", "app.channel.get.find.app_error", nil, errCh.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateOutgoingWebhook", "app.channel.get.find.app_error", nil, "", http.StatusInternalServerError).Wrap(errCh)
} }
} }
@@ -486,7 +486,7 @@ func (a *App) CreateOutgoingWebhook(hook *model.OutgoingWebhook) (*model.Outgoin
allHooks, err := a.Srv().Store.Webhook().GetOutgoingByTeam(hook.TeamId, -1, -1) allHooks, err := a.Srv().Store.Webhook().GetOutgoingByTeam(hook.TeamId, -1, -1)
if err != nil { if err != nil {
return nil, model.NewAppError("CreateOutgoingWebhook", "app.webhooks.get_outgoing_by_team.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateOutgoingWebhook", "app.webhooks.get_outgoing_by_team.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, existingOutHook := range allHooks { for _, existingOutHook := range allHooks {
urlIntersect := utils.StringArrayIntersection(existingOutHook.CallbackURLs, hook.CallbackURLs) urlIntersect := utils.StringArrayIntersection(existingOutHook.CallbackURLs, hook.CallbackURLs)
@@ -505,9 +505,9 @@ func (a *App) CreateOutgoingWebhook(hook *model.OutgoingWebhook) (*model.Outgoin
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("CreateOutgoingWebhook", "app.webhooks.save_outgoing.override.app_error", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("CreateOutgoingWebhook", "app.webhooks.save_outgoing.override.app_error", nil, "", http.StatusBadRequest).Wrap(err)
default: default:
return nil, model.NewAppError("CreateOutgoingWebhook", "app.webhooks.save_outgoing.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateOutgoingWebhook", "app.webhooks.save_outgoing.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -538,7 +538,7 @@ func (a *App) UpdateOutgoingWebhook(c request.CTX, oldHook, updatedHook *model.O
allHooks, err := a.Srv().Store.Webhook().GetOutgoingByTeam(oldHook.TeamId, -1, -1) allHooks, err := a.Srv().Store.Webhook().GetOutgoingByTeam(oldHook.TeamId, -1, -1)
if err != nil { if err != nil {
return nil, model.NewAppError("UpdateOutgoingWebhook", "app.webhooks.get_outgoing_by_team.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateOutgoingWebhook", "app.webhooks.get_outgoing_by_team.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, existingOutHook := range allHooks { for _, existingOutHook := range allHooks {
@@ -558,7 +558,7 @@ func (a *App) UpdateOutgoingWebhook(c request.CTX, oldHook, updatedHook *model.O
webhook, err := a.Srv().Store.Webhook().UpdateOutgoing(updatedHook) webhook, err := a.Srv().Store.Webhook().UpdateOutgoing(updatedHook)
if err != nil { if err != nil {
return nil, model.NewAppError("UpdateOutgoingWebhook", "app.webhooks.update_outgoing.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("UpdateOutgoingWebhook", "app.webhooks.update_outgoing.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return webhook, nil return webhook, nil
@@ -574,9 +574,9 @@ func (a *App) GetOutgoingWebhook(hookID string) (*model.OutgoingWebhook, *model.
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetOutgoingWebhook", "app.webhooks.get_outgoing.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetOutgoingWebhook", "app.webhooks.get_outgoing.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetOutgoingWebhook", "app.webhooks.get_outgoing.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetOutgoingWebhook", "app.webhooks.get_outgoing.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -594,7 +594,7 @@ func (a *App) GetOutgoingWebhooksPageByUser(userID string, page, perPage int) ([
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, "", http.StatusInternalServerError).Wrap(err)
} }
return webhooks, nil return webhooks, nil
@@ -607,7 +607,7 @@ func (a *App) GetOutgoingWebhooksForChannelPageByUser(channelID string, userID s
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, "", http.StatusInternalServerError).Wrap(err)
} }
return webhooks, nil return webhooks, nil
@@ -624,7 +624,7 @@ func (a *App) GetOutgoingWebhooksForTeamPageByUser(teamID string, userID string,
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, "", http.StatusInternalServerError).Wrap(err)
} }
return webhooks, nil return webhooks, nil
@@ -636,7 +636,7 @@ func (a *App) DeleteOutgoingWebhook(hookID string) *model.AppError {
} }
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, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
@@ -651,7 +651,7 @@ func (a *App) RegenOutgoingWebhookToken(hook *model.OutgoingWebhook) (*model.Out
webhook, err := a.Srv().Store.Webhook().UpdateOutgoing(hook) webhook, err := a.Srv().Store.Webhook().UpdateOutgoing(hook)
if err != nil { if err != nil {
return nil, model.NewAppError("RegenOutgoingWebhookToken", "app.webhooks.update_outgoing.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("RegenOutgoingWebhookToken", "app.webhooks.update_outgoing.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return webhook, nil return webhook, nil
@@ -684,7 +684,7 @@ func (a *App) HandleIncomingWebhook(c *request.Context, hookID string, req *mode
var hook *model.IncomingWebhook var hook *model.IncomingWebhook
result := <-hchan result := <-hchan
if result.NErr != nil { if result.NErr != nil {
return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.invalid.app_error", nil, result.NErr.Error(), http.StatusBadRequest) return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.invalid.app_error", nil, "", http.StatusBadRequest).Wrap(result.NErr)
} }
hook = result.Data.(*model.IncomingWebhook) hook = result.Data.(*model.IncomingWebhook)
@@ -716,7 +716,7 @@ func (a *App) HandleIncomingWebhook(c *request.Context, hookID string, req *mode
if channelName[0] == '@' { if channelName[0] == '@' {
result, nErr := a.Srv().Store.User().GetByUsername(channelName[1:]) result, nErr := a.Srv().Store.User().GetByUsername(channelName[1:])
if nErr != nil { if nErr != nil {
return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.user.app_error", nil, nErr.Error(), http.StatusBadRequest) return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.user.app_error", nil, "", http.StatusBadRequest).Wrap(nErr)
} }
ch, err := a.GetOrCreateDirectChannel(c, hook.UserId, result.Id) ch, err := a.GetOrCreateDirectChannel(c, hook.UserId, result.Id)
if err != nil { if err != nil {
@@ -745,9 +745,9 @@ func (a *App) HandleIncomingWebhook(c *request.Context, hookID string, req *mode
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return model.NewAppError("HandleIncomingWebhook", "app.channel.get.existing.app_error", nil, nfErr.Error(), http.StatusNotFound) return model.NewAppError("HandleIncomingWebhook", "app.channel.get.existing.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return model.NewAppError("HandleIncomingWebhook", "app.channel.get.find.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("HandleIncomingWebhook", "app.channel.get.find.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
} }
@@ -758,9 +758,9 @@ func (a *App) HandleIncomingWebhook(c *request.Context, hookID string, req *mode
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(result2.NErr, &nfErr): case errors.As(result2.NErr, &nfErr):
return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.channel.app_error", nil, nfErr.Error(), http.StatusNotFound) return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.channel.app_error", nil, "", http.StatusNotFound).Wrap(result2.NErr)
default: default:
return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.channel.app_error", nil, result2.NErr.Error(), http.StatusInternalServerError) return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.channel.app_error", nil, "", http.StatusInternalServerError).Wrap(result2.NErr)
} }
} }
channel = result2.Data.(*model.Channel) channel = result2.Data.(*model.Channel)
@@ -772,7 +772,7 @@ func (a *App) HandleIncomingWebhook(c *request.Context, hookID string, req *mode
result = <-uchan result = <-uchan
if result.NErr != nil { if result.NErr != nil {
return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.user.app_error", nil, result.NErr.Error(), http.StatusForbidden) return model.NewAppError("HandleIncomingWebhook", "web.incoming_webhook.user.app_error", nil, "", http.StatusForbidden).Wrap(result.NErr)
} }
if channel.Type != model.ChannelTypeOpen && !a.HasPermissionToChannel(c, hook.UserId, channel.Id, model.PermissionReadChannel) { if channel.Type != model.ChannelTypeOpen && !a.HasPermissionToChannel(c, hook.UserId, channel.Id, model.PermissionReadChannel) {
@@ -807,11 +807,11 @@ func (a *App) CreateCommandWebhook(commandID string, args *model.CommandArgs) (*
var appErr *model.AppError var appErr *model.AppError
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
return nil, model.NewAppError("CreateCommandWebhook", "app.command_webhook.create_command_webhook.existing", nil, invErr.Error(), http.StatusBadRequest) return nil, model.NewAppError("CreateCommandWebhook", "app.command_webhook.create_command_webhook.existing", nil, "", http.StatusBadRequest).Wrap(err)
case errors.As(err, &appErr): case errors.As(err, &appErr):
return nil, appErr return nil, appErr
default: default:
return nil, model.NewAppError("CreateCommandWebhook", "app.command_webhook.create_command_webhook.internal_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateCommandWebhook", "app.command_webhook.create_command_webhook.internal_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -828,9 +828,9 @@ func (a *App) HandleCommandWebhook(c *request.Context, hookID string, response *
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]any{"hook_id": hookID}, nfErr.Error(), http.StatusNotFound) return model.NewAppError("HandleCommandWebhook", "app.command_webhook.get.missing", map[string]any{"hook_id": hookID}, "", http.StatusNotFound).Wrap(nErr)
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, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }
@@ -841,7 +841,7 @@ func (a *App) HandleCommandWebhook(c *request.Context, hookID string, response *
case errors.As(cmdErr, &appErr): case errors.As(cmdErr, &appErr):
return appErr return appErr
default: default:
return model.NewAppError("HandleCommandWebhook", "web.command_webhook.command.app_error", nil, "err="+cmdErr.Error(), http.StatusBadRequest) return model.NewAppError("HandleCommandWebhook", "web.command_webhook.command.app_error", nil, "", http.StatusBadRequest).Wrap(cmdErr)
} }
} }
@@ -856,9 +856,9 @@ func (a *App) HandleCommandWebhook(c *request.Context, hookID string, response *
var invErr *store.ErrInvalidInput var invErr *store.ErrInvalidInput
switch { switch {
case errors.As(nErr, &invErr): case errors.As(nErr, &invErr):
return model.NewAppError("HandleCommandWebhook", "app.command_webhook.try_use.invalid", nil, invErr.Error(), http.StatusBadRequest) return model.NewAppError("HandleCommandWebhook", "app.command_webhook.try_use.invalid", nil, "", http.StatusBadRequest).Wrap(nErr)
default: default:
return model.NewAppError("HandleCommandWebhook", "app.command_webhook.try_use.internal_error", nil, nErr.Error(), http.StatusInternalServerError) return model.NewAppError("HandleCommandWebhook", "app.command_webhook.try_use.internal_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }

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

@@ -1,43 +1,41 @@
FROM alpine:3.14.6@sha256:06b5d462c92fc39303e6363c65e074559f8d6b1363250027ed5053557e3398c5 FROM debian:buster-slim@sha256:5b0b1a9a54651bbe9d4d3ee96bbda2b2a1da3d2fa198ddebbced46dfdca7f216
# Setting bash as our shell, and enabling pipefail option
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# Some ENV variables # Some ENV variables
ENV PATH="/mattermost/bin:${PATH}" ENV PATH="/mattermost/bin:${PATH}"
ARG PUID=2000 ARG PUID=2000
ARG PGID=2000 ARG PGID=2000
ARG MM_PACKAGE="https://releases.mattermost.com/7.1.2/mattermost-7.1.2-linux-amd64.tar.gz?src=docker" ARG MM_PACKAGE="https://releases.mattermost.com/7.2.0/mattermost-7.2.0-linux-amd64.tar.gz?src=docker"
# # Install needed packages
RUN apt-get update \
&& apt-get install --no-install-recommends -y \
ca-certificates=20200601~deb10u2 \
curl=7.64.0-4+deb10u2 \
mime-support=3.62 \
unrtf=0.21.10-clean-1 \
wv=1.2.9-4.2+b2 \
poppler-utils=0.71.0-5 \
tidy=2:5.6.0-10 \
&& rm -rf /var/lib/apt/lists/*
# Install some needed packages # Set mattermost group/user and download Mattermost
RUN apk add --no-cache \
ca-certificates \
curl \
libc6-compat \
libffi-dev \
linux-headers \
mailcap \
netcat-openbsd \
xmlsec-dev \
tzdata \
wv \
poppler-utils \
tidyhtml \
&& rm -rf /tmp/*
# Get Mattermost
RUN mkdir -p /mattermost/data /mattermost/plugins /mattermost/client/plugins \ RUN mkdir -p /mattermost/data /mattermost/plugins /mattermost/client/plugins \
&& if [ ! -z "$MM_PACKAGE" ]; then curl $MM_PACKAGE | tar -xvz ; \ && addgroup -gid ${PGID} mattermost \
else echo "please set the MM_PACKAGE" ; fi \ && adduser -q --disabled-password --uid ${PUID} --gid ${PGID} --gecos "" --home /mattermost mattermost \
&& addgroup -g ${PGID} mattermost \ && if [ -n "$MM_PACKAGE" ]; then curl $MM_PACKAGE | tar -xvz ; \
&& adduser -D -u ${PUID} -G mattermost -h /mattermost -D mattermost \ else echo "please set the MM_PACKAGE" ; exit 127 ; fi \
&& chown -R mattermost:mattermost /mattermost /mattermost/plugins /mattermost/client/plugins && chown -R mattermost:mattermost /mattermost /mattermost/data /mattermost/plugins /mattermost/client/plugins
# We should refrain from running as privileged user
USER mattermost USER mattermost
#Healthcheck to make sure container is ready #Healthcheck to make sure container is ready
HEALTHCHECK --interval=30s --timeout=10s \ HEALTHCHECK --interval=30s --timeout=10s \
CMD curl -f http://localhost:8065/api/v4/system/ping || exit 1 CMD curl -f http://localhost:8065/api/v4/system/ping || exit 1
# Configure entrypoint and command # Configure entrypoint and command
COPY entrypoint.sh / COPY entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"] ENTRYPOINT ["/entrypoint.sh"]
@@ -48,3 +46,4 @@ EXPOSE 8065 8067 8074 8075
# Declare volumes for mount point directories # Declare volumes for mount point directories
VOLUME ["/mattermost/data", "/mattermost/logs", "/mattermost/config", "/mattermost/plugins", "/mattermost/client/plugins"] VOLUME ["/mattermost/data", "/mattermost/logs", "/mattermost/config", "/mattermost/plugins", "/mattermost/client/plugins"]

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

@@ -1,4 +1,4 @@
#!/bin/sh #!/bin/bash
if [ "${1:0:1}" = '-' ]; then if [ "${1:0:1}" = '-' ]; then
set -- mattermost "$@" set -- mattermost "$@"

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

@@ -2229,10 +2229,6 @@
"id": "api.post.check_for_out_of_channel_mentions.message.one", "id": "api.post.check_for_out_of_channel_mentions.message.one",
"translation": "@{{.Username}} did not get notified by this mention because they are not in the channel." "translation": "@{{.Username}} did not get notified by this mention because they are not in the channel."
}, },
{
"id": "api.post.compliance_enabled.join_channel_to_view_post",
"translation": "Due to compliance rules configured on this instance the channel must be joined before its posts can be read."
},
{ {
"id": "api.post.create_post.can_not_post_to_deleted.error", "id": "api.post.create_post.can_not_post_to_deleted.error",
"translation": "Can not post to deleted channel." "translation": "Can not post to deleted channel."
@@ -3337,11 +3333,11 @@
}, },
{ {
"id": "api.templates.invite_team_and_channel_body.title", "id": "api.templates.invite_team_and_channel_body.title",
"translation": "{{ .SenderName }} invited you to join {{ .ChannelName }} on the {{ .TeamDisplayName }} Team" "translation": "{{ .SenderName }} invited you to join the {{ .ChannelName }} Channel on the {{ .TeamDisplayName }} Team"
}, },
{ {
"id": "api.templates.invite_team_and_channel_subject", "id": "api.templates.invite_team_and_channel_subject",
"translation": "[{{ .SiteName }}] {{ .SenderName }} invited you to join {{ .ChannelName }} on the {{ .TeamDisplayName }} Team" "translation": "[{{ .SiteName }}] {{ .SenderName }} invited you to join the {{ .ChannelName }} Channel on the {{ .TeamDisplayName }} Team"
}, },
{ {
"id": "api.templates.invite_team_and_channels_body.title", "id": "api.templates.invite_team_and_channels_body.title",
@@ -4875,10 +4871,6 @@
"id": "app.import.bulk_import.json_decode.error", "id": "app.import.bulk_import.json_decode.error",
"translation": "JSON decode of line failed." "translation": "JSON decode of line failed."
}, },
{
"id": "app.import.bulk_import.process_attachments.error",
"translation": "Error while processing bulk import attachments."
},
{ {
"id": "app.import.bulk_import.unsupported_version.error", "id": "app.import.bulk_import.unsupported_version.error",
"translation": "Incorrect or missing version in the data import file. Make sure version is the first object in your import file and try again." "translation": "Incorrect or missing version in the data import file. Make sure version is the first object in your import file and try again."
@@ -5019,10 +5011,6 @@
"id": "app.import.import_user_teams.save_preferences.error", "id": "app.import.import_user_teams.save_preferences.error",
"translation": "Unable to save the team theme preferences" "translation": "Unable to save the team theme preferences"
}, },
{
"id": "app.import.marshal.app_error",
"translation": "Unable to marshal response."
},
{ {
"id": "app.import.process_import_data_file_version_line.invalid_version.error", "id": "app.import.process_import_data_file_version_line.invalid_version.error",
"translation": "Unable to read the version of the data import file." "translation": "Unable to read the version of the data import file."

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

@@ -81,7 +81,7 @@ func (worker *SimpleWorker) DoJob(job *model.Job) {
err := worker.execute(job) err := worker.execute(job)
if err != nil { if err != nil {
mlog.Error("SimpleWorker: job execution error", mlog.String("worker", worker.name), mlog.String("job_id", job.Id), mlog.Err(err)) mlog.Error("SimpleWorker: job execution error", mlog.String("worker", worker.name), mlog.String("job_id", job.Id), mlog.Err(err))
worker.setJobError(job, model.NewAppError("DoJob", "app.user.get_total_users_count.app_error", nil, err.Error(), http.StatusInternalServerError)) worker.setJobError(job, model.NewAppError("DoJob", "app.user.get_total_users_count.app_error", nil, "", http.StatusInternalServerError).Wrap(err))
return return
} }

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

@@ -61,7 +61,7 @@ func MakeWorker(jobServer *jobs.JobServer, app AppIface) model.Worker {
importZipReader, err := zip.NewReader(importFile.(io.ReaderAt), importFileSize) importZipReader, err := zip.NewReader(importFile.(io.ReaderAt), importFileSize)
if err != nil { if err != nil {
return model.NewAppError("ImportProcessWorker", "import_process.worker.do_job.open_file", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("ImportProcessWorker", "import_process.worker.do_job.open_file", nil, "", http.StatusInternalServerError).Wrap(err)
} }
// find JSONL import file. // find JSONL import file.
@@ -77,7 +77,7 @@ func MakeWorker(jobServer *jobs.JobServer, app AppIface) model.Worker {
jsonFile, err = f.Open() jsonFile, err = f.Open()
if err != nil { if err != nil {
return model.NewAppError("ImportProcessWorker", "import_process.worker.do_job.open_file", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("ImportProcessWorker", "import_process.worker.do_job.open_file", nil, "", http.StatusInternalServerError).Wrap(err)
} }
defer jsonFile.Close() defer jsonFile.Close()

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

@@ -36,7 +36,7 @@ func (srv *JobServer) CreateJob(jobType string, jobData map[string]string) (*mod
} }
if _, err := srv.Store.Job().Save(&job); err != nil { if _, err := srv.Store.Job().Save(&job); err != nil {
return nil, model.NewAppError("CreateJob", "app.job.save.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("CreateJob", "app.job.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return &job, nil return &job, nil
@@ -48,9 +48,9 @@ func (srv *JobServer) GetJob(id string) (*model.Job, *model.AppError) {
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
switch { switch {
case errors.As(err, &nfErr): case errors.As(err, &nfErr):
return nil, model.NewAppError("GetJob", "app.job.get.app_error", nil, nfErr.Error(), http.StatusNotFound) return nil, model.NewAppError("GetJob", "app.job.get.app_error", nil, "", http.StatusNotFound).Wrap(err)
default: default:
return nil, model.NewAppError("GetJob", "app.job.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetJob", "app.job.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
} }
@@ -60,7 +60,7 @@ func (srv *JobServer) GetJob(id string) (*model.Job, *model.AppError) {
func (srv *JobServer) ClaimJob(job *model.Job) (bool, *model.AppError) { func (srv *JobServer) ClaimJob(job *model.Job) (bool, *model.AppError) {
updated, err := srv.Store.Job().UpdateStatusOptimistically(job.Id, model.JobStatusPending, model.JobStatusInProgress) updated, err := srv.Store.Job().UpdateStatusOptimistically(job.Id, model.JobStatusPending, model.JobStatusInProgress)
if err != nil { if err != nil {
return false, model.NewAppError("ClaimJob", "app.job.update.app_error", nil, err.Error(), http.StatusInternalServerError) return false, model.NewAppError("ClaimJob", "app.job.update.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if updated && srv.metrics != nil { if updated && srv.metrics != nil {
@@ -75,21 +75,21 @@ func (srv *JobServer) SetJobProgress(job *model.Job, progress int64) *model.AppE
job.Progress = progress job.Progress = progress
if _, err := srv.Store.Job().UpdateOptimistically(job, model.JobStatusInProgress); err != nil { if _, err := srv.Store.Job().UpdateOptimistically(job, model.JobStatusInProgress); err != nil {
return model.NewAppError("SetJobProgress", "app.job.update.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SetJobProgress", "app.job.update.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
} }
func (srv *JobServer) SetJobWarning(job *model.Job) *model.AppError { func (srv *JobServer) SetJobWarning(job *model.Job) *model.AppError {
if _, err := srv.Store.Job().UpdateStatus(job.Id, model.JobStatusWarning); err != nil { if _, err := srv.Store.Job().UpdateStatus(job.Id, model.JobStatusWarning); err != nil {
return model.NewAppError("SetJobWarning", "app.job.update.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SetJobWarning", "app.job.update.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
} }
func (srv *JobServer) SetJobSuccess(job *model.Job) *model.AppError { func (srv *JobServer) SetJobSuccess(job *model.Job) *model.AppError {
if _, err := srv.Store.Job().UpdateStatus(job.Id, model.JobStatusSuccess); err != nil { if _, err := srv.Store.Job().UpdateStatus(job.Id, model.JobStatusSuccess); err != nil {
return model.NewAppError("SetJobSuccess", "app.job.update.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SetJobSuccess", "app.job.update.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if srv.metrics != nil { if srv.metrics != nil {
@@ -103,7 +103,7 @@ func (srv *JobServer) SetJobError(job *model.Job, jobError *model.AppError) *mod
if jobError == nil { if jobError == nil {
_, err := srv.Store.Job().UpdateStatus(job.Id, model.JobStatusError) _, err := srv.Store.Job().UpdateStatus(job.Id, model.JobStatusError)
if err != nil { if err != nil {
return model.NewAppError("SetJobError", "app.job.update.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SetJobError", "app.job.update.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if srv.metrics != nil { if srv.metrics != nil {
@@ -124,7 +124,7 @@ func (srv *JobServer) SetJobError(job *model.Job, jobError *model.AppError) *mod
} }
updated, err := srv.Store.Job().UpdateOptimistically(job, model.JobStatusInProgress) updated, err := srv.Store.Job().UpdateOptimistically(job, model.JobStatusInProgress)
if err != nil { if err != nil {
return model.NewAppError("SetJobError", "app.job.update.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SetJobError", "app.job.update.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if updated && srv.metrics != nil { if updated && srv.metrics != nil {
srv.metrics.DecrementJobActive(job.Type) srv.metrics.DecrementJobActive(job.Type)
@@ -133,7 +133,7 @@ func (srv *JobServer) SetJobError(job *model.Job, jobError *model.AppError) *mod
if !updated { if !updated {
updated, err = srv.Store.Job().UpdateOptimistically(job, model.JobStatusCancelRequested) updated, err = srv.Store.Job().UpdateOptimistically(job, model.JobStatusCancelRequested)
if err != nil { if err != nil {
return model.NewAppError("SetJobError", "app.job.update.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SetJobError", "app.job.update.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if !updated { if !updated {
return model.NewAppError("SetJobError", "jobs.set_job_error.update.error", nil, "id="+job.Id, http.StatusInternalServerError) return model.NewAppError("SetJobError", "jobs.set_job_error.update.error", nil, "id="+job.Id, http.StatusInternalServerError)
@@ -145,7 +145,7 @@ func (srv *JobServer) SetJobError(job *model.Job, jobError *model.AppError) *mod
func (srv *JobServer) SetJobCanceled(job *model.Job) *model.AppError { func (srv *JobServer) SetJobCanceled(job *model.Job) *model.AppError {
if _, err := srv.Store.Job().UpdateStatus(job.Id, model.JobStatusCanceled); err != nil { if _, err := srv.Store.Job().UpdateStatus(job.Id, model.JobStatusCanceled); err != nil {
return model.NewAppError("SetJobCanceled", "app.job.update.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SetJobCanceled", "app.job.update.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if srv.metrics != nil { if srv.metrics != nil {
@@ -157,7 +157,7 @@ func (srv *JobServer) SetJobCanceled(job *model.Job) *model.AppError {
func (srv *JobServer) SetJobPending(job *model.Job) *model.AppError { func (srv *JobServer) SetJobPending(job *model.Job) *model.AppError {
if _, err := srv.Store.Job().UpdateStatus(job.Id, model.JobStatusPending); err != nil { if _, err := srv.Store.Job().UpdateStatus(job.Id, model.JobStatusPending); err != nil {
return model.NewAppError("SetJobPending", "app.job.update.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("SetJobPending", "app.job.update.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if srv.metrics != nil { if srv.metrics != nil {
@@ -171,7 +171,7 @@ func (srv *JobServer) UpdateInProgressJobData(job *model.Job) *model.AppError {
job.Status = model.JobStatusInProgress job.Status = model.JobStatusInProgress
job.LastActivityAt = model.GetMillis() job.LastActivityAt = model.GetMillis()
if _, err := srv.Store.Job().UpdateOptimistically(job, model.JobStatusInProgress); err != nil { if _, err := srv.Store.Job().UpdateOptimistically(job, model.JobStatusInProgress); err != nil {
return model.NewAppError("UpdateInProgressJobData", "app.job.update.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("UpdateInProgressJobData", "app.job.update.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return nil return nil
} }
@@ -179,13 +179,13 @@ func (srv *JobServer) UpdateInProgressJobData(job *model.Job) *model.AppError {
func (srv *JobServer) RequestCancellation(jobId string) *model.AppError { func (srv *JobServer) RequestCancellation(jobId string) *model.AppError {
updated, err := srv.Store.Job().UpdateStatusOptimistically(jobId, model.JobStatusPending, model.JobStatusCanceled) updated, err := srv.Store.Job().UpdateStatusOptimistically(jobId, model.JobStatusPending, model.JobStatusCanceled)
if err != nil { if err != nil {
return model.NewAppError("RequestCancellation", "app.job.update.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("RequestCancellation", "app.job.update.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if updated { if updated {
if srv.metrics != nil { if srv.metrics != nil {
job, err := srv.GetJob(jobId) job, err := srv.GetJob(jobId)
if err != nil { if err != nil {
return model.NewAppError("RequestCancellation", "app.job.update.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("RequestCancellation", "app.job.update.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
srv.metrics.DecrementJobActive(job.Type) srv.metrics.DecrementJobActive(job.Type)
@@ -196,7 +196,7 @@ func (srv *JobServer) RequestCancellation(jobId string) *model.AppError {
updated, err = srv.Store.Job().UpdateStatusOptimistically(jobId, model.JobStatusInProgress, model.JobStatusCancelRequested) updated, err = srv.Store.Job().UpdateStatusOptimistically(jobId, model.JobStatusInProgress, model.JobStatusCancelRequested)
if err != nil { if err != nil {
return model.NewAppError("RequestCancellation", "app.job.update.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("RequestCancellation", "app.job.update.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if updated { if updated {
@@ -240,7 +240,7 @@ func GenerateNextStartDateTime(now time.Time, nextStartTime time.Time) *time.Tim
func (srv *JobServer) CheckForPendingJobsByType(jobType string) (bool, *model.AppError) { func (srv *JobServer) CheckForPendingJobsByType(jobType string) (bool, *model.AppError) {
count, err := srv.Store.Job().GetCountByStatusAndType(model.JobStatusPending, jobType) count, err := srv.Store.Job().GetCountByStatusAndType(model.JobStatusPending, jobType)
if err != nil { if err != nil {
return false, model.NewAppError("CheckForPendingJobsByType", "app.job.get_count_by_status_and_type.app_error", nil, err.Error(), http.StatusInternalServerError) return false, model.NewAppError("CheckForPendingJobsByType", "app.job.get_count_by_status_and_type.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return count > 0, nil return count > 0, nil
} }
@@ -248,7 +248,7 @@ func (srv *JobServer) CheckForPendingJobsByType(jobType string) (bool, *model.Ap
func (srv *JobServer) GetJobsByTypeAndStatus(jobType string, status string) ([]*model.Job, *model.AppError) { func (srv *JobServer) GetJobsByTypeAndStatus(jobType string, status string) ([]*model.Job, *model.AppError) {
jobs, err := srv.Store.Job().GetAllByTypeAndStatus(jobType, status) jobs, err := srv.Store.Job().GetAllByTypeAndStatus(jobType, status)
if err != nil { if err != nil {
return nil, model.NewAppError("GetJobsByTypeAndStatus", "app.job.get_all_jobs_by_type_and_status.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetJobsByTypeAndStatus", "app.job.get_all_jobs_by_type_and_status.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return jobs, nil return jobs, nil
@@ -262,7 +262,7 @@ func (srv *JobServer) GetLastSuccessfulJobByType(jobType string) (*model.Job, *m
job, err := srv.Store.Job().GetNewestJobByStatusesAndType(statuses, jobType) job, err := srv.Store.Job().GetNewestJobByStatusesAndType(statuses, jobType)
var nfErr *store.ErrNotFound var nfErr *store.ErrNotFound
if err != nil && !errors.As(err, &nfErr) { if err != nil && !errors.As(err, &nfErr) {
return nil, model.NewAppError("GetLastSuccessfulJobByType", "app.job.get_newest_job_by_status_and_type.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, model.NewAppError("GetLastSuccessfulJobByType", "app.job.get_newest_job_by_status_and_type.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return job, nil return job, nil
} }

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

@@ -81,7 +81,7 @@ func (worker *Worker) runAdvancedPermissionsPhase2Migration(lastDone string) (bo
// Run a TeamMembers migration batch. // Run a TeamMembers migration batch.
result, err := worker.store.Team().MigrateTeamMembers(progress.LastTeamId, progress.LastUserId) result, err := worker.store.Team().MigrateTeamMembers(progress.LastTeamId, progress.LastUserId)
if err != nil { if err != nil {
return false, progress.ToJSON(), model.NewAppError("MigrationsWorker.runAdvancedPermissionsPhase2Migration", "app.team.migrate_team_members.update.app_error", nil, err.Error(), http.StatusInternalServerError) return false, progress.ToJSON(), model.NewAppError("MigrationsWorker.runAdvancedPermissionsPhase2Migration", "app.team.migrate_team_members.update.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if result == nil { if result == nil {
// We haven't progressed. That means that we've reached the end of this stage of the migration, and should now advance to the next stage. // We haven't progressed. That means that we've reached the end of this stage of the migration, and should now advance to the next stage.
@@ -96,7 +96,7 @@ func (worker *Worker) runAdvancedPermissionsPhase2Migration(lastDone string) (bo
// Run a ChannelMembers migration batch. // Run a ChannelMembers migration batch.
data, err := worker.store.Channel().MigrateChannelMembers(progress.LastChannelId, progress.LastUserId) data, err := worker.store.Channel().MigrateChannelMembers(progress.LastChannelId, progress.LastUserId)
if err != nil { if err != nil {
return false, progress.ToJSON(), model.NewAppError("MigrationsWorker.runAdvancedPermissionsPhase2Migration", "app.channel.migrate_channel_members.select.app_error", nil, err.Error(), http.StatusInternalServerError) return false, progress.ToJSON(), model.NewAppError("MigrationsWorker.runAdvancedPermissionsPhase2Migration", "app.channel.migrate_channel_members.select.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
if data == nil { if data == nil {
// We haven't progressed. That means we've reached the end of this final stage of the migration. // We haven't progressed. That means we've reached the end of this final stage of the migration.

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

@@ -32,7 +32,7 @@ func GetMigrationState(migration string, store store.Store) (string, *model.Job,
jobs, err := store.Job().GetAllByType(model.JobTypeMigrations) jobs, err := store.Job().GetAllByType(model.JobTypeMigrations)
if err != nil { if err != nil {
return "", nil, model.NewAppError("GetMigrationState", "app.job.get_all.app_error", nil, err.Error(), http.StatusInternalServerError) return "", nil, model.NewAppError("GetMigrationState", "app.job.get_all.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
for _, job := range jobs { for _, job := range jobs {

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

@@ -172,7 +172,7 @@ func (worker *Worker) runMigration(key string, lastDone string) (bool, string, *
if done { if done {
if nErr := worker.store.System().Save(&model.System{Name: key, Value: "true"}); nErr != nil { if nErr := worker.store.System().Save(&model.System{Name: key, Value: "true"}); nErr != nil {
return false, "", model.NewAppError("runMigration", "migrations.system.save.app_error", nil, nErr.Error(), http.StatusInternalServerError) return false, "", model.NewAppError("runMigration", "migrations.system.save.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)
} }
} }

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

@@ -176,14 +176,14 @@ func (rseworker *ResendInvitationEmailWorker) ResendEmails(job *model.Job, inter
emailList, err := rseworker.cleanEmailData(emailListData) emailList, err := rseworker.cleanEmailData(emailListData)
if err != nil { if err != nil {
appErr := model.NewAppError("worker: "+rseworker.name, "job_id: "+job.Id, nil, err.Error(), http.StatusInternalServerError) appErr := model.NewAppError("worker: "+rseworker.name, "job_id: "+job.Id, nil, "", http.StatusInternalServerError).Wrap(err)
mlog.Error("Worker: Failed to clean emails string data", mlog.String("worker", rseworker.name), mlog.String("job_id", job.Id), mlog.String("error", appErr.Error())) mlog.Error("Worker: Failed to clean emails string data", mlog.String("worker", rseworker.name), mlog.String("job_id", job.Id), mlog.String("error", appErr.Error()))
rseworker.setJobError(job, appErr) rseworker.setJobError(job, appErr)
} }
channelList, err := rseworker.cleanChannelsData(channelListData) channelList, err := rseworker.cleanChannelsData(channelListData)
if err != nil { if err != nil {
appErr := model.NewAppError("worker: "+rseworker.name, "job_id: "+job.Id, nil, err.Error(), http.StatusInternalServerError) appErr := model.NewAppError("worker: "+rseworker.name, "job_id: "+job.Id, nil, "", http.StatusInternalServerError).Wrap(err)
mlog.Error("Worker: Failed to clean channel string data", mlog.String("worker", rseworker.name), mlog.String("job_id", job.Id), mlog.String("error", appErr.Error())) mlog.Error("Worker: Failed to clean channel string data", mlog.String("worker", rseworker.name), mlog.String("job_id", job.Id), mlog.String("error", appErr.Error()))
rseworker.setJobError(job, appErr) rseworker.setJobError(job, appErr)
} }

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

@@ -84,11 +84,11 @@ func manualTest(c *web.Context, w http.ResponseWriter, r *http.Request) {
var appErr *model.AppError var appErr *model.AppError
switch { switch {
case errors.As(err, &invErr): case errors.As(err, &invErr):
c.Err = model.NewAppError("manualTest", "app.team.save.existing.app_error", nil, invErr.Error(), http.StatusBadRequest) c.Err = model.NewAppError("manualTest", "app.team.save.existing.app_error", nil, "", http.StatusBadRequest).Wrap(err)
case errors.As(err, &appErr): case errors.As(err, &appErr):
c.Err = appErr c.Err = appErr
default: default:
c.Err = model.NewAppError("manualTest", "app.team.save.app_error", nil, err.Error(), http.StatusInternalServerError) c.Err = model.NewAppError("manualTest", "app.team.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return return
} }
@@ -114,7 +114,7 @@ func manualTest(c *web.Context, w http.ResponseWriter, r *http.Request) {
if ok { if ok {
c.Err = appErr c.Err = appErr
} else { } else {
c.Err = model.NewAppError("manualTest", "app.user.save.app_error", nil, err.Error(), http.StatusInternalServerError) c.Err = model.NewAppError("manualTest", "app.user.save.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return return
@@ -133,7 +133,7 @@ func manualTest(c *web.Context, w http.ResponseWriter, r *http.Request) {
if ok { if ok {
c.Err = appErr c.Err = appErr
} else { } else {
c.Err = model.NewAppError("manualTest", "api.user.login.bot_login_forbidden.app_error", nil, err.Error(), http.StatusInternalServerError) c.Err = model.NewAppError("manualTest", "api.user.login.bot_login_forbidden.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
} }
return return
} }

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

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

@@ -140,20 +140,21 @@ type PaymentMethod struct {
// Subscription model represents a subscription on the system. // Subscription model represents a subscription on the system.
type Subscription struct { type Subscription struct {
ID string `json:"id"` ID string `json:"id"`
CustomerID string `json:"customer_id"` CustomerID string `json:"customer_id"`
ProductID string `json:"product_id"` ProductID string `json:"product_id"`
AddOns []string `json:"add_ons"` AddOns []string `json:"add_ons"`
StartAt int64 `json:"start_at"` StartAt int64 `json:"start_at"`
EndAt int64 `json:"end_at"` EndAt int64 `json:"end_at"`
CreateAt int64 `json:"create_at"` CreateAt int64 `json:"create_at"`
Seats int `json:"seats"` Seats int `json:"seats"`
Status string `json:"status"` Status string `json:"status"`
DNS string `json:"dns"` DNS string `json:"dns"`
IsPaidTier string `json:"is_paid_tier"` IsPaidTier string `json:"is_paid_tier"`
LastInvoice *Invoice `json:"last_invoice"` LastInvoice *Invoice `json:"last_invoice"`
IsFreeTrial string `json:"is_free_trial"` IsFreeTrial string `json:"is_free_trial"`
TrialEndAt int64 `json:"trial_end_at"` TrialEndAt int64 `json:"trial_end_at"`
DelinquentSince *int64 `json:"delinquent_since"`
} }
// GetWorkSpaceNameFromDNS returns the work space name. For example from test.mattermost.cloud.com, it returns test // GetWorkSpaceNameFromDNS returns the work space name. For example from test.mattermost.cloud.com, it returns test

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

@@ -122,7 +122,7 @@ func (o *Command) IsValid() *AppError {
if o.AutocompleteData != nil { if o.AutocompleteData != nil {
if err := o.AutocompleteData.IsValid(); err != nil { if err := o.AutocompleteData.IsValid(); err != nil {
return NewAppError("Command.IsValid", "model.command.is_valid.autocomplete_data.app_error", nil, err.Error(), http.StatusBadRequest) return NewAppError("Command.IsValid", "model.command.is_valid.autocomplete_data.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
} }

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

@@ -46,13 +46,13 @@ func TestCommandWebhookIsValid(t *testing.T) {
} { } {
tmp := h tmp := h
test.Transform() test.Transform()
err := h.IsValid() appErr := h.IsValid()
if test.ExpectedError == "" { if test.ExpectedError == "" {
assert.Nil(t, err, "hook should be valid") assert.Nil(t, appErr, "hook should be valid")
} else { } else {
require.NotNil(t, err) require.NotNil(t, appErr)
assert.Equal(t, test.ExpectedError, err.Id, "expected "+test.ExpectedError+" error") assert.Equal(t, test.ExpectedError, appErr.Id, "expected "+test.ExpectedError+" error")
} }
h = tmp h = tmp

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

@@ -3078,19 +3078,20 @@ const ConfigAccessTagAnySysConsoleRead = "*_read"
// environment with ExperimentalSettings.RestrictedSystemAdmin set to true. // environment with ExperimentalSettings.RestrictedSystemAdmin set to true.
// //
// Example: // Example:
// type HairSettings struct {
// // Colour is writeable with either PermissionSysconsoleWriteReporting or PermissionSysconsoleWriteUserManagementGroups.
// // It is readable by PermissionSysconsoleReadReporting and PermissionSysconsoleReadUserManagementGroups permissions.
// // PermissionManageSystem grants read and write access.
// Colour string `access:"reporting,user_management_groups"`
// //
// // Length is only readable and writable via PermissionManageSystem. // type HairSettings struct {
// Length string // // Colour is writeable with either PermissionSysconsoleWriteReporting or PermissionSysconsoleWriteUserManagementGroups.
// // It is readable by PermissionSysconsoleReadReporting and PermissionSysconsoleReadUserManagementGroups permissions.
// // PermissionManageSystem grants read and write access.
// Colour string `access:"reporting,user_management_groups"`
// //
// // Product is only writeable by PermissionManageSystem if ExperimentalSettings.RestrictSystemAdmin is false. // // Length is only readable and writable via PermissionManageSystem.
// // PermissionManageSystem can always read the value. // Length string
// Product bool `access:write_restrictable` //
// } // // Product is only writeable by PermissionManageSystem if ExperimentalSettings.RestrictSystemAdmin is false.
// // PermissionManageSystem can always read the value.
// Product bool `access:write_restrictable`
// }
type Config struct { type Config struct {
ServiceSettings ServiceSettings ServiceSettings ServiceSettings
TeamSettings TeamSettings TeamSettings TeamSettings
@@ -3262,72 +3263,72 @@ func (o *Config) IsValid() *AppError {
return NewAppError("Config.IsValid", "model.config.is_valid.allow_cookies_for_subdomains.app_error", nil, "", http.StatusBadRequest) return NewAppError("Config.IsValid", "model.config.is_valid.allow_cookies_for_subdomains.app_error", nil, "", http.StatusBadRequest)
} }
if err := o.TeamSettings.isValid(); err != nil { if appErr := o.TeamSettings.isValid(); appErr != nil {
return err return appErr
} }
if err := o.SqlSettings.isValid(); err != nil { if appErr := o.SqlSettings.isValid(); appErr != nil {
return err return appErr
} }
if err := o.FileSettings.isValid(); err != nil { if appErr := o.FileSettings.isValid(); appErr != nil {
return err return appErr
} }
if err := o.EmailSettings.isValid(); err != nil { if appErr := o.EmailSettings.isValid(); appErr != nil {
return err return appErr
} }
if err := o.LdapSettings.isValid(); err != nil { if appErr := o.LdapSettings.isValid(); appErr != nil {
return err return appErr
} }
if err := o.SamlSettings.isValid(); err != nil { if appErr := o.SamlSettings.isValid(); appErr != nil {
return err return appErr
} }
if *o.PasswordSettings.MinimumLength < PasswordMinimumLength || *o.PasswordSettings.MinimumLength > PasswordMaximumLength { if *o.PasswordSettings.MinimumLength < PasswordMinimumLength || *o.PasswordSettings.MinimumLength > PasswordMaximumLength {
return NewAppError("Config.IsValid", "model.config.is_valid.password_length.app_error", map[string]any{"MinLength": PasswordMinimumLength, "MaxLength": PasswordMaximumLength}, "", http.StatusBadRequest) return NewAppError("Config.IsValid", "model.config.is_valid.password_length.app_error", map[string]any{"MinLength": PasswordMinimumLength, "MaxLength": PasswordMaximumLength}, "", http.StatusBadRequest)
} }
if err := o.RateLimitSettings.isValid(); err != nil { if appErr := o.RateLimitSettings.isValid(); appErr != nil {
return err return appErr
} }
if err := o.ServiceSettings.isValid(); err != nil { if appErr := o.ServiceSettings.isValid(); appErr != nil {
return err return appErr
} }
if err := o.ElasticsearchSettings.isValid(); err != nil { if appErr := o.ElasticsearchSettings.isValid(); appErr != nil {
return err return appErr
} }
if err := o.BleveSettings.isValid(); err != nil { if appErr := o.BleveSettings.isValid(); appErr != nil {
return err return appErr
} }
if err := o.DataRetentionSettings.isValid(); err != nil { if appErr := o.DataRetentionSettings.isValid(); appErr != nil {
return err return appErr
} }
if err := o.LocalizationSettings.isValid(); err != nil { if appErr := o.LocalizationSettings.isValid(); appErr != nil {
return err return appErr
} }
if err := o.MessageExportSettings.isValid(); err != nil { if appErr := o.MessageExportSettings.isValid(); appErr != nil {
return err return appErr
} }
if err := o.DisplaySettings.isValid(); err != nil { if appErr := o.DisplaySettings.isValid(); appErr != nil {
return err return appErr
} }
if err := o.ImageProxySettings.isValid(); err != nil { if appErr := o.ImageProxySettings.isValid(); appErr != nil {
return err return appErr
} }
if err := o.ImportSettings.isValid(); err != nil { if appErr := o.ImportSettings.isValid(); appErr != nil {
return err return appErr
} }
return nil return nil
} }
@@ -3500,19 +3501,19 @@ func (s *LdapSettings) isValid() *AppError {
if *s.UserFilter != "" { if *s.UserFilter != "" {
if _, err := ldap.CompileFilter(*s.UserFilter); err != nil { if _, err := ldap.CompileFilter(*s.UserFilter); err != nil {
return NewAppError("ValidateFilter", "ent.ldap.validate_filter.app_error", nil, err.Error(), http.StatusBadRequest) return NewAppError("ValidateFilter", "ent.ldap.validate_filter.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
} }
if *s.GuestFilter != "" { if *s.GuestFilter != "" {
if _, err := ldap.CompileFilter(*s.GuestFilter); err != nil { if _, err := ldap.CompileFilter(*s.GuestFilter); err != nil {
return NewAppError("LdapSettings.isValid", "ent.ldap.validate_guest_filter.app_error", nil, err.Error(), http.StatusBadRequest) return NewAppError("LdapSettings.isValid", "ent.ldap.validate_guest_filter.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
} }
if *s.AdminFilter != "" { if *s.AdminFilter != "" {
if _, err := ldap.CompileFilter(*s.AdminFilter); err != nil { if _, err := ldap.CompileFilter(*s.AdminFilter); err != nil {
return NewAppError("LdapSettings.isValid", "ent.ldap.validate_admin_filter.app_error", nil, err.Error(), http.StatusBadRequest) return NewAppError("LdapSettings.isValid", "ent.ldap.validate_admin_filter.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
} }
} }
@@ -3644,13 +3645,13 @@ func (s *ServiceSettings) isValid() *AppError {
if *s.SiteURL != "" { if *s.SiteURL != "" {
if _, err := url.ParseRequestURI(*s.SiteURL); err != nil { if _, err := url.ParseRequestURI(*s.SiteURL); err != nil {
return NewAppError("Config.IsValid", "model.config.is_valid.site_url.app_error", nil, err.Error(), http.StatusBadRequest) return NewAppError("Config.IsValid", "model.config.is_valid.site_url.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
} }
if *s.WebsocketURL != "" { if *s.WebsocketURL != "" {
if _, err := url.ParseRequestURI(*s.WebsocketURL); err != nil { if _, err := url.ParseRequestURI(*s.WebsocketURL); err != nil {
return NewAppError("Config.IsValid", "model.config.is_valid.websocket_url.app_error", nil, err.Error(), http.StatusBadRequest) return NewAppError("Config.IsValid", "model.config.is_valid.websocket_url.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
} }
@@ -3706,7 +3707,7 @@ func (s *ElasticsearchSettings) isValid() *AppError {
} }
if _, err := time.Parse("15:04", *s.PostsAggregatorJobStartTime); err != nil { if _, err := time.Parse("15:04", *s.PostsAggregatorJobStartTime); err != nil {
return NewAppError("Config.IsValid", "model.config.is_valid.elastic_search.posts_aggregator_job_start_time.app_error", nil, err.Error(), http.StatusBadRequest) return NewAppError("Config.IsValid", "model.config.is_valid.elastic_search.posts_aggregator_job_start_time.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
if *s.LiveIndexingBatchSize < 1 { if *s.LiveIndexingBatchSize < 1 {
@@ -3756,7 +3757,7 @@ func (s *DataRetentionSettings) isValid() *AppError {
} }
if _, err := time.Parse("15:04", *s.DeletionJobStartTime); err != nil { if _, err := time.Parse("15:04", *s.DeletionJobStartTime); err != nil {
return NewAppError("Config.IsValid", "model.config.is_valid.data_retention.deletion_job_start_time.app_error", nil, err.Error(), http.StatusBadRequest) return NewAppError("Config.IsValid", "model.config.is_valid.data_retention.deletion_job_start_time.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
return nil return nil
@@ -3782,7 +3783,7 @@ func (s *MessageExportSettings) isValid() *AppError {
} else if s.DailyRunTime == nil { } else if s.DailyRunTime == nil {
return NewAppError("Config.IsValid", "model.config.is_valid.message_export.daily_runtime.app_error", nil, "", http.StatusBadRequest) return NewAppError("Config.IsValid", "model.config.is_valid.message_export.daily_runtime.app_error", nil, "", http.StatusBadRequest)
} else if _, err := time.Parse("15:04", *s.DailyRunTime); err != nil { } else if _, err := time.Parse("15:04", *s.DailyRunTime); err != nil {
return NewAppError("Config.IsValid", "model.config.is_valid.message_export.daily_runtime.app_error", nil, err.Error(), http.StatusBadRequest) return NewAppError("Config.IsValid", "model.config.is_valid.message_export.daily_runtime.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} else if s.BatchSize == nil || *s.BatchSize < 0 { } else if s.BatchSize == nil || *s.BatchSize < 0 {
return NewAppError("Config.IsValid", "model.config.is_valid.message_export.batch_size.app_error", nil, "", http.StatusBadRequest) return NewAppError("Config.IsValid", "model.config.is_valid.message_export.batch_size.app_error", nil, "", http.StatusBadRequest)
} else if s.ExportFormat == nil || (*s.ExportFormat != ComplianceExportTypeActiance && *s.ExportFormat != ComplianceExportTypeGlobalrelay && *s.ExportFormat != ComplianceExportTypeCsv) { } else if s.ExportFormat == nil || (*s.ExportFormat != ComplianceExportTypeActiance && *s.ExportFormat != ComplianceExportTypeGlobalrelay && *s.ExportFormat != ComplianceExportTypeCsv) {

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

@@ -159,8 +159,8 @@ func TestConfigIsValidDefaultAlgorithms(t *testing.T) {
*c1.SamlSettings.EmailAttribute = "Email" *c1.SamlSettings.EmailAttribute = "Email"
*c1.SamlSettings.UsernameAttribute = "Username" *c1.SamlSettings.UsernameAttribute = "Username"
err := c1.SamlSettings.isValid() appErr := c1.SamlSettings.isValid()
require.Nil(t, err) require.Nil(t, appErr)
} }
func TestConfigServiceProviderDefault(t *testing.T) { func TestConfigServiceProviderDefault(t *testing.T) {
@@ -180,8 +180,8 @@ func TestConfigServiceProviderDefault(t *testing.T) {
c1.SetDefaults() c1.SetDefaults()
assert.Equal(t, *c1.SamlSettings.ServiceProviderIdentifier, *c1.SamlSettings.IdpDescriptorURL) assert.Equal(t, *c1.SamlSettings.ServiceProviderIdentifier, *c1.SamlSettings.IdpDescriptorURL)
err := c1.SamlSettings.isValid() appErr := c1.SamlSettings.isValid()
require.Nil(t, err) require.Nil(t, appErr)
} }
func TestConfigIsValidFakeAlgorithm(t *testing.T) { func TestConfigIsValidFakeAlgorithm(t *testing.T) {
@@ -202,17 +202,17 @@ func TestConfigIsValidFakeAlgorithm(t *testing.T) {
temp := *c1.SamlSettings.CanonicalAlgorithm temp := *c1.SamlSettings.CanonicalAlgorithm
*c1.SamlSettings.CanonicalAlgorithm = "Fake Algorithm" *c1.SamlSettings.CanonicalAlgorithm = "Fake Algorithm"
err := c1.SamlSettings.isValid() appErr := c1.SamlSettings.isValid()
require.NotNil(t, err) require.NotNil(t, appErr)
require.Equal(t, "model.config.is_valid.saml_canonical_algorithm.app_error", err.Message) require.Equal(t, "model.config.is_valid.saml_canonical_algorithm.app_error", appErr.Message)
*c1.SamlSettings.CanonicalAlgorithm = temp *c1.SamlSettings.CanonicalAlgorithm = temp
*c1.SamlSettings.SignatureAlgorithm = "Fake Algorithm" *c1.SamlSettings.SignatureAlgorithm = "Fake Algorithm"
err = c1.SamlSettings.isValid() appErr = c1.SamlSettings.isValid()
require.NotNil(t, err) require.NotNil(t, appErr)
require.Equal(t, "model.config.is_valid.saml_signature_algorithm.app_error", err.Message) require.Equal(t, "model.config.is_valid.saml_signature_algorithm.app_error", appErr.Message)
} }
func TestConfigOverwriteGuestSettings(t *testing.T) { func TestConfigOverwriteGuestSettings(t *testing.T) {
@@ -794,9 +794,9 @@ func TestDisplaySettingsIsValidCustomURLSchemes(t *testing.T) {
ds.CustomURLSchemes = test.value ds.CustomURLSchemes = test.value
if err := ds.isValid(); err != nil && test.valid { if appErr := ds.isValid(); appErr != nil && test.valid {
t.Error("Expected CustomURLSchemes to be valid but got error:", err) t.Error("Expected CustomURLSchemes to be valid but got error:", appErr)
} else if err == nil && !test.valid { } else if appErr == nil && !test.valid {
t.Error("Expected CustomURLSchemes to be invalid but got no error") t.Error("Expected CustomURLSchemes to be invalid but got no error")
} }
}) })
@@ -837,9 +837,9 @@ func TestListenAddressIsValidated(t *testing.T) {
if expected { if expected {
require.Nil(t, ss.isValid(), fmt.Sprintf("Got an error from '%v'.", key)) require.Nil(t, ss.isValid(), fmt.Sprintf("Got an error from '%v'.", key))
} else { } else {
err := ss.isValid() appErr := ss.isValid()
require.NotNil(t, err, fmt.Sprintf("Expected '%v' to throw an error.", key)) require.NotNil(t, appErr, fmt.Sprintf("Expected '%v' to throw an error.", key))
require.Equal(t, "model.config.is_valid.listen_address.app_error", err.Message) require.Equal(t, "model.config.is_valid.listen_address.app_error", appErr.Message)
} }
} }
@@ -926,11 +926,11 @@ func TestImageProxySettingsIsValid(t *testing.T) {
RemoteImageProxyOptions: &test.RemoteImageProxyOptions, RemoteImageProxyOptions: &test.RemoteImageProxyOptions,
} }
err := ips.isValid() appErr := ips.isValid()
if test.ExpectError { if test.ExpectError {
assert.NotNil(t, err) assert.NotNil(t, appErr)
} else { } else {
assert.Nil(t, err) assert.Nil(t, appErr)
} }
}) })
} }
@@ -1277,11 +1277,11 @@ func TestLdapSettingsIsValid(t *testing.T) {
t.Run(test.Name, func(t *testing.T) { t.Run(test.Name, func(t *testing.T) {
test.LdapSettings.SetDefaults() test.LdapSettings.SetDefaults()
err := test.LdapSettings.isValid() appErr := test.LdapSettings.isValid()
if test.ExpectError { if test.ExpectError {
assert.NotNil(t, err) assert.NotNil(t, appErr)
} else { } else {
assert.Nil(t, err) assert.Nil(t, appErr)
} }
}) })
} }
@@ -1323,7 +1323,7 @@ func TestConfigFilteredByTag(t *testing.T) {
// Remove entire sections but the map is still there // Remove entire sections but the map is still there
clusterSettings, ok := cfgMap["SqlSettings"].(map[string]any) clusterSettings, ok := cfgMap["SqlSettings"].(map[string]any)
require.True(t, ok) require.True(t, ok)
require.Equal(t, 0, len(clusterSettings)) require.Empty(t, clusterSettings)
// Some fields are removed if they have the filtering tag // Some fields are removed if they have the filtering tag
serviceSettings, ok := cfgMap["ServiceSettings"].(map[string]any) serviceSettings, ok := cfgMap["ServiceSettings"].(map[string]any)
@@ -1423,20 +1423,20 @@ func TestConfigImportSettingsIsValid(t *testing.T) {
cfg := Config{} cfg := Config{}
cfg.SetDefaults() cfg.SetDefaults()
err := cfg.ImportSettings.isValid() appErr := cfg.ImportSettings.isValid()
require.Nil(t, err) require.Nil(t, appErr)
*cfg.ImportSettings.Directory = "" *cfg.ImportSettings.Directory = ""
err = cfg.ImportSettings.isValid() appErr = cfg.ImportSettings.isValid()
require.NotNil(t, err) require.NotNil(t, appErr)
require.Equal(t, "model.config.is_valid.import.directory.app_error", err.Id) require.Equal(t, "model.config.is_valid.import.directory.app_error", appErr.Id)
cfg.SetDefaults() cfg.SetDefaults()
*cfg.ImportSettings.RetentionDays = 0 *cfg.ImportSettings.RetentionDays = 0
err = cfg.ImportSettings.isValid() appErr = cfg.ImportSettings.isValid()
require.NotNil(t, err) require.NotNil(t, appErr)
require.Equal(t, "model.config.is_valid.import.retention_days_too_low.app_error", err.Id) require.Equal(t, "model.config.is_valid.import.retention_days_too_low.app_error", appErr.Id)
} }
func TestConfigExportSettingsDefaults(t *testing.T) { func TestConfigExportSettingsDefaults(t *testing.T) {
@@ -1451,57 +1451,57 @@ func TestConfigExportSettingsIsValid(t *testing.T) {
cfg := Config{} cfg := Config{}
cfg.SetDefaults() cfg.SetDefaults()
err := cfg.ExportSettings.isValid() appErr := cfg.ExportSettings.isValid()
require.Nil(t, err) require.Nil(t, appErr)
*cfg.ExportSettings.Directory = "" *cfg.ExportSettings.Directory = ""
err = cfg.ExportSettings.isValid() appErr = cfg.ExportSettings.isValid()
require.NotNil(t, err) require.NotNil(t, appErr)
require.Equal(t, "model.config.is_valid.export.directory.app_error", err.Id) require.Equal(t, "model.config.is_valid.export.directory.app_error", appErr.Id)
cfg.SetDefaults() cfg.SetDefaults()
*cfg.ExportSettings.RetentionDays = 0 *cfg.ExportSettings.RetentionDays = 0
err = cfg.ExportSettings.isValid() appErr = cfg.ExportSettings.isValid()
require.NotNil(t, err) require.NotNil(t, appErr)
require.Equal(t, "model.config.is_valid.export.retention_days_too_low.app_error", err.Id) require.Equal(t, "model.config.is_valid.export.retention_days_too_low.app_error", appErr.Id)
} }
func TestConfigServiceSettingsIsValid(t *testing.T) { func TestConfigServiceSettingsIsValid(t *testing.T) {
cfg := Config{} cfg := Config{}
cfg.SetDefaults() cfg.SetDefaults()
err := cfg.ServiceSettings.isValid() appErr := cfg.ServiceSettings.isValid()
require.Nil(t, err) require.Nil(t, appErr)
*cfg.ServiceSettings.CollapsedThreads = CollapsedThreadsDisabled *cfg.ServiceSettings.CollapsedThreads = CollapsedThreadsDisabled
err = cfg.ServiceSettings.isValid() appErr = cfg.ServiceSettings.isValid()
require.Nil(t, err) require.Nil(t, appErr)
*cfg.ServiceSettings.ThreadAutoFollow = false *cfg.ServiceSettings.ThreadAutoFollow = false
err = cfg.ServiceSettings.isValid() appErr = cfg.ServiceSettings.isValid()
require.Nil(t, err) require.Nil(t, appErr)
*cfg.ServiceSettings.CollapsedThreads = CollapsedThreadsDefaultOff *cfg.ServiceSettings.CollapsedThreads = CollapsedThreadsDefaultOff
err = cfg.ServiceSettings.isValid() appErr = cfg.ServiceSettings.isValid()
require.NotNil(t, err) require.NotNil(t, appErr)
require.Equal(t, "model.config.is_valid.collapsed_threads.autofollow.app_error", err.Id) require.Equal(t, "model.config.is_valid.collapsed_threads.autofollow.app_error", appErr.Id)
*cfg.ServiceSettings.CollapsedThreads = CollapsedThreadsDefaultOn *cfg.ServiceSettings.CollapsedThreads = CollapsedThreadsDefaultOn
err = cfg.ServiceSettings.isValid() appErr = cfg.ServiceSettings.isValid()
require.NotNil(t, err) require.NotNil(t, appErr)
require.Equal(t, "model.config.is_valid.collapsed_threads.autofollow.app_error", err.Id) require.Equal(t, "model.config.is_valid.collapsed_threads.autofollow.app_error", appErr.Id)
*cfg.ServiceSettings.CollapsedThreads = CollapsedThreadsAlwaysOn *cfg.ServiceSettings.CollapsedThreads = CollapsedThreadsAlwaysOn
err = cfg.ServiceSettings.isValid() appErr = cfg.ServiceSettings.isValid()
require.NotNil(t, err) require.NotNil(t, appErr)
require.Equal(t, "model.config.is_valid.collapsed_threads.autofollow.app_error", err.Id) require.Equal(t, "model.config.is_valid.collapsed_threads.autofollow.app_error", appErr.Id)
*cfg.ServiceSettings.ThreadAutoFollow = true *cfg.ServiceSettings.ThreadAutoFollow = true
*cfg.ServiceSettings.CollapsedThreads = "test_status" *cfg.ServiceSettings.CollapsedThreads = "test_status"
err = cfg.ServiceSettings.isValid() appErr = cfg.ServiceSettings.isValid()
require.NotNil(t, err) require.NotNil(t, appErr)
require.Equal(t, "model.config.is_valid.collapsed_threads.app_error", err.Id) require.Equal(t, "model.config.is_valid.collapsed_threads.app_error", appErr.Id)
} }
func TestConfigDefaultCallsPluginState(t *testing.T) { func TestConfigDefaultCallsPluginState(t *testing.T) {

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

@@ -161,7 +161,7 @@ func GetInfoForBytes(name string, data io.ReadSeeker, size int) (*FileInfo, *App
if err != nil { if err != nil {
// Still return the rest of the info even though it doesn't appear to be an actual gif // Still return the rest of the info even though it doesn't appear to be an actual gif
info.HasPreviewImage = true info.HasPreviewImage = true
return info, NewAppError("GetInfoForBytes", "model.file_info.get.gif.app_error", nil, err.Error(), http.StatusBadRequest) return info, NewAppError("GetInfoForBytes", "model.file_info.get.gif.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
info.HasPreviewImage = frameCount == 1 info.HasPreviewImage = frameCount == 1
} else { } else {

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

@@ -187,8 +187,8 @@ func TestGetInfoForFile(t *testing.T) {
for _, tc := range ttc { for _, tc := range ttc {
t.Run(tc.testName, func(t *testing.T) { t.Run(tc.testName, func(t *testing.T) {
info, errApp := GetInfoForBytes(tc.filename, bytes.NewReader(tc.file), len(tc.file)) info, appErr := GetInfoForBytes(tc.filename, bytes.NewReader(tc.file), len(tc.file))
require.Nil(t, errApp) require.Nil(t, appErr)
assert.Equalf(t, tc.filename, info.Name, "Got incorrect filename: %v", info.Name) assert.Equalf(t, tc.filename, info.Name, "Got incorrect filename: %v", info.Name)
assert.Equalf(t, tc.expectedExtension, info.Extension, "Got incorrect extension: %v", info.Extension) assert.Equalf(t, tc.expectedExtension, info.Extension, "Got incorrect extension: %v", info.Extension)

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

@@ -149,9 +149,9 @@ func (group *Group) Patch(patch *GroupPatch) {
} }
func (group *Group) IsValidForCreate() *AppError { func (group *Group) IsValidForCreate() *AppError {
err := group.IsValidName() appErr := group.IsValidName()
if err != nil { if appErr != nil {
return err return appErr
} }
if l := len(group.DisplayName); l == 0 || l > GroupDisplayNameMaxLength { if l := len(group.DisplayName); l == 0 || l > GroupDisplayNameMaxLength {
@@ -199,8 +199,8 @@ func (group *Group) IsValidForUpdate() *AppError {
if group.UpdateAt == 0 { if group.UpdateAt == 0 {
return NewAppError("Group.IsValidForUpdate", "model.group.update_at.app_error", nil, "", http.StatusBadRequest) return NewAppError("Group.IsValidForUpdate", "model.group.update_at.app_error", nil, "", http.StatusBadRequest)
} }
if err := group.IsValidForCreate(); err != nil { if appErr := group.IsValidForCreate(); appErr != nil {
return err return appErr
} }
return nil return nil
} }

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

@@ -123,22 +123,24 @@ func (o *IncomingWebhook) PreUpdate() {
// try to handle that. An example invalid JSON string from an incoming webhook // try to handle that. An example invalid JSON string from an incoming webhook
// might look like this (strings for both "text" and "fallback" attributes are // might look like this (strings for both "text" and "fallback" attributes are
// invalid JSON strings because they contain unescaped newlines and tabs): // invalid JSON strings because they contain unescaped newlines and tabs):
// `{ //
// "text": "this is a test // `{
// that contains a newline and tabs", // "text": "this is a test
// "attachments": [ // that contains a newline and tabs",
// { // "attachments": [
// "fallback": "Required plain-text summary of the attachment // {
// that contains a newline and tabs", // "fallback": "Required plain-text summary of the attachment
// "color": "#36a64f", // that contains a newline and tabs",
// ... // "color": "#36a64f",
// "text": "Optional text that appears within the attachment // ...
// that contains a newline and tabs", // "text": "Optional text that appears within the attachment
// ... // that contains a newline and tabs",
// "thumb_url": "http://example.com/path/to/thumb.png" // ...
// } // "thumb_url": "http://example.com/path/to/thumb.png"
// ] // }
// }` // ]
// }`
//
// This function will search for `"key": "value"` pairs, and escape \n, \t // This function will search for `"key": "value"` pairs, and escape \n, \t
// from the value. // from the value.
func escapeControlCharsFromPayload(by []byte) []byte { func escapeControlCharsFromPayload(by []byte) []byte {
@@ -191,7 +193,7 @@ func IncomingWebhookRequestFromJSON(data io.Reader) (*IncomingWebhookRequest, *A
if err != nil { if err != nil {
o, err = decodeIncomingWebhookRequest(escapeControlCharsFromPayload(by)) o, err = decodeIncomingWebhookRequest(escapeControlCharsFromPayload(by))
if err != nil { if err != nil {
return nil, NewAppError("IncomingWebhookRequestFromJSON", "model.incoming_hook.parse_data.app_error", nil, err.Error(), http.StatusBadRequest) return nil, NewAppError("IncomingWebhookRequestFromJSON", "model.incoming_hook.parse_data.app_error", nil, "", http.StatusBadRequest).Wrap(err)
} }
} }

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

@@ -151,27 +151,30 @@ func TimeRangeToNumberDays(timeRange string) int {
// ChannelPostCountByDuration contains a count of posts by channel id, grouped by ISO8601 date string. // ChannelPostCountByDuration contains a count of posts by channel id, grouped by ISO8601 date string.
// Example 1 (grouped by day): // Example 1 (grouped by day):
// cpc := model.ChannelPostCountByDuration{ //
// "2009-11-11": { // cpc := model.ChannelPostCountByDuration{
// "ezbp7nqxzjgdir8riodyafr9ww": 90, // "2009-11-11": {
// "p949c1xdojfgzffxma3p3s3ikr": 201, // "ezbp7nqxzjgdir8riodyafr9ww": 90,
// }, // "p949c1xdojfgzffxma3p3s3ikr": 201,
// "2009-11-12": { // },
// "ezbp7nqxzjgdir8riodyafr9ww": 45, // "2009-11-12": {
// "p949c1xdojfgzffxma3p3s3ikr": 68, // "ezbp7nqxzjgdir8riodyafr9ww": 45,
// }, // "p949c1xdojfgzffxma3p3s3ikr": 68,
// } // },
// }
//
// Example 2 (grouped by hour): // Example 2 (grouped by hour):
// cpc := model.ChannelPostCountByDuration{ //
// "2009-11-11T01": { // cpc := model.ChannelPostCountByDuration{
// "ezbp7nqxzjgdir8riodyafr9ww": 90, // "2009-11-11T01": {
// "p949c1xdojfgzffxma3p3s3ikr": 201, // "ezbp7nqxzjgdir8riodyafr9ww": 90,
// }, // "p949c1xdojfgzffxma3p3s3ikr": 201,
// "2009-11-11T02": { // },
// "ezbp7nqxzjgdir8riodyafr9ww": 45, // "2009-11-11T02": {
// "p949c1xdojfgzffxma3p3s3ikr": 68, // "ezbp7nqxzjgdir8riodyafr9ww": 45,
// }, // "p949c1xdojfgzffxma3p3s3ikr": 68,
// } // },
// }
type ChannelPostCountByDuration map[string]map[string]int type ChannelPostCountByDuration map[string]map[string]int
func blankChannelCountsMap(channelIDs []string) map[string]int { func blankChannelCountsMap(channelIDs []string) map[string]int {

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

@@ -261,7 +261,7 @@ func GenerateTriggerId(userId string, s crypto.Signer) (string, string, *AppErro
sum.Write([]byte(triggerData)) sum.Write([]byte(triggerData))
signature, err := s.Sign(rand.Reader, sum.Sum(nil), h) signature, err := s.Sign(rand.Reader, sum.Sum(nil), h)
if err != nil { if err != nil {
return "", "", NewAppError("GenerateTriggerId", "interactive_message.generate_trigger_id.signing_failed", nil, err.Error(), http.StatusInternalServerError) return "", "", NewAppError("GenerateTriggerId", "interactive_message.generate_trigger_id.signing_failed", nil, "", http.StatusInternalServerError).Wrap(err)
} }
base64Sig := base64.StdEncoding.EncodeToString(signature) base64Sig := base64.StdEncoding.EncodeToString(signature)
@@ -271,9 +271,9 @@ func GenerateTriggerId(userId string, s crypto.Signer) (string, string, *AppErro
} }
func (r *PostActionIntegrationRequest) GenerateTriggerId(s crypto.Signer) (string, string, *AppError) { func (r *PostActionIntegrationRequest) GenerateTriggerId(s crypto.Signer) (string, string, *AppError) {
clientTriggerId, triggerId, err := GenerateTriggerId(r.UserId, s) clientTriggerId, triggerId, appErr := GenerateTriggerId(r.UserId, s)
if err != nil { if appErr != nil {
return "", "", err return "", "", appErr
} }
r.TriggerId = triggerId r.TriggerId = triggerId
@@ -283,7 +283,7 @@ func (r *PostActionIntegrationRequest) GenerateTriggerId(s crypto.Signer) (strin
func DecodeAndVerifyTriggerId(triggerId string, s *ecdsa.PrivateKey) (string, string, *AppError) { func DecodeAndVerifyTriggerId(triggerId string, s *ecdsa.PrivateKey) (string, string, *AppError) {
triggerIdBytes, err := base64.StdEncoding.DecodeString(triggerId) triggerIdBytes, err := base64.StdEncoding.DecodeString(triggerId)
if err != nil { if err != nil {
return "", "", NewAppError("DecodeAndVerifyTriggerId", "interactive_message.decode_trigger_id.base64_decode_failed", nil, err.Error(), http.StatusBadRequest) return "", "", NewAppError("DecodeAndVerifyTriggerId", "interactive_message.decode_trigger_id.base64_decode_failed", nil, "", http.StatusBadRequest).Wrap(err)
} }
split := strings.Split(string(triggerIdBytes), ":") split := strings.Split(string(triggerIdBytes), ":")
@@ -303,7 +303,7 @@ func DecodeAndVerifyTriggerId(triggerId string, s *ecdsa.PrivateKey) (string, st
signature, err := base64.StdEncoding.DecodeString(split[3]) signature, err := base64.StdEncoding.DecodeString(split[3])
if err != nil { if err != nil {
return "", "", NewAppError("DecodeAndVerifyTriggerId", "interactive_message.decode_trigger_id.base64_decode_failed_signature", nil, err.Error(), http.StatusBadRequest) return "", "", NewAppError("DecodeAndVerifyTriggerId", "interactive_message.decode_trigger_id.base64_decode_failed_signature", nil, "", http.StatusBadRequest).Wrap(err)
} }
var esig struct { var esig struct {
@@ -311,7 +311,7 @@ func DecodeAndVerifyTriggerId(triggerId string, s *ecdsa.PrivateKey) (string, st
} }
if _, err := asn1.Unmarshal(signature, &esig); err != nil { if _, err := asn1.Unmarshal(signature, &esig); err != nil {
return "", "", NewAppError("DecodeAndVerifyTriggerId", "interactive_message.decode_trigger_id.signature_decode_failed", nil, err.Error(), http.StatusBadRequest) return "", "", NewAppError("DecodeAndVerifyTriggerId", "interactive_message.decode_trigger_id.signature_decode_failed", nil, "", http.StatusBadRequest).Wrap(err)
} }
triggerData := strings.Join([]string{clientTriggerId, userId, timestampStr}, ":") + ":" triggerData := strings.Join([]string{clientTriggerId, userId, timestampStr}, ":") + ":"

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

@@ -20,10 +20,10 @@ func TestTriggerIdDecodeAndVerification(t *testing.T) {
t.Run("should succeed decoding and validation", func(t *testing.T) { t.Run("should succeed decoding and validation", func(t *testing.T) {
userId := NewId() userId := NewId()
clientTriggerId, triggerId, err := GenerateTriggerId(userId, key) clientTriggerId, triggerId, appErr := GenerateTriggerId(userId, key)
require.Nil(t, err) require.Nil(t, appErr)
decodedClientTriggerId, decodedUserId, err := DecodeAndVerifyTriggerId(triggerId, key) decodedClientTriggerId, decodedUserId, appErr := DecodeAndVerifyTriggerId(triggerId, key)
assert.Nil(t, err) assert.Nil(t, appErr)
assert.Equal(t, clientTriggerId, decodedClientTriggerId) assert.Equal(t, clientTriggerId, decodedClientTriggerId)
assert.Equal(t, userId, decodedUserId) assert.Equal(t, userId, decodedUserId)
}) })
@@ -32,53 +32,53 @@ func TestTriggerIdDecodeAndVerification(t *testing.T) {
actionReq := &PostActionIntegrationRequest{ actionReq := &PostActionIntegrationRequest{
UserId: NewId(), UserId: NewId(),
} }
clientTriggerId, triggerId, err := actionReq.GenerateTriggerId(key) clientTriggerId, triggerId, appErr := actionReq.GenerateTriggerId(key)
require.Nil(t, err) require.Nil(t, appErr)
dialogReq := &OpenDialogRequest{TriggerId: triggerId} dialogReq := &OpenDialogRequest{TriggerId: triggerId}
decodedClientTriggerId, decodedUserId, err := dialogReq.DecodeAndVerifyTriggerId(key) decodedClientTriggerId, decodedUserId, appErr := dialogReq.DecodeAndVerifyTriggerId(key)
assert.Nil(t, err) assert.Nil(t, appErr)
assert.Equal(t, clientTriggerId, decodedClientTriggerId) assert.Equal(t, clientTriggerId, decodedClientTriggerId)
assert.Equal(t, actionReq.UserId, decodedUserId) assert.Equal(t, actionReq.UserId, decodedUserId)
}) })
t.Run("should fail on base64 decode", func(t *testing.T) { t.Run("should fail on base64 decode", func(t *testing.T) {
_, _, err := DecodeAndVerifyTriggerId("junk!", key) _, _, appErr := DecodeAndVerifyTriggerId("junk!", key)
require.NotNil(t, err) require.NotNil(t, appErr)
assert.Equal(t, "interactive_message.decode_trigger_id.base64_decode_failed", err.Id) assert.Equal(t, "interactive_message.decode_trigger_id.base64_decode_failed", appErr.Id)
}) })
t.Run("should fail on trigger parsing", func(t *testing.T) { t.Run("should fail on trigger parsing", func(t *testing.T) {
_, _, err := DecodeAndVerifyTriggerId(base64.StdEncoding.EncodeToString([]byte("junk!")), key) _, _, appErr := DecodeAndVerifyTriggerId(base64.StdEncoding.EncodeToString([]byte("junk!")), key)
require.NotNil(t, err) require.NotNil(t, appErr)
assert.Equal(t, "interactive_message.decode_trigger_id.missing_data", err.Id) assert.Equal(t, "interactive_message.decode_trigger_id.missing_data", appErr.Id)
}) })
t.Run("should fail on expired timestamp", func(t *testing.T) { t.Run("should fail on expired timestamp", func(t *testing.T) {
_, _, err := DecodeAndVerifyTriggerId(base64.StdEncoding.EncodeToString([]byte("some-trigger-id:some-user-id:1234567890:junksignature")), key) _, _, appErr := DecodeAndVerifyTriggerId(base64.StdEncoding.EncodeToString([]byte("some-trigger-id:some-user-id:1234567890:junksignature")), key)
require.NotNil(t, err) require.NotNil(t, appErr)
assert.Equal(t, "interactive_message.decode_trigger_id.expired", err.Id) assert.Equal(t, "interactive_message.decode_trigger_id.expired", appErr.Id)
}) })
t.Run("should fail on base64 decoding signature", func(t *testing.T) { t.Run("should fail on base64 decoding signature", func(t *testing.T) {
_, _, err := DecodeAndVerifyTriggerId(base64.StdEncoding.EncodeToString([]byte("some-trigger-id:some-user-id:12345678900000:junk!")), key) _, _, appErr := DecodeAndVerifyTriggerId(base64.StdEncoding.EncodeToString([]byte("some-trigger-id:some-user-id:12345678900000:junk!")), key)
require.NotNil(t, err) require.NotNil(t, appErr)
assert.Equal(t, "interactive_message.decode_trigger_id.base64_decode_failed_signature", err.Id) assert.Equal(t, "interactive_message.decode_trigger_id.base64_decode_failed_signature", appErr.Id)
}) })
t.Run("should fail on bad signature", func(t *testing.T) { t.Run("should fail on bad signature", func(t *testing.T) {
_, _, err := DecodeAndVerifyTriggerId(base64.StdEncoding.EncodeToString([]byte("some-trigger-id:some-user-id:12345678900000:junk")), key) _, _, appErr := DecodeAndVerifyTriggerId(base64.StdEncoding.EncodeToString([]byte("some-trigger-id:some-user-id:12345678900000:junk")), key)
require.NotNil(t, err) require.NotNil(t, appErr)
assert.Equal(t, "interactive_message.decode_trigger_id.signature_decode_failed", err.Id) assert.Equal(t, "interactive_message.decode_trigger_id.signature_decode_failed", appErr.Id)
}) })
t.Run("should fail on bad key", func(t *testing.T) { t.Run("should fail on bad key", func(t *testing.T) {
_, triggerId, err := GenerateTriggerId(NewId(), key) _, triggerId, appErr := GenerateTriggerId(NewId(), key)
require.Nil(t, err) require.Nil(t, appErr)
newKey, keyErr := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) newKey, keyErr := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
require.NoError(t, keyErr) require.NoError(t, keyErr)
_, _, err = DecodeAndVerifyTriggerId(triggerId, newKey) _, _, appErr = DecodeAndVerifyTriggerId(triggerId, newKey)
require.NotNil(t, err) require.NotNil(t, appErr)
assert.Equal(t, "interactive_message.decode_trigger_id.verify_signature_failed", err.Id) assert.Equal(t, "interactive_message.decode_trigger_id.verify_signature_failed", appErr.Id)
}) })
} }

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше