Merge branch 'master' into MM-45118_my_top_dms
Этот коммит содержится в:
4
Makefile
4
Makefile
@@ -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)
|
|
||||||
}
|
}
|
||||||
|
|||||||
29
api4/post.go
29
api4/post.go
@@ -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
|
||||||
|
|||||||
10
app/admin.go
10
app/admin.go
@@ -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
|
||||||
|
|||||||
66
app/bot.go
66
app/bot.go
@@ -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
|
||||||
|
|||||||
10
app/brand.go
10
app/brand.go
@@ -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
|
||||||
|
|||||||
342
app/channel.go
342
app/channel.go
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
38
app/emoji.go
38
app/emoji.go
@@ -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 {
|
||||||
|
|||||||
56
app/file.go
56
app/file.go
@@ -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, <Err):
|
case errors.As(err, <Err):
|
||||||
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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
130
app/group.go
130
app/group.go
@@ -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, ¬FoundErr) {
|
if err != nil && !errors.As(err, ¬FoundErr) {
|
||||||
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, ¬FoundErr) {
|
if err != nil && !errors.As(err, ¬FoundErr) {
|
||||||
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
|
||||||
|
|||||||
10
app/job.go
10
app/job.go
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
10
app/ldap.go
10
app/ldap.go
@@ -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)
|
||||||
|
|||||||
70
app/oauth.go
70
app/oauth.go
@@ -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...)
|
||||||
|
|||||||
129
app/post.go
129
app/post.go
@@ -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, ¬icesCache, skip)
|
data, err := utils.GetURLWithCache(url, ¬icesCache, 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
|
||||||
}
|
}
|
||||||
|
|||||||
26
app/role.go
26
app/role.go
@@ -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
|
||||||
|
|||||||
20
app/saml.go
20
app/saml.go
@@ -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:
|
||||||
|
|||||||
268
app/team.go
268
app/team.go
@@ -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, <Err):
|
case errors.As(err, <Err):
|
||||||
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
|
||||||
|
|||||||
268
app/user.go
268
app/user.go
@@ -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, ¬FoundErr) {
|
if err != nil && !errors.As(err, ¬FoundErr) {
|
||||||
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 "$@"
|
||||||
|
|||||||
16
i18n/en.json
16
i18n/en.json
@@ -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()
|
||||||
|
|||||||
38
jobs/jobs.go
38
jobs/jobs.go
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
778
model/client4.go
778
model/client4.go
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
@@ -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
|
||||||
|
|||||||
103
model/config.go
103
model/config.go
@@ -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)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Ссылка в новой задаче
Block a user