MM-21898 - Part 1: Generate and use an interface instead of *A… (#13840)

* Generate and use an interface instead of *App
Этот коммит содержится в:
Eli Yukelzon
2020-02-13 13:26:58 +01:00
коммит произвёл GitHub
родитель 66fc096768
Коммит 17523fa5d9
200 изменённых файлов: 4553 добавлений и 2361 удалений

2
.gitignore поставляемый
Просмотреть файл

@@ -101,3 +101,5 @@ tags
debug debug
client client
__debug_bin
report.xml

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

@@ -202,6 +202,10 @@ ifneq ($(MM_NO_ENTERPRISE_LINT),true)
endif endif
endif endif
app-layers: ## Extract interface from App struct
env GO111MODULE=off $(GO) get -u github.com/reflog/struct2interface
$(GOBIN)/struct2interface -f "app" -o "app/app_iface.go" -p "app" -s "App" -i "AppIface" -t ./app/layer_generators/app_iface.go.tmpl
i18n-extract: ## Extract strings for translation from the source code i18n-extract: ## Extract strings for translation from the source code
env GO111MODULE=off $(GO) get -u github.com/mattermost/mattermost-utilities/mmgotool env GO111MODULE=off $(GO) get -u github.com/mattermost/mattermost-utilities/mmgotool
$(GOBIN)/mmgotool i18n extract $(GOBIN)/mmgotool i18n extract

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

@@ -114,10 +114,10 @@ func setupTestHelper(enterprise bool, updateConfig func(*model.Config)) *TestHel
} }
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.ListenAddress = prevListenAddress }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.ListenAddress = prevListenAddress })
Init(th.Server, th.Server.AppOptions, th.App.Srv.Router) Init(th.Server, th.Server.AppOptions, th.App.Srv().Router)
web.New(th.Server, th.Server.AppOptions, th.App.Srv.Router) web.New(th.Server, th.Server.AppOptions, th.App.Srv().Router)
wsapi.Init(th.App, th.App.Srv.WebSocketRouter) wsapi.Init(th.App, th.App.Srv().WebSocketRouter)
th.App.Srv.Store.MarkSystemRanUnitTests() th.App.Srv().Store.MarkSystemRanUnitTests()
th.App.DoAppMigrations() th.App.DoAppMigrations()
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableOpenServer = true }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableOpenServer = true })
@@ -227,7 +227,7 @@ func (me *TestHelper) InitBasic() *TestHelper {
func (me *TestHelper) waitForConnectivity() { func (me *TestHelper) waitForConnectivity() {
for i := 0; i < 1000; i++ { for i := 0; i < 1000; i++ {
conn, err := net.Dial("tcp", fmt.Sprintf("localhost:%v", me.App.Srv.ListenAddr.Port)) conn, err := net.Dial("tcp", fmt.Sprintf("localhost:%v", me.App.Srv().ListenAddr.Port))
if err == nil { if err == nil {
conn.Close() conn.Close()
return return
@@ -238,19 +238,19 @@ func (me *TestHelper) waitForConnectivity() {
} }
func (me *TestHelper) CreateClient() *model.Client4 { func (me *TestHelper) CreateClient() *model.Client4 {
return model.NewAPIv4Client(fmt.Sprintf("http://localhost:%v", me.App.Srv.ListenAddr.Port)) return model.NewAPIv4Client(fmt.Sprintf("http://localhost:%v", me.App.Srv().ListenAddr.Port))
} }
func (me *TestHelper) CreateWebSocketClient() (*model.WebSocketClient, *model.AppError) { func (me *TestHelper) CreateWebSocketClient() (*model.WebSocketClient, *model.AppError) {
return model.NewWebSocketClient4(fmt.Sprintf("ws://localhost:%v", me.App.Srv.ListenAddr.Port), me.Client.AuthToken) return model.NewWebSocketClient4(fmt.Sprintf("ws://localhost:%v", me.App.Srv().ListenAddr.Port), me.Client.AuthToken)
} }
func (me *TestHelper) CreateWebSocketSystemAdminClient() (*model.WebSocketClient, *model.AppError) { func (me *TestHelper) CreateWebSocketSystemAdminClient() (*model.WebSocketClient, *model.AppError) {
return model.NewWebSocketClient4(fmt.Sprintf("ws://localhost:%v", me.App.Srv.ListenAddr.Port), me.SystemAdminClient.AuthToken) return model.NewWebSocketClient4(fmt.Sprintf("ws://localhost:%v", me.App.Srv().ListenAddr.Port), me.SystemAdminClient.AuthToken)
} }
func (me *TestHelper) CreateWebSocketClientWithClient(client *model.Client4) (*model.WebSocketClient, *model.AppError) { func (me *TestHelper) CreateWebSocketClientWithClient(client *model.Client4) (*model.WebSocketClient, *model.AppError) {
return model.NewWebSocketClient4(fmt.Sprintf("ws://localhost:%v", me.App.Srv.ListenAddr.Port), client.AuthToken) return model.NewWebSocketClient4(fmt.Sprintf("ws://localhost:%v", me.App.Srv().ListenAddr.Port), client.AuthToken)
} }
func (me *TestHelper) CreateBotWithSystemAdminClient() *model.Bot { func (me *TestHelper) CreateBotWithSystemAdminClient() *model.Bot {
@@ -318,7 +318,7 @@ func (me *TestHelper) CreateUserWithClient(client *model.Client4) *model.User {
} }
ruser.Password = "Pa$$word11" ruser.Password = "Pa$$word11"
_, err := me.App.Srv.Store.User().VerifyEmail(ruser.Id, ruser.Email) _, err := me.App.Srv().Store.User().VerifyEmail(ruser.Id, ruser.Email)
if err != nil { if err != nil {
return nil return nil
} }
@@ -420,7 +420,7 @@ func (me *TestHelper) CreateMessagePostWithClient(client *model.Client4, channel
} }
func (me *TestHelper) CreateMessagePostNoClient(channel *model.Channel, message string, createAtTime int64) *model.Post { func (me *TestHelper) CreateMessagePostNoClient(channel *model.Channel, message string, createAtTime int64) *model.Post {
post, err := me.App.Srv.Store.Post().Save(&model.Post{ post, err := me.App.Srv().Store.Post().Save(&model.Post{
UserId: me.BasicUser.Id, UserId: me.BasicUser.Id,
ChannelId: channel.Id, ChannelId: channel.Id,
Message: message, Message: message,
@@ -751,9 +751,9 @@ func (me *TestHelper) cleanupTestFile(info *model.FileInfo) error {
func (me *TestHelper) MakeUserChannelAdmin(user *model.User, channel *model.Channel) { func (me *TestHelper) MakeUserChannelAdmin(user *model.User, channel *model.Channel) {
utils.DisableDebugLogForTest() utils.DisableDebugLogForTest()
if cm, err := me.App.Srv.Store.Channel().GetMember(channel.Id, user.Id); err == nil { if cm, err := me.App.Srv().Store.Channel().GetMember(channel.Id, user.Id); err == nil {
cm.SchemeAdmin = true cm.SchemeAdmin = true
if _, err = me.App.Srv.Store.Channel().UpdateMember(cm); err != nil { if _, err = me.App.Srv().Store.Channel().UpdateMember(cm); err != nil {
utils.EnableDebugLogForTest() utils.EnableDebugLogForTest()
panic(err) panic(err)
} }
@@ -768,9 +768,9 @@ func (me *TestHelper) MakeUserChannelAdmin(user *model.User, channel *model.Chan
func (me *TestHelper) UpdateUserToTeamAdmin(user *model.User, team *model.Team) { func (me *TestHelper) UpdateUserToTeamAdmin(user *model.User, team *model.Team) {
utils.DisableDebugLogForTest() utils.DisableDebugLogForTest()
if tm, err := me.App.Srv.Store.Team().GetMember(team.Id, user.Id); err == nil { if tm, err := me.App.Srv().Store.Team().GetMember(team.Id, user.Id); err == nil {
tm.SchemeAdmin = true tm.SchemeAdmin = true
if _, err = me.App.Srv.Store.Team().UpdateMember(tm); err != nil { if _, err = me.App.Srv().Store.Team().UpdateMember(tm); err != nil {
utils.EnableDebugLogForTest() utils.EnableDebugLogForTest()
panic(err) panic(err)
} }
@@ -788,9 +788,9 @@ func (me *TestHelper) UpdateUserToTeamAdmin(user *model.User, team *model.Team)
func (me *TestHelper) UpdateUserToNonTeamAdmin(user *model.User, team *model.Team) { func (me *TestHelper) UpdateUserToNonTeamAdmin(user *model.User, team *model.Team) {
utils.DisableDebugLogForTest() utils.DisableDebugLogForTest()
if tm, err := me.App.Srv.Store.Team().GetMember(team.Id, user.Id); err == nil { if tm, err := me.App.Srv().Store.Team().GetMember(team.Id, user.Id); err == nil {
tm.SchemeAdmin = false tm.SchemeAdmin = false
if _, err = me.App.Srv.Store.Team().UpdateMember(tm); err != nil { if _, err = me.App.Srv().Store.Team().UpdateMember(tm); err != nil {
utils.EnableDebugLogForTest() utils.EnableDebugLogForTest()
panic(err) panic(err)
} }

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

@@ -35,16 +35,16 @@ func createBot(c *Context, w http.ResponseWriter, r *http.Request) {
} }
bot := &model.Bot{ bot := &model.Bot{
OwnerId: c.App.Session.UserId, OwnerId: c.App.Session().UserId,
} }
bot.Patch(botPatch) bot.Patch(botPatch)
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_CREATE_BOT) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_CREATE_BOT) {
c.SetPermissionError(model.PERMISSION_CREATE_BOT) c.SetPermissionError(model.PERMISSION_CREATE_BOT)
return return
} }
if user, err := c.App.GetUser(c.App.Session.UserId); err == nil { if user, err := c.App.GetUser(c.App.Session().UserId); err == nil {
if user.IsBot { if user.IsBot {
c.SetPermissionError(model.PERMISSION_CREATE_BOT) c.SetPermissionError(model.PERMISSION_CREATE_BOT)
return return
@@ -79,7 +79,7 @@ func patchBot(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if err := c.App.SessionHasPermissionToManageBot(c.App.Session, botUserId); err != nil { if err := c.App.SessionHasPermissionToManageBot(*c.App.Session(), botUserId); err != nil {
c.Err = err c.Err = err
return return
} }
@@ -108,10 +108,10 @@ func getBot(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_READ_OTHERS_BOTS) { if c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_READ_OTHERS_BOTS) {
// Allow access to any bot. // Allow access to any bot.
} else if bot.OwnerId == c.App.Session.UserId { } else if bot.OwnerId == c.App.Session().UserId {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_READ_BOTS) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_READ_BOTS) {
// Pretend like the bot doesn't exist at all to avoid revealing that the // Pretend like the bot doesn't exist at all to avoid revealing that the
// user is a bot. It's kind of silly in this case, sine we created the bot, // user is a bot. It's kind of silly in this case, sine we created the bot,
// but we don't have read bot permissions. // but we don't have read bot permissions.
@@ -137,12 +137,12 @@ func getBots(c *Context, w http.ResponseWriter, r *http.Request) {
onlyOrphaned := r.URL.Query().Get("only_orphaned") == "true" onlyOrphaned := r.URL.Query().Get("only_orphaned") == "true"
var OwnerId string var OwnerId string
if c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_READ_OTHERS_BOTS) { if c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_READ_OTHERS_BOTS) {
// Get bots created by any user. // Get bots created by any user.
OwnerId = "" OwnerId = ""
} else if c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_READ_BOTS) { } else if c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_READ_BOTS) {
// Only get bots created by this user. // Only get bots created by this user.
OwnerId = c.App.Session.UserId OwnerId = c.App.Session().UserId
} else { } else {
c.SetPermissionError(model.PERMISSION_READ_BOTS) c.SetPermissionError(model.PERMISSION_READ_BOTS)
return return
@@ -182,7 +182,7 @@ func updateBotActive(c *Context, w http.ResponseWriter, r *http.Request, active
} }
botUserId := c.Params.BotUserId botUserId := c.Params.BotUserId
if err := c.App.SessionHasPermissionToManageBot(c.App.Session, botUserId); err != nil { if err := c.App.SessionHasPermissionToManageBot(*c.App.Session(), botUserId); err != nil {
c.Err = err c.Err = err
return return
} }
@@ -205,7 +205,7 @@ func assignBot(c *Context, w http.ResponseWriter, r *http.Request) {
botUserId := c.Params.BotUserId botUserId := c.Params.BotUserId
userId := c.Params.UserId userId := c.Params.UserId
if err := c.App.SessionHasPermissionToManageBot(c.App.Session, botUserId); err != nil { if err := c.App.SessionHasPermissionToManageBot(*c.App.Session(), botUserId); err != nil {
c.Err = err c.Err = err
return return
} }
@@ -233,7 +233,7 @@ func getBotIconImage(c *Context, w http.ResponseWriter, r *http.Request) {
} }
botUserId := c.Params.BotUserId botUserId := c.Params.BotUserId
canSee, err := c.App.UserCanSeeOtherUser(c.App.Session.UserId, botUserId) canSee, err := c.App.UserCanSeeOtherUser(c.App.Session().UserId, botUserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -276,7 +276,7 @@ func setBotIconImage(c *Context, w http.ResponseWriter, r *http.Request) {
} }
botUserId := c.Params.BotUserId botUserId := c.Params.BotUserId
if err := c.App.SessionHasPermissionToManageBot(c.App.Session, botUserId); err != nil { if err := c.App.SessionHasPermissionToManageBot(*c.App.Session(), botUserId); err != nil {
c.Err = err c.Err = err
return return
} }
@@ -322,7 +322,7 @@ func deleteBotIconImage(c *Context, w http.ResponseWriter, r *http.Request) {
} }
botUserId := c.Params.BotUserId botUserId := c.Params.BotUserId
if err := c.App.SessionHasPermissionToManageBot(c.App.Session, botUserId); err != nil { if err := c.App.SessionHasPermissionToManageBot(*c.App.Session(), botUserId); err != nil {
c.Err = err c.Err = err
return return
} }

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

@@ -57,7 +57,7 @@ func uploadBrandImage(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -74,7 +74,7 @@ func uploadBrandImage(c *Context, w http.ResponseWriter, r *http.Request) {
} }
func deleteBrandImage(c *Context, w http.ResponseWriter, r *http.Request) { func deleteBrandImage(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }

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

@@ -66,17 +66,17 @@ func createChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if channel.Type == model.CHANNEL_OPEN && !c.App.SessionHasPermissionToTeam(c.App.Session, channel.TeamId, model.PERMISSION_CREATE_PUBLIC_CHANNEL) { if channel.Type == model.CHANNEL_OPEN && !c.App.SessionHasPermissionToTeam(*c.App.Session(), channel.TeamId, model.PERMISSION_CREATE_PUBLIC_CHANNEL) {
c.SetPermissionError(model.PERMISSION_CREATE_PUBLIC_CHANNEL) c.SetPermissionError(model.PERMISSION_CREATE_PUBLIC_CHANNEL)
return return
} }
if channel.Type == model.CHANNEL_PRIVATE && !c.App.SessionHasPermissionToTeam(c.App.Session, channel.TeamId, model.PERMISSION_CREATE_PRIVATE_CHANNEL) { if channel.Type == model.CHANNEL_PRIVATE && !c.App.SessionHasPermissionToTeam(*c.App.Session(), channel.TeamId, model.PERMISSION_CREATE_PRIVATE_CHANNEL) {
c.SetPermissionError(model.PERMISSION_CREATE_PRIVATE_CHANNEL) c.SetPermissionError(model.PERMISSION_CREATE_PRIVATE_CHANNEL)
return return
} }
sc, err := c.App.CreateChannelWithUser(channel, c.App.Session.UserId) sc, err := c.App.CreateChannelWithUser(channel, c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -115,20 +115,20 @@ func updateChannel(c *Context, w http.ResponseWriter, r *http.Request) {
switch oldChannel.Type { switch oldChannel.Type {
case model.CHANNEL_OPEN: case model.CHANNEL_OPEN:
if !c.App.SessionHasPermissionToChannel(c.App.Session, c.Params.ChannelId, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), c.Params.ChannelId, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES) {
c.SetPermissionError(model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES) c.SetPermissionError(model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES)
return return
} }
case model.CHANNEL_PRIVATE: case model.CHANNEL_PRIVATE:
if !c.App.SessionHasPermissionToChannel(c.App.Session, c.Params.ChannelId, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), c.Params.ChannelId, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES) {
c.SetPermissionError(model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES) c.SetPermissionError(model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES)
return return
} }
case model.CHANNEL_GROUP, model.CHANNEL_DIRECT: case model.CHANNEL_GROUP, model.CHANNEL_DIRECT:
// Modifying the header is not linked to any specific permission for group/dm channels, so just check for membership. // Modifying the header is not linked to any specific permission for group/dm channels, so just check for membership.
if _, err := c.App.GetChannelMember(channel.Id, c.App.Session.UserId); err != nil { if _, err := c.App.GetChannelMember(channel.Id, c.App.Session().UserId); err != nil {
c.Err = model.NewAppError("updateChannel", "api.channel.patch_update_channel.forbidden.app_error", nil, "", http.StatusForbidden) c.Err = model.NewAppError("updateChannel", "api.channel.patch_update_channel.forbidden.app_error", nil, "", http.StatusForbidden)
return return
} }
@@ -178,7 +178,7 @@ func updateChannel(c *Context, w http.ResponseWriter, r *http.Request) {
} }
if oldChannelDisplayName != channel.DisplayName { if oldChannelDisplayName != channel.DisplayName {
if err := c.App.PostUpdateChannelDisplayNameMessage(c.App.Session.UserId, channel, oldChannelDisplayName, channel.DisplayName); err != nil { if err := c.App.PostUpdateChannelDisplayNameMessage(c.App.Session().UserId, channel, oldChannelDisplayName, channel.DisplayName); err != nil {
mlog.Error(err.Error()) mlog.Error(err.Error())
} }
} }
@@ -199,7 +199,7 @@ func convertChannelToPrivate(c *Context, w http.ResponseWriter, r *http.Request)
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, oldPublicChannel.TeamId, model.PERMISSION_MANAGE_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), oldPublicChannel.TeamId, model.PERMISSION_MANAGE_TEAM) {
c.SetPermissionError(model.PERMISSION_MANAGE_TEAM) c.SetPermissionError(model.PERMISSION_MANAGE_TEAM)
return return
} }
@@ -214,7 +214,7 @@ func convertChannelToPrivate(c *Context, w http.ResponseWriter, r *http.Request)
return return
} }
user, err := c.App.GetUser(c.App.Session.UserId) user, err := c.App.GetUser(c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -251,7 +251,7 @@ func updateChannelPrivacy(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, channel.TeamId, model.PERMISSION_MANAGE_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), channel.TeamId, model.PERMISSION_MANAGE_TEAM) {
c.SetPermissionError(model.PERMISSION_MANAGE_TEAM) c.SetPermissionError(model.PERMISSION_MANAGE_TEAM)
return return
} }
@@ -261,7 +261,7 @@ func updateChannelPrivacy(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
user, err := c.App.GetUser(c.App.Session.UserId) user, err := c.App.GetUser(c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -301,20 +301,20 @@ func patchChannel(c *Context, w http.ResponseWriter, r *http.Request) {
switch oldChannel.Type { switch oldChannel.Type {
case model.CHANNEL_OPEN: case model.CHANNEL_OPEN:
if !c.App.SessionHasPermissionToChannel(c.App.Session, c.Params.ChannelId, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), c.Params.ChannelId, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES) {
c.SetPermissionError(model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES) c.SetPermissionError(model.PERMISSION_MANAGE_PUBLIC_CHANNEL_PROPERTIES)
return return
} }
case model.CHANNEL_PRIVATE: case model.CHANNEL_PRIVATE:
if !c.App.SessionHasPermissionToChannel(c.App.Session, c.Params.ChannelId, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), c.Params.ChannelId, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES) {
c.SetPermissionError(model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES) c.SetPermissionError(model.PERMISSION_MANAGE_PRIVATE_CHANNEL_PROPERTIES)
return return
} }
case model.CHANNEL_GROUP, model.CHANNEL_DIRECT: case model.CHANNEL_GROUP, model.CHANNEL_DIRECT:
// Modifying the header is not linked to any specific permission for group/dm channels, so just check for membership. // Modifying the header is not linked to any specific permission for group/dm channels, so just check for membership.
if _, err = c.App.GetChannelMember(c.Params.ChannelId, c.App.Session.UserId); err != nil { if _, err = c.App.GetChannelMember(c.Params.ChannelId, c.App.Session().UserId); err != nil {
c.Err = model.NewAppError("patchChannel", "api.channel.patch_update_channel.forbidden.app_error", nil, "", http.StatusForbidden) c.Err = model.NewAppError("patchChannel", "api.channel.patch_update_channel.forbidden.app_error", nil, "", http.StatusForbidden)
return return
} }
@@ -324,7 +324,7 @@ func patchChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
rchannel, err := c.App.PatchChannel(oldChannel, patch, c.App.Session.UserId) rchannel, err := c.App.PatchChannel(oldChannel, patch, c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -353,12 +353,12 @@ func restoreChannel(c *Context, w http.ResponseWriter, r *http.Request) {
} }
teamId := channel.TeamId teamId := channel.TeamId
if !c.App.SessionHasPermissionToTeam(c.App.Session, teamId, model.PERMISSION_MANAGE_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), teamId, model.PERMISSION_MANAGE_TEAM) {
c.SetPermissionError(model.PERMISSION_MANAGE_TEAM) c.SetPermissionError(model.PERMISSION_MANAGE_TEAM)
return return
} }
channel, err = c.App.RestoreChannel(channel, c.App.Session.UserId) channel, err = c.App.RestoreChannel(channel, c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -383,27 +383,27 @@ func createDirectChannel(c *Context, w http.ResponseWriter, r *http.Request) {
c.SetInvalidParam("user_id") c.SetInvalidParam("user_id")
return return
} }
if id == c.App.Session.UserId { if id == c.App.Session().UserId {
allowed = true allowed = true
} }
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_CREATE_DIRECT_CHANNEL) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_CREATE_DIRECT_CHANNEL) {
c.SetPermissionError(model.PERMISSION_CREATE_DIRECT_CHANNEL) c.SetPermissionError(model.PERMISSION_CREATE_DIRECT_CHANNEL)
return return
} }
if !allowed && !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !allowed && !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
otherUserId := userIds[0] otherUserId := userIds[0]
if c.App.Session.UserId == otherUserId { if c.App.Session().UserId == otherUserId {
otherUserId = userIds[1] otherUserId = userIds[1]
} }
canSee, err := c.App.UserCanSeeOtherUser(c.App.Session.UserId, otherUserId) canSee, err := c.App.UserCanSeeOtherUser(c.App.Session().UserId, otherUserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -431,7 +431,7 @@ func searchGroupChannels(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
groupChannels, err := c.App.SearchGroupChannels(c.App.Session.UserId, props.Term) groupChannels, err := c.App.SearchGroupChannels(c.App.Session().UserId, props.Term)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -454,24 +454,24 @@ func createGroupChannel(c *Context, w http.ResponseWriter, r *http.Request) {
c.SetInvalidParam("user_id") c.SetInvalidParam("user_id")
return return
} }
if id == c.App.Session.UserId { if id == c.App.Session().UserId {
found = true found = true
} }
} }
if !found { if !found {
userIds = append(userIds, c.App.Session.UserId) userIds = append(userIds, c.App.Session().UserId)
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_CREATE_GROUP_CHANNEL) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_CREATE_GROUP_CHANNEL) {
c.SetPermissionError(model.PERMISSION_CREATE_GROUP_CHANNEL) c.SetPermissionError(model.PERMISSION_CREATE_GROUP_CHANNEL)
return return
} }
canSeeAll := true canSeeAll := true
for _, id := range userIds { for _, id := range userIds {
if c.App.Session.UserId != id { if c.App.Session().UserId != id {
canSee, err := c.App.UserCanSeeOtherUser(c.App.Session.UserId, id) canSee, err := c.App.UserCanSeeOtherUser(c.App.Session().UserId, id)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -487,7 +487,7 @@ func createGroupChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
groupChannel, err := c.App.CreateGroupChannel(userIds, c.App.Session.UserId) groupChannel, err := c.App.CreateGroupChannel(userIds, c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -510,12 +510,12 @@ func getChannel(c *Context, w http.ResponseWriter, r *http.Request) {
} }
if channel.Type == model.CHANNEL_OPEN { if channel.Type == model.CHANNEL_OPEN {
if !c.App.SessionHasPermissionToTeam(c.App.Session, channel.TeamId, model.PERMISSION_READ_PUBLIC_CHANNEL) && !c.App.SessionHasPermissionToChannel(c.App.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), channel.TeamId, model.PERMISSION_READ_PUBLIC_CHANNEL) && !c.App.SessionHasPermissionToChannel(*c.App.Session(), c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_PUBLIC_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_PUBLIC_CHANNEL)
return return
} }
} else { } else {
if !c.App.SessionHasPermissionToChannel(c.App.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
@@ -536,12 +536,12 @@ func getChannelUnread(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
@@ -561,7 +561,7 @@ func getChannelStats(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
@@ -594,7 +594,7 @@ func getPinnedPosts(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
@@ -616,7 +616,7 @@ func getPinnedPosts(c *Context, w http.ResponseWriter, r *http.Request) {
} }
func getAllChannels(c *Context, w http.ResponseWriter, r *http.Request) { func getAllChannels(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -657,7 +657,7 @@ func getPublicChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Request
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_LIST_TEAM_CHANNELS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_LIST_TEAM_CHANNELS) {
c.SetPermissionError(model.PERMISSION_LIST_TEAM_CHANNELS) c.SetPermissionError(model.PERMISSION_LIST_TEAM_CHANNELS)
return return
} }
@@ -683,7 +683,7 @@ func getDeletedChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Reques
return return
} }
channels, err := c.App.GetDeletedChannels(c.Params.TeamId, c.Params.Page*c.Params.PerPage, c.Params.PerPage, c.App.Session.UserId) channels, err := c.App.GetDeletedChannels(c.Params.TeamId, c.Params.Page*c.Params.PerPage, c.Params.PerPage, c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -717,7 +717,7 @@ func getPublicChannelsByIdsForTeam(c *Context, w http.ResponseWriter, r *http.Re
} }
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_VIEW_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM) c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return return
} }
@@ -743,12 +743,12 @@ func getChannelsForTeamForUser(c *Context, w http.ResponseWriter, r *http.Reques
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_VIEW_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM) c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return return
} }
@@ -779,7 +779,7 @@ func autocompleteChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Requ
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_LIST_TEAM_CHANNELS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_LIST_TEAM_CHANNELS) {
c.SetPermissionError(model.PERMISSION_LIST_TEAM_CHANNELS) c.SetPermissionError(model.PERMISSION_LIST_TEAM_CHANNELS)
return return
} }
@@ -803,14 +803,14 @@ func autocompleteChannelsForTeamForSearch(c *Context, w http.ResponseWriter, r *
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_LIST_TEAM_CHANNELS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_LIST_TEAM_CHANNELS) {
c.SetPermissionError(model.PERMISSION_LIST_TEAM_CHANNELS) c.SetPermissionError(model.PERMISSION_LIST_TEAM_CHANNELS)
return return
} }
name := r.URL.Query().Get("name") name := r.URL.Query().Get("name")
channels, err := c.App.AutocompleteChannelsForSearch(c.Params.TeamId, c.App.Session.UserId, name) channels, err := c.App.AutocompleteChannelsForSearch(c.Params.TeamId, c.App.Session().UserId, name)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -835,16 +835,16 @@ func searchChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Request) {
var channels *model.ChannelList var channels *model.ChannelList
var err *model.AppError var err *model.AppError
if c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_LIST_TEAM_CHANNELS) { if c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_LIST_TEAM_CHANNELS) {
channels, err = c.App.SearchChannels(c.Params.TeamId, props.Term) channels, err = c.App.SearchChannels(c.Params.TeamId, props.Term)
} else { } else {
// If the user is not a team member, return a 404 // If the user is not a team member, return a 404
if _, err = c.App.GetTeamMember(c.Params.TeamId, c.App.Session.UserId); err != nil { if _, err = c.App.GetTeamMember(c.Params.TeamId, c.App.Session().UserId); err != nil {
c.Err = err c.Err = err
return return
} }
channels, err = c.App.SearchChannelsForUser(c.App.Session.UserId, c.Params.TeamId, props.Term) channels, err = c.App.SearchChannelsForUser(c.App.Session().UserId, c.Params.TeamId, props.Term)
} }
if err != nil { if err != nil {
@@ -871,16 +871,16 @@ func searchArchivedChannelsForTeam(c *Context, w http.ResponseWriter, r *http.Re
var channels *model.ChannelList var channels *model.ChannelList
var err *model.AppError var err *model.AppError
if c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_LIST_TEAM_CHANNELS) { if c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_LIST_TEAM_CHANNELS) {
channels, err = c.App.SearchArchivedChannels(c.Params.TeamId, props.Term, c.App.Session.UserId) channels, err = c.App.SearchArchivedChannels(c.Params.TeamId, props.Term, c.App.Session().UserId)
} else { } else {
// If the user is not a team member, return a 404 // If the user is not a team member, return a 404
if _, err = c.App.GetTeamMember(c.Params.TeamId, c.App.Session.UserId); err != nil { if _, err = c.App.GetTeamMember(c.Params.TeamId, c.App.Session().UserId); err != nil {
c.Err = err c.Err = err
return return
} }
channels, err = c.App.SearchArchivedChannels(c.Params.TeamId, props.Term, c.App.Session.UserId) channels, err = c.App.SearchArchivedChannels(c.Params.TeamId, props.Term, c.App.Session().UserId)
} }
if err != nil { if err != nil {
@@ -900,7 +900,7 @@ func searchAllChannels(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -950,17 +950,17 @@ func deleteChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if channel.Type == model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.App.Session, channel.Id, model.PERMISSION_DELETE_PUBLIC_CHANNEL) { if channel.Type == model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(*c.App.Session(), channel.Id, model.PERMISSION_DELETE_PUBLIC_CHANNEL) {
c.SetPermissionError(model.PERMISSION_DELETE_PUBLIC_CHANNEL) c.SetPermissionError(model.PERMISSION_DELETE_PUBLIC_CHANNEL)
return return
} }
if channel.Type == model.CHANNEL_PRIVATE && !c.App.SessionHasPermissionToChannel(c.App.Session, channel.Id, model.PERMISSION_DELETE_PRIVATE_CHANNEL) { if channel.Type == model.CHANNEL_PRIVATE && !c.App.SessionHasPermissionToChannel(*c.App.Session(), channel.Id, model.PERMISSION_DELETE_PRIVATE_CHANNEL) {
c.SetPermissionError(model.PERMISSION_DELETE_PRIVATE_CHANNEL) c.SetPermissionError(model.PERMISSION_DELETE_PRIVATE_CHANNEL)
return return
} }
err = c.App.DeleteChannel(channel, c.App.Session.UserId) err = c.App.DeleteChannel(channel, c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -986,12 +986,12 @@ func getChannelByName(c *Context, w http.ResponseWriter, r *http.Request) {
} }
if channel.Type == model.CHANNEL_OPEN { if channel.Type == model.CHANNEL_OPEN {
if !c.App.SessionHasPermissionToTeam(c.App.Session, channel.TeamId, model.PERMISSION_READ_PUBLIC_CHANNEL) && !c.App.SessionHasPermissionToChannel(c.App.Session, channel.Id, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), channel.TeamId, model.PERMISSION_READ_PUBLIC_CHANNEL) && !c.App.SessionHasPermissionToChannel(*c.App.Session(), channel.Id, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_PUBLIC_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_PUBLIC_CHANNEL)
return return
} }
} else { } else {
if !c.App.SessionHasPermissionToChannel(c.App.Session, channel.Id, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), channel.Id, model.PERMISSION_READ_CHANNEL) {
c.Err = model.NewAppError("getChannelByName", store.MISSING_CHANNEL_ERROR, nil, "teamId="+channel.TeamId+", "+"name="+channel.Name+"", http.StatusNotFound) c.Err = model.NewAppError("getChannelByName", store.MISSING_CHANNEL_ERROR, nil, "teamId="+channel.TeamId+", "+"name="+channel.Name+"", http.StatusNotFound)
return return
} }
@@ -1020,7 +1020,7 @@ func getChannelByNameForTeamName(c *Context, w http.ResponseWriter, r *http.Requ
return return
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, channel.Id, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), channel.Id, model.PERMISSION_READ_CHANNEL) {
c.Err = model.NewAppError("getChannelByNameForTeamName", store.MISSING_CHANNEL_ERROR, nil, "teamId="+channel.TeamId+", "+"name="+channel.Name+"", http.StatusNotFound) c.Err = model.NewAppError("getChannelByNameForTeamName", store.MISSING_CHANNEL_ERROR, nil, "teamId="+channel.TeamId+", "+"name="+channel.Name+"", http.StatusNotFound)
return return
} }
@@ -1040,7 +1040,7 @@ func getChannelMembers(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
@@ -1060,7 +1060,7 @@ func getChannelMembersTimezones(c *Context, w http.ResponseWriter, r *http.Reque
return return
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
@@ -1086,7 +1086,7 @@ func getChannelMembersByIds(c *Context, w http.ResponseWriter, r *http.Request)
return return
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
@@ -1106,7 +1106,7 @@ func getChannelMember(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
@@ -1126,12 +1126,12 @@ func getChannelMembersForUser(c *Context, w http.ResponseWriter, r *http.Request
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_VIEW_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM) c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return return
} }
if c.App.Session.UserId != c.Params.UserId && !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_MANAGE_SYSTEM) { if c.App.Session().UserId != c.Params.UserId && !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -1151,7 +1151,7 @@ func viewChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -1173,13 +1173,13 @@ func viewChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
times, err := c.App.ViewChannel(view, c.Params.UserId, c.App.Session.Id) times, err := c.App.ViewChannel(view, c.Params.UserId, c.App.Session().Id)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
} }
c.App.UpdateLastActivityAtIfNeeded(c.App.Session) c.App.UpdateLastActivityAtIfNeeded(*c.App.Session())
// Returning {"status": "OK", ...} for backwards compatibility // Returning {"status": "OK", ...} for backwards compatibility
resp := &model.ChannelViewResponse{ resp := &model.ChannelViewResponse{
@@ -1204,7 +1204,7 @@ func updateChannelMemberRoles(c *Context, w http.ResponseWriter, r *http.Request
return return
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, c.Params.ChannelId, model.PERMISSION_MANAGE_CHANNEL_ROLES) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), c.Params.ChannelId, model.PERMISSION_MANAGE_CHANNEL_ROLES) {
c.SetPermissionError(model.PERMISSION_MANAGE_CHANNEL_ROLES) c.SetPermissionError(model.PERMISSION_MANAGE_CHANNEL_ROLES)
return return
} }
@@ -1229,7 +1229,7 @@ func updateChannelMemberSchemeRoles(c *Context, w http.ResponseWriter, r *http.R
return return
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, c.Params.ChannelId, model.PERMISSION_MANAGE_CHANNEL_ROLES) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), c.Params.ChannelId, model.PERMISSION_MANAGE_CHANNEL_ROLES) {
c.SetPermissionError(model.PERMISSION_MANAGE_CHANNEL_ROLES) c.SetPermissionError(model.PERMISSION_MANAGE_CHANNEL_ROLES)
return return
} }
@@ -1254,7 +1254,7 @@ func updateChannelMemberNotifyProps(c *Context, w http.ResponseWriter, r *http.R
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -1325,18 +1325,18 @@ func addChannelMember(c *Context, w http.ResponseWriter, r *http.Request) {
} }
} }
isSelfAdd := member.UserId == c.App.Session.UserId isSelfAdd := member.UserId == c.App.Session().UserId
if channel.Type == model.CHANNEL_OPEN { if channel.Type == model.CHANNEL_OPEN {
if isSelfAdd && isNewMembership { if isSelfAdd && isNewMembership {
if !c.App.SessionHasPermissionToTeam(c.App.Session, channel.TeamId, model.PERMISSION_JOIN_PUBLIC_CHANNELS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), channel.TeamId, model.PERMISSION_JOIN_PUBLIC_CHANNELS) {
c.SetPermissionError(model.PERMISSION_JOIN_PUBLIC_CHANNELS) c.SetPermissionError(model.PERMISSION_JOIN_PUBLIC_CHANNELS)
return return
} }
} else if isSelfAdd && !isNewMembership { } else if isSelfAdd && !isNewMembership {
// nothing to do, since already in the channel // nothing to do, since already in the channel
} else if !isSelfAdd { } else if !isSelfAdd {
if !c.App.SessionHasPermissionToChannel(c.App.Session, channel.Id, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), channel.Id, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS) {
c.SetPermissionError(model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS) c.SetPermissionError(model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS)
return return
} }
@@ -1345,14 +1345,14 @@ func addChannelMember(c *Context, w http.ResponseWriter, r *http.Request) {
if channel.Type == model.CHANNEL_PRIVATE { if channel.Type == model.CHANNEL_PRIVATE {
if isSelfAdd && isNewMembership { if isSelfAdd && isNewMembership {
if !c.App.SessionHasPermissionToChannel(c.App.Session, channel.Id, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), channel.Id, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS) {
c.SetPermissionError(model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS) c.SetPermissionError(model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS)
return return
} }
} else if isSelfAdd && !isNewMembership { } else if isSelfAdd && !isNewMembership {
// nothing to do, since already in the channel // nothing to do, since already in the channel
} else if !isSelfAdd { } else if !isSelfAdd {
if !c.App.SessionHasPermissionToChannel(c.App.Session, channel.Id, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), channel.Id, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS) {
c.SetPermissionError(model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS) c.SetPermissionError(model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS)
return return
} }
@@ -1375,7 +1375,7 @@ func addChannelMember(c *Context, w http.ResponseWriter, r *http.Request) {
} }
} }
cm, err := c.App.AddChannelMember(member.UserId, channel, c.App.Session.UserId, postRootId) cm, err := c.App.AddChannelMember(member.UserId, channel, c.App.Session().UserId, postRootId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -1409,24 +1409,24 @@ func removeChannelMember(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if channel.IsGroupConstrained() && (c.Params.UserId != c.App.Session.UserId) && !user.IsBot { if channel.IsGroupConstrained() && (c.Params.UserId != c.App.Session().UserId) && !user.IsBot {
c.Err = model.NewAppError("removeChannelMember", "api.channel.remove_member.group_constrained.app_error", nil, "", http.StatusBadRequest) c.Err = model.NewAppError("removeChannelMember", "api.channel.remove_member.group_constrained.app_error", nil, "", http.StatusBadRequest)
return return
} }
if c.Params.UserId != c.App.Session.UserId { if c.Params.UserId != c.App.Session().UserId {
if channel.Type == model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.App.Session, channel.Id, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS) { if channel.Type == model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(*c.App.Session(), channel.Id, model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS) {
c.SetPermissionError(model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS) c.SetPermissionError(model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS)
return return
} }
if channel.Type == model.CHANNEL_PRIVATE && !c.App.SessionHasPermissionToChannel(c.App.Session, channel.Id, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS) { if channel.Type == model.CHANNEL_PRIVATE && !c.App.SessionHasPermissionToChannel(*c.App.Session(), channel.Id, model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS) {
c.SetPermissionError(model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS) c.SetPermissionError(model.PERMISSION_MANAGE_PRIVATE_CHANNEL_MEMBERS)
return return
} }
} }
if err = c.App.RemoveUserFromChannel(c.Params.UserId, c.App.Session.UserId, channel); err != nil { if err = c.App.RemoveUserFromChannel(c.Params.UserId, c.App.Session().UserId, channel); err != nil {
c.Err = err c.Err = err
return return
} }
@@ -1453,7 +1453,7 @@ func updateChannelScheme(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, c.Params.ChannelId, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), c.Params.ChannelId, model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -1508,7 +1508,7 @@ func channelMembersMinusGroupMembers(c *Context, w http.ResponseWriter, r *http.
groupIDs = append(groupIDs, gid) groupIDs = append(groupIDs, gid)
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }

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

@@ -1298,7 +1298,7 @@ func TestDeleteChannel2(t *testing.T) {
// successful delete by channel admin // successful delete by channel admin
th.MakeUserChannelAdmin(user, publicChannel6) th.MakeUserChannelAdmin(user, publicChannel6)
th.MakeUserChannelAdmin(user, privateChannel7) th.MakeUserChannelAdmin(user, privateChannel7)
th.App.Srv.Store.Channel().ClearCaches() th.App.Srv().Store.Channel().ClearCaches()
_, resp = Client.DeleteChannel(publicChannel6.Id) _, resp = Client.DeleteChannel(publicChannel6.Id)
CheckNoError(t, resp) CheckNoError(t, resp)

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

@@ -14,7 +14,7 @@ func (api *API) InitCluster() {
} }
func getClusterStatus(c *Context, w http.ResponseWriter, r *http.Request) { func getClusterStatus(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }

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

@@ -34,12 +34,12 @@ func createCommand(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt") c.LogAudit("attempt")
if !c.App.SessionHasPermissionToTeam(c.App.Session, cmd.TeamId, model.PERMISSION_MANAGE_SLASH_COMMANDS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), cmd.TeamId, model.PERMISSION_MANAGE_SLASH_COMMANDS) {
c.SetPermissionError(model.PERMISSION_MANAGE_SLASH_COMMANDS) c.SetPermissionError(model.PERMISSION_MANAGE_SLASH_COMMANDS)
return return
} }
cmd.CreatorId = c.App.Session.UserId cmd.CreatorId = c.App.Session().UserId
rcmd, err := c.App.CreateCommand(cmd) rcmd, err := c.App.CreateCommand(cmd)
if err != nil { if err != nil {
@@ -73,11 +73,11 @@ func updateCommand(c *Context, w http.ResponseWriter, r *http.Request) {
} }
if cmd.TeamId != oldCmd.TeamId { if cmd.TeamId != oldCmd.TeamId {
c.Err = model.NewAppError("updateCommand", "api.command.team_mismatch.app_error", nil, "user_id="+c.App.Session.UserId, http.StatusBadRequest) c.Err = model.NewAppError("updateCommand", "api.command.team_mismatch.app_error", nil, "user_id="+c.App.Session().UserId, http.StatusBadRequest)
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, oldCmd.TeamId, model.PERMISSION_MANAGE_SLASH_COMMANDS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), oldCmd.TeamId, model.PERMISSION_MANAGE_SLASH_COMMANDS) {
c.LogAudit("fail - inappropriate permissions") c.LogAudit("fail - inappropriate permissions")
// here we return Not_found instead of a permissions error so we don't leak the existence of // here we return Not_found instead of a permissions error so we don't leak the existence of
// a command to someone without permissions for the team it belongs to. // a command to someone without permissions for the team it belongs to.
@@ -85,7 +85,7 @@ func updateCommand(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if c.App.Session.UserId != oldCmd.CreatorId && !c.App.SessionHasPermissionToTeam(c.App.Session, oldCmd.TeamId, model.PERMISSION_MANAGE_OTHERS_SLASH_COMMANDS) { if c.App.Session().UserId != oldCmd.CreatorId && !c.App.SessionHasPermissionToTeam(*c.App.Session(), oldCmd.TeamId, model.PERMISSION_MANAGE_OTHERS_SLASH_COMMANDS) {
c.LogAudit("fail - inappropriate permissions") c.LogAudit("fail - inappropriate permissions")
c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_SLASH_COMMANDS) c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_SLASH_COMMANDS)
return return
@@ -122,7 +122,7 @@ func moveCommand(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, newTeam.Id, model.PERMISSION_MANAGE_SLASH_COMMANDS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), newTeam.Id, model.PERMISSION_MANAGE_SLASH_COMMANDS) {
c.LogAudit("fail - inappropriate permissions") c.LogAudit("fail - inappropriate permissions")
c.SetPermissionError(model.PERMISSION_MANAGE_SLASH_COMMANDS) c.SetPermissionError(model.PERMISSION_MANAGE_SLASH_COMMANDS)
return return
@@ -134,7 +134,7 @@ func moveCommand(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, cmd.TeamId, model.PERMISSION_MANAGE_SLASH_COMMANDS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), cmd.TeamId, model.PERMISSION_MANAGE_SLASH_COMMANDS) {
c.LogAudit("fail - inappropriate permissions") c.LogAudit("fail - inappropriate permissions")
// here we return Not_found instead of a permissions error so we don't leak the existence of // here we return Not_found instead of a permissions error so we don't leak the existence of
// a command to someone without permissions for the team it belongs to. // a command to someone without permissions for the team it belongs to.
@@ -165,7 +165,7 @@ func deleteCommand(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, cmd.TeamId, model.PERMISSION_MANAGE_SLASH_COMMANDS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), cmd.TeamId, model.PERMISSION_MANAGE_SLASH_COMMANDS) {
c.LogAudit("fail - inappropriate permissions") c.LogAudit("fail - inappropriate permissions")
// here we return Not_found instead of a permissions error so we don't leak the existence of // here we return Not_found instead of a permissions error so we don't leak the existence of
// a command to someone without permissions for the team it belongs to. // a command to someone without permissions for the team it belongs to.
@@ -173,7 +173,7 @@ func deleteCommand(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if c.App.Session.UserId != cmd.CreatorId && !c.App.SessionHasPermissionToTeam(c.App.Session, cmd.TeamId, model.PERMISSION_MANAGE_OTHERS_SLASH_COMMANDS) { if c.App.Session().UserId != cmd.CreatorId && !c.App.SessionHasPermissionToTeam(*c.App.Session(), cmd.TeamId, model.PERMISSION_MANAGE_OTHERS_SLASH_COMMANDS) {
c.LogAudit("fail - inappropriate permissions") c.LogAudit("fail - inappropriate permissions")
c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_SLASH_COMMANDS) c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_SLASH_COMMANDS)
return return
@@ -202,7 +202,7 @@ func listCommands(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, teamId, model.PERMISSION_VIEW_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), teamId, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM) c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return return
} }
@@ -210,7 +210,7 @@ func listCommands(c *Context, w http.ResponseWriter, r *http.Request) {
var commands []*model.Command var commands []*model.Command
var err *model.AppError var err *model.AppError
if customOnly { if customOnly {
if !c.App.SessionHasPermissionToTeam(c.App.Session, teamId, model.PERMISSION_MANAGE_SLASH_COMMANDS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), teamId, model.PERMISSION_MANAGE_SLASH_COMMANDS) {
c.SetPermissionError(model.PERMISSION_MANAGE_SLASH_COMMANDS) c.SetPermissionError(model.PERMISSION_MANAGE_SLASH_COMMANDS)
return return
} }
@@ -221,7 +221,7 @@ func listCommands(c *Context, w http.ResponseWriter, r *http.Request) {
} }
} else { } else {
//User with no permission should see only system commands //User with no permission should see only system commands
if !c.App.SessionHasPermissionToTeam(c.App.Session, teamId, model.PERMISSION_MANAGE_SLASH_COMMANDS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), teamId, model.PERMISSION_MANAGE_SLASH_COMMANDS) {
commands, err = c.App.ListAutocompleteCommands(teamId, c.App.T) commands, err = c.App.ListAutocompleteCommands(teamId, c.App.T)
if err != nil { if err != nil {
c.Err = err c.Err = err
@@ -254,13 +254,13 @@ func getCommand(c *Context, w http.ResponseWriter, r *http.Request) {
// check for permissions to view this command; must have perms to view team and // check for permissions to view this command; must have perms to view team and
// PERMISSION_MANAGE_SLASH_COMMANDS for the team the command belongs to. // PERMISSION_MANAGE_SLASH_COMMANDS for the team the command belongs to.
if !c.App.SessionHasPermissionToTeam(c.App.Session, cmd.TeamId, model.PERMISSION_VIEW_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), cmd.TeamId, model.PERMISSION_VIEW_TEAM) {
// here we return Not_found instead of a permissions error so we don't leak the existence of // here we return Not_found instead of a permissions error so we don't leak the existence of
// a command to someone without permissions for the team it belongs to. // a command to someone without permissions for the team it belongs to.
c.SetCommandNotFoundError() c.SetCommandNotFoundError()
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, cmd.TeamId, model.PERMISSION_MANAGE_SLASH_COMMANDS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), cmd.TeamId, model.PERMISSION_MANAGE_SLASH_COMMANDS) {
// again, return not_found to ensure id existence does not leak. // again, return not_found to ensure id existence does not leak.
c.SetCommandNotFoundError() c.SetCommandNotFoundError()
return return
@@ -281,7 +281,7 @@ func executeCommand(c *Context, w http.ResponseWriter, r *http.Request) {
} }
// checks that user is a member of the specified channel, and that they have permission to use slash commands in it // checks that user is a member of the specified channel, and that they have permission to use slash commands in it
if !c.App.SessionHasPermissionToChannel(c.App.Session, commandArgs.ChannelId, model.PERMISSION_USE_SLASH_COMMANDS) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), commandArgs.ChannelId, model.PERMISSION_USE_SLASH_COMMANDS) {
c.SetPermissionError(model.PERMISSION_USE_SLASH_COMMANDS) c.SetPermissionError(model.PERMISSION_USE_SLASH_COMMANDS)
return return
} }
@@ -299,17 +299,17 @@ func executeCommand(c *Context, w http.ResponseWriter, r *http.Request) {
} else { } else {
// if the slash command was used in a DM or GM, ensure that the user is a member of the specified team, so that // if the slash command was used in a DM or GM, ensure that the user is a member of the specified team, so that
// they can't just execute slash commands against arbitrary teams // they can't just execute slash commands against arbitrary teams
if c.App.Session.GetTeamByTeamId(commandArgs.TeamId) == nil { if c.App.Session().GetTeamByTeamId(commandArgs.TeamId) == nil {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_USE_SLASH_COMMANDS) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_USE_SLASH_COMMANDS) {
c.SetPermissionError(model.PERMISSION_USE_SLASH_COMMANDS) c.SetPermissionError(model.PERMISSION_USE_SLASH_COMMANDS)
return return
} }
} }
} }
commandArgs.UserId = c.App.Session.UserId commandArgs.UserId = c.App.Session().UserId
commandArgs.T = c.App.T commandArgs.T = c.App.T
commandArgs.Session = c.App.Session commandArgs.Session = *c.App.Session()
commandArgs.SiteURL = c.GetSiteURLHeader() commandArgs.SiteURL = c.GetSiteURLHeader()
response, err := c.App.ExecuteCommand(commandArgs) response, err := c.App.ExecuteCommand(commandArgs)
@@ -327,7 +327,7 @@ func listAutocompleteCommands(c *Context, w http.ResponseWriter, r *http.Request
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_VIEW_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM) c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return return
} }
@@ -354,7 +354,7 @@ func regenCommandToken(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, cmd.TeamId, model.PERMISSION_MANAGE_SLASH_COMMANDS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), cmd.TeamId, model.PERMISSION_MANAGE_SLASH_COMMANDS) {
c.LogAudit("fail - inappropriate permissions") c.LogAudit("fail - inappropriate permissions")
// here we return Not_found instead of a permissions error so we don't leak the existence of // here we return Not_found instead of a permissions error so we don't leak the existence of
// a command to someone without permissions for the team it belongs to. // a command to someone without permissions for the team it belongs to.
@@ -362,7 +362,7 @@ func regenCommandToken(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if c.App.Session.UserId != cmd.CreatorId && !c.App.SessionHasPermissionToTeam(c.App.Session, cmd.TeamId, model.PERMISSION_MANAGE_OTHERS_SLASH_COMMANDS) { if c.App.Session().UserId != cmd.CreatorId && !c.App.SessionHasPermissionToTeam(*c.App.Session(), cmd.TeamId, model.PERMISSION_MANAGE_OTHERS_SLASH_COMMANDS) {
c.LogAudit("fail - inappropriate permissions") c.LogAudit("fail - inappropriate permissions")
c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_SLASH_COMMANDS) c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_SLASH_COMMANDS)
return return

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

@@ -25,12 +25,12 @@ func createComplianceReport(c *Context, w http.ResponseWriter, r *http.Request)
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
job.UserId = c.App.Session.UserId job.UserId = c.App.Session().UserId
rjob, err := c.App.SaveComplianceReport(job) rjob, err := c.App.SaveComplianceReport(job)
if err != nil { if err != nil {
@@ -44,7 +44,7 @@ func createComplianceReport(c *Context, w http.ResponseWriter, r *http.Request)
} }
func getComplianceReports(c *Context, w http.ResponseWriter, r *http.Request) { func getComplianceReports(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -64,7 +64,7 @@ func getComplianceReport(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -84,7 +84,7 @@ func downloadComplianceReport(c *Context, w http.ResponseWriter, r *http.Request
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }

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

@@ -22,7 +22,7 @@ func (api *API) InitConfig() {
} }
func getConfig(c *Context, w http.ResponseWriter, r *http.Request) { func getConfig(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -34,7 +34,7 @@ func getConfig(c *Context, w http.ResponseWriter, r *http.Request) {
} }
func configReload(c *Context, w http.ResponseWriter, r *http.Request) { func configReload(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -57,7 +57,7 @@ func updateConfig(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -121,7 +121,7 @@ func getClientConfig(c *Context, w http.ResponseWriter, r *http.Request) {
} }
var config map[string]string var config map[string]string
if len(c.App.Session.UserId) == 0 { if len(c.App.Session().UserId) == 0 {
config = c.App.LimitedClientConfigWithComputed() config = c.App.LimitedClientConfigWithComputed()
} else { } else {
config = c.App.ClientConfigWithComputed() config = c.App.ClientConfigWithComputed()
@@ -131,7 +131,7 @@ func getClientConfig(c *Context, w http.ResponseWriter, r *http.Request) {
} }
func getEnvironmentConfig(c *Context, w http.ResponseWriter, r *http.Request) { func getEnvironmentConfig(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -149,7 +149,7 @@ func patchConfig(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }

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

@@ -126,7 +126,7 @@ func TestCORSRequestHandling(t *testing.T) {
}) })
defer th.TearDown() defer th.TearDown()
port := th.App.Srv.ListenAddr.Port port := th.App.Srv().ListenAddr.Port
host := fmt.Sprintf("http://localhost:%v", port) host := fmt.Sprintf("http://localhost:%v", port)
url := fmt.Sprintf("%v/api/v4/system/ping", host) url := fmt.Sprintf("%v/api/v4/system/ping", host)

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

@@ -20,7 +20,7 @@ func testElasticsearch(c *Context, w http.ResponseWriter, r *http.Request) {
cfg = c.App.Config() cfg = c.App.Config()
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -39,7 +39,7 @@ func testElasticsearch(c *Context, w http.ResponseWriter, r *http.Request) {
} }
func purgeElasticsearchIndexes(c *Context, w http.ResponseWriter, r *http.Request) { func purgeElasticsearchIndexes(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }

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

@@ -48,17 +48,17 @@ func createEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
} }
// Allow any user with CREATE_EMOJIS permission at Team level to create emojis at system level // Allow any user with CREATE_EMOJIS permission at Team level to create emojis at system level
memberships, err := c.App.GetTeamMembersForUser(c.App.Session.UserId) memberships, err := c.App.GetTeamMembersForUser(c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_CREATE_EMOJIS) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_CREATE_EMOJIS) {
hasPermission := false hasPermission := false
for _, membership := range memberships { for _, membership := range memberships {
if c.App.SessionHasPermissionToTeam(c.App.Session, membership.TeamId, model.PERMISSION_CREATE_EMOJIS) { if c.App.SessionHasPermissionToTeam(*c.App.Session(), membership.TeamId, model.PERMISSION_CREATE_EMOJIS) {
hasPermission = true hasPermission = true
break break
} }
@@ -83,7 +83,7 @@ func createEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
newEmoji, err := c.App.CreateEmoji(c.App.Session.UserId, emoji, m) newEmoji, err := c.App.CreateEmoji(c.App.Session().UserId, emoji, m)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -126,17 +126,17 @@ func deleteEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
} }
// Allow any user with DELETE_EMOJIS permission at Team level to delete emojis at system level // Allow any user with DELETE_EMOJIS permission at Team level to delete emojis at system level
memberships, err := c.App.GetTeamMembersForUser(c.App.Session.UserId) memberships, err := c.App.GetTeamMembersForUser(c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_DELETE_EMOJIS) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_DELETE_EMOJIS) {
hasPermission := false hasPermission := false
for _, membership := range memberships { for _, membership := range memberships {
if c.App.SessionHasPermissionToTeam(c.App.Session, membership.TeamId, model.PERMISSION_DELETE_EMOJIS) { if c.App.SessionHasPermissionToTeam(*c.App.Session(), membership.TeamId, model.PERMISSION_DELETE_EMOJIS) {
hasPermission = true hasPermission = true
break break
} }
@@ -147,11 +147,11 @@ func deleteEmoji(c *Context, w http.ResponseWriter, r *http.Request) {
} }
} }
if c.App.Session.UserId != emoji.CreatorId { if c.App.Session().UserId != emoji.CreatorId {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_DELETE_OTHERS_EMOJIS) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_DELETE_OTHERS_EMOJIS) {
hasPermission := false hasPermission := false
for _, membership := range memberships { for _, membership := range memberships {
if c.App.SessionHasPermissionToTeam(c.App.Session, membership.TeamId, model.PERMISSION_DELETE_OTHERS_EMOJIS) { if c.App.SessionHasPermissionToTeam(*c.App.Session(), membership.TeamId, model.PERMISSION_DELETE_OTHERS_EMOJIS) {
hasPermission = true hasPermission = true
break break
} }

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

@@ -153,7 +153,7 @@ func uploadFileSimple(c *Context, r *http.Request, timestamp time.Time) *model.F
return nil return nil
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, c.Params.ChannelId, model.PERMISSION_UPLOAD_FILE) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), c.Params.ChannelId, model.PERMISSION_UPLOAD_FILE) {
c.SetPermissionError(model.PERMISSION_UPLOAD_FILE) c.SetPermissionError(model.PERMISSION_UPLOAD_FILE)
return nil return nil
} }
@@ -161,7 +161,7 @@ func uploadFileSimple(c *Context, r *http.Request, timestamp time.Time) *model.F
clientId := r.Form.Get("client_id") clientId := r.Form.Get("client_id")
info, appErr := c.App.UploadFileX(c.Params.ChannelId, c.Params.Filename, r.Body, info, appErr := c.App.UploadFileX(c.Params.ChannelId, c.Params.Filename, r.Body,
app.UploadFileSetTeamId(FILE_TEAM_ID), app.UploadFileSetTeamId(FILE_TEAM_ID),
app.UploadFileSetUserId(c.App.Session.UserId), app.UploadFileSetUserId(c.App.Session().UserId),
app.UploadFileSetTimestamp(timestamp), app.UploadFileSetTimestamp(timestamp),
app.UploadFileSetContentLength(r.ContentLength), app.UploadFileSetContentLength(r.ContentLength),
app.UploadFileSetClientId(clientId)) app.UploadFileSetClientId(clientId))
@@ -294,7 +294,7 @@ NEXT_PART:
if c.Err != nil { if c.Err != nil {
return nil return nil
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, c.Params.ChannelId, model.PERMISSION_UPLOAD_FILE) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), c.Params.ChannelId, model.PERMISSION_UPLOAD_FILE) {
c.SetPermissionError(model.PERMISSION_UPLOAD_FILE) c.SetPermissionError(model.PERMISSION_UPLOAD_FILE)
return nil return nil
} }
@@ -318,7 +318,7 @@ NEXT_PART:
info, appErr := c.App.UploadFileX(c.Params.ChannelId, filename, part, info, appErr := c.App.UploadFileX(c.Params.ChannelId, filename, part,
app.UploadFileSetTeamId(FILE_TEAM_ID), app.UploadFileSetTeamId(FILE_TEAM_ID),
app.UploadFileSetUserId(c.App.Session.UserId), app.UploadFileSetUserId(c.App.Session().UserId),
app.UploadFileSetTimestamp(timestamp), app.UploadFileSetTimestamp(timestamp),
app.UploadFileSetContentLength(-1), app.UploadFileSetContentLength(-1),
app.UploadFileSetClientId(clientId)) app.UploadFileSetClientId(clientId))
@@ -374,7 +374,7 @@ func uploadFileMultipartLegacy(c *Context, mr *multipart.Reader,
if c.Err != nil { if c.Err != nil {
return nil return nil
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, channelId, model.PERMISSION_UPLOAD_FILE) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), channelId, model.PERMISSION_UPLOAD_FILE) {
c.SetPermissionError(model.PERMISSION_UPLOAD_FILE) c.SetPermissionError(model.PERMISSION_UPLOAD_FILE)
return nil return nil
} }
@@ -411,7 +411,7 @@ func uploadFileMultipartLegacy(c *Context, mr *multipart.Reader,
info, appErr := c.App.UploadFileX(c.Params.ChannelId, fileHeader.Filename, f, info, appErr := c.App.UploadFileX(c.Params.ChannelId, fileHeader.Filename, f,
app.UploadFileSetTeamId(FILE_TEAM_ID), app.UploadFileSetTeamId(FILE_TEAM_ID),
app.UploadFileSetUserId(c.App.Session.UserId), app.UploadFileSetUserId(c.App.Session().UserId),
app.UploadFileSetTimestamp(timestamp), app.UploadFileSetTimestamp(timestamp),
app.UploadFileSetContentLength(-1), app.UploadFileSetContentLength(-1),
app.UploadFileSetClientId(clientId)) app.UploadFileSetClientId(clientId))
@@ -447,7 +447,7 @@ func getFile(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if info.CreatorId != c.App.Session.UserId && !c.App.SessionHasPermissionToChannelByPost(c.App.Session, info.PostId, model.PERMISSION_READ_CHANNEL) { if info.CreatorId != c.App.Session().UserId && !c.App.SessionHasPermissionToChannelByPost(*c.App.Session(), info.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
@@ -484,7 +484,7 @@ func getFileThumbnail(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if info.CreatorId != c.App.Session.UserId && !c.App.SessionHasPermissionToChannelByPost(c.App.Session, info.PostId, model.PERMISSION_READ_CHANNEL) { if info.CreatorId != c.App.Session().UserId && !c.App.SessionHasPermissionToChannelByPost(*c.App.Session(), info.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
@@ -526,7 +526,7 @@ func getFileLink(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if info.CreatorId != c.App.Session.UserId && !c.App.SessionHasPermissionToChannelByPost(c.App.Session, info.PostId, model.PERMISSION_READ_CHANNEL) { if info.CreatorId != c.App.Session().UserId && !c.App.SessionHasPermissionToChannelByPost(*c.App.Session(), info.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
@@ -559,7 +559,7 @@ func getFilePreview(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if info.CreatorId != c.App.Session.UserId && !c.App.SessionHasPermissionToChannelByPost(c.App.Session, info.PostId, model.PERMISSION_READ_CHANNEL) { if info.CreatorId != c.App.Session().UserId && !c.App.SessionHasPermissionToChannelByPost(*c.App.Session(), info.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
@@ -596,7 +596,7 @@ func getFileInfo(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if info.CreatorId != c.App.Session.UserId && !c.App.SessionHasPermissionToChannelByPost(c.App.Session, info.PostId, model.PERMISSION_READ_CHANNEL) { if info.CreatorId != c.App.Session().UserId && !c.App.SessionHasPermissionToChannelByPost(*c.App.Session(), info.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }

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

@@ -567,7 +567,7 @@ func TestUploadFiles(t *testing.T) {
fmt.Sprintf("Wrong clientId returned, expected %v, got %v", tc.clientIds[i], fileResp.ClientIds[i])) fmt.Sprintf("Wrong clientId returned, expected %v, got %v", tc.clientIds[i], fileResp.ClientIds[i]))
} }
dbInfo, err := th.App.Srv.Store.FileInfo().Get(ri.Id) dbInfo, err := th.App.Srv().Store.FileInfo().Get(ri.Id)
require.Nil(t, err) require.Nil(t, err)
assert.Equal(t, dbInfo.Id, ri.Id, "File id from response should match one stored in database") assert.Equal(t, dbInfo.Id, ri.Id, "File id from response should match one stored in database")
assert.Equal(t, dbInfo.CreatorId, tc.expectedCreatorId, "F ile should be assigned to user") assert.Equal(t, dbInfo.CreatorId, tc.expectedCreatorId, "F ile should be assigned to user")
@@ -801,7 +801,7 @@ func TestGetFileLink(t *testing.T) {
CheckBadRequestStatus(t, resp) CheckBadRequestStatus(t, resp)
// Hacky way to assign file to a post (usually would be done by CreatePost call) // Hacky way to assign file to a post (usually would be done by CreatePost call)
err = th.App.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id, th.BasicUser.Id) err = th.App.Srv().Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id, th.BasicUser.Id)
require.Nil(t, err) require.Nil(t, err)
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.EnablePublicLink = false }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.EnablePublicLink = false })
@@ -835,7 +835,7 @@ func TestGetFileLink(t *testing.T) {
_, resp = th.SystemAdminClient.GetFileLink(fileId) _, resp = th.SystemAdminClient.GetFileLink(fileId)
CheckNoError(t, resp) CheckNoError(t, resp)
fileInfo, err := th.App.Srv.Store.FileInfo().Get(fileId) fileInfo, err := th.App.Srv().Store.FileInfo().Get(fileId)
require.Nil(t, err) require.Nil(t, err)
th.cleanupTestFile(fileInfo) th.cleanupTestFile(fileInfo)
} }
@@ -955,10 +955,10 @@ func TestGetPublicFile(t *testing.T) {
fileId := fileResp.FileInfos[0].Id fileId := fileResp.FileInfos[0].Id
// Hacky way to assign file to a post (usually would be done by CreatePost call) // Hacky way to assign file to a post (usually would be done by CreatePost call)
err = th.App.Srv.Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id, th.BasicUser.Id) err = th.App.Srv().Store.FileInfo().AttachToPost(fileId, th.BasicPost.Id, th.BasicUser.Id)
require.Nil(t, err) require.Nil(t, err)
info, err := th.App.Srv.Store.FileInfo().Get(fileId) info, err := th.App.Srv().Store.FileInfo().Get(fileId)
require.Nil(t, err) require.Nil(t, err)
link := th.App.GeneratePublicLink(Client.Url, info) link := th.App.GeneratePublicLink(Client.Url, info)
@@ -991,7 +991,7 @@ func TestGetPublicFile(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, http.StatusBadRequest, resp.StatusCode, "should've failed to get image with public link after salt changed") require.Equal(t, http.StatusBadRequest, resp.StatusCode, "should've failed to get image with public link after salt changed")
fileInfo, err := th.App.Srv.Store.FileInfo().Get(fileId) fileInfo, err := th.App.Srv().Store.FileInfo().Get(fileId)
require.Nil(t, err) require.Nil(t, err)
require.Nil(t, th.cleanupTestFile(fileInfo)) require.Nil(t, th.cleanupTestFile(fileInfo))
th.cleanupTestFile(info) th.cleanupTestFile(info)

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

@@ -73,7 +73,7 @@ func getGroup(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -110,7 +110,7 @@ func patchGroup(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -230,7 +230,7 @@ func getGroupSyncable(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -267,7 +267,7 @@ func getGroupSyncables(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -402,7 +402,7 @@ func unlinkGroupSyncable(c *Context, w http.ResponseWriter, r *http.Request) {
func verifyLinkUnlinkPermission(c *Context, syncableType model.GroupSyncableType, syncableID string) *model.AppError { func verifyLinkUnlinkPermission(c *Context, syncableType model.GroupSyncableType, syncableID string) *model.AppError {
switch syncableType { switch syncableType {
case model.GroupSyncableTypeTeam: case model.GroupSyncableTypeTeam:
if !c.App.SessionHasPermissionToTeam(c.App.Session, syncableID, model.PERMISSION_MANAGE_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), syncableID, model.PERMISSION_MANAGE_TEAM) {
return c.App.MakePermissionError(model.PERMISSION_MANAGE_TEAM) return c.App.MakePermissionError(model.PERMISSION_MANAGE_TEAM)
} }
case model.GroupSyncableTypeChannel: case model.GroupSyncableTypeChannel:
@@ -418,7 +418,7 @@ func verifyLinkUnlinkPermission(c *Context, syncableType model.GroupSyncableType
permission = model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS permission = model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, syncableID, permission) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), syncableID, permission) {
return c.App.MakePermissionError(permission) return c.App.MakePermissionError(permission)
} }
} }
@@ -437,7 +437,7 @@ func getGroupMembers(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -485,7 +485,7 @@ func getGroupsByChannel(c *Context, w http.ResponseWriter, r *http.Request) {
} else { } else {
permission = model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS permission = model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, c.Params.ChannelId, permission) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), c.Params.ChannelId, permission) {
c.SetPermissionError(permission) c.SetPermissionError(permission)
return return
} }
@@ -531,7 +531,7 @@ func getGroupsByTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_MANAGE_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_MANAGE_TEAM) {
c.SetPermissionError(model.PERMISSION_MANAGE_TEAM) c.SetPermissionError(model.PERMISSION_MANAGE_TEAM)
return return
} }
@@ -597,7 +597,7 @@ func getGroups(c *Context, w http.ResponseWriter, r *http.Request) {
c.Err = err c.Err = err
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, teamID, model.PERMISSION_MANAGE_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), teamID, model.PERMISSION_MANAGE_TEAM) {
c.SetPermissionError(model.PERMISSION_MANAGE_TEAM) c.SetPermissionError(model.PERMISSION_MANAGE_TEAM)
return return
} }
@@ -616,7 +616,7 @@ func getGroups(c *Context, w http.ResponseWriter, r *http.Request) {
} else { } else {
permission = model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS permission = model.PERMISSION_MANAGE_PUBLIC_CHANNEL_MEMBERS
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, channelID, permission) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), channelID, permission) {
c.SetPermissionError(permission) c.SetPermissionError(permission)
return return
} }

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

@@ -15,7 +15,7 @@ func getImage(c *Context, w http.ResponseWriter, r *http.Request) {
url := r.URL.Query().Get("url") url := r.URL.Query().Get("url")
if *c.App.Config().ImageProxySettings.Enable { if *c.App.Config().ImageProxySettings.Enable {
c.App.ImageProxy.GetImage(w, r, url) c.App.ImageProxy().GetImage(w, r, url)
} else { } else {
http.Redirect(w, r, url, http.StatusFound) http.Redirect(w, r, url, http.StatusFound)
} }

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

@@ -41,12 +41,12 @@ func doPostAction(c *Context, w http.ResponseWriter, r *http.Request) {
c.Err = model.NewAppError("DoPostAction", "api.post.do_action.action_integration.app_error", nil, "err="+err.Error(), http.StatusBadRequest) c.Err = model.NewAppError("DoPostAction", "api.post.do_action.action_integration.app_error", nil, "err="+err.Error(), http.StatusBadRequest)
return return
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, cookie.ChannelId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), cookie.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
} else { } else {
if !c.App.SessionHasPermissionToChannelByPost(c.App.Session, c.Params.PostId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannelByPost(*c.App.Session(), c.Params.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
@@ -55,7 +55,7 @@ func doPostAction(c *Context, w http.ResponseWriter, r *http.Request) {
var appErr *model.AppError var appErr *model.AppError
resp := &model.PostActionAPIResponse{Status: "OK"} resp := &model.PostActionAPIResponse{Status: "OK"}
resp.TriggerId, appErr = c.App.DoPostActionWithCookie(c.Params.PostId, c.Params.ActionId, c.App.Session.UserId, resp.TriggerId, appErr = c.App.DoPostActionWithCookie(c.Params.PostId, c.Params.ActionId, c.App.Session().UserId,
actionRequest.SelectedOption, cookie) actionRequest.SelectedOption, cookie)
if appErr != nil { if appErr != nil {
c.Err = appErr c.Err = appErr
@@ -101,14 +101,14 @@ func submitDialog(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
submit.UserId = c.App.Session.UserId submit.UserId = c.App.Session().UserId
if !c.App.SessionHasPermissionToChannel(c.App.Session, submit.ChannelId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), submit.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, submit.TeamId, model.PERMISSION_VIEW_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), submit.TeamId, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM) c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return return
} }

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

@@ -23,7 +23,7 @@ func getJob(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_JOBS) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_JOBS) {
c.SetPermissionError(model.PERMISSION_MANAGE_JOBS) c.SetPermissionError(model.PERMISSION_MANAGE_JOBS)
return return
} }
@@ -44,7 +44,7 @@ func createJob(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_JOBS) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_JOBS) {
c.SetPermissionError(model.PERMISSION_MANAGE_JOBS) c.SetPermissionError(model.PERMISSION_MANAGE_JOBS)
return return
} }
@@ -64,7 +64,7 @@ func getJobs(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_JOBS) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_JOBS) {
c.SetPermissionError(model.PERMISSION_MANAGE_JOBS) c.SetPermissionError(model.PERMISSION_MANAGE_JOBS)
return return
} }
@@ -84,7 +84,7 @@ func getJobsByType(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_JOBS) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_JOBS) {
c.SetPermissionError(model.PERMISSION_MANAGE_JOBS) c.SetPermissionError(model.PERMISSION_MANAGE_JOBS)
return return
} }
@@ -104,7 +104,7 @@ func cancelJob(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_JOBS) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_JOBS) {
c.SetPermissionError(model.PERMISSION_MANAGE_JOBS) c.SetPermissionError(model.PERMISSION_MANAGE_JOBS)
return return
} }

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

@@ -25,7 +25,7 @@ func TestCreateJob(t *testing.T) {
received, resp := th.SystemAdminClient.CreateJob(job) received, resp := th.SystemAdminClient.CreateJob(job)
require.Nil(t, resp.Error) require.Nil(t, resp.Error)
defer th.App.Srv.Store.Job().Delete(received.Id) defer th.App.Srv().Store.Job().Delete(received.Id)
job = &model.Job{ job = &model.Job{
Type: model.NewId(), Type: model.NewId(),
@@ -46,10 +46,10 @@ func TestGetJob(t *testing.T) {
Id: model.NewId(), Id: model.NewId(),
Status: model.JOB_STATUS_PENDING, Status: model.JOB_STATUS_PENDING,
} }
_, err := th.App.Srv.Store.Job().Save(job) _, err := th.App.Srv().Store.Job().Save(job)
require.Nil(t, err) require.Nil(t, err)
defer th.App.Srv.Store.Job().Delete(job.Id) defer th.App.Srv().Store.Job().Delete(job.Id)
received, resp := th.SystemAdminClient.GetJob(job.Id) received, resp := th.SystemAdminClient.GetJob(job.Id)
require.Nil(t, resp.Error) require.Nil(t, resp.Error)
@@ -93,9 +93,9 @@ func TestGetJobs(t *testing.T) {
} }
for _, job := range jobs { for _, job := range jobs {
_, err := th.App.Srv.Store.Job().Save(job) _, err := th.App.Srv().Store.Job().Save(job)
require.Nil(t, err) require.Nil(t, err)
defer th.App.Srv.Store.Job().Delete(job.Id) defer th.App.Srv().Store.Job().Delete(job.Id)
} }
received, resp := th.SystemAdminClient.GetJobs(0, 2) received, resp := th.SystemAdminClient.GetJobs(0, 2)
@@ -144,9 +144,9 @@ func TestGetJobsByType(t *testing.T) {
} }
for _, job := range jobs { for _, job := range jobs {
_, err := th.App.Srv.Store.Job().Save(job) _, err := th.App.Srv().Store.Job().Save(job)
require.Nil(t, err) require.Nil(t, err)
defer th.App.Srv.Store.Job().Delete(job.Id) defer th.App.Srv().Store.Job().Delete(job.Id)
} }
received, resp := th.SystemAdminClient.GetJobsByType(jobType, 0, 2) received, resp := th.SystemAdminClient.GetJobsByType(jobType, 0, 2)
@@ -195,9 +195,9 @@ func TestCancelJob(t *testing.T) {
} }
for _, job := range jobs { for _, job := range jobs {
_, err := th.App.Srv.Store.Job().Save(job) _, err := th.App.Srv().Store.Job().Save(job)
require.Nil(t, err) require.Nil(t, err)
defer th.App.Srv.Store.Job().Delete(job.Id) defer th.App.Srv().Store.Job().Delete(job.Id)
} }
_, resp := th.Client.CancelJob(jobs[0].Id) _, resp := th.Client.CancelJob(jobs[0].Id)

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

@@ -38,7 +38,7 @@ func syncLdap(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -54,7 +54,7 @@ func testLdap(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -68,7 +68,7 @@ func testLdap(c *Context, w http.ResponseWriter, r *http.Request) {
} }
func getLdapGroups(c *Context, w http.ResponseWriter, r *http.Request) { func getLdapGroups(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -125,7 +125,7 @@ func linkLdapGroup(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -214,7 +214,7 @@ func unlinkLdapGroup(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }

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

@@ -32,7 +32,7 @@ func getClientLicense(c *Context, w http.ResponseWriter, r *http.Request) {
var clientLicense map[string]string var clientLicense map[string]string
if c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
clientLicense = c.App.ClientLicense() clientLicense = c.App.ClientLicense()
} else { } else {
clientLicense = c.App.GetSanitizedClientLicense() clientLicense = c.App.GetSanitizedClientLicense()
@@ -44,7 +44,7 @@ func getClientLicense(c *Context, w http.ResponseWriter, r *http.Request) {
func addLicense(c *Context, w http.ResponseWriter, r *http.Request) { func addLicense(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt") c.LogAudit("attempt")
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -105,7 +105,7 @@ func addLicense(c *Context, w http.ResponseWriter, r *http.Request) {
func removeLicense(c *Context, w http.ResponseWriter, r *http.Request) { func removeLicense(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt") c.LogAudit("attempt")
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }

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

@@ -29,16 +29,16 @@ func createOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_OAUTH) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_OAUTH) {
c.SetPermissionError(model.PERMISSION_MANAGE_OAUTH) c.SetPermissionError(model.PERMISSION_MANAGE_OAUTH)
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
oauthApp.IsTrusted = false oauthApp.IsTrusted = false
} }
oauthApp.CreatorId = c.App.Session.UserId oauthApp.CreatorId = c.App.Session().UserId
rapp, err := c.App.CreateOAuthApp(oauthApp) rapp, err := c.App.CreateOAuthApp(oauthApp)
if err != nil { if err != nil {
@@ -57,7 +57,7 @@ func updateOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_OAUTH) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_OAUTH) {
c.SetPermissionError(model.PERMISSION_MANAGE_OAUTH) c.SetPermissionError(model.PERMISSION_MANAGE_OAUTH)
return return
} }
@@ -82,12 +82,12 @@ func updateOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if c.App.Session.UserId != oldOauthApp.CreatorId && !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH) { if c.App.Session().UserId != oldOauthApp.CreatorId && !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH)
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
oauthApp.IsTrusted = oldOauthApp.IsTrusted oauthApp.IsTrusted = oldOauthApp.IsTrusted
} }
@@ -103,17 +103,17 @@ func updateOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) {
} }
func getOAuthApps(c *Context, w http.ResponseWriter, r *http.Request) { func getOAuthApps(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_OAUTH) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_OAUTH) {
c.Err = model.NewAppError("getOAuthApps", "api.command.admin_only.app_error", nil, "", http.StatusForbidden) c.Err = model.NewAppError("getOAuthApps", "api.command.admin_only.app_error", nil, "", http.StatusForbidden)
return return
} }
var apps []*model.OAuthApp var apps []*model.OAuthApp
var err *model.AppError var err *model.AppError
if c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH) { if c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH) {
apps, err = c.App.GetOAuthApps(c.Params.Page, c.Params.PerPage) apps, err = c.App.GetOAuthApps(c.Params.Page, c.Params.PerPage)
} else if c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_OAUTH) { } else if c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_OAUTH) {
apps, err = c.App.GetOAuthAppsByCreator(c.App.Session.UserId, c.Params.Page, c.Params.PerPage) apps, err = c.App.GetOAuthAppsByCreator(c.App.Session().UserId, c.Params.Page, c.Params.PerPage)
} else { } else {
c.SetPermissionError(model.PERMISSION_MANAGE_OAUTH) c.SetPermissionError(model.PERMISSION_MANAGE_OAUTH)
return return
@@ -133,7 +133,7 @@ func getOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_OAUTH) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_OAUTH) {
c.SetPermissionError(model.PERMISSION_MANAGE_OAUTH) c.SetPermissionError(model.PERMISSION_MANAGE_OAUTH)
return return
} }
@@ -144,7 +144,7 @@ func getOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if oauthApp.CreatorId != c.App.Session.UserId && !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH) { if oauthApp.CreatorId != c.App.Session().UserId && !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH)
return return
} }
@@ -176,7 +176,7 @@ func deleteOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt") c.LogAudit("attempt")
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_OAUTH) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_OAUTH) {
c.SetPermissionError(model.PERMISSION_MANAGE_OAUTH) c.SetPermissionError(model.PERMISSION_MANAGE_OAUTH)
return return
} }
@@ -187,7 +187,7 @@ func deleteOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if c.App.Session.UserId != oauthApp.CreatorId && !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH) { if c.App.Session().UserId != oauthApp.CreatorId && !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH)
return return
} }
@@ -208,7 +208,7 @@ func regenerateOAuthAppSecret(c *Context, w http.ResponseWriter, r *http.Request
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_OAUTH) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_OAUTH) {
c.SetPermissionError(model.PERMISSION_MANAGE_OAUTH) c.SetPermissionError(model.PERMISSION_MANAGE_OAUTH)
return return
} }
@@ -219,7 +219,7 @@ func regenerateOAuthAppSecret(c *Context, w http.ResponseWriter, r *http.Request
return return
} }
if oauthApp.CreatorId != c.App.Session.UserId && !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH) { if oauthApp.CreatorId != c.App.Session().UserId && !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM_WIDE_OAUTH)
return return
} }
@@ -240,7 +240,7 @@ func getAuthorizedOAuthApps(c *Context, w http.ResponseWriter, r *http.Request)
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }

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

@@ -46,7 +46,7 @@ func uploadPlugin(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -92,7 +92,7 @@ func installPluginFromUrl(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -120,7 +120,7 @@ func installMarketplacePlugin(c *Context, w http.ResponseWriter, r *http.Request
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -147,7 +147,7 @@ func getPlugins(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -167,7 +167,7 @@ func getPluginStatuses(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -192,7 +192,7 @@ func removePlugin(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -243,7 +243,7 @@ func getMarketplacePlugins(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -280,7 +280,7 @@ func enablePlugin(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -304,7 +304,7 @@ func disablePlugin(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }

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

@@ -41,14 +41,14 @@ func createPost(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
post.UserId = c.App.Session.UserId post.UserId = c.App.Session().UserId
hasPermission := false hasPermission := false
if c.App.SessionHasPermissionToChannel(c.App.Session, post.ChannelId, model.PERMISSION_CREATE_POST) { if c.App.SessionHasPermissionToChannel(*c.App.Session(), post.ChannelId, model.PERMISSION_CREATE_POST) {
hasPermission = true hasPermission = true
} else if channel, err := c.App.GetChannel(post.ChannelId); err == nil { } else if channel, err := c.App.GetChannel(post.ChannelId); err == nil {
// Temporary permission check method until advanced permissions, please do not copy // Temporary permission check method until advanced permissions, please do not copy
if channel.Type == model.CHANNEL_OPEN && c.App.SessionHasPermissionToTeam(c.App.Session, channel.TeamId, model.PERMISSION_CREATE_POST_PUBLIC) { if channel.Type == model.CHANNEL_OPEN && c.App.SessionHasPermissionToTeam(*c.App.Session(), channel.TeamId, model.PERMISSION_CREATE_POST_PUBLIC) {
hasPermission = true hasPermission = true
} }
} }
@@ -58,11 +58,11 @@ func createPost(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if post.CreateAt != 0 && !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if post.CreateAt != 0 && !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
post.CreateAt = 0 post.CreateAt = 0
} }
rp, err := c.App.CreatePostAsUser(c.App.PostWithProxyRemovedFromImageURLs(post), c.App.Session.Id) rp, err := c.App.CreatePostAsUser(c.App.PostWithProxyRemovedFromImageURLs(post), c.App.Session().Id)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -79,10 +79,10 @@ func createPost(c *Context, w http.ResponseWriter, r *http.Request) {
} }
} }
if setOnlineBool { if setOnlineBool {
c.App.SetStatusOnline(c.App.Session.UserId, false) c.App.SetStatusOnline(c.App.Session().UserId, false)
} }
c.App.UpdateLastActivityAtIfNeeded(c.App.Session) c.App.UpdateLastActivityAtIfNeeded(*c.App.Session())
w.WriteHeader(http.StatusCreated) w.WriteHeader(http.StatusCreated)
@@ -104,10 +104,10 @@ func createEphemeralPost(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
ephRequest.Post.UserId = c.App.Session.UserId ephRequest.Post.UserId = c.App.Session().UserId
ephRequest.Post.CreateAt = model.GetMillis() ephRequest.Post.CreateAt = model.GetMillis()
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_CREATE_POST_EPHEMERAL) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_CREATE_POST_EPHEMERAL) {
c.SetPermissionError(model.PERMISSION_CREATE_POST_EPHEMERAL) c.SetPermissionError(model.PERMISSION_CREATE_POST_EPHEMERAL)
return return
} }
@@ -154,7 +154,7 @@ func getPostsForChannel(c *Context, w http.ResponseWriter, r *http.Request) {
page := c.Params.Page page := c.Params.Page
perPage := c.Params.PerPage perPage := c.Params.PerPage
if !c.App.SessionHasPermissionToChannel(c.App.Session, channelId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), channelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
@@ -213,13 +213,13 @@ func getPostsForChannelAroundLastUnread(c *Context, w http.ResponseWriter, r *ht
} }
userId := c.Params.UserId userId := c.Params.UserId
if !c.App.SessionHasPermissionToUser(c.App.Session, userId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), userId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
channelId := c.Params.ChannelId channelId := c.Params.ChannelId
if !c.App.SessionHasPermissionToChannel(c.App.Session, channelId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), channelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
@@ -263,7 +263,7 @@ func getFlaggedPostsForUser(c *Context, w http.ResponseWriter, r *http.Request)
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -291,7 +291,7 @@ func getFlaggedPostsForUser(c *Context, w http.ResponseWriter, r *http.Request)
if !ok { if !ok {
allowed = false allowed = false
if c.App.SessionHasPermissionToChannel(c.App.Session, post.ChannelId, model.PERMISSION_READ_CHANNEL) { if c.App.SessionHasPermissionToChannel(*c.App.Session(), post.ChannelId, model.PERMISSION_READ_CHANNEL) {
allowed = true allowed = true
} }
@@ -334,9 +334,9 @@ func getPost(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, channel.Id, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), channel.Id, model.PERMISSION_READ_CHANNEL) {
if channel.Type == model.CHANNEL_OPEN { if channel.Type == model.CHANNEL_OPEN {
if !c.App.SessionHasPermissionToTeam(c.App.Session, channel.TeamId, model.PERMISSION_READ_PUBLIC_CHANNEL) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), channel.TeamId, model.PERMISSION_READ_PUBLIC_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_PUBLIC_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_PUBLIC_CHANNEL)
return return
} }
@@ -368,19 +368,19 @@ func deletePost(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if c.App.Session.UserId == post.UserId { if c.App.Session().UserId == post.UserId {
if !c.App.SessionHasPermissionToChannel(c.App.Session, post.ChannelId, model.PERMISSION_DELETE_POST) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), post.ChannelId, model.PERMISSION_DELETE_POST) {
c.SetPermissionError(model.PERMISSION_DELETE_POST) c.SetPermissionError(model.PERMISSION_DELETE_POST)
return return
} }
} else { } else {
if !c.App.SessionHasPermissionToChannel(c.App.Session, post.ChannelId, model.PERMISSION_DELETE_OTHERS_POSTS) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), post.ChannelId, model.PERMISSION_DELETE_OTHERS_POSTS) {
c.SetPermissionError(model.PERMISSION_DELETE_OTHERS_POSTS) c.SetPermissionError(model.PERMISSION_DELETE_OTHERS_POSTS)
return return
} }
} }
if _, err := c.App.DeletePost(c.Params.PostId, c.App.Session.UserId); err != nil { if _, err := c.App.DeletePost(c.Params.PostId, c.App.Session().UserId); err != nil {
c.Err = err c.Err = err
return return
} }
@@ -412,9 +412,9 @@ func getPostThread(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, channel.Id, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), channel.Id, model.PERMISSION_READ_CHANNEL) {
if channel.Type == model.CHANNEL_OPEN { if channel.Type == model.CHANNEL_OPEN {
if !c.App.SessionHasPermissionToTeam(c.App.Session, channel.TeamId, model.PERMISSION_READ_PUBLIC_CHANNEL) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), channel.TeamId, model.PERMISSION_READ_PUBLIC_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_PUBLIC_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_PUBLIC_CHANNEL)
return return
} }
@@ -441,7 +441,7 @@ func searchPosts(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_VIEW_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM) c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return return
} }
@@ -481,10 +481,10 @@ func searchPosts(c *Context, w http.ResponseWriter, r *http.Request) {
startTime := time.Now() startTime := time.Now()
results, err := c.App.SearchPostsInTeamForUser(terms, c.App.Session.UserId, c.Params.TeamId, isOrSearch, includeDeletedChannels, timeZoneOffset, page, perPage) results, err := c.App.SearchPostsInTeamForUser(terms, c.App.Session().UserId, c.Params.TeamId, isOrSearch, includeDeletedChannels, timeZoneOffset, page, perPage)
elapsedTime := float64(time.Since(startTime)) / float64(time.Second) elapsedTime := float64(time.Since(startTime)) / float64(time.Second)
metrics := c.App.Metrics metrics := c.App.Metrics()
if metrics != nil { if metrics != nil {
metrics.IncrementPostsSearchCounter() metrics.IncrementPostsSearchCounter()
metrics.ObservePostsSearchDuration(elapsedTime) metrics.ObservePostsSearchDuration(elapsedTime)
@@ -522,7 +522,7 @@ func updatePost(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToChannelByPost(c.App.Session, c.Params.PostId, model.PERMISSION_EDIT_POST) { if !c.App.SessionHasPermissionToChannelByPost(*c.App.Session(), c.Params.PostId, model.PERMISSION_EDIT_POST) {
c.SetPermissionError(model.PERMISSION_EDIT_POST) c.SetPermissionError(model.PERMISSION_EDIT_POST)
return return
} }
@@ -536,8 +536,8 @@ func updatePost(c *Context, w http.ResponseWriter, r *http.Request) {
// Updating the file_ids of a post is not a supported operation and will be ignored // Updating the file_ids of a post is not a supported operation and will be ignored
post.FileIds = originalPost.FileIds post.FileIds = originalPost.FileIds
if c.App.Session.UserId != originalPost.UserId { if c.App.Session().UserId != originalPost.UserId {
if !c.App.SessionHasPermissionToChannelByPost(c.App.Session, c.Params.PostId, model.PERMISSION_EDIT_OTHERS_POSTS) { if !c.App.SessionHasPermissionToChannelByPost(*c.App.Session(), c.Params.PostId, model.PERMISSION_EDIT_OTHERS_POSTS) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHERS_POSTS) c.SetPermissionError(model.PERMISSION_EDIT_OTHERS_POSTS)
return return
} }
@@ -570,7 +570,7 @@ func patchPost(c *Context, w http.ResponseWriter, r *http.Request) {
// Updating the file_ids of a post is not a supported operation and will be ignored // Updating the file_ids of a post is not a supported operation and will be ignored
post.FileIds = nil post.FileIds = nil
if !c.App.SessionHasPermissionToChannelByPost(c.App.Session, c.Params.PostId, model.PERMISSION_EDIT_POST) { if !c.App.SessionHasPermissionToChannelByPost(*c.App.Session(), c.Params.PostId, model.PERMISSION_EDIT_POST) {
c.SetPermissionError(model.PERMISSION_EDIT_POST) c.SetPermissionError(model.PERMISSION_EDIT_POST)
return return
} }
@@ -581,8 +581,8 @@ func patchPost(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if c.App.Session.UserId != originalPost.UserId { if c.App.Session().UserId != originalPost.UserId {
if !c.App.SessionHasPermissionToChannelByPost(c.App.Session, c.Params.PostId, model.PERMISSION_EDIT_OTHERS_POSTS) { if !c.App.SessionHasPermissionToChannelByPost(*c.App.Session(), c.Params.PostId, model.PERMISSION_EDIT_OTHERS_POSTS) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHERS_POSTS) c.SetPermissionError(model.PERMISSION_EDIT_OTHERS_POSTS)
return return
} }
@@ -602,11 +602,11 @@ func setPostUnread(c *Context, w http.ResponseWriter, r *http.Request) {
if c.Err != nil { if c.Err != nil {
return return
} }
if c.App.Session.UserId != c.Params.UserId && !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if c.App.Session().UserId != c.Params.UserId && !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
if !c.App.SessionHasPermissionToChannelByPost(c.App.Session, c.Params.PostId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannelByPost(*c.App.Session(), c.Params.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
@@ -625,13 +625,13 @@ func saveIsPinnedPost(c *Context, w http.ResponseWriter, r *http.Request, isPinn
return return
} }
if !c.App.SessionHasPermissionToChannelByPost(c.App.Session, c.Params.PostId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannelByPost(*c.App.Session(), c.Params.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
// Restrict pinning if the experimental read-only-town-square setting is on. // Restrict pinning if the experimental read-only-town-square setting is on.
user, err := c.App.GetUser(c.App.Session.UserId) user, err := c.App.GetUser(c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -683,7 +683,7 @@ func getFileInfosForPost(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToChannelByPost(c.App.Session, c.Params.PostId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannelByPost(*c.App.Session(), c.Params.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }

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

@@ -1617,12 +1617,12 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) {
// Set channel member's last viewed to 0. // Set channel member's last viewed to 0.
// All returned posts are latest posts as if all previous posts were already read by the user. // All returned posts are latest posts as if all previous posts were already read by the user.
channelMember, err := th.App.Srv.Store.Channel().GetMember(channelId, userId) channelMember, err := th.App.Srv().Store.Channel().GetMember(channelId, userId)
require.Nil(t, err) require.Nil(t, err)
channelMember.LastViewedAt = 0 channelMember.LastViewedAt = 0
_, err = th.App.Srv.Store.Channel().UpdateMember(channelMember) _, err = th.App.Srv().Store.Channel().UpdateMember(channelMember)
require.Nil(t, err) require.Nil(t, err)
th.App.Srv.Store.Post().InvalidateLastPostTimeCache(channelId) th.App.Srv().Store.Post().InvalidateLastPostTimeCache(channelId)
posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 20, 20) posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 20, 20)
CheckNoError(t, resp) CheckNoError(t, resp)
@@ -1638,12 +1638,12 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) {
postIdNames[systemPost1.Id] = "system post 1" postIdNames[systemPost1.Id] = "system post 1"
// Set channel member's last viewed before post1. // Set channel member's last viewed before post1.
channelMember, err = th.App.Srv.Store.Channel().GetMember(channelId, userId) channelMember, err = th.App.Srv().Store.Channel().GetMember(channelId, userId)
require.Nil(t, err) require.Nil(t, err)
channelMember.LastViewedAt = post1.CreateAt - 1 channelMember.LastViewedAt = post1.CreateAt - 1
_, err = th.App.Srv.Store.Channel().UpdateMember(channelMember) _, err = th.App.Srv().Store.Channel().UpdateMember(channelMember)
require.Nil(t, err) require.Nil(t, err)
th.App.Srv.Store.Post().InvalidateLastPostTimeCache(channelId) th.App.Srv().Store.Post().InvalidateLastPostTimeCache(channelId)
posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 3, 3) posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 3, 3)
CheckNoError(t, resp) CheckNoError(t, resp)
@@ -1662,12 +1662,12 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) {
}, posts) }, posts)
// Set channel member's last viewed before post6. // Set channel member's last viewed before post6.
channelMember, err = th.App.Srv.Store.Channel().GetMember(channelId, userId) channelMember, err = th.App.Srv().Store.Channel().GetMember(channelId, userId)
require.Nil(t, err) require.Nil(t, err)
channelMember.LastViewedAt = post6.CreateAt - 1 channelMember.LastViewedAt = post6.CreateAt - 1
_, err = th.App.Srv.Store.Channel().UpdateMember(channelMember) _, err = th.App.Srv().Store.Channel().UpdateMember(channelMember)
require.Nil(t, err) require.Nil(t, err)
th.App.Srv.Store.Post().InvalidateLastPostTimeCache(channelId) th.App.Srv().Store.Post().InvalidateLastPostTimeCache(channelId)
posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 3, 3) posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 3, 3)
CheckNoError(t, resp) CheckNoError(t, resp)
@@ -1689,12 +1689,12 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) {
}, posts) }, posts)
// Set channel member's last viewed before post10. // Set channel member's last viewed before post10.
channelMember, err = th.App.Srv.Store.Channel().GetMember(channelId, userId) channelMember, err = th.App.Srv().Store.Channel().GetMember(channelId, userId)
require.Nil(t, err) require.Nil(t, err)
channelMember.LastViewedAt = post10.CreateAt - 1 channelMember.LastViewedAt = post10.CreateAt - 1
_, err = th.App.Srv.Store.Channel().UpdateMember(channelMember) _, err = th.App.Srv().Store.Channel().UpdateMember(channelMember)
require.Nil(t, err) require.Nil(t, err)
th.App.Srv.Store.Post().InvalidateLastPostTimeCache(channelId) th.App.Srv().Store.Post().InvalidateLastPostTimeCache(channelId)
posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 3, 3) posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 3, 3)
CheckNoError(t, resp) CheckNoError(t, resp)
@@ -1714,12 +1714,12 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) {
}, posts) }, posts)
// Set channel member's last viewed equal to post10. // Set channel member's last viewed equal to post10.
channelMember, err = th.App.Srv.Store.Channel().GetMember(channelId, userId) channelMember, err = th.App.Srv().Store.Channel().GetMember(channelId, userId)
require.Nil(t, err) require.Nil(t, err)
channelMember.LastViewedAt = post10.CreateAt channelMember.LastViewedAt = post10.CreateAt
_, err = th.App.Srv.Store.Channel().UpdateMember(channelMember) _, err = th.App.Srv().Store.Channel().UpdateMember(channelMember)
require.Nil(t, err) require.Nil(t, err)
th.App.Srv.Store.Post().InvalidateLastPostTimeCache(channelId) th.App.Srv().Store.Post().InvalidateLastPostTimeCache(channelId)
posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 3, 3) posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 3, 3)
CheckNoError(t, resp) CheckNoError(t, resp)
@@ -1754,12 +1754,12 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) {
postIdNames[post12.Id] = "post12 (reply to post4)" postIdNames[post12.Id] = "post12 (reply to post4)"
postIdNames[post13.Id] = "post13" postIdNames[post13.Id] = "post13"
channelMember, err = th.App.Srv.Store.Channel().GetMember(channelId, userId) channelMember, err = th.App.Srv().Store.Channel().GetMember(channelId, userId)
require.Nil(t, err) require.Nil(t, err)
channelMember.LastViewedAt = post12.CreateAt - 1 channelMember.LastViewedAt = post12.CreateAt - 1
_, err = th.App.Srv.Store.Channel().UpdateMember(channelMember) _, err = th.App.Srv().Store.Channel().UpdateMember(channelMember)
require.Nil(t, err) require.Nil(t, err)
th.App.Srv.Store.Post().InvalidateLastPostTimeCache(channelId) th.App.Srv().Store.Post().InvalidateLastPostTimeCache(channelId)
posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 1, 2) posts, resp = Client.GetPostsAroundLastUnread(userId, channelId, 1, 2)
CheckNoError(t, resp) CheckNoError(t, resp)

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

@@ -23,7 +23,7 @@ func getPreferences(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -43,7 +43,7 @@ func getPreferencesByCategory(c *Context, w http.ResponseWriter, r *http.Request
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -63,7 +63,7 @@ func getPreferenceByCategoryAndName(c *Context, w http.ResponseWriter, r *http.R
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -83,7 +83,7 @@ func updatePreferences(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -104,7 +104,7 @@ func updatePreferences(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToChannel(c.App.Session, post.ChannelId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), post.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
@@ -127,7 +127,7 @@ func deletePreferences(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }

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

@@ -28,12 +28,12 @@ func saveReaction(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if reaction.UserId != c.App.Session.UserId { if reaction.UserId != c.App.Session().UserId {
c.Err = model.NewAppError("saveReaction", "api.reaction.save_reaction.user_id.app_error", nil, "", http.StatusForbidden) c.Err = model.NewAppError("saveReaction", "api.reaction.save_reaction.user_id.app_error", nil, "", http.StatusForbidden)
return return
} }
if !c.App.SessionHasPermissionToChannelByPost(c.App.Session, reaction.PostId, model.PERMISSION_ADD_REACTION) { if !c.App.SessionHasPermissionToChannelByPost(*c.App.Session(), reaction.PostId, model.PERMISSION_ADD_REACTION) {
c.SetPermissionError(model.PERMISSION_ADD_REACTION) c.SetPermissionError(model.PERMISSION_ADD_REACTION)
return return
} }
@@ -53,7 +53,7 @@ func getReactions(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToChannelByPost(c.App.Session, c.Params.PostId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannelByPost(*c.App.Session(), c.Params.PostId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
@@ -83,12 +83,12 @@ func deleteReaction(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToChannelByPost(c.App.Session, c.Params.PostId, model.PERMISSION_REMOVE_REACTION) { if !c.App.SessionHasPermissionToChannelByPost(*c.App.Session(), c.Params.PostId, model.PERMISSION_REMOVE_REACTION) {
c.SetPermissionError(model.PERMISSION_REMOVE_REACTION) c.SetPermissionError(model.PERMISSION_REMOVE_REACTION)
return return
} }
if c.Params.UserId != c.App.Session.UserId && !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_REMOVE_OTHERS_REACTIONS) { if c.Params.UserId != c.App.Session().UserId && !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_REMOVE_OTHERS_REACTIONS) {
c.SetPermissionError(model.PERMISSION_REMOVE_OTHERS_REACTIONS) c.SetPermissionError(model.PERMISSION_REMOVE_OTHERS_REACTIONS)
return return
} }
@@ -111,7 +111,7 @@ func deleteReaction(c *Context, w http.ResponseWriter, r *http.Request) {
func getBulkReactions(c *Context, w http.ResponseWriter, r *http.Request) { func getBulkReactions(c *Context, w http.ResponseWriter, r *http.Request) {
postIds := model.ArrayFromJson(r.Body) postIds := model.ArrayFromJson(r.Body)
for _, postId := range postIds { for _, postId := range postIds {
if !c.App.SessionHasPermissionToChannelByPost(c.App.Session, postId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannelByPost(*c.App.Session(), postId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }

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

@@ -244,7 +244,7 @@ func TestGetReactions(t *testing.T) {
var reactions []*model.Reaction var reactions []*model.Reaction
for _, userReaction := range userReactions { for _, userReaction := range userReactions {
reaction, err := th.App.Srv.Store.Reaction().Save(userReaction) reaction, err := th.App.Srv().Store.Reaction().Save(userReaction)
require.Nil(t, err) require.Nil(t, err)
reactions = append(reactions, reaction) reactions = append(reactions, reaction)
} }
@@ -595,7 +595,7 @@ func TestGetBulkReactions(t *testing.T) {
for _, userReaction := range userReactions { for _, userReaction := range userReactions {
reactions := expectedPostIdsReactionsMap[userReaction.PostId] reactions := expectedPostIdsReactionsMap[userReaction.PostId]
reaction, err := th.App.Srv.Store.Reaction().Save(userReaction) reaction, err := th.App.Srv().Store.Reaction().Save(userReaction)
require.Nil(t, err) require.Nil(t, err)
reactions = append(reactions, reaction) reactions = append(reactions, reaction)
expectedPostIdsReactionsMap[userReaction.PostId] = reactions expectedPostIdsReactionsMap[userReaction.PostId] = reactions

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

@@ -134,7 +134,7 @@ func patchRole(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }

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

@@ -25,9 +25,9 @@ func TestGetRole(t *testing.T) {
SchemeManaged: true, SchemeManaged: true,
} }
role, err := th.App.Srv.Store.Role().Save(role) role, err := th.App.Srv().Store.Role().Save(role)
assert.Nil(t, err) assert.Nil(t, err)
defer th.App.Srv.Store.Job().Delete(role.Id) defer th.App.Srv().Store.Job().Delete(role.Id)
received, resp := th.Client.GetRole(role.Id) received, resp := th.Client.GetRole(role.Id)
CheckNoError(t, resp) CheckNoError(t, resp)
@@ -58,9 +58,9 @@ func TestGetRoleByName(t *testing.T) {
SchemeManaged: true, SchemeManaged: true,
} }
role, err := th.App.Srv.Store.Role().Save(role) role, err := th.App.Srv().Store.Role().Save(role)
assert.Nil(t, err) assert.Nil(t, err)
defer th.App.Srv.Store.Job().Delete(role.Id) defer th.App.Srv().Store.Job().Delete(role.Id)
received, resp := th.Client.GetRoleByName(role.Name) received, resp := th.Client.GetRoleByName(role.Name)
CheckNoError(t, resp) CheckNoError(t, resp)
@@ -105,17 +105,17 @@ func TestGetRolesByNames(t *testing.T) {
SchemeManaged: true, SchemeManaged: true,
} }
role1, err := th.App.Srv.Store.Role().Save(role1) role1, err := th.App.Srv().Store.Role().Save(role1)
assert.Nil(t, err) assert.Nil(t, err)
defer th.App.Srv.Store.Job().Delete(role1.Id) defer th.App.Srv().Store.Job().Delete(role1.Id)
role2, err = th.App.Srv.Store.Role().Save(role2) role2, err = th.App.Srv().Store.Role().Save(role2)
assert.Nil(t, err) assert.Nil(t, err)
defer th.App.Srv.Store.Job().Delete(role2.Id) defer th.App.Srv().Store.Job().Delete(role2.Id)
role3, err = th.App.Srv.Store.Role().Save(role3) role3, err = th.App.Srv().Store.Role().Save(role3)
assert.Nil(t, err) assert.Nil(t, err)
defer th.App.Srv.Store.Job().Delete(role3.Id) defer th.App.Srv().Store.Job().Delete(role3.Id)
// Check all three roles can be found. // Check all three roles can be found.
received, resp := th.Client.GetRolesByNames([]string{role1.Name, role2.Name, role3.Name}) received, resp := th.Client.GetRolesByNames([]string{role1.Name, role2.Name, role3.Name})
@@ -154,9 +154,9 @@ func TestPatchRole(t *testing.T) {
SchemeManaged: true, SchemeManaged: true,
} }
role, err := th.App.Srv.Store.Role().Save(role) role, err := th.App.Srv().Store.Role().Save(role)
assert.Nil(t, err) assert.Nil(t, err)
defer th.App.Srv.Store.Job().Delete(role.Id) defer th.App.Srv().Store.Job().Delete(role.Id)
patch := &model.RolePatch{ patch := &model.RolePatch{
Permissions: &[]string{"manage_system", "create_public_channel", "manage_incoming_webhooks", "manage_outgoing_webhooks"}, Permissions: &[]string{"manage_system", "create_public_channel", "manage_incoming_webhooks", "manage_outgoing_webhooks"},
@@ -214,7 +214,7 @@ func TestPatchRole(t *testing.T) {
license.Features.GuestAccountsPermissions = model.NewBool(false) license.Features.GuestAccountsPermissions = model.NewBool(false)
th.App.SetLicense(license) th.App.SetLicense(license)
guestRole, err := th.App.Srv.Store.Role().GetByName("system_guest") guestRole, err := th.App.Srv().Store.Role().GetByName("system_guest")
require.Nil(t, err) require.Nil(t, err)
received, resp = th.SystemAdminClient.PatchRole(guestRole.Id, patch) received, resp = th.SystemAdminClient.PatchRole(guestRole.Id, patch)
CheckNotImplementedStatus(t, resp) CheckNotImplementedStatus(t, resp)
@@ -224,7 +224,7 @@ func TestPatchRole(t *testing.T) {
license := model.NewTestLicense() license := model.NewTestLicense()
license.Features.GuestAccountsPermissions = model.NewBool(true) license.Features.GuestAccountsPermissions = model.NewBool(true)
th.App.SetLicense(license) th.App.SetLicense(license)
guestRole, err := th.App.Srv.Store.Role().GetByName("system_guest") guestRole, err := th.App.Srv().Store.Role().GetByName("system_guest")
require.Nil(t, err) require.Nil(t, err)
_, resp = th.SystemAdminClient.PatchRole(guestRole.Id, patch) _, resp = th.SystemAdminClient.PatchRole(guestRole.Id, patch)
CheckNoError(t, resp) CheckNoError(t, resp)

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

@@ -61,7 +61,7 @@ func parseSamlCertificateRequest(r *http.Request, maxFileSize int64) (*multipart
} }
func addSamlPublicCertificate(c *Context, w http.ResponseWriter, r *http.Request) { func addSamlPublicCertificate(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -80,7 +80,7 @@ func addSamlPublicCertificate(c *Context, w http.ResponseWriter, r *http.Request
} }
func addSamlPrivateCertificate(c *Context, w http.ResponseWriter, r *http.Request) { func addSamlPrivateCertificate(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -99,7 +99,7 @@ func addSamlPrivateCertificate(c *Context, w http.ResponseWriter, r *http.Reques
} }
func addSamlIdpCertificate(c *Context, w http.ResponseWriter, r *http.Request) { func addSamlIdpCertificate(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -146,7 +146,7 @@ func addSamlIdpCertificate(c *Context, w http.ResponseWriter, r *http.Request) {
} }
func removeSamlPublicCertificate(c *Context, w http.ResponseWriter, r *http.Request) { func removeSamlPublicCertificate(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -160,7 +160,7 @@ func removeSamlPublicCertificate(c *Context, w http.ResponseWriter, r *http.Requ
} }
func removeSamlPrivateCertificate(c *Context, w http.ResponseWriter, r *http.Request) { func removeSamlPrivateCertificate(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -174,7 +174,7 @@ func removeSamlPrivateCertificate(c *Context, w http.ResponseWriter, r *http.Req
} }
func removeSamlIdpCertificate(c *Context, w http.ResponseWriter, r *http.Request) { func removeSamlIdpCertificate(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -188,7 +188,7 @@ func removeSamlIdpCertificate(c *Context, w http.ResponseWriter, r *http.Request
} }
func getSamlCertificateStatus(c *Context, w http.ResponseWriter, r *http.Request) { func getSamlCertificateStatus(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -198,7 +198,7 @@ func getSamlCertificateStatus(c *Context, w http.ResponseWriter, r *http.Request
} }
func getSamlMetadataFromIdp(c *Context, w http.ResponseWriter, r *http.Request) { func getSamlMetadataFromIdp(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }

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

@@ -31,7 +31,7 @@ func createScheme(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -52,7 +52,7 @@ func getScheme(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -67,7 +67,7 @@ func getScheme(c *Context, w http.ResponseWriter, r *http.Request) {
} }
func getSchemes(c *Context, w http.ResponseWriter, r *http.Request) { func getSchemes(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -93,7 +93,7 @@ func getTeamsForScheme(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -124,7 +124,7 @@ func getChannelsForScheme(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -172,7 +172,7 @@ func patchScheme(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -198,7 +198,7 @@ func deleteScheme(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }

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

@@ -308,7 +308,7 @@ func TestGetTeamsForScheme(t *testing.T) {
Type: model.TEAM_OPEN, Type: model.TEAM_OPEN,
} }
team1, err := th.App.Srv.Store.Team().Save(team1) team1, err := th.App.Srv().Store.Team().Save(team1)
require.Nil(t, err) require.Nil(t, err)
l2, r2 := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100) l2, r2 := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100)
@@ -316,7 +316,7 @@ func TestGetTeamsForScheme(t *testing.T) {
assert.Zero(t, len(l2)) assert.Zero(t, len(l2))
team1.SchemeId = &scheme1.Id team1.SchemeId = &scheme1.Id
team1, err = th.App.Srv.Store.Team().Update(team1) team1, err = th.App.Srv().Store.Team().Update(team1)
assert.Nil(t, err) assert.Nil(t, err)
l3, r3 := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100) l3, r3 := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100)
@@ -330,7 +330,7 @@ func TestGetTeamsForScheme(t *testing.T) {
Type: model.TEAM_OPEN, Type: model.TEAM_OPEN,
SchemeId: &scheme1.Id, SchemeId: &scheme1.Id,
} }
team2, err = th.App.Srv.Store.Team().Save(team2) team2, err = th.App.Srv().Store.Team().Save(team2)
require.Nil(t, err) require.Nil(t, err)
l4, r4 := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100) l4, r4 := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100)
@@ -401,7 +401,7 @@ func TestGetChannelsForScheme(t *testing.T) {
Type: model.CHANNEL_OPEN, Type: model.CHANNEL_OPEN,
} }
channel1, errCh := th.App.Srv.Store.Channel().Save(channel1, 1000000) channel1, errCh := th.App.Srv().Store.Channel().Save(channel1, 1000000)
assert.Nil(t, errCh) assert.Nil(t, errCh)
l2, r2 := th.SystemAdminClient.GetChannelsForScheme(scheme1.Id, 0, 100) l2, r2 := th.SystemAdminClient.GetChannelsForScheme(scheme1.Id, 0, 100)
@@ -409,7 +409,7 @@ func TestGetChannelsForScheme(t *testing.T) {
assert.Zero(t, len(l2)) assert.Zero(t, len(l2))
channel1.SchemeId = &scheme1.Id channel1.SchemeId = &scheme1.Id
channel1, err := th.App.Srv.Store.Channel().Update(channel1) channel1, err := th.App.Srv().Store.Channel().Update(channel1)
assert.Nil(t, err) assert.Nil(t, err)
l3, r3 := th.SystemAdminClient.GetChannelsForScheme(scheme1.Id, 0, 100) l3, r3 := th.SystemAdminClient.GetChannelsForScheme(scheme1.Id, 0, 100)
@@ -424,7 +424,7 @@ func TestGetChannelsForScheme(t *testing.T) {
Type: model.CHANNEL_OPEN, Type: model.CHANNEL_OPEN,
SchemeId: &scheme1.Id, SchemeId: &scheme1.Id,
} }
channel2, err = th.App.Srv.Store.Channel().Save(channel2, 1000000) channel2, err = th.App.Srv().Store.Channel().Save(channel2, 1000000)
assert.Nil(t, err) assert.Nil(t, err)
l4, r4 := th.SystemAdminClient.GetChannelsForScheme(scheme1.Id, 0, 100) l4, r4 := th.SystemAdminClient.GetChannelsForScheme(scheme1.Id, 0, 100)
@@ -620,7 +620,7 @@ func TestDeleteScheme(t *testing.T) {
assert.Zero(t, role6.DeleteAt) assert.Zero(t, role6.DeleteAt)
// Make sure this scheme is in use by a team. // Make sure this scheme is in use by a team.
team, err := th.App.Srv.Store.Team().Save(&model.Team{ team, err := th.App.Srv().Store.Team().Save(&model.Team{
Name: "zz" + model.NewId(), Name: "zz" + model.NewId(),
DisplayName: model.NewId(), DisplayName: model.NewId(),
Email: model.NewId() + "@nowhere.com", Email: model.NewId() + "@nowhere.com",
@@ -689,7 +689,7 @@ func TestDeleteScheme(t *testing.T) {
assert.Zero(t, role6.DeleteAt) assert.Zero(t, role6.DeleteAt)
// Make sure this scheme is in use by a team. // Make sure this scheme is in use by a team.
channel, err := th.App.Srv.Store.Channel().Save(&model.Channel{ channel, err := th.App.Srv().Store.Channel().Save(&model.Channel{
TeamId: model.NewId(), TeamId: model.NewId(),
DisplayName: model.NewId(), DisplayName: model.NewId(),
Name: model.NewId(), Name: model.NewId(),

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

@@ -74,7 +74,7 @@ func updateUserStatus(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }

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

@@ -80,7 +80,7 @@ func getSystemPing(c *Context, w http.ResponseWriter, r *http.Request) {
currentTime := fmt.Sprintf("%d", time.Now().Unix()) currentTime := fmt.Sprintf("%d", time.Now().Unix())
healthCheckKey := "health_check" healthCheckKey := "health_check"
writeErr := c.App.Srv.Store.System().SaveOrUpdate(&model.System{ writeErr := c.App.Srv().Store.System().SaveOrUpdate(&model.System{
Name: healthCheckKey, Name: healthCheckKey,
Value: currentTime, Value: currentTime,
}) })
@@ -89,7 +89,7 @@ func getSystemPing(c *Context, w http.ResponseWriter, r *http.Request) {
s[dbStatusKey] = model.STATUS_UNHEALTHY s[dbStatusKey] = model.STATUS_UNHEALTHY
s[model.STATUS] = model.STATUS_UNHEALTHY s[model.STATUS] = model.STATUS_UNHEALTHY
} else { } else {
healthCheck, readErr := c.App.Srv.Store.System().GetByName(healthCheckKey) healthCheck, readErr := c.App.Srv().Store.System().GetByName(healthCheckKey)
if readErr != nil { if readErr != nil {
mlog.Debug("Unable to read from database.", mlog.Err(readErr)) mlog.Debug("Unable to read from database.", mlog.Err(readErr))
s[dbStatusKey] = model.STATUS_UNHEALTHY s[dbStatusKey] = model.STATUS_UNHEALTHY
@@ -136,7 +136,7 @@ func testEmail(c *Context, w http.ResponseWriter, r *http.Request) {
cfg = c.App.Config() cfg = c.App.Config()
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -146,7 +146,7 @@ func testEmail(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
err := c.App.TestEmail(c.App.Session.UserId, cfg) err := c.App.TestEmail(c.App.Session().UserId, cfg)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -156,7 +156,7 @@ func testEmail(c *Context, w http.ResponseWriter, r *http.Request) {
} }
func testSiteURL(c *Context, w http.ResponseWriter, r *http.Request) { func testSiteURL(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -182,7 +182,7 @@ func testSiteURL(c *Context, w http.ResponseWriter, r *http.Request) {
} }
func getAudits(c *Context, w http.ResponseWriter, r *http.Request) { func getAudits(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -198,7 +198,7 @@ func getAudits(c *Context, w http.ResponseWriter, r *http.Request) {
} }
func databaseRecycle(c *Context, w http.ResponseWriter, r *http.Request) { func databaseRecycle(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -214,7 +214,7 @@ func databaseRecycle(c *Context, w http.ResponseWriter, r *http.Request) {
} }
func invalidateCaches(c *Context, w http.ResponseWriter, r *http.Request) { func invalidateCaches(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -235,7 +235,7 @@ func invalidateCaches(c *Context, w http.ResponseWriter, r *http.Request) {
} }
func getLogs(c *Context, w http.ResponseWriter, r *http.Request) { func getLogs(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -253,12 +253,12 @@ func postLog(c *Context, w http.ResponseWriter, r *http.Request) {
forceToDebug := false forceToDebug := false
if !*c.App.Config().ServiceSettings.EnableDeveloper { if !*c.App.Config().ServiceSettings.EnableDeveloper {
if c.App.Session.UserId == "" { if c.App.Session().UserId == "" {
c.Err = model.NewAppError("postLog", "api.context.permissions.app_error", nil, "", http.StatusForbidden) c.Err = model.NewAppError("postLog", "api.context.permissions.app_error", nil, "", http.StatusForbidden)
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
forceToDebug = true forceToDebug = true
} }
} }
@@ -274,7 +274,7 @@ func postLog(c *Context, w http.ResponseWriter, r *http.Request) {
msg = "Client Logs API Endpoint Message: " + msg msg = "Client Logs API Endpoint Message: " + msg
fields := []mlog.Field{ fields := []mlog.Field{
mlog.String("type", "client_message"), mlog.String("type", "client_message"),
mlog.String("user_agent", c.App.UserAgent), mlog.String("user_agent", c.App.UserAgent()),
} }
if !forceToDebug && lvl == "ERROR" { if !forceToDebug && lvl == "ERROR" {
@@ -295,7 +295,7 @@ func getAnalytics(c *Context, w http.ResponseWriter, r *http.Request) {
name = "standard" name = "standard"
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -315,7 +315,7 @@ func getAnalytics(c *Context, w http.ResponseWriter, r *http.Request) {
} }
func getSupportedTimezones(c *Context, w http.ResponseWriter, r *http.Request) { func getSupportedTimezones(c *Context, w http.ResponseWriter, r *http.Request) {
supportedTimezones := c.App.Timezones.GetSupported() supportedTimezones := c.App.Timezones().GetSupported()
if supportedTimezones == nil { if supportedTimezones == nil {
supportedTimezones = make([]string, 0) supportedTimezones = make([]string, 0)
} }
@@ -335,7 +335,7 @@ func testS3(c *Context, w http.ResponseWriter, r *http.Request) {
cfg = c.App.Config() cfg = c.App.Config()
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -389,7 +389,7 @@ func getRedirectLocation(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
client := c.App.HTTPService.MakeClient(false) client := c.App.HTTPService().MakeClient(false)
client.CheckRedirect = func(req *http.Request, via []*http.Request) error { client.CheckRedirect = func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse return http.ErrUseLastResponse
} }
@@ -431,7 +431,7 @@ func pushNotificationAck(c *Context, w http.ResponseWriter, r *http.Request) {
if ack.IsIdLoaded { if ack.IsIdLoaded {
if err != nil { if err != nil {
// Log the error only, then continue to fetch notification message // Log the error only, then continue to fetch notification message
c.App.NotificationsLog.Error("Notification ack not sent to push proxy", c.App.NotificationsLog().Error("Notification ack not sent to push proxy",
mlog.String("ackId", ack.Id), mlog.String("ackId", ack.Id),
mlog.String("type", ack.NotificationType), mlog.String("type", ack.NotificationType),
mlog.String("postId", ack.PostId), mlog.String("postId", ack.PostId),
@@ -439,14 +439,14 @@ func pushNotificationAck(c *Context, w http.ResponseWriter, r *http.Request) {
) )
} }
notificationInterface := c.App.Notification notificationInterface := c.App.Notification()
if notificationInterface == nil { if notificationInterface == nil {
c.Err = model.NewAppError("pushNotificationAck", "api.system.id_loaded.not_available.app_error", nil, "", http.StatusFound) c.Err = model.NewAppError("pushNotificationAck", "api.system.id_loaded.not_available.app_error", nil, "", http.StatusFound)
return return
} }
msg, appError := notificationInterface.GetNotificationMessage(ack, c.App.Session.UserId) msg, appError := notificationInterface.GetNotificationMessage(ack, c.App.Session().UserId)
if appError != nil { if appError != nil {
c.Err = model.NewAppError("pushNotificationAck", "api.push_notification.id_loaded.fetch.app_error", nil, appError.Error(), http.StatusInternalServerError) c.Err = model.NewAppError("pushNotificationAck", "api.push_notification.id_loaded.fetch.app_error", nil, appError.Error(), http.StatusInternalServerError)
return return
@@ -464,7 +464,7 @@ func pushNotificationAck(c *Context, w http.ResponseWriter, r *http.Request) {
} }
func setServerBusy(c *Context, w http.ResponseWriter, r *http.Request) { func setServerBusy(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -481,25 +481,25 @@ func setServerBusy(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
c.App.Srv.Busy.Set(time.Second * time.Duration(i)) c.App.Srv().Busy.Set(time.Second * time.Duration(i))
mlog.Warn("server busy state activated - non-critical services disabled", mlog.Int64("seconds", i)) mlog.Warn("server busy state activated - non-critical services disabled", mlog.Int64("seconds", i))
ReturnStatusOK(w) ReturnStatusOK(w)
} }
func clearServerBusy(c *Context, w http.ResponseWriter, r *http.Request) { func clearServerBusy(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
c.App.Srv.Busy.Clear() c.App.Srv().Busy.Clear()
mlog.Info("server busy state cleared - non-critical services enabled") mlog.Info("server busy state cleared - non-critical services enabled")
ReturnStatusOK(w) ReturnStatusOK(w)
} }
func getServerBusyExpires(c *Context, w http.ResponseWriter, r *http.Request) { func getServerBusyExpires(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
w.Write([]byte(c.App.Srv.Busy.ToJson())) w.Write([]byte(c.App.Srv().Busy.ToJson()))
} }

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

@@ -451,7 +451,7 @@ func TestSupportedTimezones(t *testing.T) {
defer th.TearDown() defer th.TearDown()
Client := th.Client Client := th.Client
supportedTimezonesFromConfig := th.App.Timezones.GetSupported() supportedTimezonesFromConfig := th.App.Timezones().GetSupported()
supportedTimezones, resp := Client.GetSupportedTimezone() supportedTimezones, resp := Client.GetSupportedTimezone()
CheckNoError(t, resp) CheckNoError(t, resp)
@@ -524,14 +524,14 @@ func TestSetServerBusy(t *testing.T) {
ok, resp := th.Client.SetServerBusy(secs) ok, resp := th.Client.SetServerBusy(secs)
CheckForbiddenStatus(t, resp) CheckForbiddenStatus(t, resp)
require.False(t, ok, "should not set server busy due to no permission") require.False(t, ok, "should not set server busy due to no permission")
require.False(t, th.App.Srv.Busy.IsBusy(), "server should not be marked busy") require.False(t, th.App.Srv().Busy.IsBusy(), "server should not be marked busy")
}) })
t.Run("as system admin", func(t *testing.T) { t.Run("as system admin", func(t *testing.T) {
ok, resp := th.SystemAdminClient.SetServerBusy(secs) ok, resp := th.SystemAdminClient.SetServerBusy(secs)
CheckNoError(t, resp) CheckNoError(t, resp)
require.True(t, ok, "should set server busy successfully") require.True(t, ok, "should set server busy successfully")
require.True(t, th.App.Srv.Busy.IsBusy(), "server should be marked busy") require.True(t, th.App.Srv().Busy.IsBusy(), "server should be marked busy")
}) })
} }
@@ -545,7 +545,7 @@ func TestSetServerBusyInvalidParam(t *testing.T) {
ok, resp := th.SystemAdminClient.SetServerBusy(p) ok, resp := th.SystemAdminClient.SetServerBusy(p)
CheckBadRequestStatus(t, resp) CheckBadRequestStatus(t, resp)
require.False(t, ok, "should not set server busy due to invalid param ", p) require.False(t, ok, "should not set server busy due to invalid param ", p)
require.False(t, th.App.Srv.Busy.IsBusy(), "server should not be marked busy due to invalid param ", p) require.False(t, th.App.Srv().Busy.IsBusy(), "server should not be marked busy due to invalid param ", p)
} }
}) })
} }
@@ -554,20 +554,20 @@ func TestClearServerBusy(t *testing.T) {
th := Setup(t).InitBasic() th := Setup(t).InitBasic()
defer th.TearDown() defer th.TearDown()
th.App.Srv.Busy.Set(time.Second * 30) th.App.Srv().Busy.Set(time.Second * 30)
t.Run("as system user", func(t *testing.T) { t.Run("as system user", func(t *testing.T) {
ok, resp := th.Client.ClearServerBusy() ok, resp := th.Client.ClearServerBusy()
CheckForbiddenStatus(t, resp) CheckForbiddenStatus(t, resp)
require.False(t, ok, "should not clear server busy flag due to no permission.") require.False(t, ok, "should not clear server busy flag due to no permission.")
require.True(t, th.App.Srv.Busy.IsBusy(), "server should be marked busy") require.True(t, th.App.Srv().Busy.IsBusy(), "server should be marked busy")
}) })
th.App.Srv.Busy.Set(time.Second * 30) th.App.Srv().Busy.Set(time.Second * 30)
t.Run("as system admin", func(t *testing.T) { t.Run("as system admin", func(t *testing.T) {
ok, resp := th.SystemAdminClient.ClearServerBusy() ok, resp := th.SystemAdminClient.ClearServerBusy()
CheckNoError(t, resp) CheckNoError(t, resp)
require.True(t, ok, "should clear server busy flag successfully") require.True(t, ok, "should clear server busy flag successfully")
require.False(t, th.App.Srv.Busy.IsBusy(), "server should not be marked busy") require.False(t, th.App.Srv().Busy.IsBusy(), "server should not be marked busy")
}) })
} }
@@ -575,7 +575,7 @@ func TestGetServerBusyExpires(t *testing.T) {
th := Setup(t).InitBasic() th := Setup(t).InitBasic()
defer th.TearDown() defer th.TearDown()
th.App.Srv.Busy.Set(time.Second * 30) th.App.Srv().Busy.Set(time.Second * 30)
t.Run("as system user", func(t *testing.T) { t.Run("as system user", func(t *testing.T) {
_, resp := th.Client.GetServerBusyExpires() _, resp := th.Client.GetServerBusyExpires()
@@ -593,7 +593,7 @@ func TestServerBusy503(t *testing.T) {
th := Setup(t).InitBasic() th := Setup(t).InitBasic()
defer th.TearDown() defer th.TearDown()
th.App.Srv.Busy.Set(time.Second * 30) th.App.Srv().Busy.Set(time.Second * 30)
t.Run("search users while busy", func(t *testing.T) { t.Run("search users while busy", func(t *testing.T) {
us := &model.UserSearch{Term: "test"} us := &model.UserSearch{Term: "test"}
@@ -619,7 +619,7 @@ func TestServerBusy503(t *testing.T) {
CheckServiceUnavailableStatus(t, resp) CheckServiceUnavailableStatus(t, resp)
}) })
th.App.Srv.Busy.Clear() th.App.Srv().Busy.Clear()
t.Run("search users while not busy", func(t *testing.T) { t.Run("search users while not busy", func(t *testing.T) {
us := &model.UserSearch{Term: "test"} us := &model.UserSearch{Term: "test"}

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

@@ -81,12 +81,12 @@ func createTeam(c *Context, w http.ResponseWriter, r *http.Request) {
} }
team.Email = strings.ToLower(team.Email) team.Email = strings.ToLower(team.Email)
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_CREATE_TEAM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_CREATE_TEAM) {
c.Err = model.NewAppError("createTeam", "api.team.is_team_creation_allowed.disabled.app_error", nil, "", http.StatusForbidden) c.Err = model.NewAppError("createTeam", "api.team.is_team_creation_allowed.disabled.app_error", nil, "", http.StatusForbidden)
return return
} }
rteam, err := c.App.CreateTeamWithUser(team, c.App.Session.UserId) rteam, err := c.App.CreateTeamWithUser(team, c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -110,12 +110,12 @@ func getTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if (!team.AllowOpenInvite || team.Type != model.TEAM_OPEN) && !c.App.SessionHasPermissionToTeam(c.App.Session, team.Id, model.PERMISSION_VIEW_TEAM) { if (!team.AllowOpenInvite || team.Type != model.TEAM_OPEN) && !c.App.SessionHasPermissionToTeam(*c.App.Session(), team.Id, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM) c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return return
} }
c.App.SanitizeTeam(c.App.Session, team) c.App.SanitizeTeam(*c.App.Session(), team)
w.Write([]byte(team.ToJson())) w.Write([]byte(team.ToJson()))
} }
@@ -131,12 +131,12 @@ func getTeamByName(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if (!team.AllowOpenInvite || team.Type != model.TEAM_OPEN) && !c.App.SessionHasPermissionToTeam(c.App.Session, team.Id, model.PERMISSION_VIEW_TEAM) { if (!team.AllowOpenInvite || team.Type != model.TEAM_OPEN) && !c.App.SessionHasPermissionToTeam(*c.App.Session(), team.Id, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM) c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return return
} }
c.App.SanitizeTeam(c.App.Session, team) c.App.SanitizeTeam(*c.App.Session(), team)
w.Write([]byte(team.ToJson())) w.Write([]byte(team.ToJson()))
} }
@@ -160,7 +160,7 @@ func updateTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_MANAGE_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_MANAGE_TEAM) {
c.SetPermissionError(model.PERMISSION_MANAGE_TEAM) c.SetPermissionError(model.PERMISSION_MANAGE_TEAM)
return return
} }
@@ -171,7 +171,7 @@ func updateTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
c.App.SanitizeTeam(c.App.Session, updatedTeam) c.App.SanitizeTeam(*c.App.Session(), updatedTeam)
w.Write([]byte(updatedTeam.ToJson())) w.Write([]byte(updatedTeam.ToJson()))
} }
@@ -188,7 +188,7 @@ func patchTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_MANAGE_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_MANAGE_TEAM) {
c.SetPermissionError(model.PERMISSION_MANAGE_TEAM) c.SetPermissionError(model.PERMISSION_MANAGE_TEAM)
return return
} }
@@ -200,7 +200,7 @@ func patchTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
c.App.SanitizeTeam(c.App.Session, patchedTeam) c.App.SanitizeTeam(*c.App.Session(), patchedTeam)
c.LogAudit("") c.LogAudit("")
w.Write([]byte(patchedTeam.ToJson())) w.Write([]byte(patchedTeam.ToJson()))
@@ -212,7 +212,7 @@ func regenerateTeamInviteId(c *Context, w http.ResponseWriter, r *http.Request)
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_MANAGE_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_MANAGE_TEAM) {
c.SetPermissionError(model.PERMISSION_MANAGE_TEAM) c.SetPermissionError(model.PERMISSION_MANAGE_TEAM)
return return
} }
@@ -223,7 +223,7 @@ func regenerateTeamInviteId(c *Context, w http.ResponseWriter, r *http.Request)
return return
} }
c.App.SanitizeTeam(c.App.Session, patchedTeam) c.App.SanitizeTeam(*c.App.Session(), patchedTeam)
c.LogAudit("") c.LogAudit("")
w.Write([]byte(patchedTeam.ToJson())) w.Write([]byte(patchedTeam.ToJson()))
@@ -235,7 +235,7 @@ func deleteTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_MANAGE_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_MANAGE_TEAM) {
c.SetPermissionError(model.PERMISSION_MANAGE_TEAM) c.SetPermissionError(model.PERMISSION_MANAGE_TEAM)
return return
} }
@@ -261,7 +261,7 @@ func getTeamsForUser(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if c.App.Session.UserId != c.Params.UserId && !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if c.App.Session().UserId != c.Params.UserId && !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -272,7 +272,7 @@ func getTeamsForUser(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
c.App.SanitizeTeams(c.App.Session, teams) c.App.SanitizeTeams(*c.App.Session(), teams)
w.Write([]byte(model.TeamListToJson(teams))) w.Write([]byte(model.TeamListToJson(teams)))
} }
@@ -282,7 +282,7 @@ func getTeamsUnreadForUser(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if c.App.Session.UserId != c.Params.UserId && !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if c.App.Session().UserId != c.Params.UserId && !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -305,12 +305,12 @@ func getTeamMember(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_VIEW_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM) c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return return
} }
canSee, err := c.App.UserCanSeeOtherUser(c.App.Session.UserId, c.Params.UserId) canSee, err := c.App.UserCanSeeOtherUser(c.App.Session().UserId, c.Params.UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -336,12 +336,12 @@ func getTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_VIEW_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM) c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return return
} }
restrictions, err := c.App.GetViewUsersRestrictions(c.App.Session.UserId) restrictions, err := c.App.GetViewUsersRestrictions(c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -362,12 +362,12 @@ func getTeamMembersForUser(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
canSee, err := c.App.UserCanSeeOtherUser(c.App.Session.UserId, c.Params.UserId) canSee, err := c.App.UserCanSeeOtherUser(c.App.Session().UserId, c.Params.UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -400,12 +400,12 @@ func getTeamMembersByIds(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_VIEW_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM) c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return return
} }
restrictions, err := c.App.GetViewUsersRestrictions(c.App.Session.UserId) restrictions, err := c.App.GetViewUsersRestrictions(c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -438,7 +438,7 @@ func addTeamMember(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if member.UserId == c.App.Session.UserId { if member.UserId == c.App.Session().UserId {
var team *model.Team var team *model.Team
team, err = c.App.GetTeam(member.TeamId) team, err = c.App.GetTeam(member.TeamId)
if err != nil { if err != nil {
@@ -446,16 +446,16 @@ func addTeamMember(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if team.AllowOpenInvite && !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_JOIN_PUBLIC_TEAMS) { if team.AllowOpenInvite && !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_JOIN_PUBLIC_TEAMS) {
c.SetPermissionError(model.PERMISSION_JOIN_PUBLIC_TEAMS) c.SetPermissionError(model.PERMISSION_JOIN_PUBLIC_TEAMS)
return return
} }
if !team.AllowOpenInvite && !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_JOIN_PRIVATE_TEAMS) { if !team.AllowOpenInvite && !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_JOIN_PRIVATE_TEAMS) {
c.SetPermissionError(model.PERMISSION_JOIN_PRIVATE_TEAMS) c.SetPermissionError(model.PERMISSION_JOIN_PRIVATE_TEAMS)
return return
} }
} else { } else {
if !c.App.SessionHasPermissionToTeam(c.App.Session, member.TeamId, model.PERMISSION_ADD_USER_TO_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), member.TeamId, model.PERMISSION_ADD_USER_TO_TEAM) {
c.SetPermissionError(model.PERMISSION_ADD_USER_TO_TEAM) c.SetPermissionError(model.PERMISSION_ADD_USER_TO_TEAM)
return return
} }
@@ -502,14 +502,14 @@ func addUserToTeamFromInvite(c *Context, w http.ResponseWriter, r *http.Request)
var err *model.AppError var err *model.AppError
if len(tokenId) > 0 { if len(tokenId) > 0 {
member, err = c.App.AddTeamMemberByToken(c.App.Session.UserId, tokenId) member, err = c.App.AddTeamMemberByToken(c.App.Session().UserId, tokenId)
} else if len(inviteId) > 0 { } else if len(inviteId) > 0 {
if c.App.Session.Props[model.SESSION_PROP_IS_GUEST] == "true" { if c.App.Session().Props[model.SESSION_PROP_IS_GUEST] == "true" {
c.Err = model.NewAppError("addUserToTeamFromInvite", "api.team.add_user_to_team_from_invite.guest.app_error", nil, "", http.StatusForbidden) c.Err = model.NewAppError("addUserToTeamFromInvite", "api.team.add_user_to_team_from_invite.guest.app_error", nil, "", http.StatusForbidden)
return return
} }
member, err = c.App.AddTeamMemberByInviteId(inviteId, c.App.Session.UserId) member, err = c.App.AddTeamMemberByInviteId(inviteId, c.App.Session().UserId)
} else { } else {
err = model.NewAppError("addTeamMember", "api.team.add_user_to_team.missing_parameter.app_error", nil, "", http.StatusBadRequest) err = model.NewAppError("addTeamMember", "api.team.add_user_to_team.missing_parameter.app_error", nil, "", http.StatusBadRequest)
} }
@@ -586,12 +586,12 @@ func addTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
userIds = append(userIds, member.UserId) userIds = append(userIds, member.UserId)
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_ADD_USER_TO_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_ADD_USER_TO_TEAM) {
c.SetPermissionError(model.PERMISSION_ADD_USER_TO_TEAM) c.SetPermissionError(model.PERMISSION_ADD_USER_TO_TEAM)
return return
} }
membersWithErrors, err := c.App.AddTeamMembers(c.Params.TeamId, userIds, c.App.Session.UserId, graceful) membersWithErrors, err := c.App.AddTeamMembers(c.Params.TeamId, userIds, c.App.Session().UserId, graceful)
if err != nil { if err != nil {
c.Err = err c.Err = err
@@ -615,8 +615,8 @@ func removeTeamMember(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if c.App.Session.UserId != c.Params.UserId { if c.App.Session().UserId != c.Params.UserId {
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_REMOVE_USER_FROM_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_REMOVE_USER_FROM_TEAM) {
c.SetPermissionError(model.PERMISSION_REMOVE_USER_FROM_TEAM) c.SetPermissionError(model.PERMISSION_REMOVE_USER_FROM_TEAM)
return return
} }
@@ -634,12 +634,12 @@ func removeTeamMember(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if team.IsGroupConstrained() && (c.Params.UserId != c.App.Session.UserId) && !user.IsBot { if team.IsGroupConstrained() && (c.Params.UserId != c.App.Session().UserId) && !user.IsBot {
c.Err = model.NewAppError("removeTeamMember", "api.team.remove_member.group_constrained.app_error", nil, "", http.StatusBadRequest) c.Err = model.NewAppError("removeTeamMember", "api.team.remove_member.group_constrained.app_error", nil, "", http.StatusBadRequest)
return return
} }
if err := c.App.RemoveUserFromTeam(c.Params.TeamId, c.Params.UserId, c.App.Session.UserId); err != nil { if err := c.App.RemoveUserFromTeam(c.Params.TeamId, c.Params.UserId, c.App.Session().UserId); err != nil {
c.Err = err c.Err = err
return return
} }
@@ -653,12 +653,12 @@ func getTeamUnread(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_VIEW_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM) c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return return
} }
@@ -678,12 +678,12 @@ func getTeamStats(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_VIEW_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM) c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return return
} }
restrictions, err := c.App.GetViewUsersRestrictions(c.App.Session.UserId) restrictions, err := c.App.GetViewUsersRestrictions(c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -712,7 +712,7 @@ func updateTeamMemberRoles(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_MANAGE_TEAM_ROLES) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_MANAGE_TEAM_ROLES) {
c.SetPermissionError(model.PERMISSION_MANAGE_TEAM_ROLES) c.SetPermissionError(model.PERMISSION_MANAGE_TEAM_ROLES)
return return
} }
@@ -737,7 +737,7 @@ func updateTeamMemberSchemeRoles(c *Context, w http.ResponseWriter, r *http.Requ
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_MANAGE_TEAM_ROLES) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_MANAGE_TEAM_ROLES) {
c.SetPermissionError(model.PERMISSION_MANAGE_TEAM_ROLES) c.SetPermissionError(model.PERMISSION_MANAGE_TEAM_ROLES)
return return
} }
@@ -755,19 +755,19 @@ func getAllTeams(c *Context, w http.ResponseWriter, r *http.Request) {
var err *model.AppError var err *model.AppError
var teamsWithCount *model.TeamsWithCount var teamsWithCount *model.TeamsWithCount
if c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_LIST_PRIVATE_TEAMS) && c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_LIST_PUBLIC_TEAMS) { if c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_LIST_PRIVATE_TEAMS) && c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_LIST_PUBLIC_TEAMS) {
if c.Params.IncludeTotalCount { if c.Params.IncludeTotalCount {
teamsWithCount, err = c.App.GetAllTeamsPageWithCount(c.Params.Page*c.Params.PerPage, c.Params.PerPage) teamsWithCount, err = c.App.GetAllTeamsPageWithCount(c.Params.Page*c.Params.PerPage, c.Params.PerPage)
} else { } else {
teams, err = c.App.GetAllTeamsPage(c.Params.Page*c.Params.PerPage, c.Params.PerPage) teams, err = c.App.GetAllTeamsPage(c.Params.Page*c.Params.PerPage, c.Params.PerPage)
} }
} else if c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_LIST_PRIVATE_TEAMS) { } else if c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_LIST_PRIVATE_TEAMS) {
if c.Params.IncludeTotalCount { if c.Params.IncludeTotalCount {
teamsWithCount, err = c.App.GetAllPrivateTeamsPageWithCount(c.Params.Page*c.Params.PerPage, c.Params.PerPage) teamsWithCount, err = c.App.GetAllPrivateTeamsPageWithCount(c.Params.Page*c.Params.PerPage, c.Params.PerPage)
} else { } else {
teams, err = c.App.GetAllPrivateTeamsPage(c.Params.Page*c.Params.PerPage, c.Params.PerPage) teams, err = c.App.GetAllPrivateTeamsPage(c.Params.Page*c.Params.PerPage, c.Params.PerPage)
} }
} else if c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_LIST_PUBLIC_TEAMS) { } else if c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_LIST_PUBLIC_TEAMS) {
if c.Params.IncludeTotalCount { if c.Params.IncludeTotalCount {
teamsWithCount, err = c.App.GetAllPublicTeamsPageWithCount(c.Params.Page*c.Params.PerPage, c.Params.PerPage) teamsWithCount, err = c.App.GetAllPublicTeamsPageWithCount(c.Params.Page*c.Params.PerPage, c.Params.PerPage)
} else { } else {
@@ -780,7 +780,7 @@ func getAllTeams(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
c.App.SanitizeTeams(c.App.Session, teams) c.App.SanitizeTeams(*c.App.Session(), teams)
var resBody []byte var resBody []byte
@@ -809,15 +809,15 @@ func searchTeams(c *Context, w http.ResponseWriter, r *http.Request) {
var totalCount int64 var totalCount int64
var err *model.AppError var err *model.AppError
if c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_LIST_PRIVATE_TEAMS) && c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_LIST_PUBLIC_TEAMS) { if c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_LIST_PRIVATE_TEAMS) && c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_LIST_PUBLIC_TEAMS) {
teams, totalCount, err = c.App.SearchAllTeams(props) teams, totalCount, err = c.App.SearchAllTeams(props)
} else if c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_LIST_PRIVATE_TEAMS) { } else if c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_LIST_PRIVATE_TEAMS) {
if props.Page != nil || props.PerPage != nil { if props.Page != nil || props.PerPage != nil {
c.Err = model.NewAppError("searchTeams", "api.team.search_teams.pagination_not_implemented.private_team_search", nil, "", http.StatusNotImplemented) c.Err = model.NewAppError("searchTeams", "api.team.search_teams.pagination_not_implemented.private_team_search", nil, "", http.StatusNotImplemented)
return return
} }
teams, err = c.App.SearchPrivateTeams(props.Term) teams, err = c.App.SearchPrivateTeams(props.Term)
} else if c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_LIST_PUBLIC_TEAMS) { } else if c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_LIST_PUBLIC_TEAMS) {
if props.Page != nil || props.PerPage != nil { if props.Page != nil || props.PerPage != nil {
c.Err = model.NewAppError("searchTeams", "api.team.search_teams.pagination_not_implemented.public_team_search", nil, "", http.StatusNotImplemented) c.Err = model.NewAppError("searchTeams", "api.team.search_teams.pagination_not_implemented.public_team_search", nil, "", http.StatusNotImplemented)
return return
@@ -832,7 +832,7 @@ func searchTeams(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
c.App.SanitizeTeams(c.App.Session, teams) c.App.SanitizeTeams(*c.App.Session(), teams)
var payload []byte var payload []byte
if props.Page != nil && props.PerPage != nil { if props.Page != nil && props.PerPage != nil {
@@ -861,7 +861,7 @@ func teamExists(c *Context, w http.ResponseWriter, r *http.Request) {
if team != nil { if team != nil {
var teamMember *model.TeamMember var teamMember *model.TeamMember
teamMember, err = c.App.GetTeamMember(team.Id, c.App.Session.UserId) teamMember, err = c.App.GetTeamMember(team.Id, c.App.Session().UserId)
if err != nil && err.StatusCode != http.StatusNotFound { if err != nil && err.StatusCode != http.StatusNotFound {
c.Err = err c.Err = err
return return
@@ -869,8 +869,8 @@ func teamExists(c *Context, w http.ResponseWriter, r *http.Request) {
// Verify that the user can see the team (be a member or have the permission to list the team) // Verify that the user can see the team (be a member or have the permission to list the team)
if (teamMember != nil && teamMember.DeleteAt == 0) || if (teamMember != nil && teamMember.DeleteAt == 0) ||
(team.AllowOpenInvite && c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_LIST_PUBLIC_TEAMS)) || (team.AllowOpenInvite && c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_LIST_PUBLIC_TEAMS)) ||
(!team.AllowOpenInvite && c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_LIST_PRIVATE_TEAMS)) { (!team.AllowOpenInvite && c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_LIST_PRIVATE_TEAMS)) {
exists = true exists = true
} }
} }
@@ -885,7 +885,7 @@ func importTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_IMPORT_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_IMPORT_TEAM) {
c.SetPermissionError(model.PERMISSION_IMPORT_TEAM) c.SetPermissionError(model.PERMISSION_IMPORT_TEAM)
return return
} }
@@ -960,12 +960,12 @@ func inviteUsersToTeam(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_INVITE_USER) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_INVITE_USER) {
c.SetPermissionError(model.PERMISSION_INVITE_USER) c.SetPermissionError(model.PERMISSION_INVITE_USER)
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_ADD_USER_TO_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_ADD_USER_TO_TEAM) {
c.SetPermissionError(model.PERMISSION_INVITE_USER) c.SetPermissionError(model.PERMISSION_INVITE_USER)
return return
} }
@@ -981,7 +981,7 @@ func inviteUsersToTeam(c *Context, w http.ResponseWriter, r *http.Request) {
} }
if graceful { if graceful {
invitesWithError, err := c.App.InviteNewUsersToTeamGracefully(emailList, c.Params.TeamId, c.App.Session.UserId) invitesWithError, err := c.App.InviteNewUsersToTeamGracefully(emailList, c.Params.TeamId, c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -989,7 +989,7 @@ func inviteUsersToTeam(c *Context, w http.ResponseWriter, r *http.Request) {
// in graceful mode we return both the succesful ones and the failed ones // in graceful mode we return both the succesful ones and the failed ones
w.Write([]byte(model.EmailInviteWithErrorToJson(invitesWithError))) w.Write([]byte(model.EmailInviteWithErrorToJson(invitesWithError)))
} else { } else {
err := c.App.InviteNewUsersToTeam(emailList, c.Params.TeamId, c.App.Session.UserId) err := c.App.InviteNewUsersToTeam(emailList, c.Params.TeamId, c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -1015,7 +1015,7 @@ func inviteGuestsToChannels(c *Context, w http.ResponseWriter, r *http.Request)
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_INVITE_GUEST) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_INVITE_GUEST) {
c.SetPermissionError(model.PERMISSION_INVITE_GUEST) c.SetPermissionError(model.PERMISSION_INVITE_GUEST)
return return
} }
@@ -1030,7 +1030,7 @@ func inviteGuestsToChannels(c *Context, w http.ResponseWriter, r *http.Request)
} }
if graceful { if graceful {
invitesWithError, err := c.App.InviteGuestsToChannelsGracefully(c.Params.TeamId, guestsInvite, c.App.Session.UserId) invitesWithError, err := c.App.InviteGuestsToChannelsGracefully(c.Params.TeamId, guestsInvite, c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -1038,7 +1038,7 @@ func inviteGuestsToChannels(c *Context, w http.ResponseWriter, r *http.Request)
// in graceful mode we return both the succesful ones and the failed ones // in graceful mode we return both the succesful ones and the failed ones
w.Write([]byte(model.EmailInviteWithErrorToJson(invitesWithError))) w.Write([]byte(model.EmailInviteWithErrorToJson(invitesWithError)))
} else { } else {
err := c.App.InviteGuestsToChannels(c.Params.TeamId, guestsInvite, c.App.Session.UserId) err := c.App.InviteGuestsToChannels(c.Params.TeamId, guestsInvite, c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -1073,7 +1073,7 @@ func getInviteInfo(c *Context, w http.ResponseWriter, r *http.Request) {
} }
func invalidateAllEmailInvites(c *Context, w http.ResponseWriter, r *http.Request) { func invalidateAllEmailInvites(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -1099,7 +1099,7 @@ func getTeamIcon(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_VIEW_TEAM) && if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_VIEW_TEAM) &&
(team.Type != model.TEAM_OPEN || !team.AllowOpenInvite) { (team.Type != model.TEAM_OPEN || !team.AllowOpenInvite) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM) c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return return
@@ -1131,7 +1131,7 @@ func setTeamIcon(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_MANAGE_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_MANAGE_TEAM) {
c.SetPermissionError(model.PERMISSION_MANAGE_TEAM) c.SetPermissionError(model.PERMISSION_MANAGE_TEAM)
return return
} }
@@ -1176,7 +1176,7 @@ func removeTeamIcon(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_MANAGE_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_MANAGE_TEAM) {
c.SetPermissionError(model.PERMISSION_MANAGE_TEAM) c.SetPermissionError(model.PERMISSION_MANAGE_TEAM)
return return
} }
@@ -1207,7 +1207,7 @@ func updateTeamScheme(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, c.Params.TeamId, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), c.Params.TeamId, model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -1264,7 +1264,7 @@ func teamMembersMinusGroupMembers(c *Context, w http.ResponseWriter, r *http.Req
groupIDs = append(groupIDs, gid) groupIDs = append(groupIDs, gid)
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }

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

@@ -1457,7 +1457,7 @@ func TestAddTeamMember(t *testing.T) {
app.TOKEN_TYPE_TEAM_INVITATION, app.TOKEN_TYPE_TEAM_INVITATION,
model.MapToJson(map[string]string{"teamId": team.Id}), model.MapToJson(map[string]string{"teamId": team.Id}),
) )
require.Nil(t, th.App.Srv.Store.Token().Save(token)) require.Nil(t, th.App.Srv().Store.Token().Save(token))
tm, resp = Client.AddTeamMemberFromInvite(token.Token, "") tm, resp = Client.AddTeamMemberFromInvite(token.Token, "")
CheckNoError(t, resp) CheckNoError(t, resp)
@@ -1468,7 +1468,7 @@ func TestAddTeamMember(t *testing.T) {
require.Equal(t, tm.TeamId, team.Id, "team ids should have matched") require.Equal(t, tm.TeamId, team.Id, "team ids should have matched")
_, err = th.App.Srv.Store.Token().GetByToken(token.Token) _, err = th.App.Srv().Store.Token().GetByToken(token.Token)
require.NotNil(t, err, "The token must be deleted after be used") require.NotNil(t, err, "The token must be deleted after be used")
tm, resp = Client.AddTeamMemberFromInvite("junk", "") tm, resp = Client.AddTeamMemberFromInvite("junk", "")
@@ -1479,7 +1479,7 @@ func TestAddTeamMember(t *testing.T) {
// expired token of more than 50 hours // expired token of more than 50 hours
token = model.NewToken(app.TOKEN_TYPE_TEAM_INVITATION, "") token = model.NewToken(app.TOKEN_TYPE_TEAM_INVITATION, "")
token.CreateAt = model.GetMillis() - 1000*60*60*50 token.CreateAt = model.GetMillis() - 1000*60*60*50
require.Nil(t, th.App.Srv.Store.Token().Save(token)) require.Nil(t, th.App.Srv().Store.Token().Save(token))
_, resp = Client.AddTeamMemberFromInvite(token.Token, "") _, resp = Client.AddTeamMemberFromInvite(token.Token, "")
CheckBadRequestStatus(t, resp) CheckBadRequestStatus(t, resp)
@@ -1491,7 +1491,7 @@ func TestAddTeamMember(t *testing.T) {
app.TOKEN_TYPE_TEAM_INVITATION, app.TOKEN_TYPE_TEAM_INVITATION,
model.MapToJson(map[string]string{"teamId": testId}), model.MapToJson(map[string]string{"teamId": testId}),
) )
require.Nil(t, th.App.Srv.Store.Token().Save(token)) require.Nil(t, th.App.Srv().Store.Token().Save(token))
_, resp = Client.AddTeamMemberFromInvite(token.Token, "") _, resp = Client.AddTeamMemberFromInvite(token.Token, "")
CheckNotFoundStatus(t, resp) CheckNotFoundStatus(t, resp)
@@ -1533,7 +1533,7 @@ func TestAddTeamMember(t *testing.T) {
app.TOKEN_TYPE_TEAM_INVITATION, app.TOKEN_TYPE_TEAM_INVITATION,
model.MapToJson(map[string]string{"teamId": team.Id}), model.MapToJson(map[string]string{"teamId": team.Id}),
) )
require.Nil(t, th.App.Srv.Store.Token().Save(token)) require.Nil(t, th.App.Srv().Store.Token().Save(token))
tm, resp = Client.AddTeamMemberFromInvite(token.Token, "") tm, resp = Client.AddTeamMemberFromInvite(token.Token, "")
require.Equal(t, "app.team.invite_token.group_constrained.error", resp.Error.Id) require.Equal(t, "app.team.invite_token.group_constrained.error", resp.Error.Id)

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

@@ -26,7 +26,7 @@ func getLatestTermsOfService(c *Context, w http.ResponseWriter, r *http.Request)
} }
func createTermsOfService(c *Context, w http.ResponseWriter, r *http.Request) { func createTermsOfService(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -38,7 +38,7 @@ func createTermsOfService(c *Context, w http.ResponseWriter, r *http.Request) {
props := model.MapFromJson(r.Body) props := model.MapFromJson(r.Body)
text := props["text"] text := props["text"]
userId := c.App.Session.UserId userId := c.App.Session().UserId
if text == "" { if text == "" {
c.Err = model.NewAppError("Config.IsValid", "api.create_terms_of_service.empty_text.app_error", nil, "", http.StatusBadRequest) c.Err = model.NewAppError("Config.IsValid", "api.create_terms_of_service.empty_text.app_error", nil, "", http.StatusBadRequest)

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

@@ -98,7 +98,7 @@ func createUser(c *Context, w http.ResponseWriter, r *http.Request) {
var err *model.AppError var err *model.AppError
if len(tokenId) > 0 { if len(tokenId) > 0 {
var token *model.Token var token *model.Token
token, err = c.App.Srv.Store.Token().GetByToken(tokenId) token, err = c.App.Srv().Store.Token().GetByToken(tokenId)
if err != nil { if err != nil {
c.Err = model.NewAppError("CreateUserWithToken", "api.user.create_user.signup_link_invalid.app_error", nil, err.Error(), http.StatusBadRequest) c.Err = model.NewAppError("CreateUserWithToken", "api.user.create_user.signup_link_invalid.app_error", nil, err.Error(), http.StatusBadRequest)
return return
@@ -138,7 +138,7 @@ func getUser(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
canSee, err := c.App.UserCanSeeOtherUser(c.App.Session.UserId, c.Params.UserId) canSee, err := c.App.UserCanSeeOtherUser(c.App.Session().UserId, c.Params.UserId)
if err != nil { if err != nil {
c.SetPermissionError(model.PERMISSION_VIEW_MEMBERS) c.SetPermissionError(model.PERMISSION_VIEW_MEMBERS)
return return
@@ -155,7 +155,7 @@ func getUser(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if c.IsSystemAdmin() || c.App.Session.UserId == user.Id { if c.IsSystemAdmin() || c.App.Session().UserId == user.Id {
userTermsOfService, err := c.App.GetUserTermsOfService(user.Id) userTermsOfService, err := c.App.GetUserTermsOfService(user.Id)
if err != nil && err.StatusCode != http.StatusNotFound { if err != nil && err.StatusCode != http.StatusNotFound {
c.Err = err c.Err = err
@@ -174,12 +174,12 @@ func getUser(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if c.App.Session.UserId == user.Id { if c.App.Session().UserId == user.Id {
user.Sanitize(map[string]bool{}) user.Sanitize(map[string]bool{})
} else { } else {
c.App.SanitizeProfile(user, c.IsSystemAdmin()) c.App.SanitizeProfile(user, c.IsSystemAdmin())
} }
c.App.UpdateLastActivityAtIfNeeded(c.App.Session) c.App.UpdateLastActivityAtIfNeeded(*c.App.Session())
w.Header().Set(model.HEADER_ETAG_SERVER, etag) w.Header().Set(model.HEADER_ETAG_SERVER, etag)
w.Write([]byte(user.ToJson())) w.Write([]byte(user.ToJson()))
} }
@@ -192,7 +192,7 @@ func getUserByUsername(c *Context, w http.ResponseWriter, r *http.Request) {
user, err := c.App.GetUserByUsername(c.Params.Username) user, err := c.App.GetUserByUsername(c.Params.Username)
if err != nil { if err != nil {
restrictions, err2 := c.App.GetViewUsersRestrictions(c.App.Session.UserId) restrictions, err2 := c.App.GetViewUsersRestrictions(c.App.Session().UserId)
if err2 != nil { if err2 != nil {
c.Err = err2 c.Err = err2
return return
@@ -205,7 +205,7 @@ func getUserByUsername(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
canSee, err := c.App.UserCanSeeOtherUser(c.App.Session.UserId, user.Id) canSee, err := c.App.UserCanSeeOtherUser(c.App.Session().UserId, user.Id)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -216,7 +216,7 @@ func getUserByUsername(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if c.IsSystemAdmin() || c.App.Session.UserId == user.Id { if c.IsSystemAdmin() || c.App.Session().UserId == user.Id {
userTermsOfService, err := c.App.GetUserTermsOfService(user.Id) userTermsOfService, err := c.App.GetUserTermsOfService(user.Id)
if err != nil && err.StatusCode != http.StatusNotFound { if err != nil && err.StatusCode != http.StatusNotFound {
c.Err = err c.Err = err
@@ -235,7 +235,7 @@ func getUserByUsername(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if c.App.Session.UserId == user.Id { if c.App.Session().UserId == user.Id {
user.Sanitize(map[string]bool{}) user.Sanitize(map[string]bool{})
} else { } else {
c.App.SanitizeProfile(user, c.IsSystemAdmin()) c.App.SanitizeProfile(user, c.IsSystemAdmin())
@@ -252,13 +252,13 @@ func getUserByEmail(c *Context, w http.ResponseWriter, r *http.Request) {
sanitizeOptions := c.App.GetSanitizeOptions(c.IsSystemAdmin()) sanitizeOptions := c.App.GetSanitizeOptions(c.IsSystemAdmin())
if !sanitizeOptions["email"] { if !sanitizeOptions["email"] {
c.Err = model.NewAppError("getUserByEmail", "api.user.get_user_by_email.permissions.app_error", nil, "userId="+c.App.Session.UserId, http.StatusForbidden) c.Err = model.NewAppError("getUserByEmail", "api.user.get_user_by_email.permissions.app_error", nil, "userId="+c.App.Session().UserId, http.StatusForbidden)
return return
} }
user, err := c.App.GetUserByEmail(c.Params.Email) user, err := c.App.GetUserByEmail(c.Params.Email)
if err != nil { if err != nil {
restrictions, err2 := c.App.GetViewUsersRestrictions(c.App.Session.UserId) restrictions, err2 := c.App.GetViewUsersRestrictions(c.App.Session().UserId)
if err2 != nil { if err2 != nil {
c.Err = err2 c.Err = err2
return return
@@ -271,7 +271,7 @@ func getUserByEmail(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
canSee, err := c.App.UserCanSeeOtherUser(c.App.Session.UserId, user.Id) canSee, err := c.App.UserCanSeeOtherUser(c.App.Session().UserId, user.Id)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -299,7 +299,7 @@ func getDefaultProfileImage(c *Context, w http.ResponseWriter, r *http.Request)
return return
} }
canSee, err := c.App.UserCanSeeOtherUser(c.App.Session.UserId, c.Params.UserId) canSee, err := c.App.UserCanSeeOtherUser(c.App.Session().UserId, c.Params.UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -333,7 +333,7 @@ func getProfileImage(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
canSee, err := c.App.UserCanSeeOtherUser(c.App.Session.UserId, c.Params.UserId) canSee, err := c.App.UserCanSeeOtherUser(c.App.Session().UserId, c.Params.UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -380,7 +380,7 @@ func setProfileImage(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -428,7 +428,7 @@ func setDefaultProfileImage(c *Context, w http.ResponseWriter, r *http.Request)
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -458,7 +458,7 @@ func getTotalUsersStats(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
restrictions, err := c.App.GetViewUsersRestrictions(c.App.Session.UserId) restrictions, err := c.App.GetViewUsersRestrictions(c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -527,7 +527,7 @@ func getUsers(c *Context, w http.ResponseWriter, r *http.Request) {
groupConstrainedBool, _ := strconv.ParseBool(groupConstrained) groupConstrainedBool, _ := strconv.ParseBool(groupConstrained)
inactiveBool, _ := strconv.ParseBool(inactive) inactiveBool, _ := strconv.ParseBool(inactive)
restrictions, err := c.App.GetViewUsersRestrictions(c.App.Session.UserId) restrictions, err := c.App.GetViewUsersRestrictions(c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -553,21 +553,21 @@ func getUsers(c *Context, w http.ResponseWriter, r *http.Request) {
if withoutTeamBool, _ := strconv.ParseBool(withoutTeam); withoutTeamBool { if withoutTeamBool, _ := strconv.ParseBool(withoutTeam); withoutTeamBool {
// Use a special permission for now // Use a special permission for now
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_LIST_USERS_WITHOUT_TEAM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_LIST_USERS_WITHOUT_TEAM) {
c.SetPermissionError(model.PERMISSION_LIST_USERS_WITHOUT_TEAM) c.SetPermissionError(model.PERMISSION_LIST_USERS_WITHOUT_TEAM)
return return
} }
profiles, err = c.App.GetUsersWithoutTeamPage(userGetOptions, c.IsSystemAdmin()) profiles, err = c.App.GetUsersWithoutTeamPage(userGetOptions, c.IsSystemAdmin())
} else if len(notInChannelId) > 0 { } else if len(notInChannelId) > 0 {
if !c.App.SessionHasPermissionToChannel(c.App.Session, notInChannelId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), notInChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
profiles, err = c.App.GetUsersNotInChannelPage(inTeamId, notInChannelId, groupConstrainedBool, c.Params.Page, c.Params.PerPage, c.IsSystemAdmin(), restrictions) profiles, err = c.App.GetUsersNotInChannelPage(inTeamId, notInChannelId, groupConstrainedBool, c.Params.Page, c.Params.PerPage, c.IsSystemAdmin(), restrictions)
} else if len(notInTeamId) > 0 { } else if len(notInTeamId) > 0 {
if !c.App.SessionHasPermissionToTeam(c.App.Session, notInTeamId, model.PERMISSION_VIEW_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), notInTeamId, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM) c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return return
} }
@@ -579,7 +579,7 @@ func getUsers(c *Context, w http.ResponseWriter, r *http.Request) {
profiles, err = c.App.GetUsersNotInTeamPage(notInTeamId, groupConstrainedBool, c.Params.Page, c.Params.PerPage, c.IsSystemAdmin(), restrictions) profiles, err = c.App.GetUsersNotInTeamPage(notInTeamId, groupConstrainedBool, c.Params.Page, c.Params.PerPage, c.IsSystemAdmin(), restrictions)
} else if len(inTeamId) > 0 { } else if len(inTeamId) > 0 {
if !c.App.SessionHasPermissionToTeam(c.App.Session, inTeamId, model.PERMISSION_VIEW_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), inTeamId, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM) c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return return
} }
@@ -596,7 +596,7 @@ func getUsers(c *Context, w http.ResponseWriter, r *http.Request) {
profiles, err = c.App.GetUsersInTeamPage(userGetOptions, c.IsSystemAdmin()) profiles, err = c.App.GetUsersInTeamPage(userGetOptions, c.IsSystemAdmin())
} }
} else if len(inChannelId) > 0 { } else if len(inChannelId) > 0 {
if !c.App.SessionHasPermissionToChannel(c.App.Session, inChannelId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), inChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
@@ -606,7 +606,7 @@ func getUsers(c *Context, w http.ResponseWriter, r *http.Request) {
profiles, err = c.App.GetUsersInChannelPage(inChannelId, c.Params.Page, c.Params.PerPage, c.IsSystemAdmin()) profiles, err = c.App.GetUsersInChannelPage(inChannelId, c.Params.Page, c.Params.PerPage, c.IsSystemAdmin())
} }
} else { } else {
userGetOptions, err = c.App.RestrictUsersGetByPermissions(c.App.Session.UserId, userGetOptions) userGetOptions, err = c.App.RestrictUsersGetByPermissions(c.App.Session().UserId, userGetOptions)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -622,7 +622,7 @@ func getUsers(c *Context, w http.ResponseWriter, r *http.Request) {
if len(etag) > 0 { if len(etag) > 0 {
w.Header().Set(model.HEADER_ETAG_SERVER, etag) w.Header().Set(model.HEADER_ETAG_SERVER, etag)
} }
c.App.UpdateLastActivityAtIfNeeded(c.App.Session) c.App.UpdateLastActivityAtIfNeeded(*c.App.Session())
w.Write([]byte(model.UserListToJson(profiles))) w.Write([]byte(model.UserListToJson(profiles)))
} }
@@ -649,7 +649,7 @@ func getUsersByIds(c *Context, w http.ResponseWriter, r *http.Request) {
options.Since = since options.Since = since
} }
restrictions, err := c.App.GetViewUsersRestrictions(c.App.Session.UserId) restrictions, err := c.App.GetViewUsersRestrictions(c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -673,7 +673,7 @@ func getUsersByNames(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
restrictions, err := c.App.GetViewUsersRestrictions(c.App.Session.UserId) restrictions, err := c.App.GetViewUsersRestrictions(c.App.Session().UserId)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -705,22 +705,22 @@ func searchUsers(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if props.InChannelId != "" && !c.App.SessionHasPermissionToChannel(c.App.Session, props.InChannelId, model.PERMISSION_READ_CHANNEL) { if props.InChannelId != "" && !c.App.SessionHasPermissionToChannel(*c.App.Session(), props.InChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
if props.NotInChannelId != "" && !c.App.SessionHasPermissionToChannel(c.App.Session, props.NotInChannelId, model.PERMISSION_READ_CHANNEL) { if props.NotInChannelId != "" && !c.App.SessionHasPermissionToChannel(*c.App.Session(), props.NotInChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
if props.TeamId != "" && !c.App.SessionHasPermissionToTeam(c.App.Session, props.TeamId, model.PERMISSION_VIEW_TEAM) { if props.TeamId != "" && !c.App.SessionHasPermissionToTeam(*c.App.Session(), props.TeamId, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM) c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return return
} }
if props.NotInTeamId != "" && !c.App.SessionHasPermissionToTeam(c.App.Session, props.NotInTeamId, model.PERMISSION_VIEW_TEAM) { if props.NotInTeamId != "" && !c.App.SessionHasPermissionToTeam(*c.App.Session(), props.NotInTeamId, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM) c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return return
} }
@@ -738,7 +738,7 @@ func searchUsers(c *Context, w http.ResponseWriter, r *http.Request) {
Role: props.Role, Role: props.Role,
} }
if c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
options.AllowEmails = true options.AllowEmails = true
options.AllowFullNames = true options.AllowFullNames = true
} else { } else {
@@ -746,7 +746,7 @@ func searchUsers(c *Context, w http.ResponseWriter, r *http.Request) {
options.AllowFullNames = *c.App.Config().PrivacySettings.ShowFullName options.AllowFullNames = *c.App.Config().PrivacySettings.ShowFullName
} }
options, err := c.App.RestrictUsersSearchByPermissions(c.App.Session.UserId, options) options, err := c.App.RestrictUsersSearchByPermissions(c.App.Session().UserId, options)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -780,21 +780,21 @@ func autocompleteUsers(c *Context, w http.ResponseWriter, r *http.Request) {
Limit: limit, Limit: limit,
} }
if c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
options.AllowFullNames = true options.AllowFullNames = true
} else { } else {
options.AllowFullNames = *c.App.Config().PrivacySettings.ShowFullName options.AllowFullNames = *c.App.Config().PrivacySettings.ShowFullName
} }
if len(channelId) > 0 { if len(channelId) > 0 {
if !c.App.SessionHasPermissionToChannel(c.App.Session, channelId, model.PERMISSION_READ_CHANNEL) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), channelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
} }
if len(teamId) > 0 { if len(teamId) > 0 {
if !c.App.SessionHasPermissionToTeam(c.App.Session, teamId, model.PERMISSION_VIEW_TEAM) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), teamId, model.PERMISSION_VIEW_TEAM) {
c.SetPermissionError(model.PERMISSION_VIEW_TEAM) c.SetPermissionError(model.PERMISSION_VIEW_TEAM)
return return
} }
@@ -803,7 +803,7 @@ func autocompleteUsers(c *Context, w http.ResponseWriter, r *http.Request) {
var autocomplete model.UserAutocomplete var autocomplete model.UserAutocomplete
var err *model.AppError var err *model.AppError
options, err = c.App.RestrictUsersSearchByPermissions(c.App.Session.UserId, options) options, err = c.App.RestrictUsersSearchByPermissions(c.App.Session().UserId, options)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -859,7 +859,7 @@ func updateUser(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, user.Id) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), user.Id) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -870,7 +870,7 @@ func updateUser(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if c.App.Session.IsOAuth { if c.App.Session().IsOAuth {
if ouser.Email != user.Email { if ouser.Email != user.Email {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
c.Err.DetailedError += ", attempted email update by oauth app" c.Err.DetailedError += ", attempted email update by oauth app"
@@ -879,7 +879,7 @@ func updateUser(c *Context, w http.ResponseWriter, r *http.Request) {
} }
// If eMail update is attempted by the currently logged in user, check if correct password was provided // If eMail update is attempted by the currently logged in user, check if correct password was provided
if user.Email != "" && ouser.Email != user.Email && c.App.Session.UserId == c.Params.UserId { if user.Email != "" && ouser.Email != user.Email && c.App.Session().UserId == c.Params.UserId {
err = c.App.DoubleCheckPassword(ouser, user.Password) err = c.App.DoubleCheckPassword(ouser, user.Password)
if err != nil { if err != nil {
c.SetInvalidParam("password") c.SetInvalidParam("password")
@@ -909,7 +909,7 @@ func patchUser(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -920,7 +920,7 @@ func patchUser(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if c.App.Session.IsOAuth && patch.Email != nil { if c.App.Session().IsOAuth && patch.Email != nil {
if ouser.Email != *patch.Email { if ouser.Email != *patch.Email {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
c.Err.DetailedError += ", attempted email update by oauth app" c.Err.DetailedError += ", attempted email update by oauth app"
@@ -929,7 +929,7 @@ func patchUser(c *Context, w http.ResponseWriter, r *http.Request) {
} }
// If eMail update is attempted by the currently logged in user, check if correct password was provided // If eMail update is attempted by the currently logged in user, check if correct password was provided
if patch.Email != nil && ouser.Email != *patch.Email && c.App.Session.UserId == c.Params.UserId { if patch.Email != nil && ouser.Email != *patch.Email && c.App.Session().UserId == c.Params.UserId {
if patch.Password == nil { if patch.Password == nil {
c.SetInvalidParam("password") c.SetInvalidParam("password")
return return
@@ -960,13 +960,13 @@ func deleteUser(c *Context, w http.ResponseWriter, r *http.Request) {
userId := c.Params.UserId userId := c.Params.UserId
if !c.App.SessionHasPermissionToUser(c.App.Session, userId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), userId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
// if EnableUserDeactivation flag is disabled the user cannot deactivate himself. // if EnableUserDeactivation flag is disabled the user cannot deactivate himself.
if c.Params.UserId == c.App.Session.UserId && !*c.App.Config().TeamSettings.EnableUserDeactivation && !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if c.Params.UserId == c.App.Session().UserId && !*c.App.Config().TeamSettings.EnableUserDeactivation && !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.Err = model.NewAppError("deleteUser", "api.user.update_active.not_enable.app_error", nil, "userId="+c.Params.UserId, http.StatusUnauthorized) c.Err = model.NewAppError("deleteUser", "api.user.update_active.not_enable.app_error", nil, "userId="+c.Params.UserId, http.StatusUnauthorized)
return return
} }
@@ -999,7 +999,7 @@ func updateUserRoles(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_ROLES) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_ROLES) {
c.SetPermissionError(model.PERMISSION_MANAGE_ROLES) c.SetPermissionError(model.PERMISSION_MANAGE_ROLES)
return return
} }
@@ -1028,9 +1028,9 @@ func updateUserActive(c *Context, w http.ResponseWriter, r *http.Request) {
} }
// true when you're trying to de-activate yourself // true when you're trying to de-activate yourself
isSelfDeactive := !active && c.Params.UserId == c.App.Session.UserId isSelfDeactive := !active && c.Params.UserId == c.App.Session().UserId
if !isSelfDeactive && !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !isSelfDeactive && !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.Err = model.NewAppError("updateUserActive", "api.user.update_active.permissions.app_error", nil, "userId="+c.Params.UserId, http.StatusForbidden) c.Err = model.NewAppError("updateUserActive", "api.user.update_active.permissions.app_error", nil, "userId="+c.Params.UserId, http.StatusForbidden)
return return
} }
@@ -1058,7 +1058,7 @@ func updateUserActive(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit(fmt.Sprintf("user_id=%s active=%v", user.Id, active)) c.LogAudit(fmt.Sprintf("user_id=%s active=%v", user.Id, active))
if isSelfDeactive { if isSelfDeactive {
c.App.Srv.Go(func() { c.App.Srv().Go(func() {
if err = c.App.SendDeactivateAccountEmail(user.Email, user.Locale, c.App.GetSiteURL()); err != nil { if err = c.App.SendDeactivateAccountEmail(user.Email, user.Locale, c.App.GetSiteURL()); err != nil {
mlog.Error(err.Error()) mlog.Error(err.Error())
} }
@@ -1134,13 +1134,13 @@ func updateUserMfa(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if c.App.Session.IsOAuth { if c.App.Session().IsOAuth {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
c.Err.DetailedError += ", attempted access by oauth app" c.Err.DetailedError += ", attempted access by oauth app"
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -1178,13 +1178,13 @@ func generateMfaSecret(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if c.App.Session.IsOAuth { if c.App.Session().IsOAuth {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
c.Err.DetailedError += ", attempted access by oauth app" c.Err.DetailedError += ", attempted access by oauth app"
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -1213,7 +1213,7 @@ func updatePassword(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempted") c.LogAudit("attempted")
var err *model.AppError var err *model.AppError
if c.Params.UserId == c.App.Session.UserId { if c.Params.UserId == c.App.Session().UserId {
currentPassword := props["current_password"] currentPassword := props["current_password"]
if len(currentPassword) <= 0 { if len(currentPassword) <= 0 {
c.SetInvalidParam("current_password") c.SetInvalidParam("current_password")
@@ -1221,7 +1221,7 @@ func updatePassword(c *Context, w http.ResponseWriter, r *http.Request) {
} }
err = c.App.UpdatePasswordAsUser(c.Params.UserId, currentPassword, newPassword) err = c.App.UpdatePasswordAsUser(c.Params.UserId, currentPassword, newPassword)
} else if c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { } else if c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
err = c.App.UpdatePasswordByUserIdSendEmail(c.Params.UserId, newPassword, c.App.T("api.user.reset_password.method")) err = c.App.UpdatePasswordByUserIdSendEmail(c.Params.UserId, newPassword, c.App.T("api.user.reset_password.method"))
} else { } else {
err = model.NewAppError("updatePassword", "api.user.update_password.context.app_error", nil, "", http.StatusForbidden) err = model.NewAppError("updatePassword", "api.user.update_password.context.app_error", nil, "", http.StatusForbidden)
@@ -1431,8 +1431,8 @@ func logout(c *Context, w http.ResponseWriter, r *http.Request) {
func Logout(c *Context, w http.ResponseWriter, r *http.Request) { func Logout(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("") c.LogAudit("")
c.RemoveSessionCookie(w, r) c.RemoveSessionCookie(w, r)
if c.App.Session.Id != "" { if c.App.Session().Id != "" {
if err := c.App.RevokeSessionById(c.App.Session.Id); err != nil { if err := c.App.RevokeSessionById(c.App.Session().Id); err != nil {
c.Err = err c.Err = err
return return
} }
@@ -1447,7 +1447,7 @@ func getSessions(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -1471,7 +1471,7 @@ func revokeSession(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -1508,7 +1508,7 @@ func revokeAllSessionsForUser(c *Context, w http.ResponseWriter, r *http.Request
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -1522,7 +1522,7 @@ func revokeAllSessionsForUser(c *Context, w http.ResponseWriter, r *http.Request
} }
func revokeAllSessionsAllUsers(c *Context, w http.ResponseWriter, r *http.Request) { func revokeAllSessionsAllUsers(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -1545,13 +1545,13 @@ func attachDeviceId(c *Context, w http.ResponseWriter, r *http.Request) {
} }
// A special case where we logout of all other sessions with the same device id // A special case where we logout of all other sessions with the same device id
if err := c.App.RevokeSessionsForDeviceId(c.App.Session.UserId, deviceId, c.App.Session.Id); err != nil { if err := c.App.RevokeSessionsForDeviceId(c.App.Session().UserId, deviceId, c.App.Session().Id); err != nil {
c.Err = err c.Err = err
return return
} }
c.App.ClearSessionCacheForUser(c.App.Session.UserId) c.App.ClearSessionCacheForUser(c.App.Session().UserId)
c.App.Session.SetExpireInDays(*c.App.Config().ServiceSettings.SessionLengthMobileInDays) c.App.Session().SetExpireInDays(*c.App.Config().ServiceSettings.SessionLengthMobileInDays)
maxAge := *c.App.Config().ServiceSettings.SessionLengthMobileInDays * 60 * 60 * 24 maxAge := *c.App.Config().ServiceSettings.SessionLengthMobileInDays * 60 * 60 * 24
@@ -1565,7 +1565,7 @@ func attachDeviceId(c *Context, w http.ResponseWriter, r *http.Request) {
expiresAt := time.Unix(model.GetMillis()/1000+int64(maxAge), 0) expiresAt := time.Unix(model.GetMillis()/1000+int64(maxAge), 0)
sessionCookie := &http.Cookie{ sessionCookie := &http.Cookie{
Name: model.SESSION_COOKIE_TOKEN, Name: model.SESSION_COOKIE_TOKEN,
Value: c.App.Session.Token, Value: c.App.Session().Token,
Path: subpath, Path: subpath,
MaxAge: maxAge, MaxAge: maxAge,
Expires: expiresAt, Expires: expiresAt,
@@ -1576,7 +1576,7 @@ func attachDeviceId(c *Context, w http.ResponseWriter, r *http.Request) {
http.SetCookie(w, sessionCookie) http.SetCookie(w, sessionCookie)
if err := c.App.AttachDeviceId(c.App.Session.Id, deviceId, c.App.Session.ExpiresAt); err != nil { if err := c.App.AttachDeviceId(c.App.Session().Id, deviceId, c.App.Session().ExpiresAt); err != nil {
c.Err = err c.Err = err
return return
} }
@@ -1591,7 +1591,7 @@ func getUserAudits(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToUser(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUser(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -1668,7 +1668,7 @@ func switchAccountType(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
link, err = c.App.SwitchOAuthToEmail(switchRequest.Email, switchRequest.NewPassword, c.App.Session.UserId) link, err = c.App.SwitchOAuthToEmail(switchRequest.Email, switchRequest.NewPassword, c.App.Session().UserId)
} else if switchRequest.EmailToLdap() { } else if switchRequest.EmailToLdap() {
link, err = c.App.SwitchEmailToLdap(switchRequest.Email, switchRequest.Password, switchRequest.MfaCode, switchRequest.LdapLoginId, switchRequest.NewPassword) link, err = c.App.SwitchEmailToLdap(switchRequest.Email, switchRequest.Password, switchRequest.MfaCode, switchRequest.LdapLoginId, switchRequest.NewPassword)
} else if switchRequest.LdapToEmail() { } else if switchRequest.LdapToEmail() {
@@ -1693,7 +1693,7 @@ func createUserAccessToken(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if c.App.Session.IsOAuth { if c.App.Session().IsOAuth {
c.SetPermissionError(model.PERMISSION_CREATE_USER_ACCESS_TOKEN) c.SetPermissionError(model.PERMISSION_CREATE_USER_ACCESS_TOKEN)
c.Err.DetailedError += ", attempted access by oauth app" c.Err.DetailedError += ", attempted access by oauth app"
return return
@@ -1712,12 +1712,12 @@ func createUserAccessToken(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("") c.LogAudit("")
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_CREATE_USER_ACCESS_TOKEN) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_CREATE_USER_ACCESS_TOKEN) {
c.SetPermissionError(model.PERMISSION_CREATE_USER_ACCESS_TOKEN) c.SetPermissionError(model.PERMISSION_CREATE_USER_ACCESS_TOKEN)
return return
} }
if !c.App.SessionHasPermissionToUserOrBot(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUserOrBot(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -1736,7 +1736,7 @@ func createUserAccessToken(c *Context, w http.ResponseWriter, r *http.Request) {
} }
func searchUserAccessTokens(c *Context, w http.ResponseWriter, r *http.Request) { func searchUserAccessTokens(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -1761,7 +1761,7 @@ func searchUserAccessTokens(c *Context, w http.ResponseWriter, r *http.Request)
} }
func getUserAccessTokens(c *Context, w http.ResponseWriter, r *http.Request) { func getUserAccessTokens(c *Context, w http.ResponseWriter, r *http.Request) {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_SYSTEM) {
c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM) c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
return return
} }
@@ -1781,12 +1781,12 @@ func getUserAccessTokensForUser(c *Context, w http.ResponseWriter, r *http.Reque
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_READ_USER_ACCESS_TOKEN) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_READ_USER_ACCESS_TOKEN) {
c.SetPermissionError(model.PERMISSION_READ_USER_ACCESS_TOKEN) c.SetPermissionError(model.PERMISSION_READ_USER_ACCESS_TOKEN)
return return
} }
if !c.App.SessionHasPermissionToUserOrBot(c.App.Session, c.Params.UserId) { if !c.App.SessionHasPermissionToUserOrBot(*c.App.Session(), c.Params.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -1806,7 +1806,7 @@ func getUserAccessToken(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_READ_USER_ACCESS_TOKEN) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_READ_USER_ACCESS_TOKEN) {
c.SetPermissionError(model.PERMISSION_READ_USER_ACCESS_TOKEN) c.SetPermissionError(model.PERMISSION_READ_USER_ACCESS_TOKEN)
return return
} }
@@ -1817,7 +1817,7 @@ func getUserAccessToken(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToUserOrBot(c.App.Session, accessToken.UserId) { if !c.App.SessionHasPermissionToUserOrBot(*c.App.Session(), accessToken.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -1835,7 +1835,7 @@ func revokeUserAccessToken(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("") c.LogAudit("")
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_REVOKE_USER_ACCESS_TOKEN) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_REVOKE_USER_ACCESS_TOKEN) {
c.SetPermissionError(model.PERMISSION_REVOKE_USER_ACCESS_TOKEN) c.SetPermissionError(model.PERMISSION_REVOKE_USER_ACCESS_TOKEN)
return return
} }
@@ -1846,7 +1846,7 @@ func revokeUserAccessToken(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToUserOrBot(c.App.Session, accessToken.UserId) { if !c.App.SessionHasPermissionToUserOrBot(*c.App.Session(), accessToken.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -1871,7 +1871,7 @@ func disableUserAccessToken(c *Context, w http.ResponseWriter, r *http.Request)
c.LogAudit("") c.LogAudit("")
// No separate permission for this action for now // No separate permission for this action for now
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_REVOKE_USER_ACCESS_TOKEN) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_REVOKE_USER_ACCESS_TOKEN) {
c.SetPermissionError(model.PERMISSION_REVOKE_USER_ACCESS_TOKEN) c.SetPermissionError(model.PERMISSION_REVOKE_USER_ACCESS_TOKEN)
return return
} }
@@ -1882,7 +1882,7 @@ func disableUserAccessToken(c *Context, w http.ResponseWriter, r *http.Request)
return return
} }
if !c.App.SessionHasPermissionToUserOrBot(c.App.Session, accessToken.UserId) { if !c.App.SessionHasPermissionToUserOrBot(*c.App.Session(), accessToken.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -1907,7 +1907,7 @@ func enableUserAccessToken(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("") c.LogAudit("")
// No separate permission for this action for now // No separate permission for this action for now
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_CREATE_USER_ACCESS_TOKEN) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_CREATE_USER_ACCESS_TOKEN) {
c.SetPermissionError(model.PERMISSION_CREATE_USER_ACCESS_TOKEN) c.SetPermissionError(model.PERMISSION_CREATE_USER_ACCESS_TOKEN)
return return
} }
@@ -1918,7 +1918,7 @@ func enableUserAccessToken(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToUserOrBot(c.App.Session, accessToken.UserId) { if !c.App.SessionHasPermissionToUserOrBot(*c.App.Session(), accessToken.UserId) {
c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS)
return return
} }
@@ -1935,7 +1935,7 @@ func enableUserAccessToken(c *Context, w http.ResponseWriter, r *http.Request) {
func saveUserTermsOfService(c *Context, w http.ResponseWriter, r *http.Request) { func saveUserTermsOfService(c *Context, w http.ResponseWriter, r *http.Request) {
props := model.StringInterfaceFromJson(r.Body) props := model.StringInterfaceFromJson(r.Body)
userId := c.App.Session.UserId userId := c.App.Session().UserId
termsOfServiceId := props["termsOfServiceId"].(string) termsOfServiceId := props["termsOfServiceId"].(string)
accepted := props["accepted"].(bool) accepted := props["accepted"].(bool)
@@ -1954,7 +1954,7 @@ func saveUserTermsOfService(c *Context, w http.ResponseWriter, r *http.Request)
} }
func getUserTermsOfService(c *Context, w http.ResponseWriter, r *http.Request) { func getUserTermsOfService(c *Context, w http.ResponseWriter, r *http.Request) {
userId := c.App.Session.UserId userId := c.App.Session().UserId
result, err := c.App.GetUserTermsOfService(userId) result, err := c.App.GetUserTermsOfService(userId)
if err != nil { if err != nil {
c.Err = err c.Err = err
@@ -1969,7 +1969,7 @@ func promoteGuestToUser(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_PROMOTE_GUEST) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_PROMOTE_GUEST) {
c.SetPermissionError(model.PERMISSION_PROMOTE_GUEST) c.SetPermissionError(model.PERMISSION_PROMOTE_GUEST)
return return
} }
@@ -1985,7 +1985,7 @@ func promoteGuestToUser(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if err := c.App.PromoteGuestToUser(user, c.App.Session.UserId); err != nil { if err := c.App.PromoteGuestToUser(user, c.App.Session().UserId); err != nil {
c.Err = err c.Err = err
return return
} }
@@ -2009,7 +2009,7 @@ func demoteUserToGuest(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_DEMOTE_TO_GUEST) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_DEMOTE_TO_GUEST) {
c.SetPermissionError(model.PERMISSION_DEMOTE_TO_GUEST) c.SetPermissionError(model.PERMISSION_DEMOTE_TO_GUEST)
return return
} }

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

@@ -155,7 +155,7 @@ func TestCreateUserWithToken(t *testing.T) {
app.TOKEN_TYPE_TEAM_INVITATION, app.TOKEN_TYPE_TEAM_INVITATION,
model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}), model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}),
) )
require.Nil(t, th.App.Srv.Store.Token().Save(token)) require.Nil(t, th.App.Srv().Store.Token().Save(token))
ruser, resp := th.Client.CreateUserWithToken(&user, token.Token) ruser, resp := th.Client.CreateUserWithToken(&user, token.Token)
CheckNoError(t, resp) CheckNoError(t, resp)
@@ -165,7 +165,7 @@ func TestCreateUserWithToken(t *testing.T) {
require.Equal(t, user.Nickname, ruser.Nickname) require.Equal(t, user.Nickname, ruser.Nickname)
require.Equal(t, model.SYSTEM_USER_ROLE_ID, ruser.Roles, "should clear roles") require.Equal(t, model.SYSTEM_USER_ROLE_ID, ruser.Roles, "should clear roles")
CheckUserSanitization(t, ruser) CheckUserSanitization(t, ruser)
_, err := th.App.Srv.Store.Token().GetByToken(token.Token) _, err := th.App.Srv().Store.Token().GetByToken(token.Token)
require.NotNil(t, err, "The token must be deleted after being used") require.NotNil(t, err, "The token must be deleted after being used")
teams, err := th.App.GetTeamsForUser(ruser.Id) teams, err := th.App.GetTeamsForUser(ruser.Id)
@@ -180,7 +180,7 @@ func TestCreateUserWithToken(t *testing.T) {
app.TOKEN_TYPE_TEAM_INVITATION, app.TOKEN_TYPE_TEAM_INVITATION,
model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}), model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}),
) )
require.Nil(t, th.App.Srv.Store.Token().Save(token)) require.Nil(t, th.App.Srv().Store.Token().Save(token))
defer th.App.DeleteToken(token) defer th.App.DeleteToken(token)
_, resp := th.Client.CreateUserWithToken(&user, "") _, resp := th.Client.CreateUserWithToken(&user, "")
@@ -197,7 +197,7 @@ func TestCreateUserWithToken(t *testing.T) {
model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}), model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}),
) )
token.CreateAt = past49Hours token.CreateAt = past49Hours
require.Nil(t, th.App.Srv.Store.Token().Save(token)) require.Nil(t, th.App.Srv().Store.Token().Save(token))
defer th.App.DeleteToken(token) defer th.App.DeleteToken(token)
_, resp := th.Client.CreateUserWithToken(&user, token.Token) _, resp := th.Client.CreateUserWithToken(&user, token.Token)
@@ -226,7 +226,7 @@ func TestCreateUserWithToken(t *testing.T) {
app.TOKEN_TYPE_TEAM_INVITATION, app.TOKEN_TYPE_TEAM_INVITATION,
model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}), model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}),
) )
require.Nil(t, th.App.Srv.Store.Token().Save(token)) require.Nil(t, th.App.Srv().Store.Token().Save(token))
defer th.App.DeleteToken(token) defer th.App.DeleteToken(token)
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableUserCreation = false }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableUserCreation = false })
@@ -244,7 +244,7 @@ func TestCreateUserWithToken(t *testing.T) {
app.TOKEN_TYPE_TEAM_INVITATION, app.TOKEN_TYPE_TEAM_INVITATION,
model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}), model.MapToJson(map[string]string{"teamId": th.BasicTeam.Id, "email": user.Email}),
) )
require.Nil(t, th.App.Srv.Store.Token().Save(token)) require.Nil(t, th.App.Srv().Store.Token().Save(token))
enableOpenServer := th.App.Config().TeamSettings.EnableOpenServer enableOpenServer := th.App.Config().TeamSettings.EnableOpenServer
defer func() { defer func() {
@@ -261,7 +261,7 @@ func TestCreateUserWithToken(t *testing.T) {
require.Equal(t, user.Nickname, ruser.Nickname) require.Equal(t, user.Nickname, ruser.Nickname)
require.Equal(t, model.SYSTEM_USER_ROLE_ID, ruser.Roles, "should clear roles") require.Equal(t, model.SYSTEM_USER_ROLE_ID, ruser.Roles, "should clear roles")
CheckUserSanitization(t, ruser) CheckUserSanitization(t, ruser)
_, err := th.App.Srv.Store.Token().GetByToken(token.Token) _, err := th.App.Srv().Store.Token().GetByToken(token.Token)
require.NotNil(t, err, "The token must be deleted after be used") require.NotNil(t, err, "The token must be deleted after be used")
}) })
} }
@@ -1558,7 +1558,7 @@ func TestUpdateUserAuth(t *testing.T) {
user := th.CreateUser() user := th.CreateUser()
th.LinkUserToTeam(user, team) th.LinkUserToTeam(user, team)
_, err := th.App.Srv.Store.User().VerifyEmail(user.Id, user.Email) _, err := th.App.Srv().Store.User().VerifyEmail(user.Id, user.Email)
require.Nil(t, err) require.Nil(t, err)
userAuth := &model.UserAuth{} userAuth := &model.UserAuth{}
@@ -1591,7 +1591,7 @@ func TestUpdateUserAuth(t *testing.T) {
// Regular user can not use endpoint // Regular user can not use endpoint
user2 := th.CreateUser() user2 := th.CreateUser()
th.LinkUserToTeam(user2, team) th.LinkUserToTeam(user2, team)
_, err = th.App.Srv.Store.User().VerifyEmail(user2.Id, user2.Email) _, err = th.App.Srv().Store.User().VerifyEmail(user2.Id, user2.Email)
require.Nil(t, err) require.Nil(t, err)
th.SystemAdminClient.Login(user2.Email, "passwd1") th.SystemAdminClient.Login(user2.Email, "passwd1")
@@ -1742,7 +1742,7 @@ func TestUpdateUserActive(t *testing.T) {
CheckNoError(t, resp) CheckNoError(t, resp)
authData := model.NewId() authData := model.NewId()
_, err := th.App.Srv.Store.User().UpdateAuthData(user.Id, "random", &authData, "", true) _, err := th.App.Srv().Store.User().UpdateAuthData(user.Id, "random", &authData, "", true)
require.Nil(t, err) require.Nil(t, err)
_, resp = th.SystemAdminClient.UpdateUserActive(user.Id, false) _, resp = th.SystemAdminClient.UpdateUserActive(user.Id, false)
@@ -1933,7 +1933,7 @@ func TestGetUsersWithoutTeam(t *testing.T) {
}) })
CheckNoError(t, resp) CheckNoError(t, resp)
th.LinkUserToTeam(user, th.BasicTeam) th.LinkUserToTeam(user, th.BasicTeam)
defer th.App.Srv.Store.User().PermanentDelete(user.Id) defer th.App.Srv().Store.User().PermanentDelete(user.Id)
user2, resp := th.Client.CreateUser(&model.User{ user2, resp := th.Client.CreateUser(&model.User{
Username: "a000000001" + model.NewId(), Username: "a000000001" + model.NewId(),
@@ -1941,7 +1941,7 @@ func TestGetUsersWithoutTeam(t *testing.T) {
Password: "Password1", Password: "Password1",
}) })
CheckNoError(t, resp) CheckNoError(t, resp)
defer th.App.Srv.Store.User().PermanentDelete(user2.Id) defer th.App.Srv().Store.User().PermanentDelete(user2.Id)
rusers, resp := th.SystemAdminClient.GetUsersWithoutTeam(0, 100, "") rusers, resp := th.SystemAdminClient.GetUsersWithoutTeam(0, 100, "")
CheckNoError(t, resp) CheckNoError(t, resp)
@@ -2377,7 +2377,7 @@ func TestResetPassword(t *testing.T) {
loc += 6 loc += 6
recoveryTokenString = resultsEmail.Body.Text[loc : loc+model.TOKEN_SIZE] recoveryTokenString = resultsEmail.Body.Text[loc : loc+model.TOKEN_SIZE]
} }
recoveryToken, err := th.App.Srv.Store.Token().GetByToken(recoveryTokenString) recoveryToken, err := th.App.Srv().Store.Token().GetByToken(recoveryTokenString)
require.Nil(t, err, "Recovery token not found (%s)", recoveryTokenString) require.Nil(t, err, "Recovery token not found (%s)", recoveryTokenString)
_, resp = th.Client.ResetPassword(recoveryToken.Token, "") _, resp = th.Client.ResetPassword(recoveryToken.Token, "")
@@ -2402,7 +2402,7 @@ func TestResetPassword(t *testing.T) {
_, resp = th.Client.ResetPassword(recoveryToken.Token, "newpwd") _, resp = th.Client.ResetPassword(recoveryToken.Token, "newpwd")
CheckBadRequestStatus(t, resp) CheckBadRequestStatus(t, resp)
authData := model.NewId() authData := model.NewId()
_, err = th.App.Srv.Store.User().UpdateAuthData(user.Id, "random", &authData, "", true) _, err = th.App.Srv().Store.User().UpdateAuthData(user.Id, "random", &authData, "", true)
require.Nil(t, err) require.Nil(t, err)
_, resp = th.Client.SendPasswordResetEmail(user.Email) _, resp = th.Client.SendPasswordResetEmail(user.Email)
CheckBadRequestStatus(t, resp) CheckBadRequestStatus(t, resp)
@@ -3074,7 +3074,7 @@ func TestSwitchAccount(t *testing.T) {
th.LoginBasic() th.LoginBasic()
fakeAuthData := model.NewId() fakeAuthData := model.NewId()
_, err := th.App.Srv.Store.User().UpdateAuthData(th.BasicUser.Id, model.USER_AUTH_SERVICE_GITLAB, &fakeAuthData, th.BasicUser.Email, true) _, err := th.App.Srv().Store.User().UpdateAuthData(th.BasicUser.Id, model.USER_AUTH_SERVICE_GITLAB, &fakeAuthData, th.BasicUser.Email, true)
require.Nil(t, err) require.Nil(t, err)
sr = &model.SwitchRequest{ sr = &model.SwitchRequest{

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

@@ -39,18 +39,18 @@ func createIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt") c.LogAudit("attempt")
if !c.App.SessionHasPermissionToTeam(c.App.Session, channel.TeamId, model.PERMISSION_MANAGE_INCOMING_WEBHOOKS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), channel.TeamId, model.PERMISSION_MANAGE_INCOMING_WEBHOOKS) {
c.SetPermissionError(model.PERMISSION_MANAGE_INCOMING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_INCOMING_WEBHOOKS)
return return
} }
if channel.Type != model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.App.Session, channel.Id, model.PERMISSION_READ_CHANNEL) { if channel.Type != model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(*c.App.Session(), channel.Id, model.PERMISSION_READ_CHANNEL) {
c.LogAudit("fail - bad channel permissions") c.LogAudit("fail - bad channel permissions")
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
} }
incomingHook, err := c.App.CreateIncomingWebhookForChannel(c.App.Session.UserId, channel, hook) incomingHook, err := c.App.CreateIncomingWebhookForChannel(c.App.Session().UserId, channel, hook)
if err != nil { if err != nil {
c.Err = err c.Err = err
return return
@@ -92,7 +92,7 @@ func updateIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
} }
if updatedHook.TeamId != oldHook.TeamId { if updatedHook.TeamId != oldHook.TeamId {
c.Err = model.NewAppError("updateIncomingHook", "api.webhook.team_mismatch.app_error", nil, "user_id="+c.App.Session.UserId, http.StatusBadRequest) c.Err = model.NewAppError("updateIncomingHook", "api.webhook.team_mismatch.app_error", nil, "user_id="+c.App.Session().UserId, http.StatusBadRequest)
return return
} }
@@ -107,18 +107,18 @@ func updateIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, channel.TeamId, model.PERMISSION_MANAGE_INCOMING_WEBHOOKS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), channel.TeamId, model.PERMISSION_MANAGE_INCOMING_WEBHOOKS) {
c.SetPermissionError(model.PERMISSION_MANAGE_INCOMING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_INCOMING_WEBHOOKS)
return return
} }
if c.App.Session.UserId != oldHook.UserId && !c.App.SessionHasPermissionToTeam(c.App.Session, channel.TeamId, model.PERMISSION_MANAGE_OTHERS_INCOMING_WEBHOOKS) { if c.App.Session().UserId != oldHook.UserId && !c.App.SessionHasPermissionToTeam(*c.App.Session(), channel.TeamId, model.PERMISSION_MANAGE_OTHERS_INCOMING_WEBHOOKS) {
c.LogAudit("fail - inappropriate permissions") c.LogAudit("fail - inappropriate permissions")
c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_INCOMING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_INCOMING_WEBHOOKS)
return return
} }
if channel.Type != model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.App.Session, channel.Id, model.PERMISSION_READ_CHANNEL) { if channel.Type != model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(*c.App.Session(), channel.Id, model.PERMISSION_READ_CHANNEL) {
c.LogAudit("fail - bad channel permissions") c.LogAudit("fail - bad channel permissions")
c.SetPermissionError(model.PERMISSION_READ_CHANNEL) c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return return
@@ -137,31 +137,31 @@ func updateIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
func getIncomingHooks(c *Context, w http.ResponseWriter, r *http.Request) { func getIncomingHooks(c *Context, w http.ResponseWriter, r *http.Request) {
teamId := r.URL.Query().Get("team_id") teamId := r.URL.Query().Get("team_id")
userId := c.App.Session.UserId userId := c.App.Session().UserId
var hooks []*model.IncomingWebhook var hooks []*model.IncomingWebhook
var err *model.AppError var err *model.AppError
if len(teamId) > 0 { if len(teamId) > 0 {
if !c.App.SessionHasPermissionToTeam(c.App.Session, teamId, model.PERMISSION_MANAGE_INCOMING_WEBHOOKS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), teamId, model.PERMISSION_MANAGE_INCOMING_WEBHOOKS) {
c.SetPermissionError(model.PERMISSION_MANAGE_INCOMING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_INCOMING_WEBHOOKS)
return return
} }
// Remove userId as a filter if they have permission to manage others. // Remove userId as a filter if they have permission to manage others.
if c.App.SessionHasPermissionToTeam(c.App.Session, teamId, model.PERMISSION_MANAGE_OTHERS_INCOMING_WEBHOOKS) { if c.App.SessionHasPermissionToTeam(*c.App.Session(), teamId, model.PERMISSION_MANAGE_OTHERS_INCOMING_WEBHOOKS) {
userId = "" userId = ""
} }
hooks, err = c.App.GetIncomingWebhooksForTeamPageByUser(teamId, userId, c.Params.Page, c.Params.PerPage) hooks, err = c.App.GetIncomingWebhooksForTeamPageByUser(teamId, userId, c.Params.Page, c.Params.PerPage)
} else { } else {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_INCOMING_WEBHOOKS) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_INCOMING_WEBHOOKS) {
c.SetPermissionError(model.PERMISSION_MANAGE_INCOMING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_INCOMING_WEBHOOKS)
return return
} }
// Remove userId as a filter if they have permission to manage others. // Remove userId as a filter if they have permission to manage others.
if c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_OTHERS_INCOMING_WEBHOOKS) { if c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_OTHERS_INCOMING_WEBHOOKS) {
userId = "" userId = ""
} }
@@ -200,14 +200,14 @@ func getIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, hook.TeamId, model.PERMISSION_MANAGE_INCOMING_WEBHOOKS) || if !c.App.SessionHasPermissionToTeam(*c.App.Session(), hook.TeamId, model.PERMISSION_MANAGE_INCOMING_WEBHOOKS) ||
(channel.Type != model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.App.Session, hook.ChannelId, model.PERMISSION_READ_CHANNEL)) { (channel.Type != model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(*c.App.Session(), hook.ChannelId, model.PERMISSION_READ_CHANNEL)) {
c.LogAudit("fail - bad permissions") c.LogAudit("fail - bad permissions")
c.SetPermissionError(model.PERMISSION_MANAGE_INCOMING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_INCOMING_WEBHOOKS)
return return
} }
if c.App.Session.UserId != hook.UserId && !c.App.SessionHasPermissionToTeam(c.App.Session, hook.TeamId, model.PERMISSION_MANAGE_OTHERS_INCOMING_WEBHOOKS) { if c.App.Session().UserId != hook.UserId && !c.App.SessionHasPermissionToTeam(*c.App.Session(), hook.TeamId, model.PERMISSION_MANAGE_OTHERS_INCOMING_WEBHOOKS) {
c.LogAudit("fail - inappropriate permissions") c.LogAudit("fail - inappropriate permissions")
c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_INCOMING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_INCOMING_WEBHOOKS)
return return
@@ -240,14 +240,14 @@ func deleteIncomingHook(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, hook.TeamId, model.PERMISSION_MANAGE_INCOMING_WEBHOOKS) || if !c.App.SessionHasPermissionToTeam(*c.App.Session(), hook.TeamId, model.PERMISSION_MANAGE_INCOMING_WEBHOOKS) ||
(channel.Type != model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(c.App.Session, hook.ChannelId, model.PERMISSION_READ_CHANNEL)) { (channel.Type != model.CHANNEL_OPEN && !c.App.SessionHasPermissionToChannel(*c.App.Session(), hook.ChannelId, model.PERMISSION_READ_CHANNEL)) {
c.LogAudit("fail - bad permissions") c.LogAudit("fail - bad permissions")
c.SetPermissionError(model.PERMISSION_MANAGE_INCOMING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_INCOMING_WEBHOOKS)
return return
} }
if c.App.Session.UserId != hook.UserId && !c.App.SessionHasPermissionToTeam(c.App.Session, hook.TeamId, model.PERMISSION_MANAGE_OTHERS_INCOMING_WEBHOOKS) { if c.App.Session().UserId != hook.UserId && !c.App.SessionHasPermissionToTeam(*c.App.Session(), hook.TeamId, model.PERMISSION_MANAGE_OTHERS_INCOMING_WEBHOOKS) {
c.LogAudit("fail - inappropriate permissions") c.LogAudit("fail - inappropriate permissions")
c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_INCOMING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_INCOMING_WEBHOOKS)
return return
@@ -292,22 +292,22 @@ func updateOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
} }
if updatedHook.TeamId != oldHook.TeamId { if updatedHook.TeamId != oldHook.TeamId {
c.Err = model.NewAppError("updateOutgoingHook", "api.webhook.team_mismatch.app_error", nil, "user_id="+c.App.Session.UserId, http.StatusBadRequest) c.Err = model.NewAppError("updateOutgoingHook", "api.webhook.team_mismatch.app_error", nil, "user_id="+c.App.Session().UserId, http.StatusBadRequest)
return return
} }
if !c.App.SessionHasPermissionToTeam(c.App.Session, updatedHook.TeamId, model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), updatedHook.TeamId, model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) {
c.SetPermissionError(model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS)
return return
} }
if c.App.Session.UserId != oldHook.CreatorId && !c.App.SessionHasPermissionToTeam(c.App.Session, updatedHook.TeamId, model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS) { if c.App.Session().UserId != oldHook.CreatorId && !c.App.SessionHasPermissionToTeam(*c.App.Session(), updatedHook.TeamId, model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS) {
c.LogAudit("fail - inappropriate permissions") c.LogAudit("fail - inappropriate permissions")
c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS)
return return
} }
updatedHook.CreatorId = c.App.Session.UserId updatedHook.CreatorId = c.App.Session().UserId
rhook, err := c.App.UpdateOutgoingWebhook(oldHook, updatedHook) rhook, err := c.App.UpdateOutgoingWebhook(oldHook, updatedHook)
if err != nil { if err != nil {
@@ -328,9 +328,9 @@ func createOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt") c.LogAudit("attempt")
hook.CreatorId = c.App.Session.UserId hook.CreatorId = c.App.Session().UserId
if !c.App.SessionHasPermissionToTeam(c.App.Session, hook.TeamId, model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), hook.TeamId, model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) {
c.SetPermissionError(model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS)
return return
} }
@@ -350,43 +350,43 @@ func createOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
func getOutgoingHooks(c *Context, w http.ResponseWriter, r *http.Request) { func getOutgoingHooks(c *Context, w http.ResponseWriter, r *http.Request) {
channelId := r.URL.Query().Get("channel_id") channelId := r.URL.Query().Get("channel_id")
teamId := r.URL.Query().Get("team_id") teamId := r.URL.Query().Get("team_id")
userId := c.App.Session.UserId userId := c.App.Session().UserId
var hooks []*model.OutgoingWebhook var hooks []*model.OutgoingWebhook
var err *model.AppError var err *model.AppError
if len(channelId) > 0 { if len(channelId) > 0 {
if !c.App.SessionHasPermissionToChannel(c.App.Session, channelId, model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) { if !c.App.SessionHasPermissionToChannel(*c.App.Session(), channelId, model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) {
c.SetPermissionError(model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS)
return return
} }
// Remove userId as a filter if they have permission to manage others. // Remove userId as a filter if they have permission to manage others.
if c.App.SessionHasPermissionToChannel(c.App.Session, channelId, model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS) { if c.App.SessionHasPermissionToChannel(*c.App.Session(), channelId, model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS) {
userId = "" userId = ""
} }
hooks, err = c.App.GetOutgoingWebhooksForChannelPageByUser(channelId, userId, c.Params.Page, c.Params.PerPage) hooks, err = c.App.GetOutgoingWebhooksForChannelPageByUser(channelId, userId, c.Params.Page, c.Params.PerPage)
} else if len(teamId) > 0 { } else if len(teamId) > 0 {
if !c.App.SessionHasPermissionToTeam(c.App.Session, teamId, model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), teamId, model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) {
c.SetPermissionError(model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS)
return return
} }
// Remove userId as a filter if they have permission to manage others. // Remove userId as a filter if they have permission to manage others.
if c.App.SessionHasPermissionToTeam(c.App.Session, teamId, model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS) { if c.App.SessionHasPermissionToTeam(*c.App.Session(), teamId, model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS) {
userId = "" userId = ""
} }
hooks, err = c.App.GetOutgoingWebhooksForTeamPageByUser(teamId, userId, c.Params.Page, c.Params.PerPage) hooks, err = c.App.GetOutgoingWebhooksForTeamPageByUser(teamId, userId, c.Params.Page, c.Params.PerPage)
} else { } else {
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) { if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) {
c.SetPermissionError(model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS)
return return
} }
// Remove userId as a filter if they have permission to manage others. // Remove userId as a filter if they have permission to manage others.
if c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS) { if c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS) {
userId = "" userId = ""
} }
@@ -415,12 +415,12 @@ func getOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt") c.LogAudit("attempt")
if !c.App.SessionHasPermissionToTeam(c.App.Session, hook.TeamId, model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), hook.TeamId, model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) {
c.SetPermissionError(model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS)
return return
} }
if c.App.Session.UserId != hook.CreatorId && !c.App.SessionHasPermissionToTeam(c.App.Session, hook.TeamId, model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS) { if c.App.Session().UserId != hook.CreatorId && !c.App.SessionHasPermissionToTeam(*c.App.Session(), hook.TeamId, model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS) {
c.LogAudit("fail - inappropriate permissions") c.LogAudit("fail - inappropriate permissions")
c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS)
return return
@@ -444,12 +444,12 @@ func regenOutgoingHookToken(c *Context, w http.ResponseWriter, r *http.Request)
c.LogAudit("attempt") c.LogAudit("attempt")
if !c.App.SessionHasPermissionToTeam(c.App.Session, hook.TeamId, model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), hook.TeamId, model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) {
c.SetPermissionError(model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS)
return return
} }
if c.App.Session.UserId != hook.CreatorId && !c.App.SessionHasPermissionToTeam(c.App.Session, hook.TeamId, model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS) { if c.App.Session().UserId != hook.CreatorId && !c.App.SessionHasPermissionToTeam(*c.App.Session(), hook.TeamId, model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS) {
c.LogAudit("fail - inappropriate permissions") c.LogAudit("fail - inappropriate permissions")
c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS)
return return
@@ -478,12 +478,12 @@ func deleteOutgoingHook(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt") c.LogAudit("attempt")
if !c.App.SessionHasPermissionToTeam(c.App.Session, hook.TeamId, model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) { if !c.App.SessionHasPermissionToTeam(*c.App.Session(), hook.TeamId, model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) {
c.SetPermissionError(model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_OUTGOING_WEBHOOKS)
return return
} }
if c.App.Session.UserId != hook.CreatorId && !c.App.SessionHasPermissionToTeam(c.App.Session, hook.TeamId, model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS) { if c.App.Session().UserId != hook.CreatorId && !c.App.SessionHasPermissionToTeam(*c.App.Session(), hook.TeamId, model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS) {
c.LogAudit("fail - inappropriate permissions") c.LogAudit("fail - inappropriate permissions")
c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS) c.SetPermissionError(model.PERMISSION_MANAGE_OTHERS_OUTGOING_WEBHOOKS)
return return

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

@@ -30,9 +30,9 @@ func connectWebSocket(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
wc := c.App.NewWebConn(ws, c.App.Session, c.App.T, "") wc := c.App.NewWebConn(ws, *c.App.Session(), c.App.T, "")
if len(c.App.Session.UserId) > 0 { if len(c.App.Session().UserId) > 0 {
c.App.HubRegister(wc) c.App.HubRegister(wc)
} }

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

@@ -81,7 +81,7 @@ func TestWebSocketTrailingSlash(t *testing.T) {
th := Setup(t).InitBasic() th := Setup(t).InitBasic()
defer th.TearDown() defer th.TearDown()
url := fmt.Sprintf("ws://localhost:%v", th.App.Srv.ListenAddr.Port) url := fmt.Sprintf("ws://localhost:%v", th.App.Srv().ListenAddr.Port)
_, _, err := websocket.DefaultDialer.Dial(url+model.API_URL_SUFFIX+"/websocket/", nil) _, _, err := websocket.DefaultDialer.Dial(url+model.API_URL_SUFFIX+"/websocket/", nil)
require.NoError(t, err) require.NoError(t, err)
} }
@@ -216,7 +216,7 @@ func TestWebsocketOriginSecurity(t *testing.T) {
th := Setup(t).InitBasic() th := Setup(t).InitBasic()
defer th.TearDown() defer th.TearDown()
url := fmt.Sprintf("ws://localhost:%v", th.App.Srv.ListenAddr.Port) url := fmt.Sprintf("ws://localhost:%v", th.App.Srv().ListenAddr.Port)
// Should fail because origin doesn't match // Should fail because origin doesn't match
_, _, err := websocket.DefaultDialer.Dial(url+model.API_URL_SUFFIX+"/websocket", http.Header{ _, _, err := websocket.DefaultDialer.Dial(url+model.API_URL_SUFFIX+"/websocket", http.Header{
@@ -227,7 +227,7 @@ func TestWebsocketOriginSecurity(t *testing.T) {
// We are not a browser so we can spoof this just fine // We are not a browser so we can spoof this just fine
_, _, err = websocket.DefaultDialer.Dial(url+model.API_URL_SUFFIX+"/websocket", http.Header{ _, _, err = websocket.DefaultDialer.Dial(url+model.API_URL_SUFFIX+"/websocket", http.Header{
"Origin": []string{fmt.Sprintf("http://localhost:%v", th.App.Srv.ListenAddr.Port)}, "Origin": []string{fmt.Sprintf("http://localhost:%v", th.App.Srv().ListenAddr.Port)},
}) })
require.Nil(t, err, err) require.Nil(t, err, err)
@@ -282,13 +282,13 @@ func TestWebSocketStatuses(t *testing.T) {
user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"} user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
ruser := Client.Must(Client.CreateUser(&user)).(*model.User) ruser := Client.Must(Client.CreateUser(&user)).(*model.User)
th.LinkUserToTeam(ruser, rteam) th.LinkUserToTeam(ruser, rteam)
_, err = th.App.Srv.Store.User().VerifyEmail(ruser.Id, ruser.Email) _, err = th.App.Srv().Store.User().VerifyEmail(ruser.Id, ruser.Email)
require.Nil(t, err) require.Nil(t, err)
user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"} user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
ruser2 := Client.Must(Client.CreateUser(&user2)).(*model.User) ruser2 := Client.Must(Client.CreateUser(&user2)).(*model.User)
th.LinkUserToTeam(ruser2, rteam) th.LinkUserToTeam(ruser2, rteam)
_, err = th.App.Srv.Store.User().VerifyEmail(ruser2.Id, ruser2.Email) _, err = th.App.Srv().Store.User().VerifyEmail(ruser2.Id, ruser2.Email)
require.Nil(t, err) require.Nil(t, err)
Client.Login(user.Email, user.Password) Client.Login(user.Email, user.Password)

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

@@ -21,10 +21,10 @@ import (
func (a *App) GetLogs(page, perPage int) ([]string, *model.AppError) { func (a *App) GetLogs(page, perPage int) ([]string, *model.AppError) {
var lines []string var lines []string
if a.Cluster != nil && *a.Config().ClusterSettings.Enable { if a.Cluster() != nil && *a.Config().ClusterSettings.Enable {
lines = append(lines, "-----------------------------------------------------------------------------------------------------------") lines = append(lines, "-----------------------------------------------------------------------------------------------------------")
lines = append(lines, "-----------------------------------------------------------------------------------------------------------") lines = append(lines, "-----------------------------------------------------------------------------------------------------------")
lines = append(lines, a.Cluster.GetMyClusterInfo().Hostname) lines = append(lines, a.Cluster().GetMyClusterInfo().Hostname)
lines = append(lines, "-----------------------------------------------------------------------------------------------------------") lines = append(lines, "-----------------------------------------------------------------------------------------------------------")
lines = append(lines, "-----------------------------------------------------------------------------------------------------------") lines = append(lines, "-----------------------------------------------------------------------------------------------------------")
} }
@@ -36,8 +36,8 @@ func (a *App) GetLogs(page, perPage int) ([]string, *model.AppError) {
lines = append(lines, melines...) lines = append(lines, melines...)
if a.Cluster != nil && *a.Config().ClusterSettings.Enable { if a.Cluster() != nil && *a.Config().ClusterSettings.Enable {
clines, err := a.Cluster.GetLogs(page, perPage) clines, err := a.Cluster().GetLogs(page, perPage)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -122,8 +122,8 @@ func (a *App) GetLogsSkipSend(page, perPage int) ([]string, *model.AppError) {
func (a *App) GetClusterStatus() []*model.ClusterInfo { func (a *App) GetClusterStatus() []*model.ClusterInfo {
infos := make([]*model.ClusterInfo, 0) infos := make([]*model.ClusterInfo, 0)
if a.Cluster != nil { if a.Cluster() != nil {
infos = a.Cluster.GetClusterInfos() infos = a.Cluster().GetClusterInfos()
} }
return infos return infos
@@ -133,7 +133,7 @@ func (a *App) InvalidateAllCaches() *model.AppError {
debug.FreeOSMemory() debug.FreeOSMemory()
a.InvalidateAllCachesSkipSend() a.InvalidateAllCachesSkipSend()
if a.Cluster != nil { if a.Cluster() != nil {
msg := &model.ClusterMessage{ msg := &model.ClusterMessage{
Event: model.CLUSTER_EVENT_INVALIDATE_ALL_CACHES, Event: model.CLUSTER_EVENT_INVALIDATE_ALL_CACHES,
@@ -141,7 +141,7 @@ func (a *App) InvalidateAllCaches() *model.AppError {
WaitForAllToSend: true, WaitForAllToSend: true,
} }
a.Cluster.SendClusterMessage(msg) a.Cluster().SendClusterMessage(msg)
} }
return nil return nil
@@ -149,25 +149,25 @@ func (a *App) InvalidateAllCaches() *model.AppError {
func (a *App) InvalidateAllCachesSkipSend() { func (a *App) InvalidateAllCachesSkipSend() {
mlog.Info("Purging all caches") mlog.Info("Purging all caches")
a.Srv.sessionCache.Purge() a.Srv().sessionCache.Purge()
a.Srv.statusCache.Purge() a.Srv().statusCache.Purge()
a.Srv.Store.Team().ClearCaches() a.Srv().Store.Team().ClearCaches()
a.Srv.Store.Channel().ClearCaches() a.Srv().Store.Channel().ClearCaches()
a.Srv.Store.User().ClearCaches() a.Srv().Store.User().ClearCaches()
a.Srv.Store.Post().ClearCaches() a.Srv().Store.Post().ClearCaches()
a.Srv.Store.FileInfo().ClearCaches() a.Srv().Store.FileInfo().ClearCaches()
a.Srv.Store.Webhook().ClearCaches() a.Srv().Store.Webhook().ClearCaches()
a.LoadLicense() a.LoadLicense()
} }
func (a *App) RecycleDatabaseConnection() { func (a *App) RecycleDatabaseConnection() {
oldStore := a.Srv.Store oldStore := a.Srv().Store
mlog.Warn("Attempting to recycle the database connection.") mlog.Warn("Attempting to recycle the database connection.")
a.Srv.Store = a.Srv.newStore() a.Srv().Store = a.Srv().newStore()
a.Srv.Jobs.Store = a.Srv.Store a.Srv().Jobs.Store = a.Srv().Store
if a.Srv.Store != oldStore { if a.Srv().Store != oldStore {
time.Sleep(20 * time.Second) time.Sleep(20 * time.Second)
oldStore.Close() oldStore.Close()
} }
@@ -221,7 +221,7 @@ func (a *App) TestEmail(userId string, cfg *model.Config) *model.AppError {
// ServerBusyStateChanged is called when a CLUSTER_EVENT_BUSY_STATE_CHANGED is received. // ServerBusyStateChanged is called when a CLUSTER_EVENT_BUSY_STATE_CHANGED is received.
func (a *App) ServerBusyStateChanged(sbs *model.ServerBusyState) { func (a *App) ServerBusyStateChanged(sbs *model.ServerBusyState) {
a.Srv.Busy.ClusterEventChanged(sbs) a.Srv().Busy.ClusterEventChanged(sbs)
if sbs.Busy { if sbs.Busy {
mlog.Warn("server busy state activitated via cluster event - non-critical services disabled", mlog.Int64("expires_sec", sbs.Expires)) mlog.Warn("server busy state activitated via cluster event - non-critical services disabled", mlog.Int64("expires_sec", sbs.Expires))
} else { } else {

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

@@ -17,7 +17,7 @@ const (
func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *model.AppError) { func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *model.AppError) {
skipIntensiveQueries := false skipIntensiveQueries := false
var systemUserCount int64 var systemUserCount int64
systemUserCount, err := a.Srv.Store.User().Count(model.UserCountOptions{}) systemUserCount, err := a.Srv().Store.User().Count(model.UserCountOptions{})
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -44,12 +44,12 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
openChan := make(chan store.StoreResult, 1) openChan := make(chan store.StoreResult, 1)
privateChan := make(chan store.StoreResult, 1) privateChan := make(chan store.StoreResult, 1)
go func() { go func() {
count, err := a.Srv.Store.Channel().AnalyticsTypeCount(teamId, model.CHANNEL_OPEN) count, err := a.Srv().Store.Channel().AnalyticsTypeCount(teamId, model.CHANNEL_OPEN)
openChan <- store.StoreResult{Data: count, Err: err} openChan <- store.StoreResult{Data: count, Err: err}
close(openChan) close(openChan)
}() }()
go func() { go func() {
count, err := a.Srv.Store.Channel().AnalyticsTypeCount(teamId, model.CHANNEL_PRIVATE) count, err := a.Srv().Store.Channel().AnalyticsTypeCount(teamId, model.CHANNEL_PRIVATE)
privateChan <- store.StoreResult{Data: count, Err: err} privateChan <- store.StoreResult{Data: count, Err: err}
close(privateChan) close(privateChan)
}() }()
@@ -59,14 +59,14 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
if teamId == "" { if teamId == "" {
userInactiveChan = make(chan store.StoreResult, 1) userInactiveChan = make(chan store.StoreResult, 1)
go func() { go func() {
count, err := a.Srv.Store.User().AnalyticsGetInactiveUsersCount() count, err := a.Srv().Store.User().AnalyticsGetInactiveUsersCount()
userInactiveChan <- store.StoreResult{Data: count, Err: err} userInactiveChan <- store.StoreResult{Data: count, Err: err}
close(userInactiveChan) close(userInactiveChan)
}() }()
} else { } else {
userChan = make(chan store.StoreResult, 1) userChan = make(chan store.StoreResult, 1)
go func() { go func() {
count, err := a.Srv.Store.User().Count(model.UserCountOptions{TeamId: teamId}) count, err := a.Srv().Store.User().Count(model.UserCountOptions{TeamId: teamId})
userChan <- store.StoreResult{Data: count, Err: err} userChan <- store.StoreResult{Data: count, Err: err}
close(userChan) close(userChan)
}() }()
@@ -76,7 +76,7 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
if !skipIntensiveQueries { if !skipIntensiveQueries {
postChan = make(chan store.StoreResult, 1) postChan = make(chan store.StoreResult, 1)
go func() { go func() {
count, err := a.Srv.Store.Post().AnalyticsPostCount(teamId, false, false) count, err := a.Srv().Store.Post().AnalyticsPostCount(teamId, false, false)
postChan <- store.StoreResult{Data: count, Err: err} postChan <- store.StoreResult{Data: count, Err: err}
close(postChan) close(postChan)
}() }()
@@ -84,21 +84,21 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
teamCountChan := make(chan store.StoreResult, 1) teamCountChan := make(chan store.StoreResult, 1)
go func() { go func() {
teamCount, err := a.Srv.Store.Team().AnalyticsTeamCount(false) teamCount, err := a.Srv().Store.Team().AnalyticsTeamCount(false)
teamCountChan <- store.StoreResult{Data: teamCount, Err: err} teamCountChan <- store.StoreResult{Data: teamCount, Err: err}
close(teamCountChan) close(teamCountChan)
}() }()
dailyActiveChan := make(chan store.StoreResult, 1) dailyActiveChan := make(chan store.StoreResult, 1)
go func() { go func() {
dailyActive, err := a.Srv.Store.User().AnalyticsActiveCount(DAY_MILLISECONDS, model.UserCountOptions{IncludeBotAccounts: false, IncludeDeleted: false}) dailyActive, err := a.Srv().Store.User().AnalyticsActiveCount(DAY_MILLISECONDS, model.UserCountOptions{IncludeBotAccounts: false, IncludeDeleted: false})
dailyActiveChan <- store.StoreResult{Data: dailyActive, Err: err} dailyActiveChan <- store.StoreResult{Data: dailyActive, Err: err}
close(dailyActiveChan) close(dailyActiveChan)
}() }()
monthlyActiveChan := make(chan store.StoreResult, 1) monthlyActiveChan := make(chan store.StoreResult, 1)
go func() { go func() {
monthlyActive, err := a.Srv.Store.User().AnalyticsActiveCount(MONTH_MILLISECONDS, model.UserCountOptions{IncludeBotAccounts: false, IncludeDeleted: false}) monthlyActive, err := a.Srv().Store.User().AnalyticsActiveCount(MONTH_MILLISECONDS, model.UserCountOptions{IncludeBotAccounts: false, IncludeDeleted: false})
monthlyActiveChan <- store.StoreResult{Data: monthlyActive, Err: err} monthlyActiveChan <- store.StoreResult{Data: monthlyActive, Err: err}
close(monthlyActiveChan) close(monthlyActiveChan)
}() }()
@@ -152,15 +152,15 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
rows[4].Value = float64(r.Data.(int64)) rows[4].Value = float64(r.Data.(int64))
// If in HA mode then aggregrate all the stats // If in HA mode then aggregrate all the stats
if a.Cluster != nil && *a.Config().ClusterSettings.Enable { if a.Cluster() != nil && *a.Config().ClusterSettings.Enable {
stats, err := a.Cluster.GetClusterStats() stats, err := a.Cluster().GetClusterStats()
if err != nil { if err != nil {
return nil, err return nil, err
} }
totalSockets := a.TotalWebsocketConnections() totalSockets := a.TotalWebsocketConnections()
totalMasterDb := a.Srv.Store.TotalMasterDbConnections() totalMasterDb := a.Srv().Store.TotalMasterDbConnections()
totalReadDb := a.Srv.Store.TotalReadDbConnections() totalReadDb := a.Srv().Store.TotalReadDbConnections()
for _, stat := range stats { for _, stat := range stats {
totalSockets = totalSockets + stat.TotalWebsocketConnections totalSockets = totalSockets + stat.TotalWebsocketConnections
@@ -174,8 +174,8 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
} else { } else {
rows[5].Value = float64(a.TotalWebsocketConnections()) rows[5].Value = float64(a.TotalWebsocketConnections())
rows[6].Value = float64(a.Srv.Store.TotalMasterDbConnections()) rows[6].Value = float64(a.Srv().Store.TotalMasterDbConnections())
rows[7].Value = float64(a.Srv.Store.TotalReadDbConnections()) rows[7].Value = float64(a.Srv().Store.TotalReadDbConnections())
} }
r = <-dailyActiveChan r = <-dailyActiveChan
@@ -196,7 +196,7 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
rows := model.AnalyticsRows{&model.AnalyticsRow{Name: "", Value: -1}} rows := model.AnalyticsRows{&model.AnalyticsRow{Name: "", Value: -1}}
return rows, nil return rows, nil
} }
return a.Srv.Store.Post().AnalyticsPostCountsByDay(&model.AnalyticsPostCountsOptions{ return a.Srv().Store.Post().AnalyticsPostCountsByDay(&model.AnalyticsPostCountsOptions{
TeamId: teamId, TeamId: teamId,
BotsOnly: true, BotsOnly: true,
YesterdayOnly: false, YesterdayOnly: false,
@@ -206,7 +206,7 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
rows := model.AnalyticsRows{&model.AnalyticsRow{Name: "", Value: -1}} rows := model.AnalyticsRows{&model.AnalyticsRow{Name: "", Value: -1}}
return rows, nil return rows, nil
} }
return a.Srv.Store.Post().AnalyticsPostCountsByDay(&model.AnalyticsPostCountsOptions{ return a.Srv().Store.Post().AnalyticsPostCountsByDay(&model.AnalyticsPostCountsOptions{
TeamId: teamId, TeamId: teamId,
BotsOnly: false, BotsOnly: false,
YesterdayOnly: false, YesterdayOnly: false,
@@ -217,7 +217,7 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
return rows, nil return rows, nil
} }
return a.Srv.Store.Post().AnalyticsUserCountsWithPostsByDay(teamId) return a.Srv().Store.Post().AnalyticsUserCountsWithPostsByDay(teamId)
} else if name == "extra_counts" { } else if name == "extra_counts" {
var rows model.AnalyticsRows = make([]*model.AnalyticsRow, 6) var rows model.AnalyticsRows = make([]*model.AnalyticsRow, 6)
rows[0] = &model.AnalyticsRow{Name: "file_post_count", Value: 0} rows[0] = &model.AnalyticsRow{Name: "file_post_count", Value: 0}
@@ -229,28 +229,28 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
iHookChan := make(chan store.StoreResult, 1) iHookChan := make(chan store.StoreResult, 1)
go func() { go func() {
c, err := a.Srv.Store.Webhook().AnalyticsIncomingCount(teamId) c, err := a.Srv().Store.Webhook().AnalyticsIncomingCount(teamId)
iHookChan <- store.StoreResult{Data: c, Err: err} iHookChan <- store.StoreResult{Data: c, Err: err}
close(iHookChan) close(iHookChan)
}() }()
oHookChan := make(chan store.StoreResult, 1) oHookChan := make(chan store.StoreResult, 1)
go func() { go func() {
c, err := a.Srv.Store.Webhook().AnalyticsOutgoingCount(teamId) c, err := a.Srv().Store.Webhook().AnalyticsOutgoingCount(teamId)
oHookChan <- store.StoreResult{Data: c, Err: err} oHookChan <- store.StoreResult{Data: c, Err: err}
close(oHookChan) close(oHookChan)
}() }()
commandChan := make(chan store.StoreResult, 1) commandChan := make(chan store.StoreResult, 1)
go func() { go func() {
c, err := a.Srv.Store.Command().AnalyticsCommandCount(teamId) c, err := a.Srv().Store.Command().AnalyticsCommandCount(teamId)
commandChan <- store.StoreResult{Data: c, Err: err} commandChan <- store.StoreResult{Data: c, Err: err}
close(commandChan) close(commandChan)
}() }()
sessionChan := make(chan store.StoreResult, 1) sessionChan := make(chan store.StoreResult, 1)
go func() { go func() {
count, err := a.Srv.Store.Session().AnalyticsSessionCount() count, err := a.Srv().Store.Session().AnalyticsSessionCount()
sessionChan <- store.StoreResult{Data: count, Err: err} sessionChan <- store.StoreResult{Data: count, Err: err}
close(sessionChan) close(sessionChan)
}() }()
@@ -261,14 +261,14 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
if !skipIntensiveQueries { if !skipIntensiveQueries {
fileChan = make(chan store.StoreResult, 1) fileChan = make(chan store.StoreResult, 1)
go func() { go func() {
count, err := a.Srv.Store.Post().AnalyticsPostCount(teamId, true, false) count, err := a.Srv().Store.Post().AnalyticsPostCount(teamId, true, false)
fileChan <- store.StoreResult{Data: count, Err: err} fileChan <- store.StoreResult{Data: count, Err: err}
close(fileChan) close(fileChan)
}() }()
hashtagChan = make(chan store.StoreResult, 1) hashtagChan = make(chan store.StoreResult, 1)
go func() { go func() {
count, err := a.Srv.Store.Post().AnalyticsPostCount(teamId, false, true) count, err := a.Srv().Store.Post().AnalyticsPostCount(teamId, false, true)
hashtagChan <- store.StoreResult{Data: count, Err: err} hashtagChan <- store.StoreResult{Data: count, Err: err}
close(hashtagChan) close(hashtagChan)
}() }()
@@ -325,7 +325,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, err return nil, err
} }
@@ -340,7 +340,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, err return nil, err
} }
@@ -349,7 +349,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, err return nil, err
} }

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

@@ -4,6 +4,7 @@
package app package app
import ( import (
"context"
"html/template" "html/template"
"net/http" "net/http"
"strconv" "strconv"
@@ -20,33 +21,35 @@ import (
) )
type App struct { type App struct {
Srv *Server srv *Server
Log *mlog.Logger log *mlog.Logger
NotificationsLog *mlog.Logger notificationsLog *mlog.Logger
T goi18n.TranslateFunc t goi18n.TranslateFunc
Session model.Session session model.Session
RequestId string requestId string
IpAddress string ipAddress string
Path string path string
UserAgent string userAgent string
AcceptLanguage string acceptLanguage string
AccountMigration einterfaces.AccountMigrationInterface accountMigration einterfaces.AccountMigrationInterface
Cluster einterfaces.ClusterInterface cluster einterfaces.ClusterInterface
Compliance einterfaces.ComplianceInterface compliance einterfaces.ComplianceInterface
DataRetention einterfaces.DataRetentionInterface dataRetention einterfaces.DataRetentionInterface
Elasticsearch einterfaces.ElasticsearchInterface elasticsearch einterfaces.ElasticsearchInterface
Ldap einterfaces.LdapInterface ldap einterfaces.LdapInterface
MessageExport einterfaces.MessageExportInterface messageExport einterfaces.MessageExportInterface
Metrics einterfaces.MetricsInterface metrics einterfaces.MetricsInterface
Notification einterfaces.NotificationInterface notification einterfaces.NotificationInterface
Saml einterfaces.SamlInterface saml einterfaces.SamlInterface
HTTPService httpservice.HTTPService httpService httpservice.HTTPService
ImageProxy *imageproxy.ImageProxy imageProxy *imageproxy.ImageProxy
Timezones *timezones.Timezones timezones *timezones.Timezones
context context.Context
} }
func New(options ...AppOption) *App { func New(options ...AppOption) *App {
@@ -63,8 +66,8 @@ func New(options ...AppOption) *App {
// This is to avoid having to change all the code in cmd/mattermost/commands/* for now // This is to avoid having to change all the code in cmd/mattermost/commands/* for now
// shutdown should be called directly on the server // shutdown should be called directly on the server
func (a *App) Shutdown() { func (a *App) Shutdown() {
a.Srv.Shutdown() a.Srv().Shutdown()
a.Srv = nil a.srv = nil
} }
func (a *App) configOrLicenseListener() { func (a *App) configOrLicenseListener() {
@@ -99,18 +102,18 @@ func (s *Server) initJobs() {
} }
func (a *App) DiagnosticId() string { func (a *App) DiagnosticId() string {
return a.Srv.diagnosticId return a.Srv().diagnosticId
} }
func (a *App) SetDiagnosticId(id string) { func (a *App) SetDiagnosticId(id string) {
a.Srv.diagnosticId = id a.Srv().diagnosticId = id
} }
func (a *App) EnsureDiagnosticId() { func (a *App) EnsureDiagnosticId() {
if a.Srv.diagnosticId != "" { if a.Srv().diagnosticId != "" {
return return
} }
props, err := a.Srv.Store.System().Get() props, err := a.Srv().Store.System().Get()
if err != nil { if err != nil {
return return
} }
@@ -119,15 +122,15 @@ func (a *App) EnsureDiagnosticId() {
if len(id) == 0 { if len(id) == 0 {
id = model.NewId() id = model.NewId()
systemId := &model.System{Name: model.SYSTEM_DIAGNOSTIC_ID, Value: id} systemId := &model.System{Name: model.SYSTEM_DIAGNOSTIC_ID, Value: id}
a.Srv.Store.System().Save(systemId) a.Srv().Store.System().Save(systemId)
} }
a.Srv.diagnosticId = id a.Srv().diagnosticId = id
} }
func (a *App) HTMLTemplates() *template.Template { func (a *App) HTMLTemplates() *template.Template {
if a.Srv.htmlTemplateWatcher != nil { if a.Srv().htmlTemplateWatcher != nil {
return a.Srv.htmlTemplateWatcher.Templates() return a.Srv().htmlTemplateWatcher.Templates()
} }
return nil return nil
@@ -146,7 +149,7 @@ func (a *App) Handle404(w http.ResponseWriter, r *http.Request) {
} }
func (a *App) getSystemInstallDate() (int64, *model.AppError) { func (a *App) getSystemInstallDate() (int64, *model.AppError) {
systemData, appErr := a.Srv.Store.System().GetByName(model.SYSTEM_INSTALLATION_DATE_KEY) systemData, appErr := a.Srv().Store.System().GetByName(model.SYSTEM_INSTALLATION_DATE_KEY)
if appErr != nil { if appErr != nil {
return 0, appErr return 0, appErr
} }
@@ -156,3 +159,111 @@ func (a *App) getSystemInstallDate() (int64, *model.AppError) {
} }
return value, nil return value, nil
} }
func (a *App) Srv() *Server {
return a.srv
}
func (a *App) Log() *mlog.Logger {
return a.log
}
func (a *App) NotificationsLog() *mlog.Logger {
return a.notificationsLog
}
func (a *App) T(translationID string, args ...interface{}) string {
return a.t(translationID, args...)
}
func (a *App) Session() *model.Session {
return &a.session
}
func (a *App) RequestId() string {
return a.requestId
}
func (a *App) IpAddress() string {
return a.ipAddress
}
func (a *App) Path() string {
return a.path
}
func (a *App) UserAgent() string {
return a.userAgent
}
func (a *App) AcceptLanguage() string {
return a.acceptLanguage
}
func (a *App) AccountMigration() einterfaces.AccountMigrationInterface {
return a.accountMigration
}
func (a *App) Cluster() einterfaces.ClusterInterface {
return a.cluster
}
func (a *App) Compliance() einterfaces.ComplianceInterface {
return a.compliance
}
func (a *App) DataRetention() einterfaces.DataRetentionInterface {
return a.dataRetention
}
func (a *App) Elasticsearch() einterfaces.ElasticsearchInterface {
return a.elasticsearch
}
func (a *App) Ldap() einterfaces.LdapInterface {
return a.ldap
}
func (a *App) MessageExport() einterfaces.MessageExportInterface {
return a.messageExport
}
func (a *App) Metrics() einterfaces.MetricsInterface {
return a.metrics
}
func (a *App) Notification() einterfaces.NotificationInterface {
return a.notification
}
func (a *App) Saml() einterfaces.SamlInterface {
return a.saml
}
func (a *App) HTTPService() httpservice.HTTPService {
return a.httpService
}
func (a *App) ImageProxy() *imageproxy.ImageProxy {
return a.imageProxy
}
func (a *App) Timezones() *timezones.Timezones {
return a.timezones
}
func (a *App) Context() context.Context {
return a.context
}
func (a *App) SetSession(s *model.Session) {
a.session = *s
}
func (a *App) SetT(t goi18n.TranslateFunc) {
a.t = t
}
func (a *App) SetRequestId(s string) {
a.requestId = s
}
func (a *App) SetIpAddress(s string) {
a.ipAddress = s
}
func (a *App) SetUserAgent(s string) {
a.userAgent = s
}
func (a *App) SetAcceptLanguage(s string) {
a.acceptLanguage = s
}
func (a *App) SetPath(s string) {
a.path = s
}
func (a *App) SetContext(c context.Context) {
a.context = c
}
func (a *App) SetServer(srv *Server) {
a.srv = srv
}
func (a *App) GetT() goi18n.TranslateFunc {
return a.t
}
func (a *App) SetLog(l *mlog.Logger) {
a.log = l
}

834
app/app_iface.go Обычный файл
Просмотреть файл

@@ -0,0 +1,834 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
// Code generated by "make store-layers"
// DO NOT EDIT
package app
import (
"archive/zip"
"bytes"
"context"
"crypto/ecdsa"
"html/template"
"io"
"mime/multipart"
"net/http"
"net/url"
"time"
"github.com/dyatlov/go-opengraph/opengraph"
"github.com/gorilla/websocket"
"github.com/mattermost/go-i18n/i18n"
goi18n "github.com/mattermost/go-i18n/i18n"
"github.com/mattermost/mattermost-server/v5/einterfaces"
"github.com/mattermost/mattermost-server/v5/mlog"
"github.com/mattermost/mattermost-server/v5/model"
"github.com/mattermost/mattermost-server/v5/plugin"
"github.com/mattermost/mattermost-server/v5/services/filesstore"
"github.com/mattermost/mattermost-server/v5/services/httpservice"
"github.com/mattermost/mattermost-server/v5/services/imageproxy"
"github.com/mattermost/mattermost-server/v5/services/timezones"
"github.com/mattermost/mattermost-server/v5/store"
"github.com/mattermost/mattermost-server/v5/utils"
)
// AppIface is extracted from App struct and contains all it's exported methods. It's provided to allow partial interface passing and app layers creation.
type AppIface interface {
AcceptLanguage() string
AccountMigration() einterfaces.AccountMigrationInterface
ActivateMfa(userId, token string) *model.AppError
AddChannelMember(userId string, channel *model.Channel, userRequestorId string, postRootId string) (*model.ChannelMember, *model.AppError)
AddConfigListener(listener func(*model.Config, *model.Config)) string
AddCursorIdsForPostList(originalList *model.PostList, afterPost, beforePost string, since int64, page, perPage int)
AddDirectChannels(teamId string, user *model.User) *model.AppError
AddLicenseListener(listener func()) string
AddNotificationEmailToBatch(user *model.User, post *model.Post, team *model.Team) *model.AppError
AddPublicKey(name string, key io.Reader) *model.AppError
AddSamlIdpCertificate(fileData *multipart.FileHeader) *model.AppError
AddSamlPrivateCertificate(fileData *multipart.FileHeader) *model.AppError
AddSamlPublicCertificate(fileData *multipart.FileHeader) *model.AppError
AddSessionToCache(session *model.Session)
AddStatusCache(status *model.Status)
AddStatusCacheSkipClusterSend(status *model.Status)
AddTeamMember(teamId, userId string) (*model.TeamMember, *model.AppError)
AddTeamMemberByInviteId(inviteId, userId string) (*model.TeamMember, *model.AppError)
AddTeamMemberByToken(userId, tokenId string) (*model.TeamMember, *model.AppError)
AddTeamMembers(teamId string, userIds []string, userRequestorId string, graceful bool) ([]*model.TeamMemberWithError, *model.AppError)
AddUserToChannel(user *model.User, channel *model.Channel) (*model.ChannelMember, *model.AppError)
AddUserToTeam(teamId string, userId string, userRequestorId string) (*model.Team, *model.AppError)
AddUserToTeamByInviteId(inviteId string, userId string) (*model.Team, *model.AppError)
AddUserToTeamByTeamId(teamId string, user *model.User) *model.AppError
AddUserToTeamByToken(userId string, tokenId string) (*model.Team, *model.AppError)
AllowOAuthAppAccessToUser(userId string, authRequest *model.AuthorizeRequest) (string, *model.AppError)
AsymmetricSigningKey() *ecdsa.PrivateKey
AttachDeviceId(sessionId string, deviceId string, expiresAt int64) *model.AppError
AttachSessionCookies(w http.ResponseWriter, r *http.Request)
AuthenticateUserForLogin(id, loginId, password, mfaToken string, ldapOnly bool) (*model.User, *model.AppError)
AuthorizeOAuthUser(w http.ResponseWriter, r *http.Request, service, code, state, redirectUri string) (io.ReadCloser, string, map[string]string, *model.AppError)
AutocompleteChannels(teamId string, term string) (*model.ChannelList, *model.AppError)
AutocompleteChannelsForSearch(teamId string, userId string, term string) (*model.ChannelList, *model.AppError)
AutocompleteUsersInChannel(teamId string, channelId string, term string, options *model.UserSearchOptions) (*model.UserAutocompleteInChannel, *model.AppError)
AutocompleteUsersInTeam(teamId string, term string, options *model.UserSearchOptions) (*model.UserAutocompleteInTeam, *model.AppError)
BroadcastStatus(status *model.Status)
BuildPostReactions(postId string) (*[]ReactionImportData, *model.AppError)
BuildPushNotificationMessage(contentsConfig string, post *model.Post, user *model.User, channel *model.Channel, channelName string, senderName string, explicitMention bool, channelWideMention bool, replyToThreadType string) (*model.PushNotification, *model.AppError)
BuildSamlMetadataObject(idpMetadata []byte) (*model.SamlMetadataResponse, *model.AppError)
BulkExport(writer io.Writer, file string, pathToEmojiDir string, dirNameToExportEmoji string) *model.AppError
BulkImport(fileReader io.Reader, dryRun bool, workers int) (*model.AppError, int)
CancelJob(jobId string) *model.AppError
ChannelMembersMinusGroupMembers(channelID string, groupIDs []string, page, perPage int) ([]*model.UserWithGroups, int64, *model.AppError)
ChannelMembersToAdd(since int64, channelID *string) ([]*model.UserChannelIDPair, *model.AppError)
ChannelMembersToRemove(teamID *string) ([]*model.ChannelMember, *model.AppError)
CheckForClientSideCert(r *http.Request) (string, string, string)
CheckPasswordAndAllCriteria(user *model.User, password string, mfaToken string) *model.AppError
CheckRolesExist(roleNames []string) *model.AppError
CheckUserAllAuthenticationCriteria(user *model.User, mfaToken string) *model.AppError
CheckUserMfa(user *model.User, token string) *model.AppError
CheckUserPostflightAuthenticationCriteria(user *model.User) *model.AppError
CheckUserPreflightAuthenticationCriteria(user *model.User, mfaToken string) *model.AppError
ClearChannelMembersCache(channelID string)
ClearPushNotification(currentSessionId, userId, channelId string)
ClearPushNotificationSync(currentSessionId, userId, channelId string) *model.AppError
ClearSessionCacheForAllUsers()
ClearSessionCacheForAllUsersSkipClusterSend()
ClearSessionCacheForUser(userId string)
ClearSessionCacheForUserSkipClusterSend(userId string)
ClearTeamMembersCache(teamID string)
ClientConfig() map[string]string
ClientConfigHash() string
ClientConfigWithComputed() map[string]string
ClientLicense() map[string]string
Cluster() einterfaces.ClusterInterface
CompareAndDeletePluginKey(pluginId string, key string, oldValue []byte) (bool, *model.AppError)
CompareAndSetPluginKey(pluginId string, key string, oldValue, newValue []byte) (bool, *model.AppError)
CompleteOAuth(service string, body io.ReadCloser, teamId string, props map[string]string) (*model.User, *model.AppError)
CompleteSwitchWithOAuth(service string, userData io.Reader, email string) (*model.User, *model.AppError)
Compliance() einterfaces.ComplianceInterface
Config() *model.Config
Context() context.Context
ConvertUserToBot(user *model.User) (*model.Bot, *model.AppError)
CopyFileInfos(userId string, fileIds []string) ([]string, *model.AppError)
CreateBasicUser(client *model.Client4) *model.AppError
CreateBot(bot *model.Bot) (*model.Bot, *model.AppError)
CreateChannel(channel *model.Channel, addMember bool) (*model.Channel, *model.AppError)
CreateChannelWithUser(channel *model.Channel, userId string) (*model.Channel, *model.AppError)
CreateCommand(cmd *model.Command) (*model.Command, *model.AppError)
CreateCommandPost(post *model.Post, teamId string, response *model.CommandResponse, skipSlackParsing bool) (*model.Post, *model.AppError)
CreateCommandWebhook(commandId string, args *model.CommandArgs) (*model.CommandWebhook, *model.AppError)
CreateDefaultChannels(teamID string) ([]*model.Channel, *model.AppError)
CreateDefaultMemberships(since int64) error
CreateEmoji(sessionUserId string, emoji *model.Emoji, multiPartImageData *multipart.Form) (*model.Emoji, *model.AppError)
CreateGroup(group *model.Group) (*model.Group, *model.AppError)
CreateGroupChannel(userIds []string, creatorId string) (*model.Channel, *model.AppError)
CreateGuest(user *model.User) (*model.User, *model.AppError)
CreateIncomingWebhookForChannel(creatorId string, channel *model.Channel, hook *model.IncomingWebhook) (*model.IncomingWebhook, *model.AppError)
CreateJob(job *model.Job) (*model.Job, *model.AppError)
CreateOAuthApp(app *model.OAuthApp) (*model.OAuthApp, *model.AppError)
CreateOAuthStateToken(extra string) (*model.Token, *model.AppError)
CreateOAuthUser(service string, userData io.Reader, teamId string) (*model.User, *model.AppError)
CreateOutgoingWebhook(hook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError)
CreatePasswordRecoveryToken(userId, email string) (*model.Token, *model.AppError)
CreatePost(post *model.Post, channel *model.Channel, triggerWebhooks bool) (*model.Post, *model.AppError)
CreatePostAsUser(post *model.Post, currentSessionId string) (*model.Post, *model.AppError)
CreatePostMissingChannel(post *model.Post, triggerWebhooks bool) (*model.Post, *model.AppError)
CreatePushNotificationsHub()
CreateRole(role *model.Role) (*model.Role, *model.AppError)
CreateScheme(scheme *model.Scheme) (*model.Scheme, *model.AppError)
CreateSession(session *model.Session) (*model.Session, *model.AppError)
CreateTeam(team *model.Team) (*model.Team, *model.AppError)
CreateTeamWithUser(team *model.Team, userId string) (*model.Team, *model.AppError)
CreateTermsOfService(text, userId string) (*model.TermsOfService, *model.AppError)
CreateUser(user *model.User) (*model.User, *model.AppError)
CreateUserAccessToken(token *model.UserAccessToken) (*model.UserAccessToken, *model.AppError)
CreateUserAsAdmin(user *model.User) (*model.User, *model.AppError)
CreateUserFromSignup(user *model.User) (*model.User, *model.AppError)
CreateUserWithInviteId(user *model.User, inviteId string) (*model.User, *model.AppError)
CreateUserWithToken(user *model.User, token *model.Token) (*model.User, *model.AppError)
CreateVerifyEmailToken(userId string, newEmail string) (*model.Token, *model.AppError)
CreateWebhookPost(userId string, channel *model.Channel, text, overrideUsername, overrideIconUrl, overrideIconEmoji string, props model.StringInterface, postType string, postRootId string) (*model.Post, *model.AppError)
DataRetention() einterfaces.DataRetentionInterface
DeactivateGuests() *model.AppError
DeactivateMfa(userId string) *model.AppError
DeauthorizeOAuthAppForUser(userId, appId string) *model.AppError
DefaultChannelNames() []string
DeleteAllExpiredPluginKeys() *model.AppError
DeleteAllKeysForPlugin(pluginId string) *model.AppError
DeleteBotIconImage(botUserId string) *model.AppError
DeleteBrandImage() *model.AppError
DeleteChannel(channel *model.Channel, userId string) *model.AppError
DeleteCommand(commandId string) *model.AppError
DeleteEmoji(emoji *model.Emoji) *model.AppError
DeleteEphemeralPost(userId, postId string)
DeleteFlaggedPosts(postId string)
DeleteGroup(groupID string) (*model.Group, *model.AppError)
DeleteGroupConstrainedMemberships() error
DeleteGroupMember(groupID string, userID string) (*model.GroupMember, *model.AppError)
DeleteGroupSyncable(groupID string, syncableID string, syncableType model.GroupSyncableType) (*model.GroupSyncable, *model.AppError)
DeleteIncomingWebhook(hookId string) *model.AppError
DeleteOAuthApp(appId string) *model.AppError
DeleteOutgoingWebhook(hookId string) *model.AppError
DeletePluginKey(pluginId string, key string) *model.AppError
DeletePost(postId, deleteByID string) (*model.Post, *model.AppError)
DeletePostFiles(post *model.Post)
DeletePreferences(userId string, preferences model.Preferences) *model.AppError
DeletePublicKey(name string) *model.AppError
DeleteReactionForPost(reaction *model.Reaction) *model.AppError
DeleteScheme(schemeId string) (*model.Scheme, *model.AppError)
DeleteToken(token *model.Token) *model.AppError
DemoteUserToGuest(user *model.User) *model.AppError
DiagnosticId() string
DisableAutoResponder(userId string, asAdmin bool) *model.AppError
DisablePlugin(id string) *model.AppError
DisableUserAccessToken(token *model.UserAccessToken) *model.AppError
DoActionRequest(rawURL string, body []byte) (*http.Response, *model.AppError)
DoAdvancedPermissionsMigration()
DoAppMigrations()
DoEmojisPermissionsMigration()
DoGuestRolesCreationMigration()
DoLocalRequest(rawURL string, body []byte) (*http.Response, *model.AppError)
DoLogin(w http.ResponseWriter, r *http.Request, user *model.User, deviceId string) *model.AppError
DoPermissionsMigrations() *model.AppError
DoPostAction(postId, actionId, userId, selectedOption string) (string, *model.AppError)
DoPostActionWithCookie(postId, actionId, userId, selectedOption string, cookie *model.PostActionCookie) (string, *model.AppError)
DoUploadFile(now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, *model.AppError)
DoUploadFileExpectModification(now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError)
DoubleCheckPassword(user *model.User, password string) *model.AppError
DownloadFromURL(downloadURL string) ([]byte, error)
Elasticsearch() einterfaces.ElasticsearchInterface
EnablePlugin(id string) *model.AppError
EnableUserAccessToken(token *model.UserAccessToken) *model.AppError
EnsureDiagnosticId()
EnvironmentConfig() map[string]interface{}
ExecuteCommand(args *model.CommandArgs) (*model.CommandResponse, *model.AppError)
ExportAllChannels(writer io.Writer) *model.AppError
ExportAllDirectChannels(writer io.Writer) *model.AppError
ExportAllDirectPosts(writer io.Writer) *model.AppError
ExportAllPosts(writer io.Writer) *model.AppError
ExportAllTeams(writer io.Writer) *model.AppError
ExportAllUsers(writer io.Writer) *model.AppError
ExportCustomEmoji(writer io.Writer, file string, pathToEmojiDir string, dirNameToExportEmoji string) *model.AppError
ExportPermissions(w io.Writer) error
ExportVersion(writer io.Writer) *model.AppError
ExportWriteLine(writer io.Writer, line *LineImportData) *model.AppError
FetchSamlMetadataFromIdp(url string) ([]byte, *model.AppError)
FileBackend() (filesstore.FileBackend, *model.AppError)
FileExists(path string) (bool, *model.AppError)
FileReader(path string) (filesstore.ReadCloseSeeker, *model.AppError)
FillInChannelProps(channel *model.Channel) *model.AppError
FillInChannelsProps(channelList *model.ChannelList) *model.AppError
FillInPostProps(post *model.Post, channel *model.Channel) *model.AppError
FilterNonGroupChannelMembers(userIds []string, channel *model.Channel) ([]string, error)
FilterNonGroupTeamMembers(userIds []string, team *model.Team) ([]string, error)
FindTeamByName(name string) bool
GenerateMfaSecret(userId string) (*model.MfaSecret, *model.AppError)
GeneratePublicLink(siteURL string, info *model.FileInfo) string
GetActivePluginManifests() ([]*model.Manifest, *model.AppError)
GetAllChannels(page, perPage int, opts model.ChannelSearchOpts) (*model.ChannelListWithTeamData, *model.AppError)
GetAllChannelsCount(opts model.ChannelSearchOpts) (int64, *model.AppError)
GetAllLdapGroupsPage(page int, perPage int, opts model.LdapGroupSearchOpts) ([]*model.Group, int, *model.AppError)
GetAllPrivateTeams() ([]*model.Team, *model.AppError)
GetAllPrivateTeamsPage(offset int, limit int) ([]*model.Team, *model.AppError)
GetAllPrivateTeamsPageWithCount(offset int, limit int) (*model.TeamsWithCount, *model.AppError)
GetAllPublicTeams() ([]*model.Team, *model.AppError)
GetAllPublicTeamsPage(offset int, limit int) ([]*model.Team, *model.AppError)
GetAllPublicTeamsPageWithCount(offset int, limit int) (*model.TeamsWithCount, *model.AppError)
GetAllRoles() ([]*model.Role, *model.AppError)
GetAllStatuses() map[string]*model.Status
GetAllTeams() ([]*model.Team, *model.AppError)
GetAllTeamsPage(offset int, limit int) ([]*model.Team, *model.AppError)
GetAllTeamsPageWithCount(offset int, limit int) (*model.TeamsWithCount, *model.AppError)
GetAnalytics(name string, teamId string) (model.AnalyticsRows, *model.AppError)
GetAudits(userId string, limit int) (model.Audits, *model.AppError)
GetAuditsPage(userId string, page int, perPage int) (model.Audits, *model.AppError)
GetAuthorizationCode(w http.ResponseWriter, r *http.Request, service string, props map[string]string, loginHint string) (string, *model.AppError)
GetAuthorizedAppsForUser(userId string, page, perPage int) ([]*model.OAuthApp, *model.AppError)
GetBot(botUserId string, includeDeleted bool) (*model.Bot, *model.AppError)
GetBotIconImage(botUserId string) ([]byte, *model.AppError)
GetBots(options *model.BotGetOptions) (model.BotList, *model.AppError)
GetBrandImage() ([]byte, *model.AppError)
GetBulkReactionsForPosts(postIds []string) (map[string][]*model.Reaction, *model.AppError)
GetChannel(channelId string) (*model.Channel, *model.AppError)
GetChannelByName(channelName, teamId string, includeDeleted bool) (*model.Channel, *model.AppError)
GetChannelByNameForTeamName(channelName, teamName string, includeDeleted bool) (*model.Channel, *model.AppError)
GetChannelCounts(teamId string, userId string) (*model.ChannelCounts, *model.AppError)
GetChannelGroupUsers(channelID string) ([]*model.User, *model.AppError)
GetChannelGuestCount(channelId string) (int64, *model.AppError)
GetChannelMember(channelId string, userId string) (*model.ChannelMember, *model.AppError)
GetChannelMemberCount(channelId string) (int64, *model.AppError)
GetChannelMembersByIds(channelId string, userIds []string) (*model.ChannelMembers, *model.AppError)
GetChannelMembersForUser(teamId string, userId string) (*model.ChannelMembers, *model.AppError)
GetChannelMembersForUserWithPagination(teamId, userId string, page, perPage int) ([]*model.ChannelMember, *model.AppError)
GetChannelMembersPage(channelId string, page, perPage int) (*model.ChannelMembers, *model.AppError)
GetChannelMembersTimezones(channelId string) ([]string, *model.AppError)
GetChannelPinnedPostCount(channelId string) (int64, *model.AppError)
GetChannelUnread(channelId, userId string) (*model.ChannelUnread, *model.AppError)
GetChannelsByNames(channelNames []string, teamId string) ([]*model.Channel, *model.AppError)
GetChannelsForScheme(scheme *model.Scheme, offset int, limit int) (model.ChannelList, *model.AppError)
GetChannelsForSchemePage(scheme *model.Scheme, page int, perPage int) (model.ChannelList, *model.AppError)
GetChannelsForUser(teamId string, userId string, includeDeleted bool) (*model.ChannelList, *model.AppError)
GetChannelsUserNotIn(teamId string, userId string, offset int, limit int) (*model.ChannelList, *model.AppError)
GetClusterId() string
GetClusterPluginStatuses() (model.PluginStatuses, *model.AppError)
GetClusterStatus() []*model.ClusterInfo
GetCommand(commandId string) (*model.Command, *model.AppError)
GetComplianceFile(job *model.Compliance) ([]byte, *model.AppError)
GetComplianceReport(reportId string) (*model.Compliance, *model.AppError)
GetComplianceReports(page, perPage int) (model.Compliances, *model.AppError)
GetConfigFile(name string) ([]byte, error)
GetCookieDomain() string
GetDataRetentionPolicy() (*model.DataRetentionPolicy, *model.AppError)
GetDefaultProfileImage(user *model.User) ([]byte, *model.AppError)
GetDeletedChannels(teamId string, offset int, limit int, userId string) (*model.ChannelList, *model.AppError)
GetEmoji(emojiId string) (*model.Emoji, *model.AppError)
GetEmojiByName(emojiName string) (*model.Emoji, *model.AppError)
GetEmojiImage(emojiId string) ([]byte, string, *model.AppError)
GetEmojiList(page, perPage int, sort string) ([]*model.Emoji, *model.AppError)
GetEmojiStaticUrl(emojiName string) (string, *model.AppError)
GetEnvironmentConfig() map[string]interface{}
GetFile(fileId string) ([]byte, *model.AppError)
GetFileInfo(fileId string) (*model.FileInfo, *model.AppError)
GetFileInfosForPost(postId string, fromMaster bool) ([]*model.FileInfo, *model.AppError)
GetFileInfosForPostWithMigration(postId string) ([]*model.FileInfo, *model.AppError)
GetFlaggedPosts(userId string, offset int, limit int) (*model.PostList, *model.AppError)
GetFlaggedPostsForChannel(userId, channelId string, offset int, limit int) (*model.PostList, *model.AppError)
GetFlaggedPostsForTeam(userId, teamId string, offset int, limit int) (*model.PostList, *model.AppError)
GetGroup(id string) (*model.Group, *model.AppError)
GetGroupByName(name string) (*model.Group, *model.AppError)
GetGroupByRemoteID(remoteID string, groupSource model.GroupSource) (*model.Group, *model.AppError)
GetGroupChannel(userIds []string) (*model.Channel, *model.AppError)
GetGroupMemberUsers(groupID string) ([]*model.User, *model.AppError)
GetGroupMemberUsersPage(groupID string, page int, perPage int) ([]*model.User, int, *model.AppError)
GetGroupSyncable(groupID string, syncableID string, syncableType model.GroupSyncableType) (*model.GroupSyncable, *model.AppError)
GetGroupSyncables(groupID string, syncableType model.GroupSyncableType) ([]*model.GroupSyncable, *model.AppError)
GetGroups(page, perPage int, opts model.GroupSearchOpts) ([]*model.Group, *model.AppError)
GetGroupsByChannel(channelId string, opts model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, int, *model.AppError)
GetGroupsByIDs(groupIDs []string) ([]*model.Group, *model.AppError)
GetGroupsBySource(groupSource model.GroupSource) ([]*model.Group, *model.AppError)
GetGroupsByTeam(teamId string, opts model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, int, *model.AppError)
GetGroupsByUserId(userId string) ([]*model.Group, *model.AppError)
GetHubForUserId(userId string) *Hub
GetIncomingWebhook(hookId string) (*model.IncomingWebhook, *model.AppError)
GetIncomingWebhooksForTeamPage(teamId string, page, perPage int) ([]*model.IncomingWebhook, *model.AppError)
GetIncomingWebhooksForTeamPageByUser(teamId string, userId string, page, perPage int) ([]*model.IncomingWebhook, *model.AppError)
GetIncomingWebhooksPage(page, perPage int) ([]*model.IncomingWebhook, *model.AppError)
GetIncomingWebhooksPageByUser(userId string, page, perPage int) ([]*model.IncomingWebhook, *model.AppError)
GetJob(id string) (*model.Job, *model.AppError)
GetJobs(offset int, limit int) ([]*model.Job, *model.AppError)
GetJobsByType(jobType string, offset int, limit int) ([]*model.Job, *model.AppError)
GetJobsByTypePage(jobType string, page int, perPage int) ([]*model.Job, *model.AppError)
GetJobsPage(page int, perPage int) ([]*model.Job, *model.AppError)
GetLatestTermsOfService() (*model.TermsOfService, *model.AppError)
GetLdapGroup(ldapGroupID string) (*model.Group, *model.AppError)
GetLogs(page, perPage int) ([]string, *model.AppError)
GetLogsSkipSend(page, perPage int) ([]string, *model.AppError)
GetMarketplacePlugins(filter *model.MarketplacePluginFilter) ([]*model.MarketplacePlugin, *model.AppError)
GetMessageForNotification(post *model.Post, translateFunc i18n.TranslateFunc) string
GetMultipleEmojiByName(names []string) ([]*model.Emoji, *model.AppError)
GetNewUsersForTeamPage(teamId string, page, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)
GetNextPostIdFromPostList(postList *model.PostList) string
GetNotificationNameFormat(user *model.User) string
GetNumberOfChannelsOnTeam(teamId string) (int, *model.AppError)
GetOAuthAccessTokenForCodeFlow(clientId, grantType, redirectUri, code, secret, refreshToken string) (*model.AccessResponse, *model.AppError)
GetOAuthAccessTokenForImplicitFlow(userId string, authRequest *model.AuthorizeRequest) (*model.Session, *model.AppError)
GetOAuthApp(appId string) (*model.OAuthApp, *model.AppError)
GetOAuthApps(page, perPage int) ([]*model.OAuthApp, *model.AppError)
GetOAuthAppsByCreator(userId string, page, perPage int) ([]*model.OAuthApp, *model.AppError)
GetOAuthCodeRedirect(userId string, authRequest *model.AuthorizeRequest) (string, *model.AppError)
GetOAuthImplicitRedirect(userId string, authRequest *model.AuthorizeRequest) (string, *model.AppError)
GetOAuthLoginEndpoint(w http.ResponseWriter, r *http.Request, service, teamId, action, redirectTo, loginHint string) (string, *model.AppError)
GetOAuthSignupEndpoint(w http.ResponseWriter, r *http.Request, service, teamId string) (string, *model.AppError)
GetOAuthStateToken(token string) (*model.Token, *model.AppError)
GetOpenGraphMetadata(requestURL string) *opengraph.OpenGraph
GetOrCreateDirectChannel(userId, otherUserId string) (*model.Channel, *model.AppError)
GetOutgoingWebhook(hookId string) (*model.OutgoingWebhook, *model.AppError)
GetOutgoingWebhooksForChannelPageByUser(channelId string, userId string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError)
GetOutgoingWebhooksForTeamPage(teamId string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError)
GetOutgoingWebhooksForTeamPageByUser(teamId string, userId string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError)
GetOutgoingWebhooksPage(page, perPage int) ([]*model.OutgoingWebhook, *model.AppError)
GetOutgoingWebhooksPageByUser(userId string, page, perPage int) ([]*model.OutgoingWebhook, *model.AppError)
GetPasswordRecoveryToken(token string) (*model.Token, *model.AppError)
GetPermalinkPost(postId string, userId string) (*model.PostList, *model.AppError)
GetPinnedPosts(channelId string) (*model.PostList, *model.AppError)
GetPluginKey(pluginId string, key string) ([]byte, *model.AppError)
GetPluginPublicKeyFiles() ([]string, *model.AppError)
GetPluginStatus(id string) (*model.PluginStatus, *model.AppError)
GetPluginStatuses() (model.PluginStatuses, *model.AppError)
GetPlugins() (*model.PluginsResponse, *model.AppError)
GetPluginsEnvironment() *plugin.Environment
GetPostAfterTime(channelId string, time int64) (*model.Post, *model.AppError)
GetPostIdAfterTime(channelId string, time int64) (string, *model.AppError)
GetPostIdBeforeTime(channelId string, time int64) (string, *model.AppError)
GetPostThread(postId string, skipFetchThreads bool) (*model.PostList, *model.AppError)
GetPosts(channelId string, offset int, limit int) (*model.PostList, *model.AppError)
GetPostsAfterPost(options model.GetPostsOptions) (*model.PostList, *model.AppError)
GetPostsAroundPost(before bool, options model.GetPostsOptions) (*model.PostList, *model.AppError)
GetPostsBeforePost(options model.GetPostsOptions) (*model.PostList, *model.AppError)
GetPostsEtag(channelId string) string
GetPostsForChannelAroundLastUnread(channelId, userId string, limitBefore, limitAfter int, skipFetchThreads bool) (*model.PostList, *model.AppError)
GetPostsPage(options model.GetPostsOptions) (*model.PostList, *model.AppError)
GetPostsSince(options model.GetPostsSinceOptions) (*model.PostList, *model.AppError)
GetPreferenceByCategoryAndNameForUser(userId string, category string, preferenceName string) (*model.Preference, *model.AppError)
GetPreferenceByCategoryForUser(userId string, category string) (model.Preferences, *model.AppError)
GetPreferencesForUser(userId string) (model.Preferences, *model.AppError)
GetPrevPostIdFromPostList(postList *model.PostList) string
GetProfileImage(user *model.User) ([]byte, bool, *model.AppError)
GetPublicChannelsByIdsForTeam(teamId string, channelIds []string) (*model.ChannelList, *model.AppError)
GetPublicChannelsForTeam(teamId string, offset int, limit int) (*model.ChannelList, *model.AppError)
GetPublicKey(name string) ([]byte, *model.AppError)
GetReactionsForPost(postId string) ([]*model.Reaction, *model.AppError)
GetRecentlyActiveUsersForTeam(teamId string) (map[string]*model.User, *model.AppError)
GetRecentlyActiveUsersForTeamPage(teamId string, page, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)
GetRole(id string) (*model.Role, *model.AppError)
GetRoleByName(name string) (*model.Role, *model.AppError)
GetRolesByNames(names []string) ([]*model.Role, *model.AppError)
GetSamlCertificateStatus() *model.SamlCertificateStatus
GetSamlMetadata() (string, *model.AppError)
GetSamlMetadataFromIdp(idpMetadataUrl string) (*model.SamlMetadataResponse, *model.AppError)
GetSanitizeOptions(asAdmin bool) map[string]bool
GetSanitizedClientLicense() map[string]string
GetSanitizedConfig() *model.Config
GetScheme(id string) (*model.Scheme, *model.AppError)
GetSchemeByName(name string) (*model.Scheme, *model.AppError)
GetSchemeRolesForChannel(channelId string) (string, string, string, *model.AppError)
GetSchemeRolesForTeam(teamId string) (string, string, string, *model.AppError)
GetSchemes(scope string, offset int, limit int) ([]*model.Scheme, *model.AppError)
GetSchemesPage(scope string, page int, perPage int) ([]*model.Scheme, *model.AppError)
GetSession(token string) (*model.Session, *model.AppError)
GetSessionById(sessionId string) (*model.Session, *model.AppError)
GetSessions(userId string) ([]*model.Session, *model.AppError)
GetSinglePost(postId string) (*model.Post, *model.AppError)
GetSiteURL() string
GetStatus(userId string) (*model.Status, *model.AppError)
GetStatusFromCache(userId string) *model.Status
GetStatusesByIds(userIds []string) (map[string]interface{}, *model.AppError)
GetT() goi18n.TranslateFunc
GetTeam(teamId string) (*model.Team, *model.AppError)
GetTeamByInviteId(inviteId string) (*model.Team, *model.AppError)
GetTeamByName(name string) (*model.Team, *model.AppError)
GetTeamGroupUsers(teamID string) ([]*model.User, *model.AppError)
GetTeamIcon(team *model.Team) ([]byte, *model.AppError)
GetTeamIdFromQuery(query url.Values) (string, *model.AppError)
GetTeamMember(teamId, userId string) (*model.TeamMember, *model.AppError)
GetTeamMembers(teamId string, offset int, limit int, restrictions *model.ViewUsersRestrictions) ([]*model.TeamMember, *model.AppError)
GetTeamMembersByIds(teamId string, userIds []string, restrictions *model.ViewUsersRestrictions) ([]*model.TeamMember, *model.AppError)
GetTeamMembersForUser(userId string) ([]*model.TeamMember, *model.AppError)
GetTeamMembersForUserWithPagination(userId string, page, perPage int) ([]*model.TeamMember, *model.AppError)
GetTeamStats(teamId string, restrictions *model.ViewUsersRestrictions) (*model.TeamStats, *model.AppError)
GetTeamUnread(teamId, userId string) (*model.TeamUnread, *model.AppError)
GetTeamsForScheme(scheme *model.Scheme, offset int, limit int) ([]*model.Team, *model.AppError)
GetTeamsForSchemePage(scheme *model.Scheme, page int, perPage int) ([]*model.Team, *model.AppError)
GetTeamsForUser(userId string) ([]*model.Team, *model.AppError)
GetTeamsUnreadForUser(excludeTeamId string, userId string) ([]*model.TeamUnread, *model.AppError)
GetTermsOfService(id string) (*model.TermsOfService, *model.AppError)
GetTotalUsersStats(viewRestrictions *model.ViewUsersRestrictions) (*model.UsersStats, *model.AppError)
GetUser(userId string) (*model.User, *model.AppError)
GetUserAccessToken(tokenId string, sanitize bool) (*model.UserAccessToken, *model.AppError)
GetUserAccessTokens(page, perPage int) ([]*model.UserAccessToken, *model.AppError)
GetUserAccessTokensForUser(userId string, page, perPage int) ([]*model.UserAccessToken, *model.AppError)
GetUserByAuth(authData *string, authService string) (*model.User, *model.AppError)
GetUserByEmail(email string) (*model.User, *model.AppError)
GetUserByUsername(username string) (*model.User, *model.AppError)
GetUserForLogin(id, loginId string) (*model.User, *model.AppError)
GetUserStatusesByIds(userIds []string) ([]*model.Status, *model.AppError)
GetUserTermsOfService(userId string) (*model.UserTermsOfService, *model.AppError)
GetUsers(options *model.UserGetOptions) ([]*model.User, *model.AppError)
GetUsersByGroupChannelIds(channelIds []string, asAdmin bool) (map[string][]*model.User, *model.AppError)
GetUsersByIds(userIds []string, options *store.UserGetByIdsOpts) ([]*model.User, *model.AppError)
GetUsersByUsernames(usernames []string, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)
GetUsersEtag(restrictionsHash string) string
GetUsersInChannel(channelId string, offset int, limit int) ([]*model.User, *model.AppError)
GetUsersInChannelByStatus(channelId string, offset int, limit int) ([]*model.User, *model.AppError)
GetUsersInChannelMap(channelId string, offset int, limit int, asAdmin bool) (map[string]*model.User, *model.AppError)
GetUsersInChannelPage(channelId string, page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError)
GetUsersInChannelPageByStatus(channelId string, page int, perPage int, asAdmin bool) ([]*model.User, *model.AppError)
GetUsersInTeam(options *model.UserGetOptions) ([]*model.User, *model.AppError)
GetUsersInTeamEtag(teamId string, restrictionsHash string) string
GetUsersInTeamPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError)
GetUsersNotInChannel(teamId string, channelId string, groupConstrained bool, offset int, limit int, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)
GetUsersNotInChannelMap(teamId string, channelId string, groupConstrained bool, offset int, limit int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) (map[string]*model.User, *model.AppError)
GetUsersNotInChannelPage(teamId string, channelId string, groupConstrained bool, page int, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)
GetUsersNotInTeam(teamId string, groupConstrained bool, offset int, limit int, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)
GetUsersNotInTeamEtag(teamId string, restrictionsHash string) string
GetUsersNotInTeamPage(teamId string, groupConstrained bool, page int, perPage int, asAdmin bool, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, *model.AppError)
GetUsersPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError)
GetUsersWithoutTeam(options *model.UserGetOptions) ([]*model.User, *model.AppError)
GetUsersWithoutTeamPage(options *model.UserGetOptions, asAdmin bool) ([]*model.User, *model.AppError)
GetVerifyEmailToken(token string) (*model.Token, *model.AppError)
GetViewUsersRestrictions(userId string) (*model.ViewUsersRestrictions, *model.AppError)
GetViewUsersRestrictionsForTeam(userId string, teamId string) ([]string, *model.AppError)
HTMLTemplates() *template.Template
HTTPService() httpservice.HTTPService
Handle404(w http.ResponseWriter, r *http.Request)
HandleCommandResponse(command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.CommandResponse, *model.AppError)
HandleCommandResponsePost(command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.Post, *model.AppError)
HandleCommandWebhook(hookId string, response *model.CommandResponse) *model.AppError
HandleImages(previewPathList []string, thumbnailPathList []string, fileData [][]byte)
HandleIncomingWebhook(hookId string, req *model.IncomingWebhookRequest) *model.AppError
HandleMessageExportConfig(cfg *model.Config, appCfg *model.Config)
HasPermissionTo(askingUserId string, permission *model.Permission) bool
HasPermissionToChannel(askingUserId string, channelId string, permission *model.Permission) bool
HasPermissionToChannelByPost(askingUserId string, postId string, permission *model.Permission) bool
HasPermissionToTeam(askingUserId string, teamId string, permission *model.Permission) bool
HasPermissionToUser(askingUserId string, userId string) bool
HubRegister(webConn *WebConn)
HubStart()
HubStop()
HubUnregister(webConn *WebConn)
ImageProxy() *imageproxy.ImageProxy
ImageProxyAdder() func(string) string
ImageProxyRemover() func(string) string
ImportPermissions(jsonl io.Reader) error
InitPlugins(pluginDir, webappPluginDir string)
InitPostMetadata()
InstallMarketplacePlugin(request *model.InstallMarketplacePluginRequest) (*model.Manifest, *model.AppError)
InstallPlugin(pluginFile io.ReadSeeker, replace bool) (*model.Manifest, *model.AppError)
InstallPluginFromData(data model.PluginEventData)
InstallPluginWithSignature(pluginFile, signature io.ReadSeeker) (*model.Manifest, *model.AppError)
InvalidateAllCaches() *model.AppError
InvalidateAllCachesSkipSend()
InvalidateAllEmailInvites() *model.AppError
InvalidateCacheForChannel(channel *model.Channel)
InvalidateCacheForChannelByNameSkipClusterSend(teamId, name string)
InvalidateCacheForChannelMembers(channelId string)
InvalidateCacheForChannelMembersNotifyProps(channelId string)
InvalidateCacheForChannelMembersNotifyPropsSkipClusterSend(channelId string)
InvalidateCacheForChannelPosts(channelId string)
InvalidateCacheForUser(userId string)
InvalidateCacheForUserSkipClusterSend(userId string)
InvalidateCacheForUserTeams(userId string)
InvalidateCacheForUserTeamsSkipClusterSend(userId string)
InvalidateCacheForWebhook(webhookId string)
InvalidateWebConnSessionCacheForUser(userId string)
InviteGuestsToChannels(teamId string, guestsInvite *model.GuestsInvite, senderId string) *model.AppError
InviteGuestsToChannelsGracefully(teamId string, guestsInvite *model.GuestsInvite, senderId string) ([]*model.EmailInviteWithError, *model.AppError)
InviteNewUsersToTeam(emailList []string, teamId, senderId string) *model.AppError
InviteNewUsersToTeamGracefully(emailList []string, teamId, senderId string) ([]*model.EmailInviteWithError, *model.AppError)
IpAddress() string
IsESAutocompletionEnabled() bool
IsESIndexingEnabled() bool
IsESSearchEnabled() bool
IsFirstUserAccount() bool
IsLeader() bool
IsPasswordValid(password string) *model.AppError
IsPhase2MigrationCompleted() *model.AppError
IsUserAway(lastActivityAt int64) bool
IsUserSignUpAllowed() *model.AppError
IsUsernameTaken(name string) bool
JoinChannel(channel *model.Channel, userId string) *model.AppError
JoinDefaultChannels(teamId string, user *model.User, shouldBeAdmin bool, userRequestorId string) *model.AppError
JoinUserToTeam(team *model.Team, user *model.User, userRequestorId string) *model.AppError
Ldap() einterfaces.LdapInterface
LeaveChannel(channelId string, userId string) *model.AppError
LeaveTeam(team *model.Team, user *model.User, requestorId string) *model.AppError
License() *model.License
LimitedClientConfig() map[string]string
LimitedClientConfigWithComputed() map[string]string
ListAllCommands(teamId string, T goi18n.TranslateFunc) ([]*model.Command, *model.AppError)
ListAutocompleteCommands(teamId string, T goi18n.TranslateFunc) ([]*model.Command, *model.AppError)
ListDirectory(path string) ([]string, *model.AppError)
ListPluginKeys(pluginId string, page, perPage int) ([]string, *model.AppError)
ListTeamCommands(teamId string) ([]*model.Command, *model.AppError)
LoadLicense()
Log() *mlog.Logger
LoginByOAuth(service string, userData io.Reader, teamId string) (*model.User, *model.AppError)
MakePermissionError(permission *model.Permission) *model.AppError
MarkChannelAsUnreadFromPost(postID string, userID string) (*model.ChannelUnreadAt, *model.AppError)
MarkChannelsAsViewed(channelIds []string, userId string, currentSessionId string) (map[string]int64, *model.AppError)
MaxPostSize() int
MessageExport() einterfaces.MessageExportInterface
Metrics() einterfaces.MetricsInterface
MigrateFilenamesToFileInfos(post *model.Post) []*model.FileInfo
MoveChannel(team *model.Team, channel *model.Channel, user *model.User, removeDeactivatedMembers bool) *model.AppError
MoveCommand(team *model.Team, command *model.Command) *model.AppError
MoveFile(oldPath, newPath string) *model.AppError
NewClusterDiscoveryService() *ClusterDiscoveryService
NewEmailTemplate(name, locale string) *utils.HTMLTemplate
NewPluginAPI(manifest *model.Manifest) plugin.API
NewWebConn(ws *websocket.Conn, session model.Session, t goi18n.TranslateFunc, locale string) *WebConn
NewWebHub() *Hub
Notification() einterfaces.NotificationInterface
NotificationsLog() *mlog.Logger
OldImportChannel(channel *model.Channel, sChannel SlackChannel, users map[string]*model.User) *model.Channel
OldImportFile(timestamp time.Time, file io.Reader, teamId string, channelId string, userId string, fileName string) (*model.FileInfo, error)
OldImportIncomingWebhookPost(post *model.Post, props model.StringInterface) string
OldImportPost(post *model.Post) string
OldImportUser(team *model.Team, user *model.User) *model.User
OpenInteractiveDialog(request model.OpenDialogRequest) *model.AppError
OriginChecker() func(*http.Request) bool
OverrideIconURLIfEmoji(post *model.Post)
PatchBot(botUserId string, botPatch *model.BotPatch) (*model.Bot, *model.AppError)
PatchChannel(channel *model.Channel, patch *model.ChannelPatch, userId string) (*model.Channel, *model.AppError)
PatchPost(postId string, patch *model.PostPatch) (*model.Post, *model.AppError)
PatchRole(role *model.Role, patch *model.RolePatch) (*model.Role, *model.AppError)
PatchScheme(scheme *model.Scheme, patch *model.SchemePatch) (*model.Scheme, *model.AppError)
PatchTeam(teamId string, patch *model.TeamPatch) (*model.Team, *model.AppError)
PatchUser(userId string, patch *model.UserPatch, asAdmin bool) (*model.User, *model.AppError)
Path() string
PermanentDeleteAllUsers() *model.AppError
PermanentDeleteBot(botUserId string) *model.AppError
PermanentDeleteChannel(channel *model.Channel) *model.AppError
PermanentDeleteTeam(team *model.Team) *model.AppError
PermanentDeleteTeamId(teamId string) *model.AppError
PermanentDeleteUser(user *model.User) *model.AppError
PluginCommandsForTeam(teamId string) []*model.Command
PluginContext() *plugin.Context
PostActionCookieSecret() []byte
PostAddToChannelMessage(user *model.User, addedUser *model.User, channel *model.Channel, postRootId string) *model.AppError
PostPatchWithProxyRemovedFromImageURLs(patch *model.PostPatch) *model.PostPatch
PostUpdateChannelDisplayNameMessage(userId string, channel *model.Channel, oldChannelDisplayName, newChannelDisplayName string) *model.AppError
PostUpdateChannelHeaderMessage(userId string, channel *model.Channel, oldChannelHeader, newChannelHeader string) *model.AppError
PostUpdateChannelPurposeMessage(userId string, channel *model.Channel, oldChannelPurpose string, newChannelPurpose string) *model.AppError
PostWithProxyAddedToImageURLs(post *model.Post) *model.Post
PostWithProxyRemovedFromImageURLs(post *model.Post) *model.Post
PreparePostForClient(originalPost *model.Post, isNewPost bool, isEditPost bool) *model.Post
PreparePostListForClient(originalList *model.PostList) *model.PostList
ProcessSlackAttachments(attachments []*model.SlackAttachment) []*model.SlackAttachment
ProcessSlackText(text string) string
PromoteGuestToUser(user *model.User, requestorId string) *model.AppError
Publish(message *model.WebSocketEvent)
PublishSkipClusterSend(message *model.WebSocketEvent)
PurgeElasticsearchIndexes() *model.AppError
ReadFile(path string) ([]byte, *model.AppError)
RecycleDatabaseConnection()
RegenCommandToken(cmd *model.Command) (*model.Command, *model.AppError)
RegenOutgoingWebhookToken(hook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError)
RegenerateOAuthAppSecret(app *model.OAuthApp) (*model.OAuthApp, *model.AppError)
RegenerateTeamInviteId(teamId string) (*model.Team, *model.AppError)
RegisterPluginCommand(pluginId string, command *model.Command) error
ReloadConfig() error
RemoveConfigListener(id string)
RemoveFile(path string) *model.AppError
RemoveLicense() *model.AppError
RemoveLicenseListener(id string)
RemovePlugin(id string) *model.AppError
RemovePluginFromData(data model.PluginEventData)
RemoveSamlIdpCertificate() *model.AppError
RemoveSamlPrivateCertificate() *model.AppError
RemoveSamlPublicCertificate() *model.AppError
RemoveTeamIcon(teamId string) *model.AppError
RemoveTeamMemberFromTeam(teamMember *model.TeamMember, requestorId string) *model.AppError
RemoveUserFromChannel(userIdToRemove string, removerUserId string, channel *model.Channel) *model.AppError
RemoveUserFromTeam(teamId string, userId string, requestorId string) *model.AppError
RenameChannel(channel *model.Channel, newChannelName string, newDisplayName string) (*model.Channel, *model.AppError)
RenameTeam(team *model.Team, newTeamName string, newDisplayName string) (*model.Team, *model.AppError)
RequestId() string
ResetPasswordFromToken(userSuppliedTokenString, newPassword string) *model.AppError
ResetPermissionsSystem() *model.AppError
RestoreChannel(channel *model.Channel, userId string) (*model.Channel, *model.AppError)
RestoreTeam(teamId string) *model.AppError
RestrictUsersGetByPermissions(userId string, options *model.UserGetOptions) (*model.UserGetOptions, *model.AppError)
RestrictUsersSearchByPermissions(userId string, options *model.UserSearchOptions) (*model.UserSearchOptions, *model.AppError)
RevokeAccessToken(token string) *model.AppError
RevokeAllSessions(userId string) *model.AppError
RevokeSession(session *model.Session) *model.AppError
RevokeSessionById(sessionId string) *model.AppError
RevokeSessionsForDeviceId(userId string, deviceId string, currentSessionId string) *model.AppError
RevokeSessionsFromAllUsers() *model.AppError
RevokeUserAccessToken(token *model.UserAccessToken) *model.AppError
RolesGrantPermission(roleNames []string, permissionId string) bool
Saml() einterfaces.SamlInterface
SanitizeProfile(user *model.User, asAdmin bool)
SanitizeTeam(session model.Session, team *model.Team) *model.Team
SanitizeTeams(session model.Session, teams []*model.Team) []*model.Team
SaveAndBroadcastStatus(status *model.Status)
SaveBrandImage(imageData *multipart.FileHeader) *model.AppError
SaveComplianceReport(job *model.Compliance) (*model.Compliance, *model.AppError)
SaveConfig(newCfg *model.Config, sendConfigChangeClusterMessage bool) *model.AppError
SaveLicense(licenseBytes []byte) (*model.License, *model.AppError)
SaveReactionForPost(reaction *model.Reaction) (*model.Reaction, *model.AppError)
SaveUserTermsOfService(userId, termsOfServiceId string, accepted bool) *model.AppError
SchemesIterator(batchSize int) func() []*model.Scheme
SearchAllChannels(term string, opts model.ChannelSearchOpts) (*model.ChannelListWithTeamData, int64, *model.AppError)
SearchAllTeams(searchOpts *model.TeamSearch) ([]*model.Team, int64, *model.AppError)
SearchArchivedChannels(teamId string, term string, userId string) (*model.ChannelList, *model.AppError)
SearchChannels(teamId string, term string) (*model.ChannelList, *model.AppError)
SearchChannelsForUser(userId, teamId, term string) (*model.ChannelList, *model.AppError)
SearchChannelsUserNotIn(teamId string, userId string, term string) (*model.ChannelList, *model.AppError)
SearchEmoji(name string, prefixOnly bool, limit int) ([]*model.Emoji, *model.AppError)
SearchGroupChannels(userId, term string) (*model.ChannelList, *model.AppError)
SearchPostsInTeam(teamId string, paramsList []*model.SearchParams) (*model.PostList, *model.AppError)
SearchPostsInTeamForUser(terms string, userId string, teamId string, isOrSearch bool, includeDeletedChannels bool, timeZoneOffset int, page, perPage int) (*model.PostSearchResults, *model.AppError)
SearchPrivateTeams(term string) ([]*model.Team, *model.AppError)
SearchPublicTeams(term string) ([]*model.Team, *model.AppError)
SearchUserAccessTokens(term string) ([]*model.UserAccessToken, *model.AppError)
SearchUsers(props *model.UserSearch, options *model.UserSearchOptions) ([]*model.User, *model.AppError)
SearchUsersInChannel(channelId string, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)
SearchUsersInTeam(teamId, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)
SearchUsersNotInChannel(teamId string, channelId string, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)
SearchUsersNotInTeam(notInTeamId string, term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)
SearchUsersWithoutTeam(term string, options *model.UserSearchOptions) ([]*model.User, *model.AppError)
SendAckToPushProxy(ack *model.PushNotificationAck) error
SendAutoResponse(channel *model.Channel, receiver *model.User) (bool, *model.AppError)
SendAutoResponseIfNecessary(channel *model.Channel, sender *model.User) (bool, *model.AppError)
SendChangeUsernameEmail(oldUsername, newUsername, email, locale, siteURL string) *model.AppError
SendDailyDiagnostics()
SendDeactivateAccountEmail(email string, locale, siteURL string) *model.AppError
SendDiagnostic(event string, properties map[string]interface{})
SendEmailChangeEmail(oldEmail, newEmail, locale, siteURL string) *model.AppError
SendEmailChangeVerifyEmail(newUserEmail, locale, siteURL, token string) *model.AppError
SendEmailVerification(user *model.User, newEmail string) *model.AppError
SendEphemeralPost(userId string, post *model.Post) *model.Post
SendGuestInviteEmails(team *model.Team, channels []*model.Channel, senderName string, senderUserId string, invites []string, siteURL string, message string)
SendInviteEmails(team *model.Team, senderName string, senderUserId string, invites []string, siteURL string)
SendMail(to, subject, htmlBody string) *model.AppError
SendMailWithEmbeddedFiles(to, subject, htmlBody string, embeddedFiles map[string]io.Reader) *model.AppError
SendMfaChangeEmail(email string, activated bool, locale, siteURL string) *model.AppError
SendNotificationMail(to, subject, htmlBody string) *model.AppError
SendNotifications(post *model.Post, team *model.Team, channel *model.Channel, sender *model.User, parentPostList *model.PostList) ([]string, error)
SendPasswordChangeEmail(email, method, locale, siteURL string) *model.AppError
SendPasswordReset(email string, siteURL string) (bool, *model.AppError)
SendPasswordResetEmail(email string, token *model.Token, locale, siteURL string) (bool, *model.AppError)
SendSignInChangeEmail(email, method, locale, siteURL string) *model.AppError
SendUserAccessTokenAddedEmail(email, locale, siteURL string) *model.AppError
SendVerifyEmail(userEmail, locale, siteURL, token string) *model.AppError
SendWelcomeEmail(userId string, email string, verified bool, locale, siteURL string) *model.AppError
ServeInterPluginRequest(w http.ResponseWriter, r *http.Request, sourcePluginId, destinationPluginId string)
ServePluginPublicRequest(w http.ResponseWriter, r *http.Request)
ServePluginRequest(w http.ResponseWriter, r *http.Request)
ServerBusyStateChanged(sbs *model.ServerBusyState)
Session() *model.Session
SessionCacheLength() int
SessionHasPermissionTo(session model.Session, permission *model.Permission) bool
SessionHasPermissionToChannel(session model.Session, channelId string, permission *model.Permission) bool
SessionHasPermissionToChannelByPost(session model.Session, postId string, permission *model.Permission) bool
SessionHasPermissionToManageBot(session model.Session, botUserId string) *model.AppError
SessionHasPermissionToTeam(session model.Session, teamId string, permission *model.Permission) bool
SessionHasPermissionToUser(session model.Session, userId string) bool
SessionHasPermissionToUserOrBot(session model.Session, userId string) bool
SetAcceptLanguage(s string)
SetActiveChannel(userId string, channelId string) *model.AppError
SetAutoResponderStatus(user *model.User, oldNotifyProps model.StringMap)
SetBotIconImage(botUserId string, file io.ReadSeeker) *model.AppError
SetBotIconImageFromMultiPartFile(botUserId string, imageData *multipart.FileHeader) *model.AppError
SetClientLicense(m map[string]string)
SetContext(c context.Context)
SetDefaultProfileImage(user *model.User) *model.AppError
SetDiagnosticId(id string)
SetIpAddress(s string)
SetLicense(license *model.License) bool
SetLog(l *mlog.Logger)
SetPath(s string)
SetPhase2PermissionsMigrationStatus(isComplete bool) error
SetPluginKey(pluginId string, key string, value []byte) *model.AppError
SetPluginKeyWithExpiry(pluginId string, key string, value []byte, expireInSeconds int64) *model.AppError
SetPluginKeyWithOptions(pluginId string, key string, value []byte, options model.PluginKVSetOptions) (bool, *model.AppError)
SetPluginsEnvironment(pluginsEnvironment *plugin.Environment)
SetProfileImage(userId string, imageData *multipart.FileHeader) *model.AppError
SetProfileImageFromFile(userId string, file io.Reader) *model.AppError
SetProfileImageFromMultiPartFile(userId string, file multipart.File) *model.AppError
SetRequestId(s string)
SetSamlIdpCertificateFromMetadata(data []byte) *model.AppError
SetServer(srv *Server)
SetSession(s *model.Session)
SetStatusAwayIfNeeded(userId string, manual bool)
SetStatusDoNotDisturb(userId string)
SetStatusLastActivityAt(userId string, activityAt int64)
SetStatusOffline(userId string, manual bool)
SetStatusOnline(userId string, manual bool)
SetStatusOutOfOffice(userId string)
SetT(t goi18n.TranslateFunc)
SetTeamIcon(teamId string, imageData *multipart.FileHeader) *model.AppError
SetTeamIconFromFile(team *model.Team, file io.Reader) *model.AppError
SetTeamIconFromMultiPartFile(teamId string, file multipart.File) *model.AppError
SetUserAgent(s string)
SetupInviteEmailRateLimiting() error
ShutDownPlugins()
Shutdown()
SlackAddBotUser(teamId string, log *bytes.Buffer) *model.User
SlackAddChannels(teamId string, slackchannels []SlackChannel, posts map[string][]SlackPost, users map[string]*model.User, uploads map[string]*zip.File, botUser *model.User, importerLog *bytes.Buffer) map[string]*model.Channel
SlackAddPosts(teamId string, channel *model.Channel, posts []SlackPost, users map[string]*model.User, uploads map[string]*zip.File, botUser *model.User)
SlackAddUsers(teamId string, slackusers []SlackUser, importerLog *bytes.Buffer) map[string]*model.User
SlackImport(fileData multipart.File, fileSize int64, teamID string) (*model.AppError, *bytes.Buffer)
SlackUploadFile(slackPostFile *SlackFile, uploads map[string]*zip.File, teamId string, channelId string, userId string, slackTimestamp string) (*model.FileInfo, bool)
SoftDeleteTeam(teamId string) *model.AppError
Srv() *Server
StartPushNotificationsHubWorkers()
StopPushNotificationsHubWorkers()
SubmitInteractiveDialog(request model.SubmitDialogRequest) (*model.SubmitDialogResponse, *model.AppError)
SwitchEmailToLdap(email, password, code, ldapLoginId, ldapPassword string) (string, *model.AppError)
SwitchEmailToOAuth(w http.ResponseWriter, r *http.Request, email, password, code, service string) (string, *model.AppError)
SwitchLdapToEmail(ldapPassword, code, email, newPassword string) (string, *model.AppError)
SwitchOAuthToEmail(email, password, requesterId string) (string, *model.AppError)
SyncLdap()
SyncPlugins() *model.AppError
SyncPluginsActiveState()
SyncRolesAndMembership(syncableID string, syncableType model.GroupSyncableType)
SyncSyncableRoles(syncableID string, syncableType model.GroupSyncableType) *model.AppError
T(translationID string, args ...interface{}) string
TeamMembersMinusGroupMembers(teamID string, groupIDs []string, page, perPage int) ([]*model.UserWithGroups, int64, *model.AppError)
TeamMembersToAdd(since int64, teamID *string) ([]*model.UserTeamIDPair, *model.AppError)
TeamMembersToRemove(teamID *string) ([]*model.TeamMember, *model.AppError)
TestElasticsearch(cfg *model.Config) *model.AppError
TestEmail(userId string, cfg *model.Config) *model.AppError
TestLdap() *model.AppError
TestSiteURL(siteURL string) *model.AppError
Timezones() *timezones.Timezones
ToggleMuteChannel(channelId string, userId string) *model.ChannelMember
TotalWebsocketConnections() int
TriggerWebhook(payload *model.OutgoingWebhookPayload, hook *model.OutgoingWebhook, post *model.Post, channel *model.Channel)
UnregisterPluginCommand(pluginId, teamId, trigger string)
UnregisterPluginCommands(pluginId string)
UpdateActive(user *model.User, active bool) (*model.User, *model.AppError)
UpdateBotActive(botUserId string, active bool) (*model.Bot, *model.AppError)
UpdateBotOwner(botUserId, newOwnerId string) (*model.Bot, *model.AppError)
UpdateChannel(channel *model.Channel) (*model.Channel, *model.AppError)
UpdateChannelLastViewedAt(channelIds []string, userId string) *model.AppError
UpdateChannelMemberNotifyProps(data map[string]string, channelId string, userId string) (*model.ChannelMember, *model.AppError)
UpdateChannelMemberRoles(channelId string, userId string, newRoles string) (*model.ChannelMember, *model.AppError)
UpdateChannelMemberSchemeRoles(channelId string, userId string, isSchemeGuest bool, isSchemeUser bool, isSchemeAdmin bool) (*model.ChannelMember, *model.AppError)
UpdateChannelPrivacy(oldChannel *model.Channel, user *model.User) (*model.Channel, *model.AppError)
UpdateChannelScheme(channel *model.Channel) (*model.Channel, *model.AppError)
UpdateCommand(oldCmd, updatedCmd *model.Command) (*model.Command, *model.AppError)
UpdateConfig(f func(*model.Config))
UpdateEphemeralPost(userId string, post *model.Post) *model.Post
UpdateGroup(group *model.Group) (*model.Group, *model.AppError)
UpdateGroupSyncable(groupSyncable *model.GroupSyncable) (*model.GroupSyncable, *model.AppError)
UpdateIncomingWebhook(oldHook, updatedHook *model.IncomingWebhook) (*model.IncomingWebhook, *model.AppError)
UpdateLastActivityAtIfNeeded(session model.Session)
UpdateMfa(activate bool, userId, token string) *model.AppError
UpdateMobileAppBadge(userId string)
UpdateMobileAppBadgeSync(userId string) *model.AppError
UpdateOAuthUserAttrs(userData io.Reader, user *model.User, provider einterfaces.OauthProvider, service string) *model.AppError
UpdateOauthApp(oldApp, updatedApp *model.OAuthApp) (*model.OAuthApp, *model.AppError)
UpdateOutgoingWebhook(oldHook, updatedHook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.AppError)
UpdatePassword(user *model.User, newPassword string) *model.AppError
UpdatePasswordAsUser(userId, currentPassword, newPassword string) *model.AppError
UpdatePasswordByUserIdSendEmail(userId, newPassword, method string) *model.AppError
UpdatePasswordSendEmail(user *model.User, newPassword, method string) *model.AppError
UpdatePost(post *model.Post, safeUpdate bool) (*model.Post, *model.AppError)
UpdatePreferences(userId string, preferences model.Preferences) *model.AppError
UpdateRole(role *model.Role) (*model.Role, *model.AppError)
UpdateScheme(scheme *model.Scheme) (*model.Scheme, *model.AppError)
UpdateSessionsIsGuest(userId string, isGuest bool)
UpdateTeam(team *model.Team) (*model.Team, *model.AppError)
UpdateTeamMemberRoles(teamId string, userId string, newRoles string) (*model.TeamMember, *model.AppError)
UpdateTeamMemberSchemeRoles(teamId string, userId string, isSchemeGuest bool, isSchemeUser bool, isSchemeAdmin bool) (*model.TeamMember, *model.AppError)
UpdateTeamPrivacy(teamId string, teamType string, allowOpenInvite bool) *model.AppError
UpdateTeamScheme(team *model.Team) (*model.Team, *model.AppError)
UpdateUser(user *model.User, sendNotifications bool) (*model.User, *model.AppError)
UpdateUserActive(userId string, active bool) *model.AppError
UpdateUserAsUser(user *model.User, asAdmin bool) (*model.User, *model.AppError)
UpdateUserAuth(userId string, userAuth *model.UserAuth) (*model.UserAuth, *model.AppError)
UpdateUserNotifyProps(userId string, props map[string]string) (*model.User, *model.AppError)
UpdateUserRoles(userId string, newRoles string, sendWebSocketEvent bool) (*model.User, *model.AppError)
UpdateWebConnUserActivity(session model.Session, activityAt int64)
UploadEmojiImage(id string, imageData *multipart.FileHeader) *model.AppError
UploadFile(data []byte, channelId string, filename string) (*model.FileInfo, *model.AppError)
UploadFileX(channelId, name string, input io.Reader, opts ...func(*UploadFileTask)) (*model.FileInfo, *model.AppError)
UploadFiles(teamId string, channelId string, userId string, files []io.ReadCloser, filenames []string, clientIds []string, now time.Time) (*model.FileUploadResponse, *model.AppError)
UploadMultipartFiles(teamId string, channelId string, userId string, fileHeaders []*multipart.FileHeader, clientIds []string, now time.Time) (*model.FileUploadResponse, *model.AppError)
UpsertGroupMember(groupID string, userID string) (*model.GroupMember, *model.AppError)
UpsertGroupSyncable(groupSyncable *model.GroupSyncable) (*model.GroupSyncable, *model.AppError)
UserAgent() string
UserCanSeeOtherUser(userId string, otherUserId string) (bool, *model.AppError)
UserIsInAdminRoleGroup(userID, syncableID string, syncableType model.GroupSyncableType) (bool, *model.AppError)
ValidateAndSetLicenseBytes(b []byte)
VerifyEmailFromToken(userSuppliedTokenString string) *model.AppError
VerifyPlugin(plugin, signature io.ReadSeeker) *model.AppError
VerifyUserEmail(userId, email string) *model.AppError
ViewChannel(view *model.ChannelView, userId string, currentSessionId string) (map[string]int64, *model.AppError)
WaitForChannelMembership(channelId string, userId string)
WriteFile(fr io.Reader, path string) (int64, *model.AppError)
}

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

@@ -8,9 +8,9 @@ import (
) )
func (a *App) GetAudits(userId string, limit int) (model.Audits, *model.AppError) { func (a *App) GetAudits(userId string, limit int) (model.Audits, *model.AppError) {
return a.Srv.Store.Audit().Get(userId, 0, limit) return a.Srv().Store.Audit().Get(userId, 0, limit)
} }
func (a *App) GetAuditsPage(userId string, page int, perPage int) (model.Audits, *model.AppError) { func (a *App) GetAuditsPage(userId string, page int, perPage int) (model.Audits, *model.AppError) {
return a.Srv.Store.Audit().Get(userId, page*perPage, perPage) return a.Srv().Store.Audit().Get(userId, page*perPage, perPage)
} }

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

@@ -51,7 +51,7 @@ func (a *App) CheckPasswordAndAllCriteria(user *model.User, password string, mfa
} }
if err := a.checkUserPassword(user, password); err != nil { if err := a.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 passErr return passErr
} }
return err return err
@@ -61,14 +61,14 @@ func (a *App) CheckPasswordAndAllCriteria(user *model.User, password string, mfa
// If the mfaToken is not set, we assume the client used this as a pre-flight request to query the server // If the mfaToken is not set, we assume the client used this as a pre-flight request to query the server
// 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 passErr return passErr
} }
} }
return err return 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 passErr return passErr
} }
@@ -86,13 +86,13 @@ func (a *App) DoubleCheckPassword(user *model.User, password string) *model.AppE
} }
if err := a.checkUserPassword(user, password); err != nil { if err := a.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 passErr return passErr
} }
return err return 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 passErr return passErr
} }
@@ -108,12 +108,12 @@ func (a *App) checkUserPassword(user *model.User, password string) *model.AppErr
} }
func (a *App) checkLdapUserPasswordAndAllCriteria(ldapId *string, password string, mfaToken string) (*model.User, *model.AppError) { func (a *App) checkLdapUserPasswordAndAllCriteria(ldapId *string, password string, mfaToken string) (*model.User, *model.AppError) {
if a.Ldap == nil || ldapId == nil { if a.Ldap() == nil || ldapId == nil {
err := model.NewAppError("doLdapAuthentication", "api.user.login_ldap.not_available.app_error", nil, "", http.StatusNotImplemented) err := model.NewAppError("doLdapAuthentication", "api.user.login_ldap.not_available.app_error", nil, "", http.StatusNotImplemented)
return nil, err return nil, err
} }
ldapUser, err := a.Ldap.DoLogin(*ldapId, password) ldapUser, err := a.Ldap().DoLogin(*ldapId, password)
if err != nil { if err != nil {
err.StatusCode = http.StatusUnauthorized err.StatusCode = http.StatusUnauthorized
return nil, err return nil, err
@@ -172,7 +172,7 @@ func (a *App) CheckUserMfa(user *model.User, token string) *model.AppError {
return nil return nil
} }
mfaService := mfa.New(a, a.Srv.Store) mfaService := mfa.New(a, a.Srv().Store)
ok, err := mfaService.ValidateToken(user.MfaSecret, token) ok, err := mfaService.ValidateToken(user.MfaSecret, token)
if err != nil { if err != nil {
return err return err
@@ -209,7 +209,7 @@ func checkUserNotBot(user *model.User) *model.AppError {
func (a *App) authenticateUser(user *model.User, password, mfaToken string) (*model.User, *model.AppError) { func (a *App) authenticateUser(user *model.User, password, mfaToken string) (*model.User, *model.AppError) {
license := a.License() license := a.License()
ldapAvailable := *a.Config().LdapSettings.Enable && a.Ldap != nil && license != nil && *license.Features.LDAP ldapAvailable := *a.Config().LdapSettings.Enable && a.Ldap() != nil && license != nil && *license.Features.LDAP
if user.AuthService == model.USER_AUTH_SERVICE_LDAP { if user.AuthService == model.USER_AUTH_SERVICE_LDAP {
if !ldapAvailable { if !ldapAvailable {

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

@@ -12,7 +12,7 @@ import (
) )
func (a *App) MakePermissionError(permission *model.Permission) *model.AppError { func (a *App) MakePermissionError(permission *model.Permission) *model.AppError {
return model.NewAppError("Permissions", "api.context.permissions.app_error", nil, "userId="+a.Session.UserId+", "+"permission="+permission.Id, http.StatusForbidden) return model.NewAppError("Permissions", "api.context.permissions.app_error", nil, "userId="+a.Session().UserId+", "+"permission="+permission.Id, http.StatusForbidden)
} }
func (a *App) SessionHasPermissionTo(session model.Session, permission *model.Permission) bool { func (a *App) SessionHasPermissionTo(session model.Session, permission *model.Permission) bool {
@@ -39,7 +39,7 @@ func (a *App) SessionHasPermissionToChannel(session model.Session, channelId str
return false return false
} }
ids, err := a.Srv.Store.Channel().GetAllChannelMembersForUser(session.UserId, true, true) ids, err := a.Srv().Store.Channel().GetAllChannelMembersForUser(session.UserId, true, true)
var channelRoles []string var channelRoles []string
if err == nil { if err == nil {
@@ -64,14 +64,14 @@ func (a *App) SessionHasPermissionToChannel(session model.Session, channelId str
} }
func (a *App) SessionHasPermissionToChannelByPost(session model.Session, postId string, permission *model.Permission) bool { func (a *App) SessionHasPermissionToChannelByPost(session model.Session, postId string, permission *model.Permission) bool {
if channelMember, err := a.Srv.Store.Channel().GetMemberForPost(postId, session.UserId); err == nil { if channelMember, err := a.Srv().Store.Channel().GetMemberForPost(postId, session.UserId); err == nil {
if a.RolesGrantPermission(channelMember.GetRoles(), permission.Id) { if a.RolesGrantPermission(channelMember.GetRoles(), permission.Id) {
return true return true
} }
} }
if channel, err := a.Srv.Store.Channel().GetForPost(postId); err == nil { if channel, err := a.Srv().Store.Channel().GetForPost(postId); err == nil {
if channel.TeamId != "" { if channel.TeamId != "" {
return a.SessionHasPermissionToTeam(session, channel.TeamId, permission) return a.SessionHasPermissionToTeam(session, channel.TeamId, permission)
} }
@@ -161,13 +161,13 @@ func (a *App) HasPermissionToChannel(askingUserId string, channelId string, perm
} }
func (a *App) HasPermissionToChannelByPost(askingUserId string, postId string, permission *model.Permission) bool { func (a *App) HasPermissionToChannelByPost(askingUserId string, postId string, permission *model.Permission) bool {
if channelMember, err := a.Srv.Store.Channel().GetMemberForPost(postId, askingUserId); err == nil { if channelMember, err := a.Srv().Store.Channel().GetMemberForPost(postId, askingUserId); err == nil {
if a.RolesGrantPermission(channelMember.GetRoles(), permission.Id) { if a.RolesGrantPermission(channelMember.GetRoles(), permission.Id) {
return true return true
} }
} }
if channel, err := a.Srv.Store.Channel().GetForPost(postId); err == nil { if channel, err := a.Srv().Store.Channel().GetForPost(postId); err == nil {
return a.HasPermissionToTeam(askingUserId, channel.TeamId, permission) return a.HasPermissionToTeam(askingUserId, channel.TeamId, permission)
} }

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

@@ -47,11 +47,11 @@ func (a *App) CreateBasicUser(client *model.Client4) *model.AppError {
if resp.Error != nil { if resp.Error != nil {
return resp.Error return resp.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 err return err
} }
if _, err = a.Srv.Store.Team().SaveMember(&model.TeamMember{TeamId: basicteam.Id, UserId: ruser.Id}, *a.Config().TeamSettings.MaxUsersPerTeam); err != nil { if _, err = a.Srv().Store.Team().SaveMember(&model.TeamMember{TeamId: basicteam.Id, UserId: ruser.Id}, *a.Config().TeamSettings.MaxUsersPerTeam); err != nil {
return err return err
} }
} }
@@ -81,13 +81,13 @@ func (cfg *AutoUserCreator) createRandomUser() (*model.User, bool) {
} }
status := &model.Status{UserId: ruser.Id, Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: ""} status := &model.Status{UserId: ruser.Id, Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: ""}
if err := cfg.app.Srv.Store.Status().SaveOrUpdate(status); err != nil { if err := cfg.app.Srv().Store.Status().SaveOrUpdate(status); err != nil {
mlog.Error(err.Error()) mlog.Error(err.Error())
return nil, false return nil, false
} }
// We need to cheat to verify the user's email // We need to cheat to verify the user's email
_, err := cfg.app.Srv.Store.User().VerifyEmail(ruser.Id, ruser.Email) _, err := cfg.app.Srv().Store.User().VerifyEmail(ruser.Id, ruser.Email)
if err != nil { if err != nil {
return nil, false return nil, false
} }

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

@@ -17,20 +17,20 @@ import (
// CreateBot creates the given bot and corresponding user. // CreateBot creates the given bot and corresponding user.
func (a *App) CreateBot(bot *model.Bot) (*model.Bot, *model.AppError) { func (a *App) CreateBot(bot *model.Bot) (*model.Bot, *model.AppError) {
user, err := a.Srv.Store.User().Save(model.UserFromBot(bot)) user, err := a.Srv().Store.User().Save(model.UserFromBot(bot))
if err != nil { if err != nil {
return nil, err return nil, err
} }
bot.UserId = user.Id bot.UserId = user.Id
savedBot, err := a.Srv.Store.Bot().Save(bot) savedBot, err := a.Srv().Store.Bot().Save(bot)
if err != nil { if err != nil {
a.Srv.Store.User().PermanentDelete(bot.UserId) a.Srv().Store.User().PermanentDelete(bot.UserId)
return nil, err return nil, err
} }
// Get the owner of the bot, if one exists. If not, don't send a message // Get the owner of the bot, if one exists. If not, don't send a message
ownerUser, err := a.Srv.Store.User().Get(bot.OwnerId) ownerUser, err := a.Srv().Store.User().Get(bot.OwnerId)
if err != nil && err.Id != store.MISSING_ACCOUNT_ERROR { if err != nil && err.Id != store.MISSING_ACCOUNT_ERROR {
mlog.Error(err.Error()) mlog.Error(err.Error())
return nil, err return nil, err
@@ -50,7 +50,7 @@ func (a *App) CreateBot(bot *model.Bot) (*model.Bot, *model.AppError) {
Message: T("api.bot.teams_channels.add_message_mobile"), Message: T("api.bot.teams_channels.add_message_mobile"),
} }
if _, err := a.CreatePostAsUser(botAddPost, a.Session.Id); err != nil { if _, err := a.CreatePostAsUser(botAddPost, a.Session().Id); err != nil {
return nil, err return nil, err
} }
} }
@@ -67,7 +67,7 @@ func (a *App) PatchBot(botUserId string, botPatch *model.BotPatch) (*model.Bot,
bot.Patch(botPatch) bot.Patch(botPatch)
user, err := a.Srv.Store.User().Get(botUserId) user, err := a.Srv().Store.User().Get(botUserId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -78,7 +78,7 @@ func (a *App) PatchBot(botUserId string, botPatch *model.BotPatch) (*model.Bot,
user.Email = patchedUser.Email user.Email = patchedUser.Email
user.FirstName = patchedUser.FirstName user.FirstName = patchedUser.FirstName
userUpdate, err := a.Srv.Store.User().Update(user, true) userUpdate, err := a.Srv().Store.User().Update(user, true)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -86,22 +86,22 @@ func (a *App) PatchBot(botUserId string, botPatch *model.BotPatch) (*model.Bot,
ruser := userUpdate.New ruser := userUpdate.New
a.sendUpdatedUserEvent(*ruser) a.sendUpdatedUserEvent(*ruser)
return a.Srv.Store.Bot().Update(bot) return a.Srv().Store.Bot().Update(bot)
} }
// GetBot returns the given bot. // GetBot returns the given bot.
func (a *App) GetBot(botUserId string, includeDeleted bool) (*model.Bot, *model.AppError) { func (a *App) GetBot(botUserId string, includeDeleted bool) (*model.Bot, *model.AppError) {
return a.Srv.Store.Bot().Get(botUserId, includeDeleted) return a.Srv().Store.Bot().Get(botUserId, includeDeleted)
} }
// GetBots returns the requested page of bots. // GetBots returns the requested page of bots.
func (a *App) GetBots(options *model.BotGetOptions) (model.BotList, *model.AppError) { func (a *App) GetBots(options *model.BotGetOptions) (model.BotList, *model.AppError) {
return a.Srv.Store.Bot().GetAll(options) return a.Srv().Store.Bot().GetAll(options)
} }
// UpdateBotActive marks a bot as active or inactive, along with its corresponding user. // UpdateBotActive marks a bot as active or inactive, along with its corresponding user.
func (a *App) UpdateBotActive(botUserId string, active bool) (*model.Bot, *model.AppError) { func (a *App) UpdateBotActive(botUserId string, active bool) (*model.Bot, *model.AppError) {
user, err := a.Srv.Store.User().Get(botUserId) user, err := a.Srv().Store.User().Get(botUserId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -110,7 +110,7 @@ func (a *App) UpdateBotActive(botUserId string, active bool) (*model.Bot, *model
return nil, err return nil, err
} }
bot, err := a.Srv.Store.Bot().Get(botUserId, true) bot, err := a.Srv().Store.Bot().Get(botUserId, true)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -125,7 +125,7 @@ func (a *App) UpdateBotActive(botUserId string, active bool) (*model.Bot, *model
} }
if changed { if changed {
bot, err = a.Srv.Store.Bot().Update(bot) bot, err = a.Srv().Store.Bot().Update(bot)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -136,11 +136,11 @@ func (a *App) UpdateBotActive(botUserId string, active bool) (*model.Bot, *model
// PermanentDeleteBot permanently deletes a bot and its corresponding user. // PermanentDeleteBot permanently deletes a bot and its corresponding user.
func (a *App) PermanentDeleteBot(botUserId string) *model.AppError { func (a *App) PermanentDeleteBot(botUserId string) *model.AppError {
if err := a.Srv.Store.Bot().PermanentDelete(botUserId); err != nil { if err := a.Srv().Store.Bot().PermanentDelete(botUserId); err != nil {
return err return err
} }
if err := a.Srv.Store.User().PermanentDelete(botUserId); err != nil { if err := a.Srv().Store.User().PermanentDelete(botUserId); err != nil {
return err return err
} }
@@ -149,14 +149,14 @@ func (a *App) PermanentDeleteBot(botUserId string) *model.AppError {
// UpdateBotOwner changes a bot's owner to the given value. // UpdateBotOwner changes a bot's owner to the given value.
func (a *App) UpdateBotOwner(botUserId, newOwnerId string) (*model.Bot, *model.AppError) { func (a *App) UpdateBotOwner(botUserId, newOwnerId string) (*model.Bot, *model.AppError) {
bot, err := a.Srv.Store.Bot().Get(botUserId, true) bot, err := a.Srv().Store.Bot().Get(botUserId, true)
if err != nil { if err != nil {
return nil, err return nil, err
} }
bot.OwnerId = newOwnerId bot.OwnerId = newOwnerId
bot, err = a.Srv.Store.Bot().Update(bot) bot, err = a.Srv().Store.Bot().Update(bot)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -311,7 +311,7 @@ func (a *App) getDisableBotSysadminMessage(user *model.User, userBots model.BotL
// ConvertUserToBot converts a user to bot. // ConvertUserToBot converts a user to bot.
func (a *App) ConvertUserToBot(user *model.User) (*model.Bot, *model.AppError) { func (a *App) ConvertUserToBot(user *model.User) (*model.Bot, *model.AppError) {
return a.Srv.Store.Bot().Save(model.BotFromUser(user)) return a.Srv().Store.Bot().Save(model.BotFromUser(user))
} }
// SetBotIconImageFromMultiPartFile sets LHS icon for a bot. // SetBotIconImageFromMultiPartFile sets LHS icon for a bot.
@@ -344,7 +344,7 @@ func (a *App) SetBotIconImage(botUserId string, file io.ReadSeeker) *model.AppEr
} }
bot.LastIconUpdate = model.GetMillis() bot.LastIconUpdate = model.GetMillis()
if _, err = a.Srv.Store.Bot().Update(bot); err != nil { if _, err = a.Srv().Store.Bot().Update(bot); err != nil {
return err return err
} }
a.invalidateUserCacheAndPublish(botUserId) a.invalidateUserCacheAndPublish(botUserId)
@@ -364,12 +364,12 @@ func (a *App) DeleteBotIconImage(botUserId string) *model.AppError {
return model.NewAppError("DeleteBotIconImage", "api.bot.delete_bot_icon_image.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("DeleteBotIconImage", "api.bot.delete_bot_icon_image.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
if err = a.Srv.Store.User().UpdateLastPictureUpdate(botUserId); err != nil { if err = a.Srv().Store.User().UpdateLastPictureUpdate(botUserId); err != nil {
mlog.Error(err.Error()) mlog.Error(err.Error())
} }
bot.LastIconUpdate = int64(0) bot.LastIconUpdate = int64(0)
if _, err = a.Srv.Store.Bot().Update(bot); err != nil { if _, err = a.Srv().Store.Bot().Update(bot); err != nil {
return err return err
} }

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

@@ -66,7 +66,7 @@ func (a *App) JoinDefaultChannels(teamId string, user *model.User, shouldBeAdmin
var requestor *model.User var requestor *model.User
if userRequestorId != "" { if userRequestorId != "" {
var err *model.AppError var err *model.AppError
requestor, err = a.Srv.Store.User().Get(userRequestorId) requestor, err = a.Srv().Store.User().Get(userRequestorId)
if err != nil { if err != nil {
return err return err
} }
@@ -74,7 +74,7 @@ func (a *App) JoinDefaultChannels(teamId string, user *model.User, shouldBeAdmin
var err *model.AppError var err *model.AppError
for _, channelName := range a.DefaultChannelNames() { for _, channelName := range a.DefaultChannelNames() {
channel, channelErr := a.Srv.Store.Channel().GetByName(teamId, channelName, true) channel, channelErr := a.Srv().Store.Channel().GetByName(teamId, channelName, true)
if channelErr != nil { if channelErr != nil {
err = channelErr err = channelErr
continue continue
@@ -93,8 +93,8 @@ func (a *App) JoinDefaultChannels(teamId string, user *model.User, shouldBeAdmin
NotifyProps: model.GetDefaultChannelNotifyProps(), NotifyProps: model.GetDefaultChannelNotifyProps(),
} }
_, err = a.Srv.Store.Channel().SaveMember(cm) _, err = a.Srv().Store.Channel().SaveMember(cm)
if histErr := a.Srv.Store.ChannelMemberHistory().LogJoinEvent(user.Id, channel.Id, model.GetMillis()); histErr != nil { if histErr := a.Srv().Store.ChannelMemberHistory().LogJoinEvent(user.Id, channel.Id, model.GetMillis()); histErr != nil {
mlog.Error("Failed to update ChannelMemberHistory table", mlog.Err(histErr)) mlog.Error("Failed to update ChannelMemberHistory table", mlog.Err(histErr))
return histErr return histErr
} }
@@ -113,7 +113,7 @@ func (a *App) JoinDefaultChannels(teamId string, user *model.User, shouldBeAdmin
} }
if a.IsESIndexingEnabled() { if a.IsESIndexingEnabled() {
a.Srv.Go(func() { a.Srv().Go(func() {
if err = a.indexUser(user); err != nil { if err = a.indexUser(user); err != nil {
mlog.Error("Encountered error indexing user", mlog.String("user_id", user.Id), mlog.Err(err)) mlog.Error("Encountered error indexing user", mlog.String("user_id", user.Id), mlog.Err(err))
} }
@@ -190,7 +190,7 @@ func (a *App) CreateChannelWithUser(channel *model.Channel, userId string) (*mod
a.Publish(message) a.Publish(message)
if a.IsESIndexingEnabled() { if a.IsESIndexingEnabled() {
a.Srv.Go(func() { a.Srv().Go(func() {
if err := a.indexUser(user); err != nil { if err := a.indexUser(user); err != nil {
mlog.Error("Encountered error indexing user", mlog.String("user_id", user.Id), mlog.Err(err)) mlog.Error("Encountered error indexing user", mlog.String("user_id", user.Id), mlog.Err(err))
} }
@@ -226,13 +226,13 @@ func (a *App) RenameChannel(channel *model.Channel, newChannelName string, newDi
func (a *App) CreateChannel(channel *model.Channel, addMember bool) (*model.Channel, *model.AppError) { func (a *App) CreateChannel(channel *model.Channel, addMember bool) (*model.Channel, *model.AppError) {
channel.DisplayName = strings.TrimSpace(channel.DisplayName) channel.DisplayName = strings.TrimSpace(channel.DisplayName)
sc, err := a.Srv.Store.Channel().Save(channel, *a.Config().TeamSettings.MaxChannelsPerTeam) sc, err := a.Srv().Store.Channel().Save(channel, *a.Config().TeamSettings.MaxChannelsPerTeam)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if addMember { if addMember {
user, err := a.Srv.Store.User().Get(channel.CreatorId) user, err := a.Srv().Store.User().Get(channel.CreatorId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -246,10 +246,10 @@ func (a *App) CreateChannel(channel *model.Channel, addMember bool) (*model.Chan
NotifyProps: model.GetDefaultChannelNotifyProps(), NotifyProps: model.GetDefaultChannelNotifyProps(),
} }
if _, err := a.Srv.Store.Channel().SaveMember(cm); err != nil { if _, err := a.Srv().Store.Channel().SaveMember(cm); err != nil {
return nil, err return nil, err
} }
if err := a.Srv.Store.ChannelMemberHistory().LogJoinEvent(channel.CreatorId, sc.Id, model.GetMillis()); err != nil { if err := a.Srv().Store.ChannelMemberHistory().LogJoinEvent(channel.CreatorId, sc.Id, model.GetMillis()); err != nil {
mlog.Error("Failed to update ChannelMemberHistory table", mlog.Err(err)) mlog.Error("Failed to update ChannelMemberHistory table", mlog.Err(err))
return nil, err return nil, err
} }
@@ -258,7 +258,7 @@ func (a *App) CreateChannel(channel *model.Channel, addMember bool) (*model.Chan
} }
if pluginsEnvironment := a.GetPluginsEnvironment(); pluginsEnvironment != nil { if pluginsEnvironment := a.GetPluginsEnvironment(); pluginsEnvironment != nil {
a.Srv.Go(func() { a.Srv().Go(func() {
pluginContext := a.PluginContext() pluginContext := a.PluginContext()
pluginsEnvironment.RunMultiPluginHook(func(hooks plugin.Hooks) bool { pluginsEnvironment.RunMultiPluginHook(func(hooks plugin.Hooks) bool {
hooks.ChannelHasBeenCreated(pluginContext, sc) hooks.ChannelHasBeenCreated(pluginContext, sc)
@@ -269,14 +269,14 @@ func (a *App) CreateChannel(channel *model.Channel, addMember bool) (*model.Chan
if a.IsESIndexingEnabled() { if a.IsESIndexingEnabled() {
if sc.Type == model.CHANNEL_OPEN { if sc.Type == model.CHANNEL_OPEN {
a.Srv.Go(func() { a.Srv().Go(func() {
if err := a.Elasticsearch.IndexChannel(sc); err != nil { if err := a.Elasticsearch().IndexChannel(sc); err != nil {
mlog.Error("Encountered error indexing channel", mlog.String("channel_id", sc.Id), mlog.Err(err)) mlog.Error("Encountered error indexing channel", mlog.String("channel_id", sc.Id), mlog.Err(err))
} }
}) })
} }
if addMember { if addMember {
a.Srv.Go(func() { a.Srv().Go(func() {
if err := a.indexUserFromId(channel.CreatorId); err != nil { if err := a.indexUserFromId(channel.CreatorId); err != nil {
mlog.Error("Encountered error indexing user", mlog.String("user_id", channel.CreatorId), mlog.Err(err)) mlog.Error("Encountered error indexing user", mlog.String("user_id", channel.CreatorId), mlog.Err(err))
} }
@@ -288,7 +288,7 @@ func (a *App) CreateChannel(channel *model.Channel, addMember bool) (*model.Chan
} }
func (a *App) GetOrCreateDirectChannel(userId, otherUserId string) (*model.Channel, *model.AppError) { func (a *App) GetOrCreateDirectChannel(userId, otherUserId string) (*model.Channel, *model.AppError) {
channel, err := a.Srv.Store.Channel().GetByName("", model.GetDMNameFromIds(userId, otherUserId), true) channel, err := a.Srv().Store.Channel().GetByName("", model.GetDMNameFromIds(userId, otherUserId), true)
if err != nil { if err != nil {
if err.Id == store.MISSING_CHANNEL_ERROR { if err.Id == store.MISSING_CHANNEL_ERROR {
channel, err = a.createDirectChannel(userId, otherUserId) channel, err = a.createDirectChannel(userId, otherUserId)
@@ -305,7 +305,7 @@ func (a *App) GetOrCreateDirectChannel(userId, otherUserId string) (*model.Chann
a.InvalidateCacheForUser(otherUserId) a.InvalidateCacheForUser(otherUserId)
if pluginsEnvironment := a.GetPluginsEnvironment(); pluginsEnvironment != nil { if pluginsEnvironment := a.GetPluginsEnvironment(); pluginsEnvironment != nil {
a.Srv.Go(func() { a.Srv().Go(func() {
pluginContext := a.PluginContext() pluginContext := a.PluginContext()
pluginsEnvironment.RunMultiPluginHook(func(hooks plugin.Hooks) bool { pluginsEnvironment.RunMultiPluginHook(func(hooks plugin.Hooks) bool {
hooks.ChannelHasBeenCreated(pluginContext, channel) hooks.ChannelHasBeenCreated(pluginContext, channel)
@@ -315,7 +315,7 @@ func (a *App) GetOrCreateDirectChannel(userId, otherUserId string) (*model.Chann
} }
if a.IsESIndexingEnabled() { if a.IsESIndexingEnabled() {
a.Srv.Go(func() { a.Srv().Go(func() {
for _, id := range []string{userId, otherUserId} { for _, id := range []string{userId, otherUserId} {
if indexUserErr := a.indexUserFromId(id); indexUserErr != nil { if indexUserErr := a.indexUserFromId(id); indexUserErr != nil {
mlog.Error("Encountered error indexing user", mlog.String("user_id", id), mlog.Err(indexUserErr)) mlog.Error("Encountered error indexing user", mlog.String("user_id", id), mlog.Err(indexUserErr))
@@ -339,12 +339,12 @@ func (a *App) createDirectChannel(userId string, otherUserId string) (*model.Cha
uc1 := make(chan store.StoreResult, 1) uc1 := make(chan store.StoreResult, 1)
uc2 := make(chan store.StoreResult, 1) uc2 := make(chan store.StoreResult, 1)
go func() { go func() {
user, err := a.Srv.Store.User().Get(userId) user, err := a.Srv().Store.User().Get(userId)
uc1 <- store.StoreResult{Data: user, Err: err} uc1 <- store.StoreResult{Data: user, Err: err}
close(uc1) close(uc1)
}() }()
go func() { go func() {
user, err := a.Srv.Store.User().Get(otherUserId) user, err := a.Srv().Store.User().Get(otherUserId)
uc2 <- store.StoreResult{Data: user, Err: err} uc2 <- store.StoreResult{Data: user, Err: err}
close(uc2) close(uc2)
}() }()
@@ -361,7 +361,7 @@ func (a *App) createDirectChannel(userId string, otherUserId string) (*model.Cha
} }
otherUser := result.Data.(*model.User) otherUser := result.Data.(*model.User)
channel, err := a.Srv.Store.Channel().CreateDirectChannel(user, otherUser) channel, err := a.Srv().Store.Channel().CreateDirectChannel(user, otherUser)
if err != nil { if err != nil {
if err.Id == store.CHANNEL_EXISTS_ERROR { if err.Id == store.CHANNEL_EXISTS_ERROR {
return channel, err return channel, err
@@ -369,12 +369,12 @@ func (a *App) createDirectChannel(userId string, otherUserId string) (*model.Cha
return nil, err return nil, err
} }
if err = a.Srv.Store.ChannelMemberHistory().LogJoinEvent(userId, channel.Id, model.GetMillis()); err != nil { if err = a.Srv().Store.ChannelMemberHistory().LogJoinEvent(userId, channel.Id, model.GetMillis()); err != nil {
mlog.Error("Failed to update ChannelMemberHistory table", mlog.Err(err)) mlog.Error("Failed to update ChannelMemberHistory table", mlog.Err(err))
return nil, err return nil, err
} }
if userId != otherUserId { if userId != otherUserId {
if err = a.Srv.Store.ChannelMemberHistory().LogJoinEvent(otherUserId, channel.Id, model.GetMillis()); err != nil { if err = a.Srv().Store.ChannelMemberHistory().LogJoinEvent(otherUserId, channel.Id, model.GetMillis()); err != nil {
mlog.Error("Failed to update ChannelMemberHistory table", mlog.Err(err)) mlog.Error("Failed to update ChannelMemberHistory table", mlog.Err(err))
return nil, err return nil, err
} }
@@ -394,7 +394,7 @@ func (a *App) WaitForChannelMembership(channelId string, userId string) {
time.Sleep(100 * time.Millisecond) time.Sleep(100 * time.Millisecond)
_, err := a.Srv.Store.Channel().GetMember(channelId, userId) _, err := a.Srv().Store.Channel().GetMember(channelId, userId)
// If the membership was found then return // If the membership was found then return
if err == nil { if err == nil {
@@ -432,7 +432,7 @@ func (a *App) CreateGroupChannel(userIds []string, creatorId string) (*model.Cha
a.Publish(message) a.Publish(message)
if a.IsESIndexingEnabled() { if a.IsESIndexingEnabled() {
a.Srv.Go(func() { a.Srv().Go(func() {
for _, id := range userIds { for _, id := range userIds {
if err := a.indexUserFromId(id); err != nil { if err := a.indexUserFromId(id); err != nil {
mlog.Error("Encountered error indexing user", mlog.String("user_id", id), mlog.Err(err)) mlog.Error("Encountered error indexing user", mlog.String("user_id", id), mlog.Err(err))
@@ -449,7 +449,7 @@ func (a *App) createGroupChannel(userIds []string, creatorId string) (*model.Cha
return nil, model.NewAppError("CreateGroupChannel", "api.channel.create_group.bad_size.app_error", nil, "", http.StatusBadRequest) return nil, model.NewAppError("CreateGroupChannel", "api.channel.create_group.bad_size.app_error", nil, "", http.StatusBadRequest)
} }
users, err := a.Srv.Store.User().GetProfileByIds(userIds, nil, true) users, err := a.Srv().Store.User().GetProfileByIds(userIds, nil, true)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -464,7 +464,7 @@ func (a *App) createGroupChannel(userIds []string, creatorId string) (*model.Cha
Type: model.CHANNEL_GROUP, Type: model.CHANNEL_GROUP,
} }
channel, err := a.Srv.Store.Channel().Save(group, *a.Config().TeamSettings.MaxChannelsPerTeam) channel, err := a.Srv().Store.Channel().Save(group, *a.Config().TeamSettings.MaxChannelsPerTeam)
if err != nil { if err != nil {
if err.Id == store.CHANNEL_EXISTS_ERROR { if err.Id == store.CHANNEL_EXISTS_ERROR {
return channel, err return channel, err
@@ -481,10 +481,10 @@ func (a *App) createGroupChannel(userIds []string, creatorId string) (*model.Cha
SchemeUser: !user.IsGuest(), SchemeUser: !user.IsGuest(),
} }
if _, err := a.Srv.Store.Channel().SaveMember(cm); err != nil { if _, err := a.Srv().Store.Channel().SaveMember(cm); err != nil {
return nil, err return nil, err
} }
if err := a.Srv.Store.ChannelMemberHistory().LogJoinEvent(user.Id, channel.Id, model.GetMillis()); err != nil { if err := a.Srv().Store.ChannelMemberHistory().LogJoinEvent(user.Id, channel.Id, model.GetMillis()); err != nil {
mlog.Error("Failed to update ChannelMemberHistory table", mlog.Err(err)) mlog.Error("Failed to update ChannelMemberHistory table", mlog.Err(err))
return nil, err return nil, err
} }
@@ -498,7 +498,7 @@ func (a *App) GetGroupChannel(userIds []string) (*model.Channel, *model.AppError
return nil, model.NewAppError("GetGroupChannel", "api.channel.create_group.bad_size.app_error", nil, "", http.StatusBadRequest) return nil, model.NewAppError("GetGroupChannel", "api.channel.create_group.bad_size.app_error", nil, "", http.StatusBadRequest)
} }
users, err := a.Srv.Store.User().GetProfileByIds(userIds, nil, true) users, err := a.Srv().Store.User().GetProfileByIds(userIds, nil, true)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -525,7 +525,7 @@ func (a *App) UpdateChannel(channel *model.Channel) (*model.Channel, *model.AppE
return nil, model.NewAppError("UpdateChannel", "api.channel.update_channel.invalid_character.app_error", nil, "", http.StatusBadRequest) return nil, model.NewAppError("UpdateChannel", "api.channel.update_channel.invalid_character.app_error", nil, "", http.StatusBadRequest)
} }
_, err := a.Srv.Store.Channel().Update(channel) _, err := a.Srv().Store.Channel().Update(channel)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -537,8 +537,8 @@ func (a *App) UpdateChannel(channel *model.Channel) (*model.Channel, *model.AppE
a.Publish(messageWs) a.Publish(messageWs)
if a.IsESIndexingEnabled() && channel.Type == model.CHANNEL_OPEN { if a.IsESIndexingEnabled() && channel.Type == model.CHANNEL_OPEN {
a.Srv.Go(func() { a.Srv().Go(func() {
if err := a.Elasticsearch.IndexChannel(channel); err != nil { if err := a.Elasticsearch().IndexChannel(channel); err != nil {
mlog.Error("Encountered error indexing channel", mlog.String("channel_id", channel.Id), mlog.Err(err)) mlog.Error("Encountered error indexing channel", mlog.String("channel_id", channel.Id), mlog.Err(err))
} }
}) })
@@ -617,7 +617,7 @@ func (a *App) RestoreChannel(channel *model.Channel, userId string) (*model.Chan
return nil, model.NewAppError("restoreChannel", "api.channel.restore_channel.restored.app_error", nil, "", http.StatusBadRequest) return nil, model.NewAppError("restoreChannel", "api.channel.restore_channel.restored.app_error", nil, "", http.StatusBadRequest)
} }
if err := a.Srv.Store.Channel().Restore(channel.Id, model.GetMillis()); err != nil { if err := a.Srv().Store.Channel().Restore(channel.Id, model.GetMillis()); err != nil {
return nil, err return nil, err
} }
channel.DeleteAt = 0 channel.DeleteAt = 0
@@ -627,7 +627,7 @@ func (a *App) RestoreChannel(channel *model.Channel, userId string) (*model.Chan
message.Add("channel_id", channel.Id) message.Add("channel_id", channel.Id)
a.Publish(message) a.Publish(message)
user, err := a.Srv.Store.User().Get(userId) user, err := a.Srv().Store.User().Get(userId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -772,7 +772,7 @@ func (a *App) UpdateChannelMemberRoles(channelId string, userId string, newRoles
member.ExplicitRoles = strings.Join(newExplicitRoles, " ") member.ExplicitRoles = strings.Join(newExplicitRoles, " ")
member, err = a.Srv.Store.Channel().UpdateMember(member) member, err = a.Srv().Store.Channel().UpdateMember(member)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -800,7 +800,7 @@ func (a *App) UpdateChannelMemberSchemeRoles(channelId string, userId string, is
member.ExplicitRoles = RemoveRoles([]string{model.CHANNEL_GUEST_ROLE_ID, model.CHANNEL_USER_ROLE_ID, model.CHANNEL_ADMIN_ROLE_ID}, member.ExplicitRoles) member.ExplicitRoles = RemoveRoles([]string{model.CHANNEL_GUEST_ROLE_ID, model.CHANNEL_USER_ROLE_ID, model.CHANNEL_ADMIN_ROLE_ID}, member.ExplicitRoles)
} }
member, err = a.Srv.Store.Channel().UpdateMember(member) member, err = a.Srv().Store.Channel().UpdateMember(member)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -842,7 +842,7 @@ func (a *App) UpdateChannelMemberNotifyProps(data map[string]string, channelId s
member.NotifyProps[model.IGNORE_CHANNEL_MENTIONS_NOTIFY_PROP] = ignoreChannelMentions member.NotifyProps[model.IGNORE_CHANNEL_MENTIONS_NOTIFY_PROP] = ignoreChannelMentions
} }
member, err = a.Srv.Store.Channel().UpdateMember(member) member, err = a.Srv().Store.Channel().UpdateMember(member)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -861,13 +861,13 @@ func (a *App) DeleteChannel(channel *model.Channel, userId string) *model.AppErr
ohc := make(chan store.StoreResult, 1) ohc := make(chan store.StoreResult, 1)
go func() { go func() {
webhooks, err := a.Srv.Store.Webhook().GetIncomingByChannel(channel.Id) webhooks, err := a.Srv().Store.Webhook().GetIncomingByChannel(channel.Id)
ihc <- store.StoreResult{Data: webhooks, Err: err} ihc <- store.StoreResult{Data: webhooks, Err: err}
close(ihc) close(ihc)
}() }()
go func() { go func() {
outgoingHooks, err := a.Srv.Store.Webhook().GetOutgoingByChannel(channel.Id, -1, -1) outgoingHooks, err := a.Srv().Store.Webhook().GetOutgoingByChannel(channel.Id, -1, -1)
ohc <- store.StoreResult{Data: outgoingHooks, Err: err} ohc <- store.StoreResult{Data: outgoingHooks, Err: err}
close(ohc) close(ohc)
}() }()
@@ -875,7 +875,7 @@ func (a *App) DeleteChannel(channel *model.Channel, userId string) *model.AppErr
var user *model.User var user *model.User
if userId != "" { if userId != "" {
var err *model.AppError var err *model.AppError
user, err = a.Srv.Store.User().Get(userId) user, err = a.Srv().Store.User().Get(userId)
if err != nil { if err != nil {
return err return err
} }
@@ -924,21 +924,21 @@ func (a *App) DeleteChannel(channel *model.Channel, userId string) *model.AppErr
now := model.GetMillis() now := model.GetMillis()
for _, hook := range incomingHooks { for _, hook := range incomingHooks {
if err := a.Srv.Store.Webhook().DeleteIncoming(hook.Id, now); err != nil { if err := a.Srv().Store.Webhook().DeleteIncoming(hook.Id, now); err != nil {
mlog.Error("Encountered error deleting incoming webhook", mlog.String("hook_id", hook.Id), mlog.Err(err)) mlog.Error("Encountered error deleting incoming webhook", mlog.String("hook_id", hook.Id), mlog.Err(err))
} }
a.InvalidateCacheForWebhook(hook.Id) a.InvalidateCacheForWebhook(hook.Id)
} }
for _, hook := range outgoingHooks { for _, hook := range outgoingHooks {
if err := a.Srv.Store.Webhook().DeleteOutgoing(hook.Id, now); err != nil { if err := a.Srv().Store.Webhook().DeleteOutgoing(hook.Id, now); err != nil {
mlog.Error("Encountered error deleting outgoing webhook", mlog.String("hook_id", hook.Id), mlog.Err(err)) mlog.Error("Encountered error deleting outgoing webhook", mlog.String("hook_id", hook.Id), mlog.Err(err))
} }
} }
deleteAt := model.GetMillis() deleteAt := model.GetMillis()
if err := a.Srv.Store.Channel().Delete(channel.Id, deleteAt); err != nil { if err := a.Srv().Store.Channel().Delete(channel.Id, deleteAt); err != nil {
return err return err
} }
a.InvalidateCacheForChannel(channel) a.InvalidateCacheForChannel(channel)
@@ -956,7 +956,7 @@ func (a *App) addUserToChannel(user *model.User, channel *model.Channel, teamMem
return nil, model.NewAppError("AddUserToChannel", "api.channel.add_user_to_channel.type.app_error", nil, "", http.StatusBadRequest) return nil, model.NewAppError("AddUserToChannel", "api.channel.add_user_to_channel.type.app_error", nil, "", http.StatusBadRequest)
} }
channelMember, err := a.Srv.Store.Channel().GetMember(channel.Id, user.Id) channelMember, err := a.Srv().Store.Channel().GetMember(channel.Id, user.Id)
if err != nil { if err != nil {
if err.Id != store.MISSING_CHANNEL_MEMBER_ERROR { if err.Id != store.MISSING_CHANNEL_MEMBER_ERROR {
return nil, err return nil, err
@@ -992,13 +992,13 @@ func (a *App) addUserToChannel(user *model.User, channel *model.Channel, teamMem
newMember.SchemeAdmin = userShouldBeAdmin newMember.SchemeAdmin = userShouldBeAdmin
} }
if _, err = a.Srv.Store.Channel().SaveMember(newMember); err != nil { if _, err = a.Srv().Store.Channel().SaveMember(newMember); err != nil {
mlog.Error("Failed to add member", mlog.String("user_id", user.Id), mlog.String("channel_id", channel.Id), mlog.Err(err)) mlog.Error("Failed to add member", mlog.String("user_id", user.Id), mlog.String("channel_id", channel.Id), mlog.Err(err))
return nil, model.NewAppError("AddUserToChannel", "api.channel.add_user.to.channel.failed.app_error", nil, "", http.StatusInternalServerError) return nil, model.NewAppError("AddUserToChannel", "api.channel.add_user.to.channel.failed.app_error", nil, "", http.StatusInternalServerError)
} }
a.WaitForChannelMembership(channel.Id, user.Id) a.WaitForChannelMembership(channel.Id, user.Id)
if err = a.Srv.Store.ChannelMemberHistory().LogJoinEvent(user.Id, channel.Id, model.GetMillis()); err != nil { if err = a.Srv().Store.ChannelMemberHistory().LogJoinEvent(user.Id, channel.Id, model.GetMillis()); err != nil {
mlog.Error("Failed to update ChannelMemberHistory table", mlog.Err(err)) mlog.Error("Failed to update ChannelMemberHistory table", mlog.Err(err))
return nil, err return nil, err
} }
@@ -1010,7 +1010,7 @@ func (a *App) addUserToChannel(user *model.User, channel *model.Channel, teamMem
} }
func (a *App) AddUserToChannel(user *model.User, channel *model.Channel) (*model.ChannelMember, *model.AppError) { func (a *App) AddUserToChannel(user *model.User, channel *model.Channel) (*model.ChannelMember, *model.AppError) {
teamMember, err := a.Srv.Store.Team().GetMember(channel.TeamId, user.Id) teamMember, err := a.Srv().Store.Team().GetMember(channel.TeamId, user.Id)
if err != nil { if err != nil {
return nil, err return nil, err
@@ -1033,7 +1033,7 @@ func (a *App) AddUserToChannel(user *model.User, channel *model.Channel) (*model
} }
func (a *App) AddChannelMember(userId string, channel *model.Channel, userRequestorId string, postRootId string) (*model.ChannelMember, *model.AppError) { func (a *App) AddChannelMember(userId string, channel *model.Channel, userRequestorId string, postRootId string) (*model.ChannelMember, *model.AppError) {
if member, err := a.Srv.Store.Channel().GetMember(channel.Id, userId); err != nil { if member, err := a.Srv().Store.Channel().GetMember(channel.Id, userId); err != nil {
if err.Id != store.MISSING_CHANNEL_MEMBER_ERROR { if err.Id != store.MISSING_CHANNEL_MEMBER_ERROR {
return nil, err return nil, err
} }
@@ -1061,7 +1061,7 @@ func (a *App) AddChannelMember(userId string, channel *model.Channel, userReques
} }
if pluginsEnvironment := a.GetPluginsEnvironment(); pluginsEnvironment != nil { if pluginsEnvironment := a.GetPluginsEnvironment(); pluginsEnvironment != nil {
a.Srv.Go(func() { a.Srv().Go(func() {
pluginContext := a.PluginContext() pluginContext := a.PluginContext()
pluginsEnvironment.RunMultiPluginHook(func(hooks plugin.Hooks) bool { pluginsEnvironment.RunMultiPluginHook(func(hooks plugin.Hooks) bool {
hooks.UserHasJoinedChannel(pluginContext, cm, userRequestor) hooks.UserHasJoinedChannel(pluginContext, cm, userRequestor)
@@ -1071,7 +1071,7 @@ func (a *App) AddChannelMember(userId string, channel *model.Channel, userReques
} }
if a.IsESIndexingEnabled() { if a.IsESIndexingEnabled() {
a.Srv.Go(func() { a.Srv().Go(func() {
if err := a.indexUser(user); err != nil { if err := a.indexUser(user); err != nil {
mlog.Error("Encountered error indexing user", mlog.String("user_id", user.Id), mlog.Err(err)) mlog.Error("Encountered error indexing user", mlog.String("user_id", user.Id), mlog.Err(err))
} }
@@ -1081,7 +1081,7 @@ func (a *App) AddChannelMember(userId string, channel *model.Channel, userReques
if userRequestorId == "" || userId == userRequestorId { if userRequestorId == "" || userId == userRequestorId {
a.postJoinChannelMessage(user, channel) a.postJoinChannelMessage(user, channel)
} else { } else {
a.Srv.Go(func() { a.Srv().Go(func() {
a.PostAddToChannelMessage(userRequestor, user, channel, postRootId) a.PostAddToChannelMessage(userRequestor, user, channel, postRootId)
}) })
} }
@@ -1092,7 +1092,7 @@ func (a *App) AddChannelMember(userId string, channel *model.Channel, userReques
func (a *App) AddDirectChannels(teamId string, user *model.User) *model.AppError { func (a *App) AddDirectChannels(teamId string, user *model.User) *model.AppError {
var profiles []*model.User var profiles []*model.User
options := &model.UserGetOptions{InTeamId: teamId, Page: 0, PerPage: 100} options := &model.UserGetOptions{InTeamId: teamId, Page: 0, PerPage: 100}
profiles, err := a.Srv.Store.User().GetProfiles(options) profiles, err := a.Srv().Store.User().GetProfiles(options)
if err != nil { if err != nil {
return model.NewAppError("AddDirectChannels", "api.user.add_direct_channels_and_forget.failed.error", map[string]interface{}{"UserId": user.Id, "TeamId": teamId, "Error": err.Error()}, "", http.StatusInternalServerError) return model.NewAppError("AddDirectChannels", "api.user.add_direct_channels_and_forget.failed.error", map[string]interface{}{"UserId": user.Id, "TeamId": teamId, "Error": err.Error()}, "", http.StatusInternalServerError)
} }
@@ -1118,7 +1118,7 @@ func (a *App) AddDirectChannels(teamId string, user *model.User) *model.AppError
} }
} }
if err := a.Srv.Store.Preference().Save(&preferences); err != nil { if err := a.Srv().Store.Preference().Save(&preferences); err != nil {
return model.NewAppError("AddDirectChannels", "api.user.add_direct_channels_and_forget.failed.error", map[string]interface{}{"UserId": user.Id, "TeamId": teamId, "Error": err.Error()}, "", http.StatusInternalServerError) return model.NewAppError("AddDirectChannels", "api.user.add_direct_channels_and_forget.failed.error", map[string]interface{}{"UserId": user.Id, "TeamId": teamId, "Error": err.Error()}, "", http.StatusInternalServerError)
} }
@@ -1126,7 +1126,7 @@ func (a *App) AddDirectChannels(teamId string, user *model.User) *model.AppError
} }
func (a *App) PostUpdateChannelHeaderMessage(userId string, channel *model.Channel, oldChannelHeader, newChannelHeader string) *model.AppError { func (a *App) PostUpdateChannelHeaderMessage(userId string, channel *model.Channel, oldChannelHeader, newChannelHeader string) *model.AppError {
user, err := a.Srv.Store.User().Get(userId) user, err := a.Srv().Store.User().Get(userId)
if err != nil { if err != nil {
return model.NewAppError("PostUpdateChannelHeaderMessage", "api.channel.post_update_channel_header_message_and_forget.retrieve_user.error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("PostUpdateChannelHeaderMessage", "api.channel.post_update_channel_header_message_and_forget.retrieve_user.error", nil, err.Error(), http.StatusBadRequest)
} }
@@ -1160,7 +1160,7 @@ func (a *App) PostUpdateChannelHeaderMessage(userId string, channel *model.Chann
} }
func (a *App) PostUpdateChannelPurposeMessage(userId string, channel *model.Channel, oldChannelPurpose string, newChannelPurpose string) *model.AppError { func (a *App) PostUpdateChannelPurposeMessage(userId string, channel *model.Channel, oldChannelPurpose string, newChannelPurpose string) *model.AppError {
user, err := a.Srv.Store.User().Get(userId) user, err := a.Srv().Store.User().Get(userId)
if err != nil { if err != nil {
return model.NewAppError("PostUpdateChannelPurposeMessage", "app.channel.post_update_channel_purpose_message.retrieve_user.error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("PostUpdateChannelPurposeMessage", "app.channel.post_update_channel_purpose_message.retrieve_user.error", nil, err.Error(), http.StatusBadRequest)
} }
@@ -1193,7 +1193,7 @@ func (a *App) PostUpdateChannelPurposeMessage(userId string, channel *model.Chan
} }
func (a *App) PostUpdateChannelDisplayNameMessage(userId string, channel *model.Channel, oldChannelDisplayName, newChannelDisplayName string) *model.AppError { func (a *App) PostUpdateChannelDisplayNameMessage(userId string, channel *model.Channel, oldChannelDisplayName, newChannelDisplayName string) *model.AppError {
user, err := a.Srv.Store.User().Get(userId) user, err := a.Srv().Store.User().Get(userId)
if err != nil { if err != nil {
return model.NewAppError("PostUpdateChannelDisplayNameMessage", "api.channel.post_update_channel_displayname_message_and_forget.retrieve_user.error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("PostUpdateChannelDisplayNameMessage", "api.channel.post_update_channel_displayname_message_and_forget.retrieve_user.error", nil, err.Error(), http.StatusBadRequest)
} }
@@ -1220,7 +1220,7 @@ func (a *App) PostUpdateChannelDisplayNameMessage(userId string, channel *model.
} }
func (a *App) GetChannel(channelId string) (*model.Channel, *model.AppError) { func (a *App) GetChannel(channelId string) (*model.Channel, *model.AppError) {
channel, errCh := a.Srv.Store.Channel().Get(channelId, true) channel, errCh := a.Srv().Store.Channel().Get(channelId, true)
if errCh != nil { if errCh != nil {
if errCh.Id == "store.sql_channel.get.existing.app_error" { if errCh.Id == "store.sql_channel.get.existing.app_error" {
errCh.StatusCode = http.StatusNotFound errCh.StatusCode = http.StatusNotFound
@@ -1237,9 +1237,9 @@ func (a *App) GetChannelByName(channelName, teamId string, includeDeleted bool)
var err *model.AppError var err *model.AppError
if includeDeleted { if includeDeleted {
channel, err = a.Srv.Store.Channel().GetByNameIncludeDeleted(teamId, channelName, false) channel, err = a.Srv().Store.Channel().GetByNameIncludeDeleted(teamId, channelName, false)
} else { } else {
channel, err = a.Srv.Store.Channel().GetByName(teamId, channelName, false) channel, err = a.Srv().Store.Channel().GetByName(teamId, channelName, false)
} }
if err != nil && err.Id == "store.sql_channel.get_by_name.missing.app_error" { if err != nil && err.Id == "store.sql_channel.get_by_name.missing.app_error" {
@@ -1256,7 +1256,7 @@ func (a *App) GetChannelByName(channelName, teamId string, includeDeleted bool)
} }
func (a *App) GetChannelsByNames(channelNames []string, teamId string) ([]*model.Channel, *model.AppError) { func (a *App) GetChannelsByNames(channelNames []string, teamId string) ([]*model.Channel, *model.AppError) {
channels, err := a.Srv.Store.Channel().GetByNames(teamId, channelNames, true) channels, err := a.Srv().Store.Channel().GetByNames(teamId, channelNames, true)
if err != nil { if err != nil {
if err.Id == "store.sql_channel.get_by_name.missing.app_error" { if err.Id == "store.sql_channel.get_by_name.missing.app_error" {
err.StatusCode = http.StatusNotFound err.StatusCode = http.StatusNotFound
@@ -1271,7 +1271,7 @@ func (a *App) GetChannelsByNames(channelNames []string, teamId string) ([]*model
func (a *App) GetChannelByNameForTeamName(channelName, teamName string, includeDeleted bool) (*model.Channel, *model.AppError) { func (a *App) GetChannelByNameForTeamName(channelName, teamName string, includeDeleted bool) (*model.Channel, *model.AppError) {
var team *model.Team var team *model.Team
team, err := a.Srv.Store.Team().GetByName(teamName) team, err := a.Srv().Store.Team().GetByName(teamName)
if err != nil { if err != nil {
err.StatusCode = http.StatusNotFound err.StatusCode = http.StatusNotFound
return nil, err return nil, err
@@ -1280,9 +1280,9 @@ func (a *App) GetChannelByNameForTeamName(channelName, teamName string, includeD
var result *model.Channel var result *model.Channel
if includeDeleted { if includeDeleted {
result, err = a.Srv.Store.Channel().GetByNameIncludeDeleted(team.Id, channelName, false) result, err = a.Srv().Store.Channel().GetByNameIncludeDeleted(team.Id, channelName, false)
} else { } else {
result, err = a.Srv.Store.Channel().GetByName(team.Id, channelName, false) result, err = a.Srv().Store.Channel().GetByName(team.Id, channelName, false)
} }
if err != nil && err.Id == "store.sql_channel.get_by_name.missing.app_error" { if err != nil && err.Id == "store.sql_channel.get_by_name.missing.app_error" {
@@ -1299,7 +1299,7 @@ func (a *App) GetChannelByNameForTeamName(channelName, teamName string, includeD
} }
func (a *App) GetChannelsForUser(teamId string, userId string, includeDeleted bool) (*model.ChannelList, *model.AppError) { func (a *App) GetChannelsForUser(teamId string, userId string, includeDeleted bool) (*model.ChannelList, *model.AppError) {
return a.Srv.Store.Channel().GetChannels(teamId, userId, includeDeleted) return a.Srv().Store.Channel().GetChannels(teamId, userId, includeDeleted)
} }
func (a *App) GetAllChannels(page, perPage int, opts model.ChannelSearchOpts) (*model.ChannelListWithTeamData, *model.AppError) { func (a *App) GetAllChannels(page, perPage int, opts model.ChannelSearchOpts) (*model.ChannelListWithTeamData, *model.AppError) {
@@ -1311,7 +1311,7 @@ func (a *App) GetAllChannels(page, perPage int, opts model.ChannelSearchOpts) (*
NotAssociatedToGroup: opts.NotAssociatedToGroup, NotAssociatedToGroup: opts.NotAssociatedToGroup,
IncludeDeleted: opts.IncludeDeleted, IncludeDeleted: opts.IncludeDeleted,
} }
return a.Srv.Store.Channel().GetAllChannels(page*perPage, perPage, storeOpts) return a.Srv().Store.Channel().GetAllChannels(page*perPage, perPage, storeOpts)
} }
func (a *App) GetAllChannelsCount(opts model.ChannelSearchOpts) (int64, *model.AppError) { func (a *App) GetAllChannelsCount(opts model.ChannelSearchOpts) (int64, *model.AppError) {
@@ -1323,35 +1323,35 @@ func (a *App) GetAllChannelsCount(opts model.ChannelSearchOpts) (int64, *model.A
NotAssociatedToGroup: opts.NotAssociatedToGroup, NotAssociatedToGroup: opts.NotAssociatedToGroup,
IncludeDeleted: opts.IncludeDeleted, IncludeDeleted: opts.IncludeDeleted,
} }
return a.Srv.Store.Channel().GetAllChannelsCount(storeOpts) return a.Srv().Store.Channel().GetAllChannelsCount(storeOpts)
} }
func (a *App) GetDeletedChannels(teamId string, offset int, limit int, userId string) (*model.ChannelList, *model.AppError) { func (a *App) GetDeletedChannels(teamId string, offset int, limit int, userId string) (*model.ChannelList, *model.AppError) {
return a.Srv.Store.Channel().GetDeleted(teamId, offset, limit, userId) return a.Srv().Store.Channel().GetDeleted(teamId, offset, limit, userId)
} }
func (a *App) GetChannelsUserNotIn(teamId string, userId string, offset int, limit int) (*model.ChannelList, *model.AppError) { func (a *App) GetChannelsUserNotIn(teamId string, userId string, offset int, limit int) (*model.ChannelList, *model.AppError) {
return a.Srv.Store.Channel().GetMoreChannels(teamId, userId, offset, limit) return a.Srv().Store.Channel().GetMoreChannels(teamId, userId, offset, limit)
} }
func (a *App) GetPublicChannelsByIdsForTeam(teamId string, channelIds []string) (*model.ChannelList, *model.AppError) { func (a *App) GetPublicChannelsByIdsForTeam(teamId string, channelIds []string) (*model.ChannelList, *model.AppError) {
return a.Srv.Store.Channel().GetPublicChannelsByIdsForTeam(teamId, channelIds) return a.Srv().Store.Channel().GetPublicChannelsByIdsForTeam(teamId, channelIds)
} }
func (a *App) GetPublicChannelsForTeam(teamId string, offset int, limit int) (*model.ChannelList, *model.AppError) { func (a *App) GetPublicChannelsForTeam(teamId string, offset int, limit int) (*model.ChannelList, *model.AppError) {
return a.Srv.Store.Channel().GetPublicChannelsForTeam(teamId, offset, limit) return a.Srv().Store.Channel().GetPublicChannelsForTeam(teamId, offset, limit)
} }
func (a *App) GetChannelMember(channelId string, userId string) (*model.ChannelMember, *model.AppError) { func (a *App) GetChannelMember(channelId string, userId string) (*model.ChannelMember, *model.AppError) {
return a.Srv.Store.Channel().GetMember(channelId, userId) return a.Srv().Store.Channel().GetMember(channelId, userId)
} }
func (a *App) GetChannelMembersPage(channelId string, page, perPage int) (*model.ChannelMembers, *model.AppError) { func (a *App) GetChannelMembersPage(channelId string, page, perPage int) (*model.ChannelMembers, *model.AppError) {
return a.Srv.Store.Channel().GetMembers(channelId, page*perPage, perPage) return a.Srv().Store.Channel().GetMembers(channelId, page*perPage, perPage)
} }
func (a *App) GetChannelMembersTimezones(channelId string) ([]string, *model.AppError) { func (a *App) GetChannelMembersTimezones(channelId string) ([]string, *model.AppError) {
membersTimezones, err := a.Srv.Store.Channel().GetChannelMembersTimezones(channelId) membersTimezones, err := a.Srv().Store.Channel().GetChannelMembersTimezones(channelId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -1368,15 +1368,15 @@ func (a *App) GetChannelMembersTimezones(channelId string) ([]string, *model.App
} }
func (a *App) GetChannelMembersByIds(channelId string, userIds []string) (*model.ChannelMembers, *model.AppError) { func (a *App) GetChannelMembersByIds(channelId string, userIds []string) (*model.ChannelMembers, *model.AppError) {
return a.Srv.Store.Channel().GetMembersByIds(channelId, userIds) return a.Srv().Store.Channel().GetMembersByIds(channelId, userIds)
} }
func (a *App) GetChannelMembersForUser(teamId string, userId string) (*model.ChannelMembers, *model.AppError) { func (a *App) GetChannelMembersForUser(teamId string, userId string) (*model.ChannelMembers, *model.AppError) {
return a.Srv.Store.Channel().GetMembersForUser(teamId, userId) return a.Srv().Store.Channel().GetMembersForUser(teamId, userId)
} }
func (a *App) GetChannelMembersForUserWithPagination(teamId, userId string, page, perPage int) ([]*model.ChannelMember, *model.AppError) { func (a *App) GetChannelMembersForUserWithPagination(teamId, userId string, page, perPage int) ([]*model.ChannelMember, *model.AppError) {
m, err := a.Srv.Store.Channel().GetMembersForUserWithPagination(teamId, userId, page, perPage) m, err := a.Srv().Store.Channel().GetMembersForUserWithPagination(teamId, userId, page, perPage)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -1391,23 +1391,23 @@ func (a *App) GetChannelMembersForUserWithPagination(teamId, userId string, page
} }
func (a *App) GetChannelMemberCount(channelId string) (int64, *model.AppError) { func (a *App) GetChannelMemberCount(channelId string) (int64, *model.AppError) {
return a.Srv.Store.Channel().GetMemberCount(channelId, true) return a.Srv().Store.Channel().GetMemberCount(channelId, true)
} }
func (a *App) GetChannelGuestCount(channelId string) (int64, *model.AppError) { func (a *App) GetChannelGuestCount(channelId string) (int64, *model.AppError) {
return a.Srv.Store.Channel().GetGuestCount(channelId, true) return a.Srv().Store.Channel().GetGuestCount(channelId, true)
} }
func (a *App) GetChannelPinnedPostCount(channelId string) (int64, *model.AppError) { func (a *App) GetChannelPinnedPostCount(channelId string) (int64, *model.AppError) {
return a.Srv.Store.Channel().GetPinnedPostCount(channelId, true) return a.Srv().Store.Channel().GetPinnedPostCount(channelId, true)
} }
func (a *App) GetChannelCounts(teamId string, userId string) (*model.ChannelCounts, *model.AppError) { func (a *App) GetChannelCounts(teamId string, userId string) (*model.ChannelCounts, *model.AppError) {
return a.Srv.Store.Channel().GetChannelCounts(teamId, userId) return a.Srv().Store.Channel().GetChannelCounts(teamId, userId)
} }
func (a *App) GetChannelUnread(channelId, userId string) (*model.ChannelUnread, *model.AppError) { func (a *App) GetChannelUnread(channelId, userId string) (*model.ChannelUnread, *model.AppError) {
channelUnread, err := a.Srv.Store.Channel().GetChannelUnread(channelId, userId) channelUnread, err := a.Srv().Store.Channel().GetChannelUnread(channelId, userId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -1423,12 +1423,12 @@ func (a *App) JoinChannel(channel *model.Channel, userId string) *model.AppError
userChan := make(chan store.StoreResult, 1) userChan := make(chan store.StoreResult, 1)
memberChan := make(chan store.StoreResult, 1) memberChan := make(chan store.StoreResult, 1)
go func() { go func() {
user, err := a.Srv.Store.User().Get(userId) user, err := a.Srv().Store.User().Get(userId)
userChan <- store.StoreResult{Data: user, Err: err} userChan <- store.StoreResult{Data: user, Err: err}
close(userChan) close(userChan)
}() }()
go func() { go func() {
member, err := a.Srv.Store.Channel().GetMember(channel.Id, userId) member, err := a.Srv().Store.Channel().GetMember(channel.Id, userId)
memberChan <- store.StoreResult{Data: member, Err: err} memberChan <- store.StoreResult{Data: member, Err: err}
close(memberChan) close(memberChan)
}() }()
@@ -1456,7 +1456,7 @@ func (a *App) JoinChannel(channel *model.Channel, userId string) *model.AppError
} }
if pluginsEnvironment := a.GetPluginsEnvironment(); pluginsEnvironment != nil { if pluginsEnvironment := a.GetPluginsEnvironment(); pluginsEnvironment != nil {
a.Srv.Go(func() { a.Srv().Go(func() {
pluginContext := a.PluginContext() pluginContext := a.PluginContext()
pluginsEnvironment.RunMultiPluginHook(func(hooks plugin.Hooks) bool { pluginsEnvironment.RunMultiPluginHook(func(hooks plugin.Hooks) bool {
hooks.UserHasJoinedChannel(pluginContext, cm, nil) hooks.UserHasJoinedChannel(pluginContext, cm, nil)
@@ -1466,7 +1466,7 @@ func (a *App) JoinChannel(channel *model.Channel, userId string) *model.AppError
} }
if a.IsESIndexingEnabled() { if a.IsESIndexingEnabled() {
a.Srv.Go(func() { a.Srv().Go(func() {
if err := a.indexUser(user); err != nil { if err := a.indexUser(user); err != nil {
mlog.Error("Encountered error indexing user", mlog.String("user_id", user.Id), mlog.Err(err)) mlog.Error("Encountered error indexing user", mlog.String("user_id", user.Id), mlog.Err(err))
} }
@@ -1527,21 +1527,21 @@ func (a *App) postJoinTeamMessage(user *model.User, channel *model.Channel) *mod
func (a *App) LeaveChannel(channelId string, userId string) *model.AppError { func (a *App) LeaveChannel(channelId string, userId string) *model.AppError {
sc := make(chan store.StoreResult, 1) sc := make(chan store.StoreResult, 1)
go func() { go func() {
channel, err := a.Srv.Store.Channel().Get(channelId, true) channel, err := a.Srv().Store.Channel().Get(channelId, true)
sc <- store.StoreResult{Data: channel, Err: err} sc <- store.StoreResult{Data: channel, Err: err}
close(sc) close(sc)
}() }()
uc := make(chan store.StoreResult, 1) uc := make(chan store.StoreResult, 1)
go func() { go func() {
user, err := a.Srv.Store.User().Get(userId) user, err := a.Srv().Store.User().Get(userId)
uc <- store.StoreResult{Data: user, Err: err} uc <- store.StoreResult{Data: user, Err: err}
close(uc) close(uc)
}() }()
mcc := make(chan store.StoreResult, 1) mcc := make(chan store.StoreResult, 1)
go func() { go func() {
count, err := a.Srv.Store.Channel().GetMemberCount(channelId, false) count, err := a.Srv().Store.Channel().GetMemberCount(channelId, false)
mcc <- store.StoreResult{Data: count, Err: err} mcc <- store.StoreResult{Data: count, Err: err}
close(mcc) close(mcc)
}() }()
@@ -1581,7 +1581,7 @@ func (a *App) LeaveChannel(channelId string, userId string) *model.AppError {
return nil return nil
} }
a.Srv.Go(func() { a.Srv().Go(func() {
a.postLeaveChannelMessage(user, channel) a.postLeaveChannelMessage(user, channel)
}) })
@@ -1684,7 +1684,7 @@ func (a *App) postRemoveFromChannelMessage(removerUserId string, removedUser *mo
} }
func (a *App) removeUserFromChannel(userIdToRemove string, removerUserId string, channel *model.Channel) *model.AppError { func (a *App) removeUserFromChannel(userIdToRemove string, removerUserId string, channel *model.Channel) *model.AppError {
user, err := a.Srv.Store.User().Get(userIdToRemove) user, err := a.Srv().Store.User().Get(userIdToRemove)
if err != nil { if err != nil {
return err return err
} }
@@ -1711,10 +1711,10 @@ func (a *App) removeUserFromChannel(userIdToRemove string, removerUserId string,
return err return err
} }
if err := a.Srv.Store.Channel().RemoveMember(channel.Id, userIdToRemove); err != nil { if err := a.Srv().Store.Channel().RemoveMember(channel.Id, userIdToRemove); err != nil {
return err return err
} }
if err := a.Srv.Store.ChannelMemberHistory().LogLeaveEvent(userIdToRemove, channel.Id, model.GetMillis()); err != nil { if err := a.Srv().Store.ChannelMemberHistory().LogLeaveEvent(userIdToRemove, channel.Id, model.GetMillis()); err != nil {
return err return err
} }
@@ -1744,7 +1744,7 @@ func (a *App) removeUserFromChannel(userIdToRemove string, removerUserId string,
actorUser, _ = a.GetUser(removerUserId) actorUser, _ = a.GetUser(removerUserId)
} }
a.Srv.Go(func() { a.Srv().Go(func() {
pluginContext := a.PluginContext() pluginContext := a.PluginContext()
pluginsEnvironment.RunMultiPluginHook(func(hooks plugin.Hooks) bool { pluginsEnvironment.RunMultiPluginHook(func(hooks plugin.Hooks) bool {
hooks.UserHasLeftChannel(pluginContext, cm, actorUser) hooks.UserHasLeftChannel(pluginContext, cm, actorUser)
@@ -1754,7 +1754,7 @@ func (a *App) removeUserFromChannel(userIdToRemove string, removerUserId string,
} }
if a.IsESIndexingEnabled() { if a.IsESIndexingEnabled() {
a.Srv.Go(func() { a.Srv().Go(func() {
if err := a.indexUserFromId(userIdToRemove); err != nil { if err := a.indexUserFromId(userIdToRemove); err != nil {
mlog.Error("Encountered error indexing user", mlog.String("user_id", userIdToRemove), mlog.Err(err)) mlog.Error("Encountered error indexing user", mlog.String("user_id", userIdToRemove), mlog.Err(err))
} }
@@ -1790,7 +1790,7 @@ func (a *App) RemoveUserFromChannel(userIdToRemove string, removerUserId string,
if userIdToRemove == removerUserId { if userIdToRemove == removerUserId {
a.postLeaveChannelMessage(user, channel) a.postLeaveChannelMessage(user, channel)
} else { } else {
a.Srv.Go(func() { a.Srv().Go(func() {
a.postRemoveFromChannelMessage(removerUserId, user, channel) a.postRemoveFromChannelMessage(removerUserId, user, channel)
}) })
} }
@@ -1800,7 +1800,7 @@ func (a *App) RemoveUserFromChannel(userIdToRemove string, removerUserId string,
func (a *App) GetNumberOfChannelsOnTeam(teamId string) (int, *model.AppError) { func (a *App) GetNumberOfChannelsOnTeam(teamId string) (int, *model.AppError) {
// Get total number of channels on current team // Get total number of channels on current team
list, err := a.Srv.Store.Channel().GetTeamChannels(teamId) list, err := a.Srv().Store.Channel().GetTeamChannels(teamId)
if err != nil { if err != nil {
return 0, err return 0, err
} }
@@ -1833,7 +1833,7 @@ func (a *App) SetActiveChannel(userId string, channelId string) *model.AppError
} }
func (a *App) UpdateChannelLastViewedAt(channelIds []string, userId string) *model.AppError { func (a *App) UpdateChannelLastViewedAt(channelIds []string, userId string) *model.AppError {
if _, err := a.Srv.Store.Channel().UpdateLastViewedAt(channelIds, userId); err != nil { if _, err := a.Srv().Store.Channel().UpdateLastViewedAt(channelIds, userId); err != nil {
return err return err
} }
@@ -1865,7 +1865,7 @@ func (a *App) MarkChannelAsUnreadFromPost(postID string, userID string) (*model.
return nil, err return nil, err
} }
channelUnread, updateErr := a.Srv.Store.Channel().UpdateLastViewedAtPost(post, userID, unreadMentions) channelUnread, updateErr := a.Srv().Store.Channel().UpdateLastViewedAtPost(post, userID, unreadMentions)
if updateErr != nil { if updateErr != nil {
return channelUnread, updateErr return channelUnread, updateErr
} }
@@ -1883,14 +1883,14 @@ func (a *App) MarkChannelAsUnreadFromPost(postID string, userID string) (*model.
} }
func (a *App) esAutocompleteChannels(teamId, term string, includeDeleted bool) (*model.ChannelList, *model.AppError) { func (a *App) esAutocompleteChannels(teamId, term string, includeDeleted bool) (*model.ChannelList, *model.AppError) {
channelIds, err := a.Elasticsearch.SearchChannels(teamId, term) channelIds, err := a.Elasticsearch().SearchChannels(teamId, term)
if err != nil { if err != nil {
return nil, err return nil, err
} }
channelList := model.ChannelList{} channelList := model.ChannelList{}
if len(channelIds) > 0 { if len(channelIds) > 0 {
channels, err := a.Srv.Store.Channel().GetChannelsByIds(channelIds) channels, err := a.Srv().Store.Channel().GetChannelsByIds(channelIds)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -1919,7 +1919,7 @@ func (a *App) AutocompleteChannels(teamId string, term string) (*model.ChannelLi
} }
if !a.IsESAutocompletionEnabled() || err != nil { if !a.IsESAutocompletionEnabled() || err != nil {
channelList, err = a.Srv.Store.Channel().AutocompleteInTeam(teamId, term, includeDeleted) channelList, err = a.Srv().Store.Channel().AutocompleteInTeam(teamId, term, includeDeleted)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -1933,7 +1933,7 @@ func (a *App) AutocompleteChannelsForSearch(teamId string, userId string, term s
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
return a.Srv.Store.Channel().AutocompleteInTeamForSearch(teamId, userId, term, includeDeleted) return a.Srv().Store.Channel().AutocompleteInTeamForSearch(teamId, userId, term, includeDeleted)
} }
// SearchAllChannels returns a list of channels, the total count of the results of the search (if the paginate search option is true), and an error. // SearchAllChannels returns a list of channels, the total count of the results of the search (if the paginate search option is true), and an error.
@@ -1952,7 +1952,7 @@ func (a *App) SearchAllChannels(term string, opts model.ChannelSearchOpts) (*mod
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
return a.Srv.Store.Channel().SearchAllChannels(term, storeOpts) return a.Srv().Store.Channel().SearchAllChannels(term, storeOpts)
} }
func (a *App) SearchChannels(teamId string, term string) (*model.ChannelList, *model.AppError) { func (a *App) SearchChannels(teamId string, term string) (*model.ChannelList, *model.AppError) {
@@ -1960,13 +1960,13 @@ func (a *App) SearchChannels(teamId string, term string) (*model.ChannelList, *m
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
return a.Srv.Store.Channel().SearchInTeam(teamId, term, includeDeleted) return a.Srv().Store.Channel().SearchInTeam(teamId, term, includeDeleted)
} }
func (a *App) SearchArchivedChannels(teamId string, term string, userId string) (*model.ChannelList, *model.AppError) { func (a *App) SearchArchivedChannels(teamId string, term string, userId string) (*model.ChannelList, *model.AppError) {
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
return a.Srv.Store.Channel().SearchArchivedInTeam(teamId, term, userId) return a.Srv().Store.Channel().SearchArchivedInTeam(teamId, term, userId)
} }
func (a *App) SearchChannelsForUser(userId, teamId, term string) (*model.ChannelList, *model.AppError) { func (a *App) SearchChannelsForUser(userId, teamId, term string) (*model.ChannelList, *model.AppError) {
@@ -1974,7 +1974,7 @@ func (a *App) SearchChannelsForUser(userId, teamId, term string) (*model.Channel
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
return a.Srv.Store.Channel().SearchForUserInTeam(userId, teamId, term, includeDeleted) return a.Srv().Store.Channel().SearchForUserInTeam(userId, teamId, term, includeDeleted)
} }
func (a *App) SearchGroupChannels(userId, term string) (*model.ChannelList, *model.AppError) { func (a *App) SearchGroupChannels(userId, term string) (*model.ChannelList, *model.AppError) {
@@ -1982,7 +1982,7 @@ func (a *App) SearchGroupChannels(userId, term string) (*model.ChannelList, *mod
return &model.ChannelList{}, nil return &model.ChannelList{}, nil
} }
channelList, err := a.Srv.Store.Channel().SearchGroupChannels(userId, term) channelList, err := a.Srv().Store.Channel().SearchGroupChannels(userId, term)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -1991,7 +1991,7 @@ func (a *App) SearchGroupChannels(userId, term string) (*model.ChannelList, *mod
func (a *App) SearchChannelsUserNotIn(teamId string, userId string, term string) (*model.ChannelList, *model.AppError) { func (a *App) SearchChannelsUserNotIn(teamId string, userId string, term string) (*model.ChannelList, *model.AppError) {
term = strings.TrimSpace(term) term = strings.TrimSpace(term)
return a.Srv.Store.Channel().SearchMore(userId, teamId, term) return a.Srv().Store.Channel().SearchMore(userId, teamId, term)
} }
func (a *App) MarkChannelsAsViewed(channelIds []string, userId string, currentSessionId string) (map[string]int64, *model.AppError) { func (a *App) MarkChannelsAsViewed(channelIds []string, userId string, currentSessionId string) (map[string]int64, *model.AppError) {
@@ -1999,13 +1999,13 @@ func (a *App) MarkChannelsAsViewed(channelIds []string, userId string, currentSe
channelsToClearPushNotifications := []string{} channelsToClearPushNotifications := []string{}
if *a.Config().EmailSettings.SendPushNotifications { if *a.Config().EmailSettings.SendPushNotifications {
for _, channelId := range channelIds { for _, channelId := range channelIds {
channel, errCh := a.Srv.Store.Channel().Get(channelId, true) channel, errCh := a.Srv().Store.Channel().Get(channelId, true)
if errCh != nil { if errCh != nil {
mlog.Warn("Failed to get channel", mlog.Err(errCh)) mlog.Warn("Failed to get channel", mlog.Err(errCh))
continue continue
} }
member, err := a.Srv.Store.Channel().GetMember(channelId, userId) member, err := a.Srv().Store.Channel().GetMember(channelId, userId)
if err != nil { if err != nil {
mlog.Warn("Failed to get membership", mlog.Err(err)) mlog.Warn("Failed to get membership", mlog.Err(err))
continue continue
@@ -2017,13 +2017,13 @@ func (a *App) MarkChannelsAsViewed(channelIds []string, userId string, currentSe
notify = user.NotifyProps[model.PUSH_NOTIFY_PROP] notify = user.NotifyProps[model.PUSH_NOTIFY_PROP]
} }
if notify == model.USER_NOTIFY_ALL { if notify == model.USER_NOTIFY_ALL {
if count, err := a.Srv.Store.User().GetAnyUnreadPostCountForChannel(userId, channelId); err == nil { if count, err := a.Srv().Store.User().GetAnyUnreadPostCountForChannel(userId, channelId); err == nil {
if count > 0 { if count > 0 {
channelsToClearPushNotifications = append(channelsToClearPushNotifications, channelId) channelsToClearPushNotifications = append(channelsToClearPushNotifications, channelId)
} }
} }
} else if notify == model.USER_NOTIFY_MENTION || channel.Type == model.CHANNEL_DIRECT { } else if notify == model.USER_NOTIFY_MENTION || channel.Type == model.CHANNEL_DIRECT {
if count, err := a.Srv.Store.User().GetUnreadCountForChannel(userId, channelId); err == nil { if count, err := a.Srv().Store.User().GetUnreadCountForChannel(userId, channelId); err == nil {
if count > 0 { if count > 0 {
channelsToClearPushNotifications = append(channelsToClearPushNotifications, channelId) channelsToClearPushNotifications = append(channelsToClearPushNotifications, channelId)
} }
@@ -2031,7 +2031,7 @@ func (a *App) MarkChannelsAsViewed(channelIds []string, userId string, currentSe
} }
} }
} }
times, err := a.Srv.Store.Channel().UpdateLastViewedAt(channelIds, userId) times, err := a.Srv().Store.Channel().UpdateLastViewedAt(channelIds, userId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -2072,33 +2072,33 @@ func (a *App) ViewChannel(view *model.ChannelView, userId string, currentSession
} }
func (a *App) PermanentDeleteChannel(channel *model.Channel) *model.AppError { func (a *App) PermanentDeleteChannel(channel *model.Channel) *model.AppError {
profiles, err := a.Srv.Store.User().GetAllProfilesInChannel(channel.Id, false) profiles, err := a.Srv().Store.User().GetAllProfilesInChannel(channel.Id, false)
if err != nil { if err != nil {
return err return err
} }
if err := a.Srv.Store.Post().PermanentDeleteByChannel(channel.Id); err != nil { if err := a.Srv().Store.Post().PermanentDeleteByChannel(channel.Id); err != nil {
return err return err
} }
if err := a.Srv.Store.Channel().PermanentDeleteMembersByChannel(channel.Id); err != nil { if err := a.Srv().Store.Channel().PermanentDeleteMembersByChannel(channel.Id); err != nil {
return err return err
} }
if err := a.Srv.Store.Webhook().PermanentDeleteIncomingByChannel(channel.Id); err != nil { if err := a.Srv().Store.Webhook().PermanentDeleteIncomingByChannel(channel.Id); err != nil {
return err return err
} }
if err := a.Srv.Store.Webhook().PermanentDeleteOutgoingByChannel(channel.Id); err != nil { if err := a.Srv().Store.Webhook().PermanentDeleteOutgoingByChannel(channel.Id); err != nil {
return err return err
} }
if err := a.Srv.Store.Channel().PermanentDelete(channel.Id); err != nil { if err := a.Srv().Store.Channel().PermanentDelete(channel.Id); err != nil {
return err return err
} }
if a.IsESIndexingEnabled() { if a.IsESIndexingEnabled() {
a.Srv.Go(func() { a.Srv().Go(func() {
for _, user := range profiles { for _, user := range profiles {
if err := a.indexUser(user); err != nil { if err := a.indexUser(user); err != nil {
mlog.Error("Encountered error indexing user", mlog.String("user_id", user.Id), mlog.Err(err)) mlog.Error("Encountered error indexing user", mlog.String("user_id", user.Id), mlog.Err(err))
@@ -2106,8 +2106,8 @@ func (a *App) PermanentDeleteChannel(channel *model.Channel) *model.AppError {
} }
}) })
if channel.Type == model.CHANNEL_OPEN { if channel.Type == model.CHANNEL_OPEN {
a.Srv.Go(func() { a.Srv().Go(func() {
if err := a.Elasticsearch.DeleteChannel(channel); err != nil { if err := a.Elasticsearch().DeleteChannel(channel); err != nil {
mlog.Error("Encountered error deleting channel", mlog.String("channel_id", channel.Id), mlog.Err(err)) mlog.Error("Encountered error deleting channel", mlog.String("channel_id", channel.Id), mlog.Err(err))
} }
}) })
@@ -2121,7 +2121,7 @@ func (a *App) PermanentDeleteChannel(channel *model.Channel) *model.AppError {
// is in progress, and therefore should not be used from the API without first fixing this potential race condition. // is in progress, and therefore should not be used from the API without first fixing this potential race condition.
func (a *App) MoveChannel(team *model.Team, channel *model.Channel, user *model.User, removeDeactivatedMembers bool) *model.AppError { func (a *App) MoveChannel(team *model.Team, channel *model.Channel, user *model.User, removeDeactivatedMembers bool) *model.AppError {
if removeDeactivatedMembers { if removeDeactivatedMembers {
if err := a.Srv.Store.Channel().RemoveAllDeactivatedMembers(channel.Id); err != nil { if err := a.Srv().Store.Channel().RemoveAllDeactivatedMembers(channel.Id); err != nil {
return err return err
} }
} }
@@ -2149,13 +2149,13 @@ func (a *App) MoveChannel(team *model.Team, channel *model.Channel, user *model.
} }
// keep instance of the previous team // keep instance of the previous team
previousTeam, err := a.Srv.Store.Team().Get(channel.TeamId) previousTeam, err := a.Srv().Store.Team().Get(channel.TeamId)
if err != nil { if err != nil {
return err return err
} }
channel.TeamId = team.Id channel.TeamId = team.Id
if _, err := a.Srv.Store.Channel().Update(channel); err != nil { if _, err := a.Srv().Store.Channel().Update(channel); err != nil {
return err return err
} }
a.postChannelMoveMessage(user, channel, previousTeam) a.postChannelMoveMessage(user, channel, previousTeam)
@@ -2183,11 +2183,11 @@ func (a *App) postChannelMoveMessage(user *model.User, channel *model.Channel, p
} }
func (a *App) GetPinnedPosts(channelId string) (*model.PostList, *model.AppError) { func (a *App) GetPinnedPosts(channelId string) (*model.PostList, *model.AppError) {
return a.Srv.Store.Channel().GetPinnedPosts(channelId) return a.Srv().Store.Channel().GetPinnedPosts(channelId)
} }
func (a *App) ToggleMuteChannel(channelId string, userId string) *model.ChannelMember { func (a *App) ToggleMuteChannel(channelId string, userId string) *model.ChannelMember {
member, err := a.Srv.Store.Channel().GetMember(channelId, userId) member, err := a.Srv().Store.Channel().GetMember(channelId, userId)
if err != nil { if err != nil {
return nil return nil
} }
@@ -2198,7 +2198,7 @@ func (a *App) ToggleMuteChannel(channelId string, userId string) *model.ChannelM
member.NotifyProps[model.MARK_UNREAD_NOTIFY_PROP] = model.CHANNEL_NOTIFY_MENTION member.NotifyProps[model.MARK_UNREAD_NOTIFY_PROP] = model.CHANNEL_NOTIFY_MENTION
} }
a.Srv.Store.Channel().UpdateMember(member) a.Srv().Store.Channel().UpdateMember(member)
return member return member
} }
@@ -2271,9 +2271,9 @@ func (a *App) ClearChannelMembersCache(channelID string) {
page := 0 page := 0
for { for {
channelMembers, err := a.Srv.Store.Channel().GetMembers(channelID, page, perPage) channelMembers, err := a.Srv().Store.Channel().GetMembers(channelID, page, perPage)
if err != nil { if err != nil {
a.Log.Warn("error clearing cache for channel members", mlog.String("channel_id", channelID)) a.Log().Warn("error clearing cache for channel members", mlog.String("channel_id", channelID))
break break
} }

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

@@ -146,10 +146,10 @@ func TestJoinDefaultChannelsCreatesChannelMemberHistoryRecordTownSquare(t *testi
defer th.TearDown() defer th.TearDown()
// figure out the initial number of users in town square // figure out the initial number of users in town square
channel, err := th.App.Srv.Store.Channel().GetByName(th.BasicTeam.Id, "town-square", true) channel, err := th.App.Srv().Store.Channel().GetByName(th.BasicTeam.Id, "town-square", true)
require.Nil(t, err) require.Nil(t, err)
townSquareChannelId := channel.Id townSquareChannelId := channel.Id
users, err := th.App.Srv.Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, townSquareChannelId) users, err := th.App.Srv().Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, townSquareChannelId)
require.Nil(t, err) require.Nil(t, err)
initialNumTownSquareUsers := len(users) initialNumTownSquareUsers := len(users)
@@ -158,7 +158,7 @@ func TestJoinDefaultChannelsCreatesChannelMemberHistoryRecordTownSquare(t *testi
th.App.JoinDefaultChannels(th.BasicTeam.Id, user, false, "") th.App.JoinDefaultChannels(th.BasicTeam.Id, user, false, "")
// there should be a ChannelMemberHistory record for the user // there should be a ChannelMemberHistory record for the user
histories, err := th.App.Srv.Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, townSquareChannelId) histories, err := th.App.Srv().Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, townSquareChannelId)
require.Nil(t, err) require.Nil(t, err)
assert.Len(t, histories, initialNumTownSquareUsers+1) assert.Len(t, histories, initialNumTownSquareUsers+1)
@@ -177,10 +177,10 @@ func TestJoinDefaultChannelsCreatesChannelMemberHistoryRecordOffTopic(t *testing
defer th.TearDown() defer th.TearDown()
// figure out the initial number of users in off-topic // figure out the initial number of users in off-topic
channel, err := th.App.Srv.Store.Channel().GetByName(th.BasicTeam.Id, "off-topic", true) channel, err := th.App.Srv().Store.Channel().GetByName(th.BasicTeam.Id, "off-topic", true)
require.Nil(t, err) require.Nil(t, err)
offTopicChannelId := channel.Id offTopicChannelId := channel.Id
users, err := th.App.Srv.Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, offTopicChannelId) users, err := th.App.Srv().Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, offTopicChannelId)
require.Nil(t, err) require.Nil(t, err)
initialNumTownSquareUsers := len(users) initialNumTownSquareUsers := len(users)
@@ -189,7 +189,7 @@ func TestJoinDefaultChannelsCreatesChannelMemberHistoryRecordOffTopic(t *testing
th.App.JoinDefaultChannels(th.BasicTeam.Id, user, false, "") th.App.JoinDefaultChannels(th.BasicTeam.Id, user, false, "")
// there should be a ChannelMemberHistory record for the user // there should be a ChannelMemberHistory record for the user
histories, err := th.App.Srv.Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, offTopicChannelId) histories, err := th.App.Srv().Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, offTopicChannelId)
require.Nil(t, err) require.Nil(t, err)
assert.Len(t, histories, initialNumTownSquareUsers+1) assert.Len(t, histories, initialNumTownSquareUsers+1)
@@ -233,7 +233,7 @@ func TestCreateChannelPublicCreatesChannelMemberHistoryRecord(t *testing.T) {
publicChannel := th.createChannel(th.BasicTeam, model.CHANNEL_OPEN) publicChannel := th.createChannel(th.BasicTeam, model.CHANNEL_OPEN)
// there should be a ChannelMemberHistory record for the user // there should be a ChannelMemberHistory record for the user
histories, err := th.App.Srv.Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, publicChannel.Id) histories, err := th.App.Srv().Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, publicChannel.Id)
require.Nil(t, err) require.Nil(t, err)
assert.Len(t, histories, 1) assert.Len(t, histories, 1)
assert.Equal(t, th.BasicUser.Id, histories[0].UserId) assert.Equal(t, th.BasicUser.Id, histories[0].UserId)
@@ -248,7 +248,7 @@ func TestCreateChannelPrivateCreatesChannelMemberHistoryRecord(t *testing.T) {
privateChannel := th.createChannel(th.BasicTeam, model.CHANNEL_PRIVATE) privateChannel := th.createChannel(th.BasicTeam, model.CHANNEL_PRIVATE)
// there should be a ChannelMemberHistory record for the user // there should be a ChannelMemberHistory record for the user
histories, err := th.App.Srv.Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, privateChannel.Id) histories, err := th.App.Srv().Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, privateChannel.Id)
require.Nil(t, err) require.Nil(t, err)
assert.Len(t, histories, 1) assert.Len(t, histories, 1)
assert.Equal(t, th.BasicUser.Id, histories[0].UserId) assert.Equal(t, th.BasicUser.Id, histories[0].UserId)
@@ -291,7 +291,7 @@ func TestCreateGroupChannelCreatesChannelMemberHistoryRecord(t *testing.T) {
channel, err := th.App.CreateGroupChannel(groupUserIds, th.BasicUser.Id) channel, err := th.App.CreateGroupChannel(groupUserIds, th.BasicUser.Id)
require.Nil(t, err, "Failed to create group channel.") require.Nil(t, err, "Failed to create group channel.")
histories, err := th.App.Srv.Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, channel.Id) histories, err := th.App.Srv().Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, channel.Id)
require.Nil(t, err) require.Nil(t, err)
assert.Len(t, histories, 3) assert.Len(t, histories, 3)
@@ -316,7 +316,7 @@ func TestCreateDirectChannelCreatesChannelMemberHistoryRecord(t *testing.T) {
channel, err := th.App.GetOrCreateDirectChannel(user1.Id, user2.Id) channel, err := th.App.GetOrCreateDirectChannel(user1.Id, user2.Id)
require.Nil(t, err, "Failed to create direct channel.") require.Nil(t, err, "Failed to create direct channel.")
histories, err := th.App.Srv.Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, channel.Id) histories, err := th.App.Srv().Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, channel.Id)
require.Nil(t, err) require.Nil(t, err)
assert.Len(t, histories, 2) assert.Len(t, histories, 2)
@@ -344,7 +344,7 @@ func TestGetDirectChannelCreatesChannelMemberHistoryRecord(t *testing.T) {
require.Nil(t, err, "Failed to create direct channel.") require.Nil(t, err, "Failed to create direct channel.")
// there should be a ChannelMemberHistory record for both users // there should be a ChannelMemberHistory record for both users
histories, err := th.App.Srv.Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, channel.Id) histories, err := th.App.Srv().Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, channel.Id)
require.Nil(t, err) require.Nil(t, err)
assert.Len(t, histories, 2) assert.Len(t, histories, 2)
@@ -379,7 +379,7 @@ func TestAddUserToChannelCreatesChannelMemberHistoryRecord(t *testing.T) {
require.Nil(t, err, "Failed to add user to channel.") require.Nil(t, err, "Failed to add user to channel.")
// there should be a ChannelMemberHistory record for the user // there should be a ChannelMemberHistory record for the user
histories, err := th.App.Srv.Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, channel.Id) histories, err := th.App.Srv().Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, channel.Id)
require.Nil(t, err) require.Nil(t, err)
assert.Len(t, histories, 2) assert.Len(t, histories, 2)
channelMemberHistoryUserIds := make([]string, 0) channelMemberHistoryUserIds := make([]string, 0)
@@ -396,7 +396,7 @@ func TestAddUserToChannelCreatesChannelMemberHistoryRecord(t *testing.T) {
// a user creates a channel // a user creates a channel
publicChannel := th.createChannel(th.BasicTeam, model.CHANNEL_OPEN) publicChannel := th.createChannel(th.BasicTeam, model.CHANNEL_OPEN)
histories, err := th.App.Srv.Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, publicChannel.Id) histories, err := th.App.Srv().Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, publicChannel.Id)
require.Nil(t, err) require.Nil(t, err)
assert.Len(t, histories, 1) assert.Len(t, histories, 1)
assert.Equal(t, th.BasicUser.Id, histories[0].UserId) assert.Equal(t, th.BasicUser.Id, histories[0].UserId)
@@ -407,7 +407,7 @@ func TestAddUserToChannelCreatesChannelMemberHistoryRecord(t *testing.T) {
if err := th.App.LeaveChannel(publicChannel.Id, th.BasicUser.Id); err != nil { if err := th.App.LeaveChannel(publicChannel.Id, th.BasicUser.Id); err != nil {
t.Fatal("Failed to remove user from channel. Error: " + err.Message) t.Fatal("Failed to remove user from channel. Error: " + err.Message)
} }
histories = store.Must(th.App.Srv.Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, publicChannel.Id)).([]*model.ChannelMemberHistoryResult) histories = store.Must(th.App.Srv().Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, publicChannel.Id)).([]*model.ChannelMemberHistoryResult)
assert.Len(t, histories, 1) assert.Len(t, histories, 1)
assert.Equal(t, th.BasicUser.Id, histories[0].UserId) assert.Equal(t, th.BasicUser.Id, histories[0].UserId)
assert.Equal(t, publicChannel.Id, histories[0].ChannelId) assert.Equal(t, publicChannel.Id, histories[0].ChannelId)
@@ -492,7 +492,7 @@ func TestAddChannelMemberNoUserRequestor(t *testing.T) {
require.Nil(t, err, "Failed to add user to channel.") require.Nil(t, err, "Failed to add user to channel.")
// there should be a ChannelMemberHistory record for the user // there should be a ChannelMemberHistory record for the user
histories, err := th.App.Srv.Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, channel.Id) histories, err := th.App.Srv().Store.ChannelMemberHistory().GetUsersInChannelDuring(model.GetMillis()-100, model.GetMillis()+100, channel.Id)
require.Nil(t, err) require.Nil(t, err)
assert.Len(t, histories, 2) assert.Len(t, histories, 2)
channelMemberHistoryUserIds := make([]string, 0) channelMemberHistoryUserIds := make([]string, 0)
@@ -502,7 +502,7 @@ func TestAddChannelMemberNoUserRequestor(t *testing.T) {
} }
assert.Equal(t, groupUserIds, channelMemberHistoryUserIds) assert.Equal(t, groupUserIds, channelMemberHistoryUserIds)
postList, err := th.App.Srv.Store.Post().GetPosts(model.GetPostsOptions{ChannelId: channel.Id, Page: 0, PerPage: 1}, false) postList, err := th.App.Srv().Store.Post().GetPosts(model.GetPostsOptions{ChannelId: channel.Id, Page: 0, PerPage: 1}, false)
require.Nil(t, err) require.Nil(t, err)
if assert.Len(t, postList.Order, 1) { if assert.Len(t, postList.Order, 1) {

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

@@ -31,23 +31,23 @@ func (a *App) NewClusterDiscoveryService() *ClusterDiscoveryService {
} }
func (me *ClusterDiscoveryService) Start() { func (me *ClusterDiscoveryService) Start() {
err := me.app.Srv.Store.ClusterDiscovery().Cleanup() err := me.app.Srv().Store.ClusterDiscovery().Cleanup()
if err != nil { if err != nil {
mlog.Error("ClusterDiscoveryService failed to cleanup the outdated cluster discovery information", mlog.Err(err)) mlog.Error("ClusterDiscoveryService failed to cleanup the outdated cluster discovery information", mlog.Err(err))
} }
exists, err := me.app.Srv.Store.ClusterDiscovery().Exists(&me.ClusterDiscovery) exists, err := me.app.Srv().Store.ClusterDiscovery().Exists(&me.ClusterDiscovery)
if err != nil { if err != nil {
mlog.Error("ClusterDiscoveryService failed to check if row exists", mlog.String("ClusterDiscovery", me.ClusterDiscovery.ToJson()), mlog.Err(err)) mlog.Error("ClusterDiscoveryService failed to check if row exists", mlog.String("ClusterDiscovery", me.ClusterDiscovery.ToJson()), mlog.Err(err))
} else { } else {
if exists { if exists {
if _, err := me.app.Srv.Store.ClusterDiscovery().Delete(&me.ClusterDiscovery); err != nil { if _, err := me.app.Srv().Store.ClusterDiscovery().Delete(&me.ClusterDiscovery); err != nil {
mlog.Error("ClusterDiscoveryService failed to start clean", mlog.String("ClusterDiscovery", me.ClusterDiscovery.ToJson()), mlog.Err(err)) mlog.Error("ClusterDiscoveryService failed to start clean", mlog.String("ClusterDiscovery", me.ClusterDiscovery.ToJson()), mlog.Err(err))
} }
} }
} }
if err := me.app.Srv.Store.ClusterDiscovery().Save(&me.ClusterDiscovery); err != nil { if err := me.app.Srv().Store.ClusterDiscovery().Save(&me.ClusterDiscovery); err != nil {
mlog.Error("ClusterDiscoveryService failed to save", mlog.String("ClusterDiscovery", me.ClusterDiscovery.ToJson()), mlog.Err(err)) mlog.Error("ClusterDiscoveryService failed to save", mlog.String("ClusterDiscovery", me.ClusterDiscovery.ToJson()), mlog.Err(err))
return return
} }
@@ -57,7 +57,7 @@ func (me *ClusterDiscoveryService) Start() {
ticker := time.NewTicker(DISCOVERY_SERVICE_WRITE_PING) ticker := time.NewTicker(DISCOVERY_SERVICE_WRITE_PING)
defer func() { defer func() {
ticker.Stop() ticker.Stop()
if _, err := me.app.Srv.Store.ClusterDiscovery().Delete(&me.ClusterDiscovery); err != nil { if _, err := me.app.Srv().Store.ClusterDiscovery().Delete(&me.ClusterDiscovery); err != nil {
mlog.Error("ClusterDiscoveryService failed to cleanup", mlog.String("ClusterDiscovery", me.ClusterDiscovery.ToJson()), mlog.Err(err)) mlog.Error("ClusterDiscoveryService failed to cleanup", mlog.String("ClusterDiscovery", me.ClusterDiscovery.ToJson()), mlog.Err(err))
} }
mlog.Debug("ClusterDiscoveryService ping writer stopped", mlog.String("ClusterDiscovery", me.ClusterDiscovery.ToJson())) mlog.Debug("ClusterDiscoveryService ping writer stopped", mlog.String("ClusterDiscovery", me.ClusterDiscovery.ToJson()))
@@ -66,7 +66,7 @@ func (me *ClusterDiscoveryService) Start() {
for { for {
select { select {
case <-ticker.C: case <-ticker.C:
if err := me.app.Srv.Store.ClusterDiscovery().SetLastPingAt(&me.ClusterDiscovery); err != nil { if err := me.app.Srv().Store.ClusterDiscovery().SetLastPingAt(&me.ClusterDiscovery); err != nil {
mlog.Error("ClusterDiscoveryService failed to write ping", mlog.String("ClusterDiscovery", me.ClusterDiscovery.ToJson()), mlog.Err(err)) mlog.Error("ClusterDiscoveryService failed to write ping", mlog.String("ClusterDiscovery", me.ClusterDiscovery.ToJson()), mlog.Err(err))
} }
case <-me.stop: case <-me.stop:
@@ -81,16 +81,16 @@ func (me *ClusterDiscoveryService) Stop() {
} }
func (a *App) IsLeader() bool { func (a *App) IsLeader() bool {
if a.License() != nil && *a.Config().ClusterSettings.Enable && a.Cluster != nil { if a.License() != nil && *a.Config().ClusterSettings.Enable && a.Cluster() != nil {
return a.Cluster.IsLeader() return a.Cluster().IsLeader()
} }
return true return true
} }
func (a *App) GetClusterId() string { func (a *App) GetClusterId() string {
if a.Cluster == nil { if a.Cluster() == nil {
return "" return ""
} }
return a.Cluster.GetClusterId() return a.Cluster().GetClusterId()
} }

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

@@ -15,18 +15,18 @@ import (
// NewLocalCacheLayer. Be careful to not have duplicated handlers here and // NewLocalCacheLayer. Be careful to not have duplicated handlers here and
// there. // there.
func (a *App) registerAllClusterMessageHandlers() { func (a *App) registerAllClusterMessageHandlers() {
a.Cluster.RegisterClusterMessageHandler(model.CLUSTER_EVENT_PUBLISH, a.clusterPublishHandler) a.Cluster().RegisterClusterMessageHandler(model.CLUSTER_EVENT_PUBLISH, a.clusterPublishHandler)
a.Cluster.RegisterClusterMessageHandler(model.CLUSTER_EVENT_UPDATE_STATUS, a.clusterUpdateStatusHandler) a.Cluster().RegisterClusterMessageHandler(model.CLUSTER_EVENT_UPDATE_STATUS, a.clusterUpdateStatusHandler)
a.Cluster.RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_ALL_CACHES, a.clusterInvalidateAllCachesHandler) a.Cluster().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_ALL_CACHES, a.clusterInvalidateAllCachesHandler)
a.Cluster.RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_CHANNEL_MEMBERS_NOTIFY_PROPS, a.clusterInvalidateCacheForChannelMembersNotifyPropHandler) a.Cluster().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_CHANNEL_MEMBERS_NOTIFY_PROPS, a.clusterInvalidateCacheForChannelMembersNotifyPropHandler)
a.Cluster.RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_CHANNEL_BY_NAME, a.clusterInvalidateCacheForChannelByNameHandler) a.Cluster().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_CHANNEL_BY_NAME, a.clusterInvalidateCacheForChannelByNameHandler)
a.Cluster.RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_USER, a.clusterInvalidateCacheForUserHandler) a.Cluster().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_USER, a.clusterInvalidateCacheForUserHandler)
a.Cluster.RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_USER_TEAMS, a.clusterInvalidateCacheForUserTeamsHandler) a.Cluster().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INVALIDATE_CACHE_FOR_USER_TEAMS, a.clusterInvalidateCacheForUserTeamsHandler)
a.Cluster.RegisterClusterMessageHandler(model.CLUSTER_EVENT_CLEAR_SESSION_CACHE_FOR_USER, a.clusterClearSessionCacheForUserHandler) a.Cluster().RegisterClusterMessageHandler(model.CLUSTER_EVENT_CLEAR_SESSION_CACHE_FOR_USER, a.clusterClearSessionCacheForUserHandler)
a.Cluster.RegisterClusterMessageHandler(model.CLUSTER_EVENT_CLEAR_SESSION_CACHE_FOR_ALL_USERS, a.clusterClearSessionCacheForAllUsersHandler) a.Cluster().RegisterClusterMessageHandler(model.CLUSTER_EVENT_CLEAR_SESSION_CACHE_FOR_ALL_USERS, a.clusterClearSessionCacheForAllUsersHandler)
a.Cluster.RegisterClusterMessageHandler(model.CLUSTER_EVENT_INSTALL_PLUGIN, a.clusterInstallPluginHandler) a.Cluster().RegisterClusterMessageHandler(model.CLUSTER_EVENT_INSTALL_PLUGIN, a.clusterInstallPluginHandler)
a.Cluster.RegisterClusterMessageHandler(model.CLUSTER_EVENT_REMOVE_PLUGIN, a.clusterRemovePluginHandler) a.Cluster().RegisterClusterMessageHandler(model.CLUSTER_EVENT_REMOVE_PLUGIN, a.clusterRemovePluginHandler)
a.Cluster.RegisterClusterMessageHandler(model.CLUSTER_EVENT_BUSY_STATE_CHANGED, a.clusterBusyStateChgHandler) a.Cluster().RegisterClusterMessageHandler(model.CLUSTER_EVENT_BUSY_STATE_CHANGED, a.clusterBusyStateChgHandler)
} }
func (a *App) clusterPublishHandler(msg *model.ClusterMessage) { func (a *App) clusterPublishHandler(msg *model.ClusterMessage) {

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

@@ -91,7 +91,7 @@ func (a *App) ListAutocompleteCommands(teamId string, T goi18n.TranslateFunc) ([
} }
if *a.Config().ServiceSettings.EnableCommands { if *a.Config().ServiceSettings.EnableCommands {
teamCmds, err := a.Srv.Store.Command().GetByTeam(teamId) teamCmds, err := a.Srv().Store.Command().GetByTeam(teamId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -113,7 +113,7 @@ func (a *App) ListTeamCommands(teamId string) ([]*model.Command, *model.AppError
return nil, model.NewAppError("ListTeamCommands", "api.command.disabled.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("ListTeamCommands", "api.command.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
return a.Srv.Store.Command().GetByTeam(teamId) return a.Srv().Store.Command().GetByTeam(teamId)
} }
func (a *App) ListAllCommands(teamId string, T goi18n.TranslateFunc) ([]*model.Command, *model.AppError) { func (a *App) ListAllCommands(teamId string, T goi18n.TranslateFunc) ([]*model.Command, *model.AppError) {
@@ -138,7 +138,7 @@ func (a *App) ListAllCommands(teamId string, T goi18n.TranslateFunc) ([]*model.C
} }
if *a.Config().ServiceSettings.EnableCommands { if *a.Config().ServiceSettings.EnableCommands {
teamCmds, err := a.Srv.Store.Command().GetByTeam(teamId) teamCmds, err := a.Srv().Store.Command().GetByTeam(teamId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -217,26 +217,26 @@ func (a *App) tryExecuteCustomCommand(args *model.CommandArgs, trigger string, m
chanChan := make(chan store.StoreResult, 1) chanChan := make(chan store.StoreResult, 1)
go func() { go func() {
channel, err := a.Srv.Store.Channel().Get(args.ChannelId, true) channel, err := a.Srv().Store.Channel().Get(args.ChannelId, true)
chanChan <- store.StoreResult{Data: channel, Err: err} chanChan <- store.StoreResult{Data: channel, Err: err}
close(chanChan) close(chanChan)
}() }()
teamChan := make(chan store.StoreResult, 1) teamChan := make(chan store.StoreResult, 1)
go func() { go func() {
team, err := a.Srv.Store.Team().Get(args.TeamId) team, err := a.Srv().Store.Team().Get(args.TeamId)
teamChan <- store.StoreResult{Data: team, Err: err} teamChan <- store.StoreResult{Data: team, Err: err}
close(teamChan) close(teamChan)
}() }()
userChan := make(chan store.StoreResult, 1) userChan := make(chan store.StoreResult, 1)
go func() { go func() {
user, err := a.Srv.Store.User().Get(args.UserId) user, err := a.Srv().Store.User().Get(args.UserId)
userChan <- store.StoreResult{Data: user, Err: err} userChan <- store.StoreResult{Data: user, Err: err}
close(userChan) close(userChan)
}() }()
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, err return nil, nil, err
} }
@@ -327,7 +327,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]interface{}{"Trigger": cmd.Trigger}, err.Error(), http.StatusInternalServerError) return cmd, nil, model.NewAppError("command", "api.command.execute_command.failed.app_error", map[string]interface{}{"Trigger": cmd.Trigger}, err.Error(), http.StatusInternalServerError)
} }
@@ -454,7 +454,7 @@ func (a *App) CreateCommand(cmd *model.Command) (*model.Command, *model.AppError
cmd.Trigger = strings.ToLower(cmd.Trigger) cmd.Trigger = strings.ToLower(cmd.Trigger)
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, err return nil, err
} }
@@ -472,7 +472,7 @@ func (a *App) CreateCommand(cmd *model.Command) (*model.Command, *model.AppError
} }
} }
return a.Srv.Store.Command().Save(cmd) return a.Srv().Store.Command().Save(cmd)
} }
func (a *App) GetCommand(commandId string) (*model.Command, *model.AppError) { func (a *App) GetCommand(commandId string) (*model.Command, *model.AppError) {
@@ -480,7 +480,7 @@ func (a *App) GetCommand(commandId string) (*model.Command, *model.AppError) {
return nil, model.NewAppError("GetCommand", "api.command.disabled.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("GetCommand", "api.command.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
cmd, err := a.Srv.Store.Command().Get(commandId) cmd, err := a.Srv().Store.Command().Get(commandId)
if err != nil { if err != nil {
err.StatusCode = http.StatusNotFound err.StatusCode = http.StatusNotFound
return nil, err return nil, err
@@ -503,13 +503,13 @@ func (a *App) UpdateCommand(oldCmd, updatedCmd *model.Command) (*model.Command,
updatedCmd.CreatorId = oldCmd.CreatorId updatedCmd.CreatorId = oldCmd.CreatorId
updatedCmd.TeamId = oldCmd.TeamId updatedCmd.TeamId = oldCmd.TeamId
return a.Srv.Store.Command().Update(updatedCmd) return a.Srv().Store.Command().Update(updatedCmd)
} }
func (a *App) MoveCommand(team *model.Team, command *model.Command) *model.AppError { func (a *App) MoveCommand(team *model.Team, command *model.Command) *model.AppError {
command.TeamId = team.Id command.TeamId = team.Id
_, err := a.Srv.Store.Command().Update(command) _, err := a.Srv().Store.Command().Update(command)
if err != nil { if err != nil {
return err return err
} }
@@ -524,7 +524,7 @@ func (a *App) RegenCommandToken(cmd *model.Command) (*model.Command, *model.AppE
cmd.Token = model.NewId() cmd.Token = model.NewId()
return a.Srv.Store.Command().Update(cmd) return a.Srv().Store.Command().Update(cmd)
} }
func (a *App) DeleteCommand(commandId string) *model.AppError { func (a *App) DeleteCommand(commandId string) *model.AppError {
@@ -532,5 +532,5 @@ func (a *App) DeleteCommand(commandId string) *model.AppError {
return model.NewAppError("DeleteCommand", "api.command.disabled.app_error", nil, "", http.StatusNotImplemented) return model.NewAppError("DeleteCommand", "api.command.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
return a.Srv.Store.Command().Delete(commandId, model.GetMillis()) return a.Srv().Store.Command().Delete(commandId, model.GetMillis())
} }

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

@@ -77,7 +77,7 @@ func (me *EchoProvider) DoCommand(a *App, args *model.CommandArgs, message strin
} }
echoSem <- true echoSem <- true
a.Srv.Go(func() { a.Srv().Go(func() {
defer func() { <-echoSem }() defer func() { <-echoSem }()
post := &model.Post{} post := &model.Post{}
post.ChannelId = args.ChannelId post.ChannelId = args.ChannelId

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

@@ -68,7 +68,7 @@ func (a *App) setCollapsePreference(args *model.CommandArgs, isCollapse bool) *m
Value: strconv.FormatBool(isCollapse), Value: strconv.FormatBool(isCollapse),
} }
if err := a.Srv.Store.Preference().Save(&model.Preferences{pref}); err != nil { if err := a.Srv().Store.Preference().Save(&model.Preferences{pref}); err != nil {
return &model.CommandResponse{Text: args.T("api.command_expand_collapse.fail.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL} return &model.CommandResponse{Text: args.T("api.command_expand_collapse.fail.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
} }

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

@@ -47,7 +47,7 @@ func (me *groupmsgProvider) DoCommand(a *App, args *model.CommandArgs, message s
for _, username := range users { for _, username := range users {
username = strings.TrimSpace(username) username = strings.TrimSpace(username)
username = strings.TrimPrefix(username, "@") username = strings.TrimPrefix(username, "@")
targetUser, err := a.Srv.Store.User().GetByUsername(username) targetUser, err := a.Srv().Store.User().GetByUsername(username)
if err != nil { if err != nil {
invalidUsernames = append(invalidUsernames, username) invalidUsernames = append(invalidUsernames, username)
continue continue

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

@@ -49,7 +49,7 @@ func (me *InviteProvider) DoCommand(a *App, args *model.CommandArgs, message str
targetUsername := splitMessage[0] targetUsername := splitMessage[0]
targetUsername = strings.TrimPrefix(targetUsername, "@") targetUsername = strings.TrimPrefix(targetUsername, "@")
userProfile, err := a.Srv.Store.User().GetByUsername(targetUsername) userProfile, err := a.Srv().Store.User().GetByUsername(targetUsername)
if err != nil { if err != nil {
mlog.Error(err.Error()) mlog.Error(err.Error())
return &model.CommandResponse{ return &model.CommandResponse{

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

@@ -43,7 +43,7 @@ func (me *JoinProvider) DoCommand(a *App, args *model.CommandArgs, message strin
channelName = message[1:] channelName = message[1:]
} }
channel, err := a.Srv.Store.Channel().GetByName(args.TeamId, channelName, true) channel, err := a.Srv().Store.Channel().GetByName(args.TeamId, channelName, true)
if err != nil { if err != nil {
return &model.CommandResponse{Text: args.T("api.command_join.list.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL} return &model.CommandResponse{Text: args.T("api.command_join.list.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
} }

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

@@ -218,7 +218,7 @@ func (me *LoadTestProvider) SetupCommand(a *App, args *model.CommandArgs, messag
} }
} }
} else { } else {
team, err := a.Srv.Store.Team().Get(args.TeamId) team, err := a.Srv().Store.Team().Get(args.TeamId)
if err != nil { if err != nil {
return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL} return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
} }
@@ -267,7 +267,7 @@ func (me *LoadTestProvider) UsersCommand(a *App, args *model.CommandArgs, messag
usersr = utils.Range{Begin: 2, End: 5} usersr = utils.Range{Begin: 2, End: 5}
} }
team, err := a.Srv.Store.Team().Get(args.TeamId) team, err := a.Srv().Store.Team().Get(args.TeamId)
if err != nil { if err != nil {
return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL} return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
} }
@@ -294,7 +294,7 @@ func (me *LoadTestProvider) ChannelsCommand(a *App, args *model.CommandArgs, mes
channelsr = utils.Range{Begin: 2, End: 5} channelsr = utils.Range{Begin: 2, End: 5}
} }
team, err := a.Srv.Store.Team().Get(args.TeamId) team, err := a.Srv().Store.Team().Get(args.TeamId)
if err != nil { if err != nil {
return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL} return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
} }
@@ -311,7 +311,7 @@ func (me *LoadTestProvider) ChannelsCommand(a *App, args *model.CommandArgs, mes
func (me *LoadTestProvider) ThreadedPostCommand(a *App, args *model.CommandArgs, message string) *model.CommandResponse { func (me *LoadTestProvider) ThreadedPostCommand(a *App, args *model.CommandArgs, message string) *model.CommandResponse {
var usernames []string var usernames []string
options := &model.UserGetOptions{InTeamId: args.TeamId, Page: 0, PerPage: 1000} options := &model.UserGetOptions{InTeamId: args.TeamId, Page: 0, PerPage: 1000}
if profileUsers, err := a.Srv.Store.User().GetProfiles(options); err == nil { if profileUsers, err := a.Srv().Store.User().GetProfiles(options); err == nil {
usernames = make([]string, len(profileUsers)) usernames = make([]string, len(profileUsers))
i := 0 i := 0
for _, userprof := range profileUsers { for _, userprof := range profileUsers {
@@ -360,7 +360,7 @@ func (me *LoadTestProvider) PostsCommand(a *App, args *model.CommandArgs, messag
var usernames []string var usernames []string
options := &model.UserGetOptions{InTeamId: args.TeamId, Page: 0, PerPage: 1000} options := &model.UserGetOptions{InTeamId: args.TeamId, Page: 0, PerPage: 1000}
if profileUsers, err := a.Srv.Store.User().GetProfiles(options); err == nil { if profileUsers, err := a.Srv().Store.User().GetProfiles(options); err == nil {
usernames = make([]string, len(profileUsers)) usernames = make([]string, len(profileUsers))
i := 0 i := 0
for _, userprof := range profileUsers { for _, userprof := range profileUsers {

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

@@ -48,7 +48,7 @@ func (me *msgProvider) DoCommand(a *App, args *model.CommandArgs, message string
targetUsername = strings.SplitN(message, " ", 2)[0] targetUsername = strings.SplitN(message, " ", 2)[0]
targetUsername = strings.TrimPrefix(targetUsername, "@") targetUsername = strings.TrimPrefix(targetUsername, "@")
userProfile, err := a.Srv.Store.User().GetByUsername(targetUsername) userProfile, err := a.Srv().Store.User().GetByUsername(targetUsername)
if err != nil { if err != nil {
mlog.Error(err.Error()) mlog.Error(err.Error())
return &model.CommandResponse{Text: args.T("api.command_msg.missing.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL} return &model.CommandResponse{Text: args.T("api.command_msg.missing.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
@@ -71,7 +71,7 @@ func (me *msgProvider) DoCommand(a *App, args *model.CommandArgs, message string
channelName := model.GetDMNameFromIds(args.UserId, userProfile.Id) channelName := model.GetDMNameFromIds(args.UserId, userProfile.Id)
targetChannelId := "" targetChannelId := ""
if channel, channelErr := a.Srv.Store.Channel().GetByName(args.TeamId, channelName, true); channelErr != nil { if channel, channelErr := a.Srv().Store.Channel().GetByName(args.TeamId, channelName, true); channelErr != nil {
if channelErr.Id == "store.sql_channel.get_by_name.missing.app_error" { if channelErr.Id == "store.sql_channel.get_by_name.missing.app_error" {
if !a.SessionHasPermissionTo(args.Session, model.PERMISSION_CREATE_DIRECT_CHANNEL) { if !a.SessionHasPermissionTo(args.Session, model.PERMISSION_CREATE_DIRECT_CHANNEL) {
return &model.CommandResponse{Text: args.T("api.command_msg.permission.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL} return &model.CommandResponse{Text: args.T("api.command_msg.permission.app_error"), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}

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

@@ -53,7 +53,7 @@ func (me *MuteProvider) DoCommand(a *App, args *model.CommandArgs, message strin
} }
if len(channelName) > 0 && len(message) > 0 { if len(channelName) > 0 && len(message) > 0 {
channel, _ = a.Srv.Store.Channel().GetByName(channel.TeamId, channelName, true) channel, _ = a.Srv().Store.Channel().GetByName(channel.TeamId, channelName, true)
if channel == nil { if channel == nil {
return &model.CommandResponse{Text: args.T("api.command_mute.error", map[string]interface{}{"Channel": channelName}), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL} return &model.CommandResponse{Text: args.T("api.command_mute.error", map[string]interface{}{"Channel": channelName}), ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
@@ -66,7 +66,7 @@ func (me *MuteProvider) DoCommand(a *App, args *model.CommandArgs, message strin
} }
// Invalidate cache to allow cache lookups while sending notifications // Invalidate cache to allow cache lookups while sending notifications
a.Srv.Store.Channel().InvalidateCacheForChannelMembersNotifyProps(channel.Id) a.Srv().Store.Channel().InvalidateCacheForChannelMembersNotifyProps(channel.Id)
// Direct and Group messages won't have a nice channel title, omit it // Direct and Group messages won't have a nice channel title, omit it
if channel.Type == model.CHANNEL_DIRECT || channel.Type == model.CHANNEL_GROUP { if channel.Type == model.CHANNEL_DIRECT || channel.Type == model.CHANNEL_GROUP {

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

@@ -107,7 +107,7 @@ func doCommand(a *App, args *model.CommandArgs, message string) *model.CommandRe
targetUsername = strings.SplitN(message, " ", 2)[0] targetUsername = strings.SplitN(message, " ", 2)[0]
targetUsername = strings.TrimPrefix(targetUsername, "@") targetUsername = strings.TrimPrefix(targetUsername, "@")
userProfile, err := a.Srv.Store.User().GetByUsername(targetUsername) userProfile, err := a.Srv().Store.User().GetByUsername(targetUsername)
if err != nil { if err != nil {
mlog.Error(err.Error()) mlog.Error(err.Error())
return &model.CommandResponse{ return &model.CommandResponse{

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

@@ -376,9 +376,9 @@ func TestDoCommandRequest(t *testing.T) {
})) }))
defer server.Close() defer server.Close()
th.App.HTTPService.(*httpservice.HTTPServiceImpl).RequestTimeout = 100 * time.Millisecond th.App.HTTPService().(*httpservice.HTTPServiceImpl).RequestTimeout = 100 * time.Millisecond
defer func() { defer func() {
th.App.HTTPService.(*httpservice.HTTPServiceImpl).RequestTimeout = httpservice.RequestTimeout th.App.HTTPService().(*httpservice.HTTPServiceImpl).RequestTimeout = httpservice.RequestTimeout
}() }()
_, _, err := th.App.doCommandRequest(&model.Command{URL: server.URL}, url.Values{}) _, _, err := th.App.doCommandRequest(&model.Command{URL: server.URL}, url.Values{})

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

@@ -16,34 +16,34 @@ func (a *App) GetComplianceReports(page, perPage int) (model.Compliances, *model
return nil, model.NewAppError("GetComplianceReports", "ent.compliance.licence_disable.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("GetComplianceReports", "ent.compliance.licence_disable.app_error", nil, "", http.StatusNotImplemented)
} }
return a.Srv.Store.Compliance().GetAll(page*perPage, perPage) return a.Srv().Store.Compliance().GetAll(page*perPage, perPage)
} }
func (a *App) SaveComplianceReport(job *model.Compliance) (*model.Compliance, *model.AppError) { func (a *App) SaveComplianceReport(job *model.Compliance) (*model.Compliance, *model.AppError) {
if license := a.License(); !*a.Config().ComplianceSettings.Enable || license == nil || !*license.Features.Compliance || a.Compliance == nil { if license := a.License(); !*a.Config().ComplianceSettings.Enable || license == nil || !*license.Features.Compliance || a.Compliance() == nil {
return nil, model.NewAppError("saveComplianceReport", "ent.compliance.licence_disable.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("saveComplianceReport", "ent.compliance.licence_disable.app_error", nil, "", http.StatusNotImplemented)
} }
job.Type = model.COMPLIANCE_TYPE_ADHOC job.Type = model.COMPLIANCE_TYPE_ADHOC
job, err := a.Srv.Store.Compliance().Save(job) job, err := a.Srv().Store.Compliance().Save(job)
if err != nil { if err != nil {
return nil, err return nil, err
} }
a.Srv.Go(func() { a.Srv().Go(func() {
a.Compliance.RunComplianceJob(job) a.Compliance().RunComplianceJob(job)
}) })
return job, nil return job, nil
} }
func (a *App) GetComplianceReport(reportId string) (*model.Compliance, *model.AppError) { func (a *App) GetComplianceReport(reportId string) (*model.Compliance, *model.AppError) {
if license := a.License(); !*a.Config().ComplianceSettings.Enable || license == nil || !*license.Features.Compliance || a.Compliance == nil { if license := a.License(); !*a.Config().ComplianceSettings.Enable || license == nil || !*license.Features.Compliance || a.Compliance() == nil {
return nil, model.NewAppError("downloadComplianceReport", "ent.compliance.licence_disable.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("downloadComplianceReport", "ent.compliance.licence_disable.app_error", nil, "", http.StatusNotImplemented)
} }
return a.Srv.Store.Compliance().Get(reportId) return a.Srv().Store.Compliance().Get(reportId)
} }
func (a *App) GetComplianceFile(job *model.Compliance) ([]byte, *model.AppError) { func (a *App) GetComplianceFile(job *model.Compliance) ([]byte, *model.AppError) {

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

@@ -35,7 +35,7 @@ func (s *Server) Config() *model.Config {
} }
func (a *App) Config() *model.Config { func (a *App) Config() *model.Config {
return a.Srv.Config() return a.Srv().Config()
} }
func (s *Server) EnvironmentConfig() map[string]interface{} { func (s *Server) EnvironmentConfig() map[string]interface{} {
@@ -43,7 +43,7 @@ func (s *Server) EnvironmentConfig() map[string]interface{} {
} }
func (a *App) EnvironmentConfig() map[string]interface{} { func (a *App) EnvironmentConfig() map[string]interface{} {
return a.Srv.EnvironmentConfig() return a.Srv().EnvironmentConfig()
} }
func (s *Server) UpdateConfig(f func(*model.Config)) { func (s *Server) UpdateConfig(f func(*model.Config)) {
@@ -56,7 +56,7 @@ func (s *Server) UpdateConfig(f func(*model.Config)) {
} }
func (a *App) UpdateConfig(f func(*model.Config)) { func (a *App) UpdateConfig(f func(*model.Config)) {
a.Srv.UpdateConfig(f) a.Srv().UpdateConfig(f)
} }
func (s *Server) ReloadConfig() error { func (s *Server) ReloadConfig() error {
@@ -68,19 +68,19 @@ func (s *Server) ReloadConfig() error {
} }
func (a *App) ReloadConfig() error { func (a *App) ReloadConfig() error {
return a.Srv.ReloadConfig() return a.Srv().ReloadConfig()
} }
func (a *App) ClientConfig() map[string]string { func (a *App) ClientConfig() map[string]string {
return a.Srv.clientConfig return a.Srv().clientConfig
} }
func (a *App) ClientConfigHash() string { func (a *App) ClientConfigHash() string {
return a.Srv.clientConfigHash return a.Srv().clientConfigHash
} }
func (a *App) LimitedClientConfig() map[string]string { func (a *App) LimitedClientConfig() map[string]string {
return a.Srv.limitedClientConfig return a.Srv().limitedClientConfig
} }
// Registers a function with a given listener to be called when the config is reloaded and may have changed. The function // Registers a function with a given listener to be called when the config is reloaded and may have changed. The function
@@ -91,7 +91,7 @@ func (s *Server) AddConfigListener(listener func(*model.Config, *model.Config))
} }
func (a *App) AddConfigListener(listener func(*model.Config, *model.Config)) string { func (a *App) AddConfigListener(listener func(*model.Config, *model.Config)) string {
return a.Srv.AddConfigListener(listener) return a.Srv().AddConfigListener(listener)
} }
// Removes a listener function by the unique ID returned when AddConfigListener was called // Removes a listener function by the unique ID returned when AddConfigListener was called
@@ -100,20 +100,20 @@ func (s *Server) RemoveConfigListener(id string) {
} }
func (a *App) RemoveConfigListener(id string) { func (a *App) RemoveConfigListener(id string) {
a.Srv.RemoveConfigListener(id) a.Srv().RemoveConfigListener(id)
} }
// ensurePostActionCookieSecret ensures that the key for encrypting PostActionCookie exists // ensurePostActionCookieSecret ensures that the key for encrypting PostActionCookie exists
// and future calls to PostActionCookieSecret will always return a valid key, same on all // and future calls to PostActionCookieSecret will always return a valid key, same on all
// servers in the cluster // servers in the cluster
func (a *App) ensurePostActionCookieSecret() error { func (a *App) ensurePostActionCookieSecret() error {
if a.Srv.postActionCookieSecret != nil { if a.Srv().postActionCookieSecret != nil {
return nil return nil
} }
var secret *model.SystemPostActionCookieSecret var secret *model.SystemPostActionCookieSecret
value, err := a.Srv.Store.System().GetByName(model.SYSTEM_POST_ACTION_COOKIE_SECRET) value, err := a.Srv().Store.System().GetByName(model.SYSTEM_POST_ACTION_COOKIE_SECRET)
if err == nil { if err == nil {
if err := json.Unmarshal([]byte(value.Value), &secret); err != nil { if err := json.Unmarshal([]byte(value.Value), &secret); err != nil {
return err return err
@@ -139,7 +139,7 @@ func (a *App) ensurePostActionCookieSecret() error {
} }
system.Value = string(v) system.Value = string(v)
// If we were able to save the key, use it, otherwise log the error. // If we were able to save the key, use it, otherwise log the error.
if appErr := a.Srv.Store.System().Save(system); appErr != nil { if appErr := a.Srv().Store.System().Save(system); appErr != nil {
mlog.Error("Failed to save PostActionCookieSecret", mlog.Err(appErr)) mlog.Error("Failed to save PostActionCookieSecret", mlog.Err(appErr))
} else { } else {
secret = newSecret secret = newSecret
@@ -149,7 +149,7 @@ func (a *App) ensurePostActionCookieSecret() error {
// If we weren't able to save a new key above, another server must have beat us to it. Get the // If we weren't able to save a new key above, another server must have beat us to it. Get the
// key from the database, and if that fails, error out. // key from the database, and if that fails, error out.
if secret == nil { if secret == nil {
value, err := a.Srv.Store.System().GetByName(model.SYSTEM_POST_ACTION_COOKIE_SECRET) value, err := a.Srv().Store.System().GetByName(model.SYSTEM_POST_ACTION_COOKIE_SECRET)
if err != nil { if err != nil {
return err return err
} }
@@ -159,20 +159,20 @@ func (a *App) ensurePostActionCookieSecret() error {
} }
} }
a.Srv.postActionCookieSecret = secret.Secret a.Srv().postActionCookieSecret = secret.Secret
return nil return nil
} }
// EnsureAsymmetricSigningKey ensures that an asymmetric signing key exists and future calls to // EnsureAsymmetricSigningKey ensures that an asymmetric signing key exists and future calls to
// AsymmetricSigningKey will always return a valid signing key. // AsymmetricSigningKey will always return a valid signing key.
func (a *App) ensureAsymmetricSigningKey() error { func (a *App) ensureAsymmetricSigningKey() error {
if a.Srv.asymmetricSigningKey != nil { if a.Srv().asymmetricSigningKey != nil {
return nil return nil
} }
var key *model.SystemAsymmetricSigningKey var key *model.SystemAsymmetricSigningKey
value, err := a.Srv.Store.System().GetByName(model.SYSTEM_ASYMMETRIC_SIGNING_KEY) value, err := a.Srv().Store.System().GetByName(model.SYSTEM_ASYMMETRIC_SIGNING_KEY)
if err == nil { if err == nil {
if err := json.Unmarshal([]byte(value.Value), &key); err != nil { if err := json.Unmarshal([]byte(value.Value), &key); err != nil {
return err return err
@@ -202,7 +202,7 @@ func (a *App) ensureAsymmetricSigningKey() error {
} }
system.Value = string(v) system.Value = string(v)
// If we were able to save the key, use it, otherwise log the error. // If we were able to save the key, use it, otherwise log the error.
if appErr := a.Srv.Store.System().Save(system); appErr != nil { if appErr := a.Srv().Store.System().Save(system); appErr != nil {
mlog.Error("Failed to save AsymmetricSigningKey", mlog.Err(appErr)) mlog.Error("Failed to save AsymmetricSigningKey", mlog.Err(appErr))
} else { } else {
key = newKey key = newKey
@@ -212,7 +212,7 @@ func (a *App) ensureAsymmetricSigningKey() error {
// If we weren't able to save a new key above, another server must have beat us to it. Get the // If we weren't able to save a new key above, another server must have beat us to it. Get the
// key from the database, and if that fails, error out. // key from the database, and if that fails, error out.
if key == nil { if key == nil {
value, err := a.Srv.Store.System().GetByName(model.SYSTEM_ASYMMETRIC_SIGNING_KEY) value, err := a.Srv().Store.System().GetByName(model.SYSTEM_ASYMMETRIC_SIGNING_KEY)
if err != nil { if err != nil {
return err return err
} }
@@ -229,7 +229,7 @@ func (a *App) ensureAsymmetricSigningKey() error {
default: default:
return fmt.Errorf("unknown curve: " + key.ECDSAKey.Curve) return fmt.Errorf("unknown curve: " + key.ECDSAKey.Curve)
} }
a.Srv.asymmetricSigningKey = &ecdsa.PrivateKey{ a.Srv().asymmetricSigningKey = &ecdsa.PrivateKey{
PublicKey: ecdsa.PublicKey{ PublicKey: ecdsa.PublicKey{
Curve: curve, Curve: curve,
X: key.ECDSAKey.X, X: key.ECDSAKey.X,
@@ -247,7 +247,7 @@ func (a *App) ensureInstallationDate() error {
return nil return nil
} }
installDate, err := a.Srv.Store.User().InferSystemInstallDate() installDate, err := a.Srv().Store.User().InferSystemInstallDate()
var installationDate int64 var installationDate int64
if err == nil && installDate > 0 { if err == nil && installDate > 0 {
installationDate = installDate installationDate = installDate
@@ -255,7 +255,7 @@ func (a *App) ensureInstallationDate() error {
installationDate = utils.MillisFromTime(time.Now()) installationDate = utils.MillisFromTime(time.Now())
} }
err = a.Srv.Store.System().SaveOrUpdate(&model.System{ err = a.Srv().Store.System().SaveOrUpdate(&model.System{
Name: model.SYSTEM_INSTALLATION_DATE_KEY, Name: model.SYSTEM_INSTALLATION_DATE_KEY,
Value: strconv.FormatInt(installationDate, 10), Value: strconv.FormatInt(installationDate, 10),
}) })
@@ -271,7 +271,7 @@ func (s *Server) AsymmetricSigningKey() *ecdsa.PrivateKey {
} }
func (a *App) AsymmetricSigningKey() *ecdsa.PrivateKey { func (a *App) AsymmetricSigningKey() *ecdsa.PrivateKey {
return a.Srv.AsymmetricSigningKey() return a.Srv().AsymmetricSigningKey()
} }
func (s *Server) PostActionCookieSecret() []byte { func (s *Server) PostActionCookieSecret() []byte {
@@ -279,7 +279,7 @@ func (s *Server) PostActionCookieSecret() []byte {
} }
func (a *App) PostActionCookieSecret() []byte { func (a *App) PostActionCookieSecret() []byte {
return a.Srv.PostActionCookieSecret() return a.Srv().PostActionCookieSecret()
} }
func (a *App) regenerateClientConfig() { func (a *App) regenerateClientConfig() {
@@ -303,9 +303,9 @@ func (a *App) regenerateClientConfig() {
} }
clientConfigJSON, _ := json.Marshal(clientConfig) clientConfigJSON, _ := json.Marshal(clientConfig)
a.Srv.clientConfig = clientConfig a.Srv().clientConfig = clientConfig
a.Srv.limitedClientConfig = limitedClientConfig a.Srv().limitedClientConfig = limitedClientConfig
a.Srv.clientConfigHash = fmt.Sprintf("%x", md5.Sum(clientConfigJSON)) a.Srv().clientConfigHash = fmt.Sprintf("%x", md5.Sum(clientConfigJSON))
} }
func (a *App) GetCookieDomain() string { func (a *App) GetCookieDomain() string {
@@ -356,7 +356,7 @@ func (a *App) LimitedClientConfigWithComputed() map[string]string {
// GetConfigFile proxies access to the given configuration file to the underlying config store. // GetConfigFile proxies access to the given configuration file to the underlying config store.
func (a *App) GetConfigFile(name string) ([]byte, error) { func (a *App) GetConfigFile(name string) ([]byte, error) {
data, err := a.Srv.configStore.GetFile(name) data, err := a.Srv().configStore.GetFile(name)
if err != nil { if err != nil {
return nil, errors.Wrapf(err, "failed to get config file %s", name) return nil, errors.Wrapf(err, "failed to get config file %s", name)
} }
@@ -379,25 +379,25 @@ func (a *App) GetEnvironmentConfig() map[string]interface{} {
// SaveConfig replaces the active configuration, optionally notifying cluster peers. // SaveConfig replaces the active configuration, optionally notifying cluster peers.
func (a *App) SaveConfig(newCfg *model.Config, sendConfigChangeClusterMessage bool) *model.AppError { func (a *App) SaveConfig(newCfg *model.Config, sendConfigChangeClusterMessage bool) *model.AppError {
oldCfg, err := a.Srv.configStore.Set(newCfg) oldCfg, err := a.Srv().configStore.Set(newCfg)
if errors.Cause(err) == config.ErrReadOnlyConfiguration { if errors.Cause(err) == config.ErrReadOnlyConfiguration {
return model.NewAppError("saveConfig", "ent.cluster.save_config.error", nil, err.Error(), http.StatusForbidden) return model.NewAppError("saveConfig", "ent.cluster.save_config.error", nil, err.Error(), http.StatusForbidden)
} else if err != nil { } else if err != nil {
return model.NewAppError("saveConfig", "app.save_config.app_error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("saveConfig", "app.save_config.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
if a.Metrics != nil { if a.Metrics() != nil {
if *a.Config().MetricsSettings.Enable { if *a.Config().MetricsSettings.Enable {
a.Metrics.StartServer() a.Metrics().StartServer()
} else { } else {
a.Metrics.StopServer() a.Metrics().StopServer()
} }
} }
if a.Cluster != nil { if a.Cluster() != nil {
newCfg = a.Srv.configStore.RemoveEnvironmentOverrides(newCfg) newCfg = a.Srv().configStore.RemoveEnvironmentOverrides(newCfg)
oldCfg = a.Srv.configStore.RemoveEnvironmentOverrides(oldCfg) oldCfg = a.Srv().configStore.RemoveEnvironmentOverrides(oldCfg)
err := a.Cluster.ConfigChanged(oldCfg, newCfg, sendConfigChangeClusterMessage) err := a.Cluster().ConfigChanged(oldCfg, newCfg, sendConfigChangeClusterMessage)
if err != nil { if err != nil {
return err return err
} }
@@ -407,17 +407,17 @@ func (a *App) SaveConfig(newCfg *model.Config, sendConfigChangeClusterMessage bo
} }
func (a *App) IsESIndexingEnabled() bool { func (a *App) IsESIndexingEnabled() bool {
return a.Elasticsearch != nil && *a.Config().ElasticsearchSettings.EnableIndexing return a.Elasticsearch() != nil && *a.Config().ElasticsearchSettings.EnableIndexing
} }
func (a *App) IsESSearchEnabled() bool { func (a *App) IsESSearchEnabled() bool {
esInterface := a.Elasticsearch esInterface := a.Elasticsearch()
license := a.License() license := a.License()
return esInterface != nil && *a.Config().ElasticsearchSettings.EnableSearching && license != nil && *license.Features.Elasticsearch return esInterface != nil && *a.Config().ElasticsearchSettings.EnableSearching && license != nil && *license.Features.Elasticsearch
} }
func (a *App) IsESAutocompletionEnabled() bool { func (a *App) IsESAutocompletionEnabled() bool {
esInterface := a.Elasticsearch esInterface := a.Elasticsearch()
license := a.License() license := a.License()
return esInterface != nil && *a.Config().ElasticsearchSettings.EnableAutocomplete && license != nil && *license.Features.Elasticsearch return esInterface != nil && *a.Config().ElasticsearchSettings.EnableAutocomplete && license != nil && *license.Features.Elasticsearch
} }

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

@@ -112,7 +112,7 @@ func TestEnsureInstallationDate(t *testing.T) {
for _, tc := range tt { for _, tc := range tt {
t.Run(tc.Name, func(t *testing.T) { t.Run(tc.Name, func(t *testing.T) {
sqlStore := th.App.Srv.Store.User().(*sqlstore.SqlUserStore) sqlStore := th.App.Srv().Store.User().(*sqlstore.SqlUserStore)
sqlStore.GetMaster().Exec("DELETE FROM Users") sqlStore.GetMaster().Exec("DELETE FROM Users")
for _, createAt := range tc.UsersCreationDates { for _, createAt := range tc.UsersCreationDates {
@@ -122,9 +122,9 @@ func TestEnsureInstallationDate(t *testing.T) {
} }
if tc.PrevInstallationDate == nil { if tc.PrevInstallationDate == nil {
th.App.Srv.Store.System().PermanentDeleteByName(model.SYSTEM_INSTALLATION_DATE_KEY) th.App.Srv().Store.System().PermanentDeleteByName(model.SYSTEM_INSTALLATION_DATE_KEY)
} else { } else {
th.App.Srv.Store.System().SaveOrUpdate(&model.System{ th.App.Srv().Store.System().SaveOrUpdate(&model.System{
Name: model.SYSTEM_INSTALLATION_DATE_KEY, Name: model.SYSTEM_INSTALLATION_DATE_KEY,
Value: strconv.FormatInt(*tc.PrevInstallationDate, 10), Value: strconv.FormatInt(*tc.PrevInstallationDate, 10),
}) })
@@ -137,7 +137,7 @@ func TestEnsureInstallationDate(t *testing.T) {
} else { } else {
assert.NoError(t, err) assert.NoError(t, err)
data, err := th.App.Srv.Store.System().GetByName(model.SYSTEM_INSTALLATION_DATE_KEY) data, err := th.App.Srv().Store.System().GetByName(model.SYSTEM_INSTALLATION_DATE_KEY)
assert.Nil(t, err) assert.Nil(t, err)
value, _ := strconv.ParseInt(data.Value, 10, 64) value, _ := strconv.ParseInt(data.Value, 10, 64)
assert.True(t, *tc.ExpectedInstallationDate <= value && *tc.ExpectedInstallationDate+1000 >= value) assert.True(t, *tc.ExpectedInstallationDate <= value && *tc.ExpectedInstallationDate+1000 >= value)

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

@@ -10,9 +10,9 @@ import (
) )
func (a *App) GetDataRetentionPolicy() (*model.DataRetentionPolicy, *model.AppError) { func (a *App) GetDataRetentionPolicy() (*model.DataRetentionPolicy, *model.AppError) {
if a.DataRetention == nil { if a.DataRetention() == nil {
return nil, model.NewAppError("App.GetDataRetentionPolicy", "ent.data_retention.generic.license.error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("App.GetDataRetentionPolicy", "ent.data_retention.generic.license.error", nil, "", http.StatusNotImplemented)
} }
return a.DataRetention.GetPolicy() return a.DataRetention().GetPolicy()
} }

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

@@ -67,7 +67,7 @@ func (a *App) SendDailyDiagnostics() {
func (a *App) sendDailyDiagnostics(override bool) { func (a *App) sendDailyDiagnostics(override bool) {
if *a.Config().LogSettings.EnableDiagnostics && a.IsLeader() && (!strings.Contains(SEGMENT_KEY, "placeholder") || override) { if *a.Config().LogSettings.EnableDiagnostics && a.IsLeader() && (!strings.Contains(SEGMENT_KEY, "placeholder") || override) {
a.Srv.initDiagnostics("") a.Srv().initDiagnostics("")
a.trackActivity() a.trackActivity()
a.trackConfig() a.trackConfig()
a.trackLicense() a.trackLicense()
@@ -80,7 +80,7 @@ func (a *App) sendDailyDiagnostics(override bool) {
} }
func (a *App) SendDiagnostic(event string, properties map[string]interface{}) { func (a *App) SendDiagnostic(event string, properties map[string]interface{}) {
a.Srv.diagnosticClient.Enqueue(analytics.Track{ a.Srv().diagnosticClient.Enqueue(analytics.Track{
Event: event, Event: event,
UserId: a.DiagnosticId(), UserId: a.DiagnosticId(),
Properties: properties, Properties: properties,
@@ -137,78 +137,78 @@ func (a *App) trackActivity() {
activeUsersDailyCountChan := make(chan store.StoreResult, 1) activeUsersDailyCountChan := make(chan store.StoreResult, 1)
go func() { go func() {
count, err := a.Srv.Store.User().AnalyticsActiveCount(DAY_MILLISECONDS, model.UserCountOptions{IncludeBotAccounts: false, IncludeDeleted: false}) count, err := a.Srv().Store.User().AnalyticsActiveCount(DAY_MILLISECONDS, model.UserCountOptions{IncludeBotAccounts: false, IncludeDeleted: false})
activeUsersDailyCountChan <- store.StoreResult{Data: count, Err: err} activeUsersDailyCountChan <- store.StoreResult{Data: count, Err: err}
close(activeUsersDailyCountChan) close(activeUsersDailyCountChan)
}() }()
activeUsersMonthlyCountChan := make(chan store.StoreResult, 1) activeUsersMonthlyCountChan := make(chan store.StoreResult, 1)
go func() { go func() {
count, err := a.Srv.Store.User().AnalyticsActiveCount(MONTH_MILLISECONDS, model.UserCountOptions{IncludeBotAccounts: false, IncludeDeleted: false}) count, err := a.Srv().Store.User().AnalyticsActiveCount(MONTH_MILLISECONDS, model.UserCountOptions{IncludeBotAccounts: false, IncludeDeleted: false})
activeUsersMonthlyCountChan <- store.StoreResult{Data: count, Err: err} activeUsersMonthlyCountChan <- store.StoreResult{Data: count, Err: err}
close(activeUsersMonthlyCountChan) close(activeUsersMonthlyCountChan)
}() }()
if count, err := a.Srv.Store.User().Count(model.UserCountOptions{IncludeDeleted: true}); err == nil { if count, err := a.Srv().Store.User().Count(model.UserCountOptions{IncludeDeleted: true}); err == nil {
userCount = count userCount = count
} }
if count, err := a.Srv.Store.User().Count(model.UserCountOptions{IncludeBotAccounts: true, ExcludeRegularUsers: true}); err == nil { if count, err := a.Srv().Store.User().Count(model.UserCountOptions{IncludeBotAccounts: true, ExcludeRegularUsers: true}); err == nil {
botAccountsCount = count botAccountsCount = count
} }
if iucr, err := a.Srv.Store.User().AnalyticsGetInactiveUsersCount(); err == nil { if iucr, err := a.Srv().Store.User().AnalyticsGetInactiveUsersCount(); err == nil {
inactiveUserCount = iucr inactiveUserCount = iucr
} }
teamCount, err := a.Srv.Store.Team().AnalyticsTeamCount(false) teamCount, err := a.Srv().Store.Team().AnalyticsTeamCount(false)
if err != nil { if err != nil {
mlog.Error(err.Error()) mlog.Error(err.Error())
} }
if ucc, err := a.Srv.Store.Channel().AnalyticsTypeCount("", "O"); err == nil { if ucc, err := a.Srv().Store.Channel().AnalyticsTypeCount("", "O"); err == nil {
publicChannelCount = ucc publicChannelCount = ucc
} }
if pcc, err := a.Srv.Store.Channel().AnalyticsTypeCount("", "P"); err == nil { if pcc, err := a.Srv().Store.Channel().AnalyticsTypeCount("", "P"); err == nil {
privateChannelCount = pcc privateChannelCount = pcc
} }
if dcc, err := a.Srv.Store.Channel().AnalyticsTypeCount("", "D"); err == nil { if dcc, err := a.Srv().Store.Channel().AnalyticsTypeCount("", "D"); err == nil {
directChannelCount = dcc directChannelCount = dcc
} }
if duccr, err := a.Srv.Store.Channel().AnalyticsDeletedTypeCount("", "O"); err == nil { if duccr, err := a.Srv().Store.Channel().AnalyticsDeletedTypeCount("", "O"); err == nil {
deletedPublicChannelCount = duccr deletedPublicChannelCount = duccr
} }
if dpccr, err := a.Srv.Store.Channel().AnalyticsDeletedTypeCount("", "P"); err == nil { if dpccr, err := a.Srv().Store.Channel().AnalyticsDeletedTypeCount("", "P"); err == nil {
deletedPrivateChannelCount = dpccr deletedPrivateChannelCount = dpccr
} }
postsCount, _ = a.Srv.Store.Post().AnalyticsPostCount("", false, false) postsCount, _ = a.Srv().Store.Post().AnalyticsPostCount("", false, false)
postCountsOptions := &model.AnalyticsPostCountsOptions{TeamId: "", BotsOnly: false, YesterdayOnly: true} postCountsOptions := &model.AnalyticsPostCountsOptions{TeamId: "", BotsOnly: false, YesterdayOnly: true}
postCountsYesterday, _ := a.Srv.Store.Post().AnalyticsPostCountsByDay(postCountsOptions) postCountsYesterday, _ := a.Srv().Store.Post().AnalyticsPostCountsByDay(postCountsOptions)
postsCountPreviousDay = 0 postsCountPreviousDay = 0
if len(postCountsYesterday) > 0 { if len(postCountsYesterday) > 0 {
postsCountPreviousDay = int64(postCountsYesterday[0].Value) postsCountPreviousDay = int64(postCountsYesterday[0].Value)
} }
postCountsOptions = &model.AnalyticsPostCountsOptions{TeamId: "", BotsOnly: true, YesterdayOnly: true} postCountsOptions = &model.AnalyticsPostCountsOptions{TeamId: "", BotsOnly: true, YesterdayOnly: true}
botPostCountsYesterday, _ := a.Srv.Store.Post().AnalyticsPostCountsByDay(postCountsOptions) botPostCountsYesterday, _ := a.Srv().Store.Post().AnalyticsPostCountsByDay(postCountsOptions)
botPostsCountPreviousDay = 0 botPostsCountPreviousDay = 0
if len(botPostCountsYesterday) > 0 { if len(botPostCountsYesterday) > 0 {
botPostsCountPreviousDay = int64(botPostCountsYesterday[0].Value) botPostsCountPreviousDay = int64(botPostCountsYesterday[0].Value)
} }
slashCommandsCount, _ = a.Srv.Store.Command().AnalyticsCommandCount("") slashCommandsCount, _ = a.Srv().Store.Command().AnalyticsCommandCount("")
if c, err := a.Srv.Store.Webhook().AnalyticsIncomingCount(""); err == nil { if c, err := a.Srv().Store.Webhook().AnalyticsIncomingCount(""); err == nil {
incomingWebhooksCount = c incomingWebhooksCount = c
} }
outgoingWebhooksCount, _ = a.Srv.Store.Webhook().AnalyticsOutgoingCount("") outgoingWebhooksCount, _ = a.Srv().Store.Webhook().AnalyticsOutgoingCount("")
var activeUsersDailyCount int64 var activeUsersDailyCount int64
if r := <-activeUsersDailyCountChan; r.Err == nil { if r := <-activeUsersDailyCountChan; r.Err == nil {
@@ -788,7 +788,7 @@ func (a *App) trackServer() {
"operating_system": runtime.GOOS, "operating_system": runtime.GOOS,
} }
if scr, err := a.Srv.Store.User().AnalyticsGetSystemAdminCount(); err == nil { if scr, err := a.Srv().Store.User().AnalyticsGetSystemAdminCount(); err == nil {
data["system_admins"] = scr data["system_admins"] = scr
} }
@@ -797,12 +797,12 @@ func (a *App) trackServer() {
func (a *App) trackPermissions() { func (a *App) trackPermissions() {
phase1Complete := false phase1Complete := false
if _, err := a.Srv.Store.System().GetByName(ADVANCED_PERMISSIONS_MIGRATION_KEY); err == nil { if _, err := a.Srv().Store.System().GetByName(ADVANCED_PERMISSIONS_MIGRATION_KEY); err == nil {
phase1Complete = true phase1Complete = true
} }
phase2Complete := false phase2Complete := false
if _, err := a.Srv.Store.System().GetByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2); err == nil { if _, err := a.Srv().Store.System().GetByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2); err == nil {
phase2Complete = true phase2Complete = true
} }
@@ -894,7 +894,7 @@ func (a *App) trackPermissions() {
channelGuestPermissions = strings.Join(role.Permissions, " ") channelGuestPermissions = strings.Join(role.Permissions, " ")
} }
count, _ := a.Srv.Store.Team().AnalyticsGetTeamCountForScheme(scheme.Id) count, _ := a.Srv().Store.Team().AnalyticsGetTeamCountForScheme(scheme.Id)
a.SendDiagnostic(TRACK_PERMISSIONS_TEAM_SCHEMES, map[string]interface{}{ a.SendDiagnostic(TRACK_PERMISSIONS_TEAM_SCHEMES, map[string]interface{}{
"scheme_id": scheme.Id, "scheme_id": scheme.Id,
@@ -913,45 +913,45 @@ func (a *App) trackPermissions() {
func (a *App) trackElasticsearch() { func (a *App) trackElasticsearch() {
data := map[string]interface{}{} data := map[string]interface{}{}
if a.Elasticsearch != nil && a.Elasticsearch.GetVersion() != 0 { if a.Elasticsearch() != nil && a.Elasticsearch().GetVersion() != 0 {
data["elasticsearch_server_version"] = a.Elasticsearch.GetVersion() data["elasticsearch_server_version"] = a.Elasticsearch().GetVersion()
} }
a.SendDiagnostic(TRACK_ELASTICSEARCH, data) a.SendDiagnostic(TRACK_ELASTICSEARCH, data)
} }
func (a *App) trackGroups() { func (a *App) trackGroups() {
groupCount, err := a.Srv.Store.Group().GroupCount() groupCount, err := a.Srv().Store.Group().GroupCount()
if err != nil { if err != nil {
mlog.Error(err.Error()) mlog.Error(err.Error())
} }
groupTeamCount, err := a.Srv.Store.Group().GroupTeamCount() groupTeamCount, err := a.Srv().Store.Group().GroupTeamCount()
if err != nil { if err != nil {
mlog.Error(err.Error()) mlog.Error(err.Error())
} }
groupChannelCount, err := a.Srv.Store.Group().GroupChannelCount() groupChannelCount, err := a.Srv().Store.Group().GroupChannelCount()
if err != nil { if err != nil {
mlog.Error(err.Error()) mlog.Error(err.Error())
} }
groupSyncedTeamCount, err := a.Srv.Store.Team().GroupSyncedTeamCount() groupSyncedTeamCount, err := a.Srv().Store.Team().GroupSyncedTeamCount()
if err != nil { if err != nil {
mlog.Error(err.Error()) mlog.Error(err.Error())
} }
groupSyncedChannelCount, err := a.Srv.Store.Channel().GroupSyncedChannelCount() groupSyncedChannelCount, err := a.Srv().Store.Channel().GroupSyncedChannelCount()
if err != nil { if err != nil {
mlog.Error(err.Error()) mlog.Error(err.Error())
} }
groupMemberCount, err := a.Srv.Store.Group().GroupMemberCount() groupMemberCount, err := a.Srv().Store.Group().GroupMemberCount()
if err != nil { if err != nil {
mlog.Error(err.Error()) mlog.Error(err.Error())
} }
distinctGroupMemberCount, err := a.Srv.Store.Group().DistinctGroupMemberCount() distinctGroupMemberCount, err := a.Srv().Store.Group().DistinctGroupMemberCount()
if err != nil { if err != nil {
mlog.Error(err.Error()) mlog.Error(err.Error())
} }

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

@@ -31,7 +31,7 @@ func (a *App) DownloadFromURL(downloadURL string) ([]byte, error) {
return nil, errors.Errorf("insecure url not allowed %s", downloadURL) return nil, errors.Errorf("insecure url not allowed %s", downloadURL)
} }
client := a.HTTPService.MakeClient(true) client := a.HTTPService().MakeClient(true)
client.Timeout = HTTP_REQUEST_TIMEOUT client.Timeout = HTTP_REQUEST_TIMEOUT
resp, err := client.Get(downloadURL) resp, err := client.Get(downloadURL)

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

@@ -18,7 +18,7 @@ func (a *App) TestElasticsearch(cfg *model.Config) *model.AppError {
} }
} }
esI := a.Elasticsearch esI := a.Elasticsearch()
if esI == nil { if esI == nil {
err := model.NewAppError("TestElasticsearch", "ent.elasticsearch.test_config.license.error", nil, "", http.StatusNotImplemented) err := model.NewAppError("TestElasticsearch", "ent.elasticsearch.test_config.license.error", nil, "", http.StatusNotImplemented)
return err return err
@@ -31,7 +31,7 @@ func (a *App) TestElasticsearch(cfg *model.Config) *model.AppError {
} }
func (a *App) PurgeElasticsearchIndexes() *model.AppError { func (a *App) PurgeElasticsearchIndexes() *model.AppError {
esI := a.Elasticsearch esI := a.Elasticsearch()
if esI == nil { if esI == nil {
err := model.NewAppError("PurgeElasticsearchIndexes", "ent.elasticsearch.test_config.license.error", nil, "", http.StatusNotImplemented) err := model.NewAppError("PurgeElasticsearchIndexes", "ent.elasticsearch.test_config.license.error", nil, "", http.StatusNotImplemented)
return err return err

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

@@ -55,7 +55,7 @@ func (a *App) SetupInviteEmailRateLimiting() error {
return errors.Wrap(err, "Unable to setup email rate limiting GCRA rate limiter.") return errors.Wrap(err, "Unable to setup email rate limiting GCRA rate limiter.")
} }
a.Srv.EmailRateLimiter = rateLimiter a.Srv().EmailRateLimiter = rateLimiter
return nil return nil
} }
@@ -302,18 +302,18 @@ func (a *App) SendMfaChangeEmail(email string, activated bool, locale, siteURL s
} }
func (a *App) SendInviteEmails(team *model.Team, senderName string, senderUserId string, invites []string, siteURL string) { func (a *App) SendInviteEmails(team *model.Team, senderName string, senderUserId string, invites []string, siteURL string) {
if a.Srv.EmailRateLimiter == nil { if a.Srv().EmailRateLimiter == nil {
a.Log.Error("Email invite not sent, rate limiting could not be setup.", mlog.String("user_id", senderUserId), mlog.String("team_id", team.Id)) a.Log().Error("Email invite not sent, rate limiting could not be setup.", mlog.String("user_id", senderUserId), mlog.String("team_id", team.Id))
return return
} }
rateLimited, result, err := a.Srv.EmailRateLimiter.RateLimit(senderUserId, len(invites)) rateLimited, result, err := a.Srv().EmailRateLimiter.RateLimit(senderUserId, len(invites))
if err != nil { if err != nil {
a.Log.Error("Error rate limiting invite email.", mlog.String("user_id", senderUserId), mlog.String("team_id", team.Id), mlog.Err(err)) a.Log().Error("Error rate limiting invite email.", mlog.String("user_id", senderUserId), mlog.String("team_id", team.Id), mlog.Err(err))
return return
} }
if rateLimited { if rateLimited {
a.Log.Error("Invite emails rate limited.", a.Log().Error("Invite emails rate limited.",
mlog.String("user_id", senderUserId), mlog.String("user_id", senderUserId),
mlog.String("team_id", team.Id), mlog.String("team_id", team.Id),
mlog.String("retry_after", result.RetryAfter.String()), mlog.String("retry_after", result.RetryAfter.String()),
@@ -349,7 +349,7 @@ func (a *App) SendInviteEmails(team *model.Team, senderName string, senderUserId
props["name"] = team.Name props["name"] = team.Name
data := model.MapToJson(props) data := model.MapToJson(props)
if err := a.Srv.Store.Token().Save(token); err != nil { if err := a.Srv().Store.Token().Save(token); err != nil {
mlog.Error("Failed to send invite email successfully ", mlog.Err(err)) mlog.Error("Failed to send invite email successfully ", mlog.Err(err))
continue continue
} }
@@ -363,29 +363,29 @@ func (a *App) SendInviteEmails(team *model.Team, senderName string, senderUserId
} }
func (a *App) SendGuestInviteEmails(team *model.Team, channels []*model.Channel, senderName string, senderUserId string, invites []string, siteURL string, message string) { func (a *App) SendGuestInviteEmails(team *model.Team, channels []*model.Channel, senderName string, senderUserId string, invites []string, siteURL string, message string) {
if a.Srv.EmailRateLimiter == nil { if a.Srv().EmailRateLimiter == nil {
a.Log.Error("Email invite not sent, rate limiting could not be setup.", mlog.String("user_id", senderUserId), mlog.String("team_id", team.Id)) a.Log().Error("Email invite not sent, rate limiting could not be setup.", mlog.String("user_id", senderUserId), mlog.String("team_id", team.Id))
return return
} }
rateLimited, result, err := a.Srv.EmailRateLimiter.RateLimit(senderUserId, len(invites)) rateLimited, result, err := a.Srv().EmailRateLimiter.RateLimit(senderUserId, len(invites))
if err != nil { if err != nil {
a.Log.Error("Error rate limiting invite email.", mlog.String("user_id", senderUserId), mlog.String("team_id", team.Id), mlog.Err(err)) a.Log().Error("Error rate limiting invite email.", mlog.String("user_id", senderUserId), mlog.String("team_id", team.Id), mlog.Err(err))
return return
} }
sender, appErr := a.GetUser(senderUserId) sender, appErr := a.GetUser(senderUserId)
if appErr != nil { if appErr != nil {
a.Log.Error("Email invite not sent, unable to find the sender user.", mlog.String("user_id", senderUserId), mlog.String("team_id", team.Id), mlog.Err(appErr)) a.Log().Error("Email invite not sent, unable to find the sender user.", mlog.String("user_id", senderUserId), mlog.String("team_id", team.Id), mlog.Err(appErr))
return return
} }
senderProfileImage, _, appErr := a.GetProfileImage(sender) senderProfileImage, _, appErr := a.GetProfileImage(sender)
if appErr != nil { if appErr != nil {
a.Log.Warn("Unable to get the sender user profile image.", mlog.String("user_id", senderUserId), mlog.String("team_id", team.Id), mlog.Err(appErr)) a.Log().Warn("Unable to get the sender user profile image.", mlog.String("user_id", senderUserId), mlog.String("team_id", team.Id), mlog.Err(appErr))
} }
if rateLimited { if rateLimited {
a.Log.Error("Invite emails rate limited.", a.Log().Error("Invite emails rate limited.",
mlog.String("user_id", senderUserId), mlog.String("user_id", senderUserId),
mlog.String("team_id", team.Id), mlog.String("team_id", team.Id),
mlog.String("retry_after", result.RetryAfter.String()), mlog.String("retry_after", result.RetryAfter.String()),
@@ -437,7 +437,7 @@ func (a *App) SendGuestInviteEmails(team *model.Team, channels []*model.Channel,
props["name"] = team.Name props["name"] = team.Name
data := model.MapToJson(props) data := model.MapToJson(props)
if err := a.Srv.Store.Token().Save(token); err != nil { if err := a.Srv().Store.Token().Save(token); err != nil {
mlog.Error("Failed to send invite email successfully ", mlog.Err(err)) mlog.Error("Failed to send invite email successfully ", mlog.Err(err))
continue continue
} }

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

@@ -40,7 +40,7 @@ func (a *App) AddNotificationEmailToBatch(user *model.User, post *model.Post, te
return model.NewAppError("AddNotificationEmailToBatch", "api.email_batching.add_notification_email_to_batch.disabled.app_error", nil, "", http.StatusNotImplemented) return model.NewAppError("AddNotificationEmailToBatch", "api.email_batching.add_notification_email_to_batch.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
if !a.Srv.EmailBatching.Add(user, post, team) { if !a.Srv().EmailBatching.Add(user, post, team) {
mlog.Error("Email batching job's receiving channel was full. Please increase the EmailBatchingBufferSize.") mlog.Error("Email batching job's receiving channel was full. Please increase the EmailBatchingBufferSize.")
return model.NewAppError("AddNotificationEmailToBatch", "api.email_batching.add_notification_email_to_batch.channel_full.app_error", nil, "", http.StatusInternalServerError) return model.NewAppError("AddNotificationEmailToBatch", "api.email_batching.add_notification_email_to_batch.channel_full.app_error", nil, "", http.StatusInternalServerError)
} }

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

@@ -88,13 +88,13 @@ func TestCheckPendingNotifications(t *testing.T) {
}, },
} }
channelMember, err := th.App.Srv.Store.Channel().GetMember(th.BasicChannel.Id, th.BasicUser.Id) channelMember, err := th.App.Srv().Store.Channel().GetMember(th.BasicChannel.Id, th.BasicUser.Id)
require.Nil(t, err) require.Nil(t, err)
channelMember.LastViewedAt = 9999999 channelMember.LastViewedAt = 9999999
_, err = th.App.Srv.Store.Channel().UpdateMember(channelMember) _, err = th.App.Srv().Store.Channel().UpdateMember(channelMember)
require.Nil(t, err) require.Nil(t, err)
err = th.App.Srv.Store.Preference().Save(&model.Preferences{{ err = th.App.Srv().Store.Preference().Save(&model.Preferences{{
UserId: th.BasicUser.Id, UserId: th.BasicUser.Id,
Category: model.PREFERENCE_CATEGORY_NOTIFICATIONS, Category: model.PREFERENCE_CATEGORY_NOTIFICATIONS,
Name: model.PREFERENCE_NAME_EMAIL_INTERVAL, Name: model.PREFERENCE_NAME_EMAIL_INTERVAL,
@@ -109,10 +109,10 @@ func TestCheckPendingNotifications(t *testing.T) {
require.Len(t, job.pendingNotifications[th.BasicUser.Id], 1, "shouldn't have sent queued post") require.Len(t, job.pendingNotifications[th.BasicUser.Id], 1, "shouldn't have sent queued post")
// test that notifications are cleared if the user has acted // test that notifications are cleared if the user has acted
channelMember, err = th.App.Srv.Store.Channel().GetMember(th.BasicChannel.Id, th.BasicUser.Id) channelMember, err = th.App.Srv().Store.Channel().GetMember(th.BasicChannel.Id, th.BasicUser.Id)
require.Nil(t, err) require.Nil(t, err)
channelMember.LastViewedAt = 10001000 channelMember.LastViewedAt = 10001000
_, err = th.App.Srv.Store.Channel().UpdateMember(channelMember) _, err = th.App.Srv().Store.Channel().UpdateMember(channelMember)
require.Nil(t, err) require.Nil(t, err)
job.checkPendingNotifications(time.Unix(10002, 0), func(string, []*batchedNotification) {}) job.checkPendingNotifications(time.Unix(10002, 0), func(string, []*batchedNotification) {})
@@ -186,10 +186,10 @@ func TestCheckPendingNotificationsDefaultInterval(t *testing.T) {
job := NewEmailBatchingJob(th.Server, 128) job := NewEmailBatchingJob(th.Server, 128)
// bypasses recent user activity check // bypasses recent user activity check
channelMember, err := th.App.Srv.Store.Channel().GetMember(th.BasicChannel.Id, th.BasicUser.Id) channelMember, err := th.App.Srv().Store.Channel().GetMember(th.BasicChannel.Id, th.BasicUser.Id)
require.Nil(t, err) require.Nil(t, err)
channelMember.LastViewedAt = 9999000 channelMember.LastViewedAt = 9999000
_, err = th.App.Srv.Store.Channel().UpdateMember(channelMember) _, err = th.App.Srv().Store.Channel().UpdateMember(channelMember)
require.Nil(t, err) require.Nil(t, err)
job.pendingNotifications[th.BasicUser.Id] = []*batchedNotification{ job.pendingNotifications[th.BasicUser.Id] = []*batchedNotification{
@@ -224,14 +224,14 @@ func TestCheckPendingNotificationsCantParseInterval(t *testing.T) {
job := NewEmailBatchingJob(th.Server, 128) job := NewEmailBatchingJob(th.Server, 128)
// bypasses recent user activity check // bypasses recent user activity check
channelMember, err := th.App.Srv.Store.Channel().GetMember(th.BasicChannel.Id, th.BasicUser.Id) channelMember, err := th.App.Srv().Store.Channel().GetMember(th.BasicChannel.Id, th.BasicUser.Id)
require.Nil(t, err) require.Nil(t, err)
channelMember.LastViewedAt = 9999000 channelMember.LastViewedAt = 9999000
_, err = th.App.Srv.Store.Channel().UpdateMember(channelMember) _, err = th.App.Srv().Store.Channel().UpdateMember(channelMember)
require.Nil(t, err) require.Nil(t, err)
// preference value is not an integer, so we'll fall back to the default 15min value // preference value is not an integer, so we'll fall back to the default 15min value
err = th.App.Srv.Store.Preference().Save(&model.Preferences{{ err = th.App.Srv().Store.Preference().Save(&model.Preferences{{
UserId: th.BasicUser.Id, UserId: th.BasicUser.Id,
Category: model.PREFERENCE_CATEGORY_NOTIFICATIONS, Category: model.PREFERENCE_CATEGORY_NOTIFICATIONS,
Name: model.PREFERENCE_NAME_EMAIL_INTERVAL, Name: model.PREFERENCE_NAME_EMAIL_INTERVAL,

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

@@ -54,7 +54,7 @@ func (a *App) CreateEmoji(sessionUserId string, emoji *model.Emoji, multiPartIma
return nil, model.NewAppError("createEmoji", "api.emoji.create.other_user.app_error", nil, "", http.StatusForbidden) return nil, model.NewAppError("createEmoji", "api.emoji.create.other_user.app_error", nil, "", http.StatusForbidden)
} }
if existingEmoji, err := a.Srv.Store.Emoji().GetByName(emoji.Name, true); err == nil && existingEmoji != nil { if existingEmoji, err := a.Srv().Store.Emoji().GetByName(emoji.Name, true); err == nil && existingEmoji != nil {
return nil, model.NewAppError("createEmoji", "api.emoji.create.duplicate.app_error", nil, "", http.StatusBadRequest) return nil, model.NewAppError("createEmoji", "api.emoji.create.duplicate.app_error", nil, "", http.StatusBadRequest)
} }
@@ -68,7 +68,7 @@ func (a *App) CreateEmoji(sessionUserId string, emoji *model.Emoji, multiPartIma
return nil, err return nil, err
} }
emoji, err := a.Srv.Store.Emoji().Save(emoji) emoji, err := a.Srv().Store.Emoji().Save(emoji)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -80,7 +80,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) {
return a.Srv.Store.Emoji().GetList(page*perPage, perPage, sort) return a.Srv().Store.Emoji().GetList(page*perPage, perPage, sort)
} }
func (a *App) UploadEmojiImage(id string, imageData *multipart.FileHeader) *model.AppError { func (a *App) UploadEmojiImage(id string, imageData *multipart.FileHeader) *model.AppError {
@@ -157,7 +157,7 @@ func (a *App) UploadEmojiImage(id string, imageData *multipart.FileHeader) *mode
} }
func (a *App) DeleteEmoji(emoji *model.Emoji) *model.AppError { func (a *App) DeleteEmoji(emoji *model.Emoji) *model.AppError {
if err := a.Srv.Store.Emoji().Delete(emoji, model.GetMillis()); err != nil { if err := a.Srv().Store.Emoji().Delete(emoji, model.GetMillis()); err != nil {
return err return err
} }
@@ -175,7 +175,7 @@ func (a *App) GetEmoji(emojiId string) (*model.Emoji, *model.AppError) {
return nil, model.NewAppError("GetEmoji", "api.emoji.storage.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("GetEmoji", "api.emoji.storage.app_error", nil, "", http.StatusNotImplemented)
} }
return a.Srv.Store.Emoji().Get(emojiId, false) return a.Srv().Store.Emoji().Get(emojiId, false)
} }
func (a *App) GetEmojiByName(emojiName string) (*model.Emoji, *model.AppError) { func (a *App) GetEmojiByName(emojiName string) (*model.Emoji, *model.AppError) {
@@ -187,7 +187,7 @@ func (a *App) GetEmojiByName(emojiName string) (*model.Emoji, *model.AppError) {
return nil, model.NewAppError("GetEmoji", "api.emoji.storage.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("GetEmoji", "api.emoji.storage.app_error", nil, "", http.StatusNotImplemented)
} }
return a.Srv.Store.Emoji().GetByName(emojiName, true) return a.Srv().Store.Emoji().GetByName(emojiName, true)
} }
func (a *App) GetMultipleEmojiByName(names []string) ([]*model.Emoji, *model.AppError) { func (a *App) GetMultipleEmojiByName(names []string) ([]*model.Emoji, *model.AppError) {
@@ -195,11 +195,11 @@ func (a *App) GetMultipleEmojiByName(names []string) ([]*model.Emoji, *model.App
return nil, model.NewAppError("GetMultipleEmojiByName", "api.emoji.disabled.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("GetMultipleEmojiByName", "api.emoji.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
return a.Srv.Store.Emoji().GetMultipleByName(names) return a.Srv().Store.Emoji().GetMultipleByName(names)
} }
func (a *App) GetEmojiImage(emojiId string) ([]byte, string, *model.AppError) { func (a *App) GetEmojiImage(emojiId string) ([]byte, string, *model.AppError) {
_, storeErr := a.Srv.Store.Emoji().Get(emojiId, true) _, storeErr := a.Srv().Store.Emoji().Get(emojiId, true)
if storeErr != nil { if storeErr != nil {
return nil, "", storeErr return nil, "", storeErr
} }
@@ -222,7 +222,7 @@ func (a *App) SearchEmoji(name string, prefixOnly bool, limit int) ([]*model.Emo
return nil, model.NewAppError("SearchEmoji", "api.emoji.disabled.app_error", nil, "", http.StatusNotImplemented) return nil, model.NewAppError("SearchEmoji", "api.emoji.disabled.app_error", nil, "", http.StatusNotImplemented)
} }
return a.Srv.Store.Emoji().Search(name, prefixOnly, limit) return a.Srv().Store.Emoji().Search(name, prefixOnly, limit)
} }
// GetEmojiStaticUrl returns a relative static URL for system default emojis, // GetEmojiStaticUrl returns a relative static URL for system default emojis,
@@ -234,7 +234,7 @@ func (a *App) GetEmojiStaticUrl(emojiName string) (string, *model.AppError) {
return path.Join(subPath, "/static/emoji", id+".png"), nil return path.Join(subPath, "/static/emoji", id+".png"), nil
} }
if emoji, err := a.Srv.Store.Emoji().GetByName(emojiName, true); err == nil { if emoji, err := a.Srv().Store.Emoji().GetByName(emojiName, true); err == nil {
return path.Join(subPath, "/api/v4/emoji", emoji.Id, "image"), nil return path.Join(subPath, "/api/v4/emoji", emoji.Id, "image"), nil
} else { } else {
return "", err return "", err
@@ -289,7 +289,7 @@ func (a *App) deleteEmojiImage(id string) {
} }
func (a *App) deleteReactionsForEmoji(emojiName string) { func (a *App) deleteReactionsForEmoji(emojiName string) {
if err := a.Srv.Store.Reaction().DeleteAllWithEmojiName(emojiName); err != nil { if err := a.Srv().Store.Reaction().DeleteAllWithEmojiName(emojiName); err != nil {
mlog.Warn("Unable to delete reactions when deleting emoji", mlog.String("emoji_name", emojiName), mlog.Err(err)) mlog.Warn("Unable to delete reactions when deleting emoji", mlog.String("emoji_name", emojiName), mlog.Err(err))
} }
} }

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

@@ -104,10 +104,10 @@ func TestSAMLSettings(t *testing.T) {
th.Server.initEnterprise() th.Server.initEnterprise()
if tc.isNil { if tc.isNil {
assert.Nil(t, th.App.Srv.Saml) assert.Nil(t, th.App.Srv().Saml)
} else { } else {
assert.NotNil(t, th.App.Srv.Saml) assert.NotNil(t, th.App.Srv().Saml)
metadata, err := th.App.Srv.Saml.GetMetadata() metadata, err := th.App.Srv().Saml.GetMetadata()
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, tc.metadata, metadata) assert.Equal(t, tc.metadata, metadata)
} }

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

@@ -123,7 +123,7 @@ func (a *App) ExportVersion(writer io.Writer) *model.AppError {
func (a *App) ExportAllTeams(writer io.Writer) *model.AppError { func (a *App) ExportAllTeams(writer io.Writer) *model.AppError {
afterId := strings.Repeat("0", 26) afterId := strings.Repeat("0", 26)
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 err return err
@@ -154,7 +154,7 @@ func (a *App) ExportAllTeams(writer io.Writer) *model.AppError {
func (a *App) ExportAllChannels(writer io.Writer) *model.AppError { func (a *App) ExportAllChannels(writer io.Writer) *model.AppError {
afterId := strings.Repeat("0", 26) afterId := strings.Repeat("0", 26)
for { for {
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 err return err
@@ -185,7 +185,7 @@ func (a *App) ExportAllChannels(writer io.Writer) *model.AppError {
func (a *App) ExportAllUsers(writer io.Writer) *model.AppError { func (a *App) ExportAllUsers(writer io.Writer) *model.AppError {
afterId := strings.Repeat("0", 26) afterId := strings.Repeat("0", 26)
for { for {
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 err return err
@@ -260,7 +260,7 @@ func (a *App) ExportAllUsers(writer io.Writer) *model.AppError {
func (a *App) buildUserTeamAndChannelMemberships(userId string) (*[]UserTeamImportData, *model.AppError) { func (a *App) buildUserTeamAndChannelMemberships(userId string) (*[]UserTeamImportData, *model.AppError) {
var memberships []UserTeamImportData var memberships []UserTeamImportData
members, err := a.Srv.Store.Team().GetTeamMembersForExport(userId) members, err := a.Srv().Store.Team().GetTeamMembersForExport(userId)
if err != nil { if err != nil {
return nil, err return nil, err
@@ -281,7 +281,7 @@ func (a *App) buildUserTeamAndChannelMemberships(userId string) (*[]UserTeamImpo
} }
// Get the user theme // Get the user theme
themePreference, err := a.Srv.Store.Preference().Get(member.UserId, model.PREFERENCE_CATEGORY_THEME, member.TeamId) themePreference, err := a.Srv().Store.Preference().Get(member.UserId, model.PREFERENCE_CATEGORY_THEME, member.TeamId)
if err == nil { if err == nil {
memberData.Theme = &themePreference.Value memberData.Theme = &themePreference.Value
} }
@@ -297,7 +297,7 @@ func (a *App) buildUserTeamAndChannelMemberships(userId string) (*[]UserTeamImpo
func (a *App) buildUserChannelMemberships(userId string, teamId string) (*[]UserChannelImportData, *model.AppError) { func (a *App) buildUserChannelMemberships(userId string, teamId string) (*[]UserChannelImportData, *model.AppError) {
var memberships []UserChannelImportData var memberships []UserChannelImportData
members, err := a.Srv.Store.Channel().GetChannelMembersForExport(userId, teamId) members, err := a.Srv().Store.Channel().GetChannelMembersForExport(userId, teamId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -339,7 +339,7 @@ func (a *App) ExportAllPosts(writer io.Writer) *model.AppError {
afterId := strings.Repeat("0", 26) afterId := strings.Repeat("0", 26)
for { for {
posts, err := a.Srv.Store.Post().GetParentsForExportAfter(1000, afterId) posts, err := a.Srv().Store.Post().GetParentsForExportAfter(1000, afterId)
if err != nil { if err != nil {
return err return err
} }
@@ -381,7 +381,7 @@ func (a *App) ExportAllPosts(writer io.Writer) *model.AppError {
func (a *App) buildPostReplies(postId string) (*[]ReplyImportData, *model.AppError) { func (a *App) buildPostReplies(postId string) (*[]ReplyImportData, *model.AppError) {
var replies []ReplyImportData var replies []ReplyImportData
replyPosts, err := a.Srv.Store.Post().GetRepliesForExport(postId) replyPosts, err := a.Srv().Store.Post().GetRepliesForExport(postId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -403,14 +403,14 @@ func (a *App) buildPostReplies(postId string) (*[]ReplyImportData, *model.AppErr
func (a *App) BuildPostReactions(postId string) (*[]ReactionImportData, *model.AppError) { func (a *App) BuildPostReactions(postId string) (*[]ReactionImportData, *model.AppError) {
var reactionsOfPost []ReactionImportData var reactionsOfPost []ReactionImportData
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, err return nil, err
} }
for _, reaction := range reactions { for _, reaction := range reactions {
var user *model.User var user *model.User
user, err = a.Srv.Store.User().Get(reaction.UserId) user, err = a.Srv().Store.User().Get(reaction.UserId)
if err != nil { if err != nil {
if err.Id == store.MISSING_ACCOUNT_ERROR { // this is a valid case, the user that reacted might've been deleted by now if err.Id == store.MISSING_ACCOUNT_ERROR { // this is a valid case, the user that reacted might've been deleted by now
mlog.Info("Skipping reactions by user since the entity doesn't exist anymore", mlog.String("user_id", reaction.UserId)) mlog.Info("Skipping reactions by user since the entity doesn't exist anymore", mlog.String("user_id", reaction.UserId))
@@ -515,7 +515,7 @@ func (a *App) copyEmojiImages(emojiId string, emojiImagePath string, pathToDir s
func (a *App) ExportAllDirectChannels(writer io.Writer) *model.AppError { func (a *App) ExportAllDirectChannels(writer io.Writer) *model.AppError {
afterId := strings.Repeat("0", 26) afterId := strings.Repeat("0", 26)
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 err return err
} }
@@ -545,7 +545,7 @@ func (a *App) ExportAllDirectChannels(writer io.Writer) *model.AppError {
func (a *App) ExportAllDirectPosts(writer io.Writer) *model.AppError { func (a *App) ExportAllDirectPosts(writer io.Writer) *model.AppError {
afterId := strings.Repeat("0", 26) afterId := strings.Repeat("0", 26)
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 err return err
} }

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

@@ -89,7 +89,7 @@ func TestExportUserChannels(t *testing.T) {
} }
var preferences model.Preferences var preferences model.Preferences
preferences = append(preferences, preference) preferences = append(preferences, preference)
err := th.App.Srv.Store.Preference().Save(&preferences) err := th.App.Srv().Store.Preference().Save(&preferences)
require.Nil(t, err) require.Nil(t, err)
th.App.UpdateChannelMemberNotifyProps(notifyProps, channel.Id, user.Id) th.App.UpdateChannelMemberNotifyProps(notifyProps, channel.Id, user.Id)
@@ -231,7 +231,7 @@ func TestExportDMChannel(t *testing.T) {
err := th1.App.BulkExport(&b, "somefile", "somePath", "someDir") err := th1.App.BulkExport(&b, "somefile", "somePath", "someDir")
require.Nil(t, err) require.Nil(t, err)
channels, err := th1.App.Srv.Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000") channels, err := th1.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000")
require.Nil(t, err) require.Nil(t, err)
assert.Equal(t, 1, len(channels)) assert.Equal(t, 1, len(channels))
@@ -240,7 +240,7 @@ func TestExportDMChannel(t *testing.T) {
th2 := Setup(t) th2 := Setup(t)
defer th2.TearDown() defer th2.TearDown()
channels, err = th2.App.Srv.Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000") channels, err = th2.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000")
require.Nil(t, err) require.Nil(t, err)
assert.Equal(t, 0, len(channels)) assert.Equal(t, 0, len(channels))
@@ -250,7 +250,7 @@ func TestExportDMChannel(t *testing.T) {
assert.Equal(t, 0, i) assert.Equal(t, 0, i)
// Ensure the Members of the imported DM channel is the same was from the exported // Ensure the Members of the imported DM channel is the same was from the exported
channels, err = th2.App.Srv.Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000") channels, err = th2.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000")
require.Nil(t, err) require.Nil(t, err)
assert.Equal(t, 1, len(channels)) assert.Equal(t, 1, len(channels))
assert.ElementsMatch(t, []string{th1.BasicUser.Username, th1.BasicUser2.Username}, *channels[0].Members) assert.ElementsMatch(t, []string{th1.BasicUser.Username, th1.BasicUser2.Username}, *channels[0].Members)
@@ -267,14 +267,14 @@ func TestExportDMChannelToSelf(t *testing.T) {
err := th1.App.BulkExport(&b, "somefile", "somePath", "someDir") err := th1.App.BulkExport(&b, "somefile", "somePath", "someDir")
require.Nil(t, err) require.Nil(t, err)
channels, err := th1.App.Srv.Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000") channels, err := th1.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000")
require.Nil(t, err) require.Nil(t, err)
assert.Equal(t, 1, len(channels)) assert.Equal(t, 1, len(channels))
th2 := Setup(t) th2 := Setup(t)
defer th2.TearDown() defer th2.TearDown()
channels, err = th2.App.Srv.Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000") channels, err = th2.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000")
require.Nil(t, err) require.Nil(t, err)
assert.Equal(t, 0, len(channels)) assert.Equal(t, 0, len(channels))
@@ -283,7 +283,7 @@ func TestExportDMChannelToSelf(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, 0, i) assert.Equal(t, 0, i)
channels, err = th2.App.Srv.Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000") channels, err = th2.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000")
require.Nil(t, err) require.Nil(t, err)
assert.Equal(t, 1, len(channels)) assert.Equal(t, 1, len(channels))
assert.Equal(t, 1, len((*channels[0].Members))) assert.Equal(t, 1, len((*channels[0].Members)))
@@ -305,7 +305,7 @@ func TestExportGMChannel(t *testing.T) {
err := th1.App.BulkExport(&b, "somefile", "somePath", "someDir") err := th1.App.BulkExport(&b, "somefile", "somePath", "someDir")
require.Nil(t, err) require.Nil(t, err)
channels, err := th1.App.Srv.Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000") channels, err := th1.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000")
require.Nil(t, err) require.Nil(t, err)
assert.Equal(t, 1, len(channels)) assert.Equal(t, 1, len(channels))
@@ -314,7 +314,7 @@ func TestExportGMChannel(t *testing.T) {
th2 := Setup(t) th2 := Setup(t)
defer th2.TearDown() defer th2.TearDown()
channels, err = th2.App.Srv.Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000") channels, err = th2.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000")
require.Nil(t, err) require.Nil(t, err)
assert.Equal(t, 0, len(channels)) assert.Equal(t, 0, len(channels))
} }
@@ -337,7 +337,7 @@ func TestExportGMandDMChannels(t *testing.T) {
err := th1.App.BulkExport(&b, "somefile", "somePath", "someDir") err := th1.App.BulkExport(&b, "somefile", "somePath", "someDir")
require.Nil(t, err) require.Nil(t, err)
channels, err := th1.App.Srv.Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000") channels, err := th1.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000")
require.Nil(t, err) require.Nil(t, err)
assert.Equal(t, 2, len(channels)) assert.Equal(t, 2, len(channels))
@@ -346,7 +346,7 @@ func TestExportGMandDMChannels(t *testing.T) {
th2 := Setup(t) th2 := Setup(t)
defer th2.TearDown() defer th2.TearDown()
channels, err = th2.App.Srv.Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000") channels, err = th2.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000")
require.Nil(t, err) require.Nil(t, err)
assert.Equal(t, 0, len(channels)) assert.Equal(t, 0, len(channels))
@@ -356,7 +356,7 @@ func TestExportGMandDMChannels(t *testing.T) {
assert.Equal(t, 0, i) assert.Equal(t, 0, i)
// Ensure the Members of the imported GM channel is the same was from the exported // Ensure the Members of the imported GM channel is the same was from the exported
channels, err = th2.App.Srv.Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000") channels, err = th2.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000")
require.Nil(t, err) require.Nil(t, err)
// Adding some deteminism so its possible to assert on slice index // Adding some deteminism so its possible to assert on slice index
@@ -412,7 +412,7 @@ func TestExportDMandGMPost(t *testing.T) {
} }
th1.App.CreatePost(p4, gmChannel, false) th1.App.CreatePost(p4, gmChannel, false)
posts, err := th1.App.Srv.Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000") posts, err := th1.App.Srv().Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000")
require.Nil(t, err) require.Nil(t, err)
assert.Equal(t, 4, len(posts)) assert.Equal(t, 4, len(posts))
@@ -425,7 +425,7 @@ func TestExportDMandGMPost(t *testing.T) {
th2 := Setup(t) th2 := Setup(t)
defer th2.TearDown() defer th2.TearDown()
posts, err = th2.App.Srv.Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000") posts, err = th2.App.Srv().Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000")
require.Nil(t, err) require.Nil(t, err)
assert.Equal(t, 0, len(posts)) assert.Equal(t, 0, len(posts))
@@ -434,7 +434,7 @@ func TestExportDMandGMPost(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, 0, i) assert.Equal(t, 0, i)
posts, err = th2.App.Srv.Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000") posts, err = th2.App.Srv().Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000")
require.Nil(t, err) require.Nil(t, err)
// Adding some deteminism so its possible to assert on slice index // Adding some deteminism so its possible to assert on slice index
@@ -458,7 +458,7 @@ func TestExportDMPostWithSelf(t *testing.T) {
err := th1.App.BulkExport(&b, "somefile", "somePath", "someDir") err := th1.App.BulkExport(&b, "somefile", "somePath", "someDir")
require.Nil(t, err) require.Nil(t, err)
posts, err := th1.App.Srv.Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000") posts, err := th1.App.Srv().Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000")
require.Nil(t, err) require.Nil(t, err)
assert.Equal(t, 1, len(posts)) assert.Equal(t, 1, len(posts))
@@ -467,7 +467,7 @@ func TestExportDMPostWithSelf(t *testing.T) {
th2 := Setup(t) th2 := Setup(t)
defer th2.TearDown() defer th2.TearDown()
posts, err = th2.App.Srv.Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000") posts, err = th2.App.Srv().Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000")
require.Nil(t, err) require.Nil(t, err)
assert.Equal(t, 0, len(posts)) assert.Equal(t, 0, len(posts))
@@ -476,7 +476,7 @@ func TestExportDMPostWithSelf(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, 0, i) assert.Equal(t, 0, i)
posts, err = th2.App.Srv.Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000") posts, err = th2.App.Srv().Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000")
require.Nil(t, err) require.Nil(t, err)
assert.Equal(t, 1, len(posts)) assert.Equal(t, 1, len(posts))
assert.Equal(t, 1, len((*posts[0].ChannelMembers))) assert.Equal(t, 1, len((*posts[0].ChannelMembers)))

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

@@ -185,7 +185,7 @@ func (a *App) findTeamIdForFilename(post *model.Post, id, filename string) strin
name, _ := url.QueryUnescape(filename) name, _ := url.QueryUnescape(filename)
// This post is in a direct channel so we need to figure out what team the files are stored under. // This post is in a direct channel so we need to figure out what team the files are stored under.
teams, err := a.Srv.Store.Team().GetTeamsByUserId(post.UserId) teams, err := a.Srv().Store.Team().GetTeamsByUserId(post.UserId)
if err != nil { if err != nil {
mlog.Error("Unable to get teams when migrating post to use FileInfo", mlog.Err(err), mlog.String("post_id", post.Id)) mlog.Error("Unable to get teams when migrating post to use FileInfo", mlog.Err(err), mlog.String("post_id", post.Id))
return "" return ""
@@ -237,7 +237,7 @@ func (a *App) MigrateFilenamesToFileInfos(post *model.Post) []*model.FileInfo {
return []*model.FileInfo{} return []*model.FileInfo{}
} }
channel, errCh := a.Srv.Store.Channel().Get(post.ChannelId, true) channel, errCh := a.Srv().Store.Channel().Get(post.ChannelId, true)
// There's a weird bug that rarely happens where a post ends up with duplicate Filenames so remove those // There's a weird bug that rarely happens where a post ends up with duplicate Filenames so remove those
filenames := utils.RemoveDuplicatesFromStringArray(post.Filenames) filenames := utils.RemoveDuplicatesFromStringArray(post.Filenames)
if errCh != nil { if errCh != nil {
@@ -290,7 +290,7 @@ func (a *App) MigrateFilenamesToFileInfos(post *model.Post) []*model.FileInfo {
fileMigrationLock.Lock() fileMigrationLock.Lock()
defer fileMigrationLock.Unlock() defer fileMigrationLock.Unlock()
result, err := a.Srv.Store.Post().Get(post.Id, false) result, err := a.Srv().Store.Post().Get(post.Id, false)
if err != nil { if err != nil {
mlog.Error("Unable to get post when migrating post to use FileInfos", mlog.Err(err), mlog.String("post_id", post.Id)) mlog.Error("Unable to get post when migrating post to use FileInfos", mlog.Err(err), mlog.String("post_id", post.Id))
return []*model.FileInfo{} return []*model.FileInfo{}
@@ -299,7 +299,7 @@ func (a *App) MigrateFilenamesToFileInfos(post *model.Post) []*model.FileInfo {
if newPost := result.Posts[post.Id]; len(newPost.Filenames) != len(post.Filenames) { if newPost := result.Posts[post.Id]; len(newPost.Filenames) != len(post.Filenames) {
// Another thread has already created FileInfos for this post, so just return those // Another thread has already created FileInfos for this post, so just return those
var fileInfos []*model.FileInfo var fileInfos []*model.FileInfo
fileInfos, err = a.Srv.Store.FileInfo().GetForPost(post.Id, true, false, false) fileInfos, err = a.Srv().Store.FileInfo().GetForPost(post.Id, true, false, false)
if err != nil { if err != nil {
mlog.Error("Unable to get FileInfos for migrated post", mlog.Err(err), mlog.String("post_id", post.Id)) mlog.Error("Unable to get FileInfos for migrated post", mlog.Err(err), mlog.String("post_id", post.Id))
return []*model.FileInfo{} return []*model.FileInfo{}
@@ -314,7 +314,7 @@ func (a *App) MigrateFilenamesToFileInfos(post *model.Post) []*model.FileInfo {
savedInfos := make([]*model.FileInfo, 0, len(infos)) savedInfos := make([]*model.FileInfo, 0, len(infos))
fileIds := make([]string, 0, len(filenames)) fileIds := make([]string, 0, len(filenames))
for _, info := range infos { for _, info := range infos {
if _, err = a.Srv.Store.FileInfo().Save(info); err != nil { if _, err = a.Srv().Store.FileInfo().Save(info); err != nil {
mlog.Error( mlog.Error(
"Unable to save file info when migrating post to use FileInfos", "Unable to save file info when migrating post to use FileInfos",
mlog.String("post_id", post.Id), mlog.String("post_id", post.Id),
@@ -337,7 +337,7 @@ func (a *App) MigrateFilenamesToFileInfos(post *model.Post) []*model.FileInfo {
newPost.FileIds = fileIds newPost.FileIds = fileIds
// Update Posts to clear Filenames and set FileIds // Update Posts to clear Filenames and set FileIds
if _, err = a.Srv.Store.Post().Update(newPost, post); err != nil { if _, err = a.Srv().Store.Post().Update(newPost, post); err != nil {
mlog.Error( mlog.Error(
"Unable to save migrated post when migrating to use FileInfos", "Unable to save migrated post when migrating to use FileInfos",
mlog.String("new_file_ids", strings.Join(newPost.FileIds, ",")), mlog.String("new_file_ids", strings.Join(newPost.FileIds, ",")),
@@ -457,43 +457,43 @@ func (a *App) DoUploadFile(now time.Time, rawTeamId string, rawChannelId string,
return info, err return info, err
} }
func UploadFileSetTeamId(teamId string) func(t *uploadFileTask) { func UploadFileSetTeamId(teamId string) func(t *UploadFileTask) {
return func(t *uploadFileTask) { return func(t *UploadFileTask) {
t.TeamId = filepath.Base(teamId) t.TeamId = filepath.Base(teamId)
} }
} }
func UploadFileSetUserId(userId string) func(t *uploadFileTask) { func UploadFileSetUserId(userId string) func(t *UploadFileTask) {
return func(t *uploadFileTask) { return func(t *UploadFileTask) {
t.UserId = filepath.Base(userId) t.UserId = filepath.Base(userId)
} }
} }
func UploadFileSetTimestamp(timestamp time.Time) func(t *uploadFileTask) { func UploadFileSetTimestamp(timestamp time.Time) func(t *UploadFileTask) {
return func(t *uploadFileTask) { return func(t *UploadFileTask) {
t.Timestamp = timestamp t.Timestamp = timestamp
} }
} }
func UploadFileSetContentLength(contentLength int64) func(t *uploadFileTask) { func UploadFileSetContentLength(contentLength int64) func(t *UploadFileTask) {
return func(t *uploadFileTask) { return func(t *UploadFileTask) {
t.ContentLength = contentLength t.ContentLength = contentLength
} }
} }
func UploadFileSetClientId(clientId string) func(t *uploadFileTask) { func UploadFileSetClientId(clientId string) func(t *UploadFileTask) {
return func(t *uploadFileTask) { return func(t *UploadFileTask) {
t.ClientId = clientId t.ClientId = clientId
} }
} }
func UploadFileSetRaw() func(t *uploadFileTask) { func UploadFileSetRaw() func(t *UploadFileTask) {
return func(t *uploadFileTask) { return func(t *UploadFileTask) {
t.Raw = true t.Raw = true
} }
} }
type uploadFileTask struct { type UploadFileTask struct {
// File name. // File name.
Name string Name string
@@ -539,7 +539,7 @@ type uploadFileTask struct {
saveToDatabase func(*model.FileInfo) (*model.FileInfo, *model.AppError) saveToDatabase func(*model.FileInfo) (*model.FileInfo, *model.AppError)
} }
func (t *uploadFileTask) init(a *App) { func (t *UploadFileTask) init(a *App) {
t.buf = &bytes.Buffer{} t.buf = &bytes.Buffer{}
t.maxFileSize = *a.Config().FileSettings.MaxFileSize t.maxFileSize = *a.Config().FileSettings.MaxFileSize
t.limit = *a.Config().FileSettings.MaxFileSize t.limit = *a.Config().FileSettings.MaxFileSize
@@ -571,7 +571,7 @@ func (t *uploadFileTask) init(a *App) {
t.pluginsEnvironment = a.GetPluginsEnvironment() t.pluginsEnvironment = a.GetPluginsEnvironment()
t.writeFile = a.WriteFile t.writeFile = a.WriteFile
t.saveToDatabase = a.Srv.Store.FileInfo().Save t.saveToDatabase = a.Srv().Store.FileInfo().Save
} }
// UploadFileX uploads a single file as specified in t. It applies the upload // UploadFileX uploads a single file as specified in t. It applies the upload
@@ -580,9 +580,9 @@ func (t *uploadFileTask) init(a *App) {
// upload, returning a rejection error. In this case FileInfo would have // upload, returning a rejection error. In this case FileInfo would have
// contained the last "good" FileInfo before the execution of that plugin. // contained the last "good" FileInfo before the execution of that plugin.
func (a *App) UploadFileX(channelId, name string, input io.Reader, func (a *App) UploadFileX(channelId, name string, input io.Reader,
opts ...func(*uploadFileTask)) (*model.FileInfo, *model.AppError) { opts ...func(*UploadFileTask)) (*model.FileInfo, *model.AppError) {
t := &uploadFileTask{ t := &UploadFileTask{
ChannelId: filepath.Base(channelId), ChannelId: filepath.Base(channelId),
Name: filepath.Base(name), Name: filepath.Base(name),
Input: input, Input: input,
@@ -644,7 +644,7 @@ func (a *App) UploadFileX(channelId, name string, input io.Reader,
return t.fileinfo, nil return t.fileinfo, nil
} }
func (t *uploadFileTask) readAll() *model.AppError { func (t *UploadFileTask) readAll() *model.AppError {
_, err := t.buf.ReadFrom(t.limitedInput) _, err := t.buf.ReadFrom(t.limitedInput)
if err != nil { if err != nil {
// Ugly hack: the error is not exported from net/http. // Ugly hack: the error is not exported from net/http.
@@ -666,7 +666,7 @@ func (t *uploadFileTask) readAll() *model.AppError {
return nil return nil
} }
func (t *uploadFileTask) runPlugins() *model.AppError { func (t *UploadFileTask) runPlugins() *model.AppError {
if t.pluginsEnvironment == nil { if t.pluginsEnvironment == nil {
return nil return nil
} }
@@ -703,7 +703,7 @@ func (t *uploadFileTask) runPlugins() *model.AppError {
return nil return nil
} }
func (t *uploadFileTask) preprocessImage() *model.AppError { func (t *UploadFileTask) preprocessImage() *model.AppError {
// If SVG, attempt to extract dimensions and then return // If SVG, attempt to extract dimensions and then return
if t.fileinfo.MimeType == "image/svg+xml" { if t.fileinfo.MimeType == "image/svg+xml" {
svgInfo, err := parseSVG(t.newReader()) svgInfo, err := parseSVG(t.newReader())
@@ -767,7 +767,7 @@ func (t *uploadFileTask) preprocessImage() *model.AppError {
return nil return nil
} }
func (t *uploadFileTask) postprocessImage() { func (t *UploadFileTask) postprocessImage() {
// don't try to process SVG files // don't try to process SVG files
if t.fileinfo.MimeType == "image/svg+xml" { if t.fileinfo.MimeType == "image/svg+xml" {
return return
@@ -845,7 +845,7 @@ func (t *uploadFileTask) postprocessImage() {
wg.Wait() wg.Wait()
} }
func (t uploadFileTask) newReader() io.Reader { func (t UploadFileTask) newReader() io.Reader {
if t.teeInput != nil { if t.teeInput != nil {
return io.MultiReader(bytes.NewReader(t.buf.Bytes()), t.teeInput) return io.MultiReader(bytes.NewReader(t.buf.Bytes()), t.teeInput)
} else { } else {
@@ -853,7 +853,7 @@ func (t uploadFileTask) newReader() io.Reader {
} }
} }
func (t uploadFileTask) pathPrefix() string { func (t UploadFileTask) pathPrefix() string {
return t.Timestamp.Format("20060102") + return t.Timestamp.Format("20060102") +
"/teams/" + t.TeamId + "/teams/" + t.TeamId +
"/channels/" + t.ChannelId + "/channels/" + t.ChannelId +
@@ -861,7 +861,7 @@ func (t uploadFileTask) pathPrefix() string {
"/" + t.fileinfo.Id + "/" "/" + t.fileinfo.Id + "/"
} }
func (t uploadFileTask) newAppError(id string, details interface{}, httpStatus int, extra ...interface{}) *model.AppError { func (t UploadFileTask) newAppError(id string, details interface{}, httpStatus int, extra ...interface{}) *model.AppError {
params := map[string]interface{}{ params := map[string]interface{}{
"Name": t.Name, "Name": t.Name,
"Filename": t.Name, "Filename": t.Name,
@@ -950,7 +950,7 @@ func (a *App) DoUploadFileExpectModification(now time.Time, rawTeamId string, ra
return nil, data, err return nil, data, err
} }
if _, err := a.Srv.Store.FileInfo().Save(info); err != nil { if _, err := a.Srv().Store.FileInfo().Save(info); err != nil {
return nil, data, err return nil, data, err
} }
@@ -1094,7 +1094,7 @@ func (a *App) generatePreviewImage(img image.Image, previewPath string, width in
} }
func (a *App) GetFileInfo(fileId string) (*model.FileInfo, *model.AppError) { func (a *App) GetFileInfo(fileId string) (*model.FileInfo, *model.AppError) {
return a.Srv.Store.FileInfo().Get(fileId) return a.Srv().Store.FileInfo().Get(fileId)
} }
func (a *App) GetFile(fileId string) ([]byte, *model.AppError) { func (a *App) GetFile(fileId string) ([]byte, *model.AppError) {
@@ -1117,7 +1117,7 @@ func (a *App) CopyFileInfos(userId string, fileIds []string) ([]string, *model.A
now := model.GetMillis() now := model.GetMillis()
for _, fileId := range fileIds { for _, fileId := range fileIds {
fileInfo, err := a.Srv.Store.FileInfo().Get(fileId) fileInfo, err := a.Srv().Store.FileInfo().Get(fileId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -1128,7 +1128,7 @@ func (a *App) CopyFileInfos(userId string, fileIds []string) ([]string, *model.A
fileInfo.UpdateAt = now fileInfo.UpdateAt = now
fileInfo.PostId = "" fileInfo.PostId = ""
if _, err := a.Srv.Store.FileInfo().Save(fileInfo); err != nil { if _, err := a.Srv().Store.FileInfo().Save(fileInfo); err != nil {
return newFileIds, err return newFileIds, err
} }

1139
app/file.go.orig Обычный файл

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

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

@@ -60,7 +60,7 @@ func BenchmarkUploadFile(b *testing.B) {
th := Setup(b).InitBasic() th := Setup(b).InitBasic()
defer th.TearDown() defer th.TearDown()
// disable logging in the benchmark, as best we can // disable logging in the benchmark, as best we can
th.App.Log.SetConsoleLevel(mlog.LevelError) th.App.Log().SetConsoleLevel(mlog.LevelError)
teamId := model.NewId() teamId := model.NewId()
channelId := model.NewId() channelId := model.NewId()
userId := model.NewId() userId := model.NewId()
@@ -91,7 +91,7 @@ func BenchmarkUploadFile(b *testing.B) {
if err != nil { if err != nil {
b.Fatal(err) b.Fatal(err)
} }
th.App.Srv.Store.FileInfo().PermanentDelete(info1.Id) th.App.Srv().Store.FileInfo().PermanentDelete(info1.Id)
th.App.RemoveFile(info1.Path) th.App.RemoveFile(info1.Path)
}, },
@@ -110,7 +110,7 @@ func BenchmarkUploadFile(b *testing.B) {
if aerr != nil { if aerr != nil {
b.Fatal(aerr) b.Fatal(aerr)
} }
th.App.Srv.Store.FileInfo().PermanentDelete(info.Id) th.App.Srv().Store.FileInfo().PermanentDelete(info.Id)
th.App.RemoveFile(info.Path) th.App.RemoveFile(info.Path)
}, },
}, },
@@ -128,7 +128,7 @@ func BenchmarkUploadFile(b *testing.B) {
if aerr != nil { if aerr != nil {
b.Fatal(aerr) b.Fatal(aerr)
} }
th.App.Srv.Store.FileInfo().PermanentDelete(info.Id) th.App.Srv().Store.FileInfo().PermanentDelete(info.Id)
th.App.RemoveFile(info.Path) th.App.RemoveFile(info.Path)
}, },
}, },
@@ -143,7 +143,7 @@ func BenchmarkUploadFile(b *testing.B) {
if err != nil { if err != nil {
b.Fatal(err) b.Fatal(err)
} }
th.App.Srv.Store.FileInfo().PermanentDelete(resp.FileInfos[0].Id) th.App.Srv().Store.FileInfo().PermanentDelete(resp.FileInfos[0].Id)
th.App.RemoveFile(resp.FileInfos[0].Path) th.App.RemoveFile(resp.FileInfos[0].Path)
}, },
}, },
@@ -160,7 +160,7 @@ func BenchmarkUploadFile(b *testing.B) {
if aerr != nil { if aerr != nil {
b.Fatal(aerr) b.Fatal(aerr)
} }
th.App.Srv.Store.FileInfo().PermanentDelete(info.Id) th.App.Srv().Store.FileInfo().PermanentDelete(info.Id)
th.App.RemoveFile(info.Path) th.App.RemoveFile(info.Path)
}, },
}, },
@@ -177,7 +177,7 @@ func BenchmarkUploadFile(b *testing.B) {
if aerr != nil { if aerr != nil {
b.Fatal(aerr) b.Fatal(aerr)
} }
th.App.Srv.Store.FileInfo().PermanentDelete(info.Id) th.App.Srv().Store.FileInfo().PermanentDelete(info.Id)
th.App.RemoveFile(info.Path) th.App.RemoveFile(info.Path)
}, },
}, },

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

@@ -48,7 +48,7 @@ func TestDoUploadFile(t *testing.T) {
info1, err := th.App.DoUploadFile(time.Date(2007, 2, 4, 1, 2, 3, 4, time.Local), teamId, channelId, userId, filename, data) info1, err := th.App.DoUploadFile(time.Date(2007, 2, 4, 1, 2, 3, 4, time.Local), teamId, channelId, userId, filename, data)
require.Nil(t, err, "DoUploadFile should succeed with valid data") require.Nil(t, err, "DoUploadFile should succeed with valid data")
defer func() { defer func() {
th.App.Srv.Store.FileInfo().PermanentDelete(info1.Id) th.App.Srv().Store.FileInfo().PermanentDelete(info1.Id)
th.App.RemoveFile(info1.Path) th.App.RemoveFile(info1.Path)
}() }()
@@ -58,7 +58,7 @@ func TestDoUploadFile(t *testing.T) {
info2, err := th.App.DoUploadFile(time.Date(2007, 2, 4, 1, 2, 3, 4, time.Local), teamId, channelId, userId, filename, data) info2, err := th.App.DoUploadFile(time.Date(2007, 2, 4, 1, 2, 3, 4, time.Local), teamId, channelId, userId, filename, data)
require.Nil(t, err, "DoUploadFile should succeed with valid data") require.Nil(t, err, "DoUploadFile should succeed with valid data")
defer func() { defer func() {
th.App.Srv.Store.FileInfo().PermanentDelete(info2.Id) th.App.Srv().Store.FileInfo().PermanentDelete(info2.Id)
th.App.RemoveFile(info2.Path) th.App.RemoveFile(info2.Path)
}() }()
@@ -68,7 +68,7 @@ func TestDoUploadFile(t *testing.T) {
info3, err := th.App.DoUploadFile(time.Date(2008, 3, 5, 1, 2, 3, 4, time.Local), teamId, channelId, userId, filename, data) info3, err := th.App.DoUploadFile(time.Date(2008, 3, 5, 1, 2, 3, 4, time.Local), teamId, channelId, userId, filename, data)
require.Nil(t, err, "DoUploadFile should succeed with valid data") require.Nil(t, err, "DoUploadFile should succeed with valid data")
defer func() { defer func() {
th.App.Srv.Store.FileInfo().PermanentDelete(info3.Id) th.App.Srv().Store.FileInfo().PermanentDelete(info3.Id)
th.App.RemoveFile(info3.Path) th.App.RemoveFile(info3.Path)
}() }()
@@ -78,7 +78,7 @@ func TestDoUploadFile(t *testing.T) {
info4, err := th.App.DoUploadFile(time.Date(2009, 3, 5, 1, 2, 3, 4, time.Local), "../../"+teamId, "../../"+channelId, "../../"+userId, "../../"+filename, data) info4, err := th.App.DoUploadFile(time.Date(2009, 3, 5, 1, 2, 3, 4, time.Local), "../../"+teamId, "../../"+channelId, "../../"+userId, "../../"+filename, data)
require.Nil(t, err, "DoUploadFile should succeed with valid data") require.Nil(t, err, "DoUploadFile should succeed with valid data")
defer func() { defer func() {
th.App.Srv.Store.FileInfo().PermanentDelete(info4.Id) th.App.Srv().Store.FileInfo().PermanentDelete(info4.Id)
th.App.RemoveFile(info4.Path) th.App.RemoveFile(info4.Path)
}() }()
@@ -97,7 +97,7 @@ func TestUploadFile(t *testing.T) {
info1, err := th.App.UploadFile(data, channelId, filename) info1, err := th.App.UploadFile(data, channelId, filename)
require.Nil(t, err, "UploadFile should succeed with valid data") require.Nil(t, err, "UploadFile should succeed with valid data")
defer func() { defer func() {
th.App.Srv.Store.FileInfo().PermanentDelete(info1.Id) th.App.Srv().Store.FileInfo().PermanentDelete(info1.Id)
th.App.RemoveFile(info1.Path) th.App.RemoveFile(info1.Path)
}() }()
@@ -275,7 +275,7 @@ func TestCopyFileInfos(t *testing.T) {
info1, err := th.App.DoUploadFile(time.Date(2007, 2, 4, 1, 2, 3, 4, time.Local), teamId, channelId, userId, filename, data) info1, err := th.App.DoUploadFile(time.Date(2007, 2, 4, 1, 2, 3, 4, time.Local), teamId, channelId, userId, filename, data)
require.Nil(t, err) require.Nil(t, err)
defer func() { defer func() {
th.App.Srv.Store.FileInfo().PermanentDelete(info1.Id) th.App.Srv().Store.FileInfo().PermanentDelete(info1.Id)
th.App.RemoveFile(info1.Path) th.App.RemoveFile(info1.Path)
}() }()
@@ -285,7 +285,7 @@ func TestCopyFileInfos(t *testing.T) {
info2, err := th.App.GetFileInfo(infoIds[0]) info2, err := th.App.GetFileInfo(infoIds[0])
require.Nil(t, err) require.Nil(t, err)
defer func() { defer func() {
th.App.Srv.Store.FileInfo().PermanentDelete(info2.Id) th.App.Srv().Store.FileInfo().PermanentDelete(info2.Id)
th.App.RemoveFile(info2.Path) th.App.RemoveFile(info2.Path)
}() }()

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

@@ -8,48 +8,48 @@ import (
) )
func (a *App) GetGroup(id string) (*model.Group, *model.AppError) { func (a *App) GetGroup(id string) (*model.Group, *model.AppError) {
return a.Srv.Store.Group().Get(id) return a.Srv().Store.Group().Get(id)
} }
func (a *App) GetGroupByName(name string) (*model.Group, *model.AppError) { func (a *App) GetGroupByName(name string) (*model.Group, *model.AppError) {
return a.Srv.Store.Group().GetByName(name) return a.Srv().Store.Group().GetByName(name)
} }
func (a *App) GetGroupByRemoteID(remoteID string, groupSource model.GroupSource) (*model.Group, *model.AppError) { func (a *App) GetGroupByRemoteID(remoteID string, groupSource model.GroupSource) (*model.Group, *model.AppError) {
return a.Srv.Store.Group().GetByRemoteID(remoteID, groupSource) return a.Srv().Store.Group().GetByRemoteID(remoteID, groupSource)
} }
func (a *App) GetGroupsBySource(groupSource model.GroupSource) ([]*model.Group, *model.AppError) { func (a *App) GetGroupsBySource(groupSource model.GroupSource) ([]*model.Group, *model.AppError) {
return a.Srv.Store.Group().GetAllBySource(groupSource) return a.Srv().Store.Group().GetAllBySource(groupSource)
} }
func (a *App) GetGroupsByUserId(userId string) ([]*model.Group, *model.AppError) { func (a *App) GetGroupsByUserId(userId string) ([]*model.Group, *model.AppError) {
return a.Srv.Store.Group().GetByUser(userId) return a.Srv().Store.Group().GetByUser(userId)
} }
func (a *App) CreateGroup(group *model.Group) (*model.Group, *model.AppError) { func (a *App) CreateGroup(group *model.Group) (*model.Group, *model.AppError) {
return a.Srv.Store.Group().Create(group) return a.Srv().Store.Group().Create(group)
} }
func (a *App) UpdateGroup(group *model.Group) (*model.Group, *model.AppError) { func (a *App) UpdateGroup(group *model.Group) (*model.Group, *model.AppError) {
return a.Srv.Store.Group().Update(group) return a.Srv().Store.Group().Update(group)
} }
func (a *App) DeleteGroup(groupID string) (*model.Group, *model.AppError) { func (a *App) DeleteGroup(groupID string) (*model.Group, *model.AppError) {
return a.Srv.Store.Group().Delete(groupID) return a.Srv().Store.Group().Delete(groupID)
} }
func (a *App) GetGroupMemberUsers(groupID string) ([]*model.User, *model.AppError) { func (a *App) GetGroupMemberUsers(groupID string) ([]*model.User, *model.AppError) {
return a.Srv.Store.Group().GetMemberUsers(groupID) return a.Srv().Store.Group().GetMemberUsers(groupID)
} }
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, err return nil, 0, err
} }
count, err := a.Srv.Store.Group().GetMemberCount(groupID) count, err := a.Srv().Store.Group().GetMemberCount(groupID)
if err != nil { if err != nil {
return nil, 0, err return nil, 0, err
} }
@@ -57,26 +57,26 @@ func (a *App) GetGroupMemberUsersPage(groupID string, page int, perPage int) ([]
} }
func (a *App) UpsertGroupMember(groupID string, userID string) (*model.GroupMember, *model.AppError) { func (a *App) UpsertGroupMember(groupID string, userID string) (*model.GroupMember, *model.AppError) {
return a.Srv.Store.Group().UpsertMember(groupID, userID) return a.Srv().Store.Group().UpsertMember(groupID, userID)
} }
func (a *App) DeleteGroupMember(groupID string, userID string) (*model.GroupMember, *model.AppError) { func (a *App) DeleteGroupMember(groupID string, userID string) (*model.GroupMember, *model.AppError) {
return a.Srv.Store.Group().DeleteMember(groupID, userID) return a.Srv().Store.Group().DeleteMember(groupID, userID)
} }
func (a *App) UpsertGroupSyncable(groupSyncable *model.GroupSyncable) (*model.GroupSyncable, *model.AppError) { func (a *App) UpsertGroupSyncable(groupSyncable *model.GroupSyncable) (*model.GroupSyncable, *model.AppError) {
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)
if err != nil && err.Id != "store.sql_group.no_rows" { if err != nil && err.Id != "store.sql_group.no_rows" {
return nil, err return nil, err
} }
if gs == nil { if gs == nil {
gs, err = a.Srv.Store.Group().CreateGroupSyncable(groupSyncable) gs, err = a.Srv().Store.Group().CreateGroupSyncable(groupSyncable)
if err != nil { if err != nil {
return nil, err return nil, err
} }
} else { } else {
gs, err = a.Srv.Store.Group().UpdateGroupSyncable(groupSyncable) gs, err = a.Srv().Store.Group().UpdateGroupSyncable(groupSyncable)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -84,7 +84,7 @@ func (a *App) UpsertGroupSyncable(groupSyncable *model.GroupSyncable) (*model.Gr
// if the type is channel, then upsert the associated GroupTeam [MM-14675] // if the type is channel, then upsert the associated GroupTeam [MM-14675]
if gs.Type == model.GroupSyncableTypeChannel { if gs.Type == model.GroupSyncableTypeChannel {
channel, err := a.Srv.Store.Channel().Get(gs.SyncableId, true) channel, err := a.Srv().Store.Channel().Get(gs.SyncableId, true)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -103,11 +103,11 @@ func (a *App) UpsertGroupSyncable(groupSyncable *model.GroupSyncable) (*model.Gr
} }
func (a *App) GetGroupSyncable(groupID string, syncableID string, syncableType model.GroupSyncableType) (*model.GroupSyncable, *model.AppError) { func (a *App) GetGroupSyncable(groupID string, syncableID string, syncableType model.GroupSyncableType) (*model.GroupSyncable, *model.AppError) {
return a.Srv.Store.Group().GetGroupSyncable(groupID, syncableID, syncableType) return a.Srv().Store.Group().GetGroupSyncable(groupID, syncableID, syncableType)
} }
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) {
return a.Srv.Store.Group().GetAllGroupSyncablesByGroupId(groupID, syncableType) return a.Srv().Store.Group().GetAllGroupSyncablesByGroupId(groupID, syncableType)
} }
func (a *App) UpdateGroupSyncable(groupSyncable *model.GroupSyncable) (*model.GroupSyncable, *model.AppError) { func (a *App) UpdateGroupSyncable(groupSyncable *model.GroupSyncable) (*model.GroupSyncable, *model.AppError) {
@@ -116,7 +116,7 @@ func (a *App) UpdateGroupSyncable(groupSyncable *model.GroupSyncable) (*model.Gr
if groupSyncable.DeleteAt == 0 { if groupSyncable.DeleteAt == 0 {
// updating a *deleted* GroupSyncable, so no need to ensure the GroupTeam is present (as done in the upsert) // updating a *deleted* GroupSyncable, so no need to ensure the GroupTeam is present (as done in the upsert)
gs, err = a.Srv.Store.Group().UpdateGroupSyncable(groupSyncable) gs, err = a.Srv().Store.Group().UpdateGroupSyncable(groupSyncable)
} else { } else {
// do an upsert to ensure that there's an associated GroupTeam // do an upsert to ensure that there's an associated GroupTeam
gs, err = a.UpsertGroupSyncable(groupSyncable) gs, err = a.UpsertGroupSyncable(groupSyncable)
@@ -129,20 +129,20 @@ func (a *App) UpdateGroupSyncable(groupSyncable *model.GroupSyncable) (*model.Gr
} }
func (a *App) DeleteGroupSyncable(groupID string, syncableID string, syncableType model.GroupSyncableType) (*model.GroupSyncable, *model.AppError) { func (a *App) DeleteGroupSyncable(groupID string, syncableID string, syncableType model.GroupSyncableType) (*model.GroupSyncable, *model.AppError) {
gs, err := a.Srv.Store.Group().DeleteGroupSyncable(groupID, syncableID, syncableType) gs, err := a.Srv().Store.Group().DeleteGroupSyncable(groupID, syncableID, syncableType)
if err != nil { if err != nil {
return nil, err return nil, err
} }
// if a GroupTeam is being deleted delete all associated GroupChannels // if a GroupTeam is being deleted delete all associated GroupChannels
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, err return nil, err
} }
for _, groupChannel := range allGroupChannels { for _, groupChannel := range allGroupChannels {
_, err = a.Srv.Store.Group().DeleteGroupSyncable(groupChannel.GroupId, groupChannel.SyncableId, groupChannel.Type) _, err = a.Srv().Store.Group().DeleteGroupSyncable(groupChannel.GroupId, groupChannel.SyncableId, groupChannel.Type)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -153,28 +153,28 @@ func (a *App) DeleteGroupSyncable(groupID string, syncableID string, syncableTyp
} }
func (a *App) TeamMembersToAdd(since int64, teamID *string) ([]*model.UserTeamIDPair, *model.AppError) { func (a *App) TeamMembersToAdd(since int64, teamID *string) ([]*model.UserTeamIDPair, *model.AppError) {
return a.Srv.Store.Group().TeamMembersToAdd(since, teamID) return a.Srv().Store.Group().TeamMembersToAdd(since, teamID)
} }
func (a *App) ChannelMembersToAdd(since int64, channelID *string) ([]*model.UserChannelIDPair, *model.AppError) { func (a *App) ChannelMembersToAdd(since int64, channelID *string) ([]*model.UserChannelIDPair, *model.AppError) {
return a.Srv.Store.Group().ChannelMembersToAdd(since, channelID) return a.Srv().Store.Group().ChannelMembersToAdd(since, channelID)
} }
func (a *App) TeamMembersToRemove(teamID *string) ([]*model.TeamMember, *model.AppError) { func (a *App) TeamMembersToRemove(teamID *string) ([]*model.TeamMember, *model.AppError) {
return a.Srv.Store.Group().TeamMembersToRemove(teamID) return a.Srv().Store.Group().TeamMembersToRemove(teamID)
} }
func (a *App) ChannelMembersToRemove(teamID *string) ([]*model.ChannelMember, *model.AppError) { func (a *App) ChannelMembersToRemove(teamID *string) ([]*model.ChannelMember, *model.AppError) {
return a.Srv.Store.Group().ChannelMembersToRemove(teamID) return a.Srv().Store.Group().ChannelMembersToRemove(teamID)
} }
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, err return nil, 0, 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, err return nil, 0, err
} }
@@ -183,12 +183,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, err return nil, 0, 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, err return nil, 0, err
} }
@@ -197,7 +197,7 @@ func (a *App) GetGroupsByTeam(teamId string, opts model.GroupSearchOpts) ([]*mod
} }
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) {
return a.Srv.Store.Group().GetGroups(page, perPage, opts) return a.Srv().Store.Group().GetGroups(page, perPage, opts)
} }
// TeamMembersMinusGroupMembers returns the set of users on the given team minus the set of users in the given // TeamMembersMinusGroupMembers returns the set of users on the given team minus the set of users in the given
@@ -206,7 +206,7 @@ func (a *App) GetGroups(page, perPage int, opts model.GroupSearchOpts) ([]*model
// The result can be used, for example, to determine the set of users who would be removed from a team if the team // The result can be used, for example, to determine the set of users who would be removed from a team if the team
// were group-constrained with the given groups. // were group-constrained with the given groups.
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, err return nil, 0, err
} }
@@ -248,7 +248,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, err return nil, 0, err
} }
@@ -256,7 +256,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) {
return a.Srv.Store.Group().GetByIDs(groupIDs) return a.Srv().Store.Group().GetByIDs(groupIDs)
} }
// ChannelMembersMinusGroupMembers returns the set of users in the given channel minus the set of users in the given // ChannelMembersMinusGroupMembers returns the set of users in the given channel minus the set of users in the given
@@ -265,7 +265,7 @@ func (a *App) GetGroupsByIDs(groupIDs []string) ([]*model.Group, *model.AppError
// The result can be used, for example, to determine the set of users who would be removed from a channel if the // The result can be used, for example, to determine the set of users who would be removed from a channel if the
// channel were group-constrained with the given groups. // channel were group-constrained with the given groups.
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, err return nil, 0, err
} }
@@ -307,7 +307,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, err return nil, 0, err
} }
@@ -317,7 +317,7 @@ func (a *App) ChannelMembersMinusGroupMembers(channelID string, groupIDs []strin
// UserIsInAdminRoleGroup returns true at least one of the user's groups are configured to set the members as // UserIsInAdminRoleGroup returns true at least one of the user's groups are configured to set the members as
// admins in the given syncable. // admins in the given syncable.
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, err return false, err
} }

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

@@ -78,7 +78,7 @@ func setupTestHelper(enterprise bool, tb testing.TB) *TestHelper {
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.ListenAddress = prevListenAddress }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.ListenAddress = prevListenAddress })
th.App.Srv.Store.MarkSystemRanUnitTests() th.App.Srv().Store.MarkSystemRanUnitTests()
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableOpenServer = true }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableOpenServer = true })
@@ -204,7 +204,7 @@ func (me *TestHelper) CreateBot() *model.Bot {
OwnerId: me.BasicUser.Id, OwnerId: me.BasicUser.Id,
} }
me.App.Log.SetConsoleLevel(mlog.LevelError) me.App.Log().SetConsoleLevel(mlog.LevelError)
bot, err := me.App.CreateBot(bot) bot, err := me.App.CreateBot(bot)
if err != nil { if err != nil {
mlog.Error(err.Error()) mlog.Error(err.Error())
@@ -212,7 +212,7 @@ func (me *TestHelper) CreateBot() *model.Bot {
time.Sleep(time.Second) time.Sleep(time.Second)
panic(err) panic(err)
} }
me.App.Log.SetConsoleLevel(mlog.LevelDebug) me.App.Log().SetConsoleLevel(mlog.LevelDebug)
return bot return bot
} }
@@ -431,7 +431,7 @@ func (me *TestHelper) CreateGroup() *model.Group {
func (me *TestHelper) CreateEmoji() *model.Emoji { func (me *TestHelper) CreateEmoji() *model.Emoji {
utils.DisableDebugLogForTest() utils.DisableDebugLogForTest()
emoji, err := me.App.Srv.Store.Emoji().Save(&model.Emoji{ emoji, err := me.App.Srv().Store.Emoji().Save(&model.Emoji{
CreatorId: me.BasicUser.Id, CreatorId: me.BasicUser.Id,
Name: model.NewRandomString(10), Name: model.NewRandomString(10),
}) })
@@ -522,13 +522,13 @@ func (me *TestHelper) ResetEmojisMigration() {
} }
func (me *TestHelper) CheckTeamCount(t *testing.T, expected int64) { func (me *TestHelper) CheckTeamCount(t *testing.T, expected int64) {
teamCount, err := me.App.Srv.Store.Team().AnalyticsTeamCount(false) teamCount, err := me.App.Srv().Store.Team().AnalyticsTeamCount(false)
require.Nil(t, err, "Failed to get team count.") require.Nil(t, err, "Failed to get team count.")
require.Equalf(t, teamCount, expected, "Unexpected number of teams. Expected: %v, found: %v", expected, teamCount) require.Equalf(t, teamCount, expected, "Unexpected number of teams. Expected: %v, found: %v", expected, teamCount)
} }
func (me *TestHelper) CheckChannelsCount(t *testing.T, expected int64) { func (me *TestHelper) CheckChannelsCount(t *testing.T, expected int64) {
count, err := me.App.Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_OPEN) count, err := me.App.Srv().Store.Channel().AnalyticsTypeCount("", model.CHANNEL_OPEN)
require.Nilf(t, err, "Failed to get channel count.") require.Nilf(t, err, "Failed to get channel count.")
require.Equalf(t, count, expected, "Unexpected number of channels. Expected: %v, found: %v", expected, count) require.Equalf(t, count, expected, "Unexpected number of channels. Expected: %v, found: %v", expected, count)
} }

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

@@ -37,8 +37,8 @@ func (a *App) BulkImport(fileReader io.Reader, dryRun bool, workers int) (*model
scanner := bufio.NewScanner(fileReader) scanner := bufio.NewScanner(fileReader)
lineNumber := 0 lineNumber := 0
a.Srv.Store.LockToMaster() a.Srv().Store.LockToMaster()
defer a.Srv.Store.UnlockFromMaster() defer a.Srv().Store.UnlockFromMaster()
errorsChan := make(chan LineImportWorkerError, (2*workers)+1) // size chosen to ensure it never gets filled up completely. errorsChan := make(chan LineImportWorkerError, (2*workers)+1) // size chosen to ensure it never gets filled up completely.
var wg sync.WaitGroup var wg sync.WaitGroup

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

@@ -163,7 +163,7 @@ func (a *App) importTeam(data *TeamImportData, dryRun bool) *model.AppError {
} }
var team *model.Team var team *model.Team
team, err := a.Srv.Store.Team().GetByName(*data.Name) team, err := a.Srv().Store.Team().GetByName(*data.Name)
if err != nil { if err != nil {
team = &model.Team{} team = &model.Team{}
@@ -221,13 +221,13 @@ func (a *App) importChannel(data *ChannelImportData, dryRun bool) *model.AppErro
return nil return nil
} }
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]interface{}{"TeamName": *data.Team}, err.Error(), http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_channel.team_not_found.error", map[string]interface{}{"TeamName": *data.Team}, err.Error(), http.StatusBadRequest)
} }
var channel *model.Channel var channel *model.Channel
if result, err := a.Srv.Store.Channel().GetByNameIncludeDeleted(team.Id, *data.Name, true); err == nil { if result, err := a.Srv().Store.Channel().GetByNameIncludeDeleted(team.Id, *data.Name, true); err == nil {
channel = result channel = result
} else { } else {
channel = &model.Channel{} channel = &model.Channel{}
@@ -295,7 +295,7 @@ func (a *App) importUser(data *UserImportData, dryRun bool) *model.AppError {
var user *model.User var user *model.User
var err *model.AppError var err *model.AppError
user, err = a.Srv.Store.User().GetByUsername(*data.Username) user, err = a.Srv().Store.User().GetByUsername(*data.Username)
if err != nil { if err != nil {
user = &model.User{} user = &model.User{}
user.MakeNonNil() user.MakeNonNil()
@@ -499,7 +499,7 @@ func (a *App) importUser(data *UserImportData, dryRun bool) *model.AppError {
} }
} else { } else {
if hasUserAuthDataChanged { if hasUserAuthDataChanged {
if _, err = a.Srv.Store.User().UpdateAuthData(user.Id, authService, authData, user.Email, false); err != nil { if _, err = a.Srv().Store.User().UpdateAuthData(user.Id, authService, authData, user.Email, false); err != nil {
return err return err
} }
} }
@@ -636,7 +636,7 @@ func (a *App) importUser(data *UserImportData, dryRun bool) *model.AppError {
} }
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, err.Error(), http.StatusInternalServerError)
} }
} }
@@ -721,7 +721,7 @@ func (a *App) importUserTeams(user *model.User, data *[]UserTeamImportData) *mod
} }
if len(teamThemePreferences) > 0 { if len(teamThemePreferences) > 0 {
if err := a.Srv.Store.Preference().Save(&teamThemePreferences); err != nil { if err := a.Srv().Store.Preference().Save(&teamThemePreferences); 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, err.Error(), http.StatusInternalServerError)
} }
} }
@@ -818,7 +818,7 @@ func (a *App) importUserChannels(user *model.User, team *model.Team, teamMember
} }
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_channels.save_preferences.error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("BulkImport", "app.import.import_user_channels.save_preferences.error", nil, err.Error(), http.StatusInternalServerError)
} }
} }
@@ -833,7 +833,7 @@ func (a *App) importReaction(data *ReactionImportData, post *model.Post, dryRun
} }
var user *model.User var user *model.User
user, err = a.Srv.Store.User().GetByUsername(*data.User) user, err = a.Srv().Store.User().GetByUsername(*data.User)
if err != nil { if err != nil {
return model.NewAppError("BulkImport", "app.import.import_post.user_not_found.error", map[string]interface{}{"Username": data.User}, err.Error(), http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_post.user_not_found.error", map[string]interface{}{"Username": data.User}, err.Error(), http.StatusBadRequest)
} }
@@ -844,7 +844,7 @@ func (a *App) importReaction(data *ReactionImportData, post *model.Post, dryRun
EmojiName: *data.EmojiName, EmojiName: *data.EmojiName,
CreateAt: *data.CreateAt, CreateAt: *data.CreateAt,
} }
if _, err = a.Srv.Store.Reaction().Save(reaction); err != nil { if _, err = a.Srv().Store.Reaction().Save(reaction); err != nil {
return err return err
} }
@@ -858,13 +858,13 @@ func (a *App) importReply(data *ReplyImportData, post *model.Post, teamId string
} }
var user *model.User var user *model.User
user, err = a.Srv.Store.User().GetByUsername(*data.User) user, err = a.Srv().Store.User().GetByUsername(*data.User)
if err != nil { if err != nil {
return model.NewAppError("BulkImport", "app.import.import_post.user_not_found.error", map[string]interface{}{"Username": data.User}, err.Error(), http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_post.user_not_found.error", map[string]interface{}{"Username": data.User}, err.Error(), http.StatusBadRequest)
} }
// Check if this post already exists. // Check if this post already exists.
replies, err := a.Srv.Store.Post().GetPostsCreatedAt(post.ChannelId, *data.CreateAt) replies, err := a.Srv().Store.Post().GetPostsCreatedAt(post.ChannelId, *data.CreateAt)
if err != nil { if err != nil {
return err return err
} }
@@ -893,7 +893,7 @@ func (a *App) importReply(data *ReplyImportData, post *model.Post, teamId string
} }
for _, fileID := range reply.FileIds { for _, fileID := range reply.FileIds {
if _, ok := fileIds[fileID]; !ok { if _, ok := fileIds[fileID]; !ok {
a.Srv.Store.FileInfo().PermanentDelete(fileID) a.Srv().Store.FileInfo().PermanentDelete(fileID)
} }
} }
reply.FileIds = make([]string, 0) reply.FileIds = make([]string, 0)
@@ -902,11 +902,11 @@ func (a *App) importReply(data *ReplyImportData, post *model.Post, teamId string
} }
if reply.Id == "" { if reply.Id == "" {
if _, err := a.Srv.Store.Post().Save(reply); err != nil { if _, err := a.Srv().Store.Post().Save(reply); err != nil {
return err return err
} }
} else { } else {
if _, err := a.Srv.Store.Post().Overwrite(reply); err != nil { if _, err := a.Srv().Store.Post().Overwrite(reply); err != nil {
return err return err
} }
} }
@@ -971,24 +971,24 @@ func (a *App) importPost(data *PostImportData, dryRun bool) *model.AppError {
return nil return nil
} }
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_post.team_not_found.error", map[string]interface{}{"TeamName": *data.Team}, err.Error(), http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_post.team_not_found.error", map[string]interface{}{"TeamName": *data.Team}, err.Error(), http.StatusBadRequest)
} }
channel, err := a.Srv.Store.Channel().GetByName(team.Id, *data.Channel, false) channel, err := a.Srv().Store.Channel().GetByName(team.Id, *data.Channel, false)
if err != nil { if err != nil {
return model.NewAppError("BulkImport", "app.import.import_post.channel_not_found.error", map[string]interface{}{"ChannelName": *data.Channel}, err.Error(), http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_post.channel_not_found.error", map[string]interface{}{"ChannelName": *data.Channel}, err.Error(), http.StatusBadRequest)
} }
var user *model.User var user *model.User
user, err = a.Srv.Store.User().GetByUsername(*data.User) user, err = a.Srv().Store.User().GetByUsername(*data.User)
if err != nil { if err != nil {
return model.NewAppError("BulkImport", "app.import.import_post.user_not_found.error", map[string]interface{}{"Username": *data.User}, err.Error(), http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_post.user_not_found.error", map[string]interface{}{"Username": *data.User}, err.Error(), http.StatusBadRequest)
} }
// Check if this post already exists. // Check if this post already exists.
posts, err := a.Srv.Store.Post().GetPostsCreatedAt(channel.Id, *data.CreateAt) posts, err := a.Srv().Store.Post().GetPostsCreatedAt(channel.Id, *data.CreateAt)
if err != nil { if err != nil {
return err return err
} }
@@ -1018,7 +1018,7 @@ func (a *App) importPost(data *PostImportData, dryRun bool) *model.AppError {
} }
for _, fileID := range post.FileIds { for _, fileID := range post.FileIds {
if _, ok := fileIds[fileID]; !ok { if _, ok := fileIds[fileID]; !ok {
a.Srv.Store.FileInfo().PermanentDelete(fileID) a.Srv().Store.FileInfo().PermanentDelete(fileID)
} }
} }
post.FileIds = make([]string, 0) post.FileIds = make([]string, 0)
@@ -1027,11 +1027,11 @@ func (a *App) importPost(data *PostImportData, dryRun bool) *model.AppError {
} }
if post.Id == "" { if post.Id == "" {
if _, err = a.Srv.Store.Post().Save(post); err != nil { if _, err = a.Srv().Store.Post().Save(post); err != nil {
return err return err
} }
} else { } else {
if _, err = a.Srv.Store.Post().Overwrite(post); err != nil { if _, err = a.Srv().Store.Post().Overwrite(post); err != nil {
return err return err
} }
} }
@@ -1041,7 +1041,7 @@ func (a *App) importPost(data *PostImportData, dryRun bool) *model.AppError {
for _, username := range *data.FlaggedBy { for _, username := range *data.FlaggedBy {
var user *model.User var user *model.User
user, err = a.Srv.Store.User().GetByUsername(username) user, err = a.Srv().Store.User().GetByUsername(username)
if err != nil { if err != nil {
return model.NewAppError("BulkImport", "app.import.import_post.user_not_found.error", map[string]interface{}{"Username": username}, err.Error(), http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_post.user_not_found.error", map[string]interface{}{"Username": username}, err.Error(), http.StatusBadRequest)
} }
@@ -1055,7 +1055,7 @@ func (a *App) importPost(data *PostImportData, dryRun bool) *model.AppError {
} }
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_post.save_preferences.error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("BulkImport", "app.import.import_post.save_preferences.error", nil, err.Error(), http.StatusInternalServerError)
} }
} }
@@ -1099,7 +1099,7 @@ func (a *App) uploadAttachments(attachments *[]AttachmentImportData, post *model
func (a *App) updateFileInfoWithPostId(post *model.Post) { func (a *App) updateFileInfoWithPostId(post *model.Post) {
for _, fileId := range post.FileIds { for _, fileId := range post.FileIds {
if err := a.Srv.Store.FileInfo().AttachToPost(fileId, post.Id, post.UserId); err != nil { if err := a.Srv().Store.FileInfo().AttachToPost(fileId, post.Id, post.UserId); err != nil {
mlog.Error("Error attaching files to post.", mlog.String("post_id", post.Id), mlog.Any("post_file_ids", post.FileIds), mlog.Err(err)) mlog.Error("Error attaching files to post.", mlog.String("post_id", post.Id), mlog.Any("post_file_ids", post.FileIds), mlog.Err(err))
} }
} }
@@ -1119,7 +1119,7 @@ func (a *App) importDirectChannel(data *DirectChannelImportData, dryRun bool) *m
userMap := make(map[string]string) userMap := make(map[string]string)
for _, username := range *data.Members { for _, username := range *data.Members {
var user *model.User var user *model.User
user, err = a.Srv.Store.User().GetByUsername(username) user, err = a.Srv().Store.User().GetByUsername(username)
if err != nil { if err != nil {
return model.NewAppError("BulkImport", "app.import.import_direct_channel.member_not_found.error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_direct_channel.member_not_found.error", nil, err.Error(), http.StatusBadRequest)
} }
@@ -1165,14 +1165,14 @@ func (a *App) importDirectChannel(data *DirectChannelImportData, dryRun bool) *m
} }
} }
if err := a.Srv.Store.Preference().Save(&preferences); err != nil { if err := a.Srv().Store.Preference().Save(&preferences); err != nil {
err.StatusCode = http.StatusBadRequest err.StatusCode = http.StatusBadRequest
return err return 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, appErr.Error(), http.StatusBadRequest)
} }
} }
@@ -1194,7 +1194,7 @@ func (a *App) importDirectPost(data *DirectPostImportData, dryRun bool) *model.A
var userIds []string var userIds []string
for _, username := range *data.ChannelMembers { for _, username := range *data.ChannelMembers {
var user *model.User var user *model.User
user, err = a.Srv.Store.User().GetByUsername(username) user, err = a.Srv().Store.User().GetByUsername(username)
if err != nil { if err != nil {
return model.NewAppError("BulkImport", "app.import.import_direct_post.channel_member_not_found.error", nil, err.Error(), http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_direct_post.channel_member_not_found.error", nil, err.Error(), http.StatusBadRequest)
} }
@@ -1218,13 +1218,13 @@ func (a *App) importDirectPost(data *DirectPostImportData, dryRun bool) *model.A
} }
var user *model.User var user *model.User
user, err = a.Srv.Store.User().GetByUsername(*data.User) user, err = a.Srv().Store.User().GetByUsername(*data.User)
if err != nil { if err != nil {
return model.NewAppError("BulkImport", "app.import.import_direct_post.user_not_found.error", map[string]interface{}{"Username": *data.User}, "", http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_direct_post.user_not_found.error", map[string]interface{}{"Username": *data.User}, "", http.StatusBadRequest)
} }
// Check if this post already exists. // Check if this post already exists.
posts, err := a.Srv.Store.Post().GetPostsCreatedAt(channel.Id, *data.CreateAt) posts, err := a.Srv().Store.Post().GetPostsCreatedAt(channel.Id, *data.CreateAt)
if err != nil { if err != nil {
return err return err
} }
@@ -1254,7 +1254,7 @@ func (a *App) importDirectPost(data *DirectPostImportData, dryRun bool) *model.A
} }
for _, fileID := range post.FileIds { for _, fileID := range post.FileIds {
if _, ok := fileIds[fileID]; !ok { if _, ok := fileIds[fileID]; !ok {
a.Srv.Store.FileInfo().PermanentDelete(fileID) a.Srv().Store.FileInfo().PermanentDelete(fileID)
} }
} }
post.FileIds = make([]string, 0) post.FileIds = make([]string, 0)
@@ -1263,11 +1263,11 @@ func (a *App) importDirectPost(data *DirectPostImportData, dryRun bool) *model.A
} }
if post.Id == "" { if post.Id == "" {
if _, err = a.Srv.Store.Post().Save(post); err != nil { if _, err = a.Srv().Store.Post().Save(post); err != nil {
return err return err
} }
} else { } else {
if _, err = a.Srv.Store.Post().Overwrite(post); err != nil { if _, err = a.Srv().Store.Post().Overwrite(post); err != nil {
return err return err
} }
} }
@@ -1277,7 +1277,7 @@ func (a *App) importDirectPost(data *DirectPostImportData, dryRun bool) *model.A
for _, username := range *data.FlaggedBy { for _, username := range *data.FlaggedBy {
var user *model.User var user *model.User
user, err = a.Srv.Store.User().GetByUsername(username) user, err = a.Srv().Store.User().GetByUsername(username)
if err != nil { if err != nil {
return model.NewAppError("BulkImport", "app.import.import_direct_post.user_not_found.error", map[string]interface{}{"Username": username}, "", http.StatusBadRequest) return model.NewAppError("BulkImport", "app.import.import_direct_post.user_not_found.error", map[string]interface{}{"Username": username}, "", http.StatusBadRequest)
} }
@@ -1291,7 +1291,7 @@ func (a *App) importDirectPost(data *DirectPostImportData, dryRun bool) *model.A
} }
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_direct_post.save_preferences.error", nil, err.Error(), http.StatusInternalServerError) return model.NewAppError("BulkImport", "app.import.import_direct_post.save_preferences.error", nil, err.Error(), http.StatusInternalServerError)
} }
} }
@@ -1329,7 +1329,7 @@ func (a *App) importEmoji(data *EmojiImportData, dryRun bool) *model.AppError {
var emoji *model.Emoji var emoji *model.Emoji
emoji, appError := a.Srv.Store.Emoji().GetByName(*data.Name, true) emoji, appError := a.Srv().Store.Emoji().GetByName(*data.Name, true)
if appError != nil && appError.StatusCode != http.StatusNotFound { if appError != nil && appError.StatusCode != http.StatusNotFound {
return appError return appError
} }
@@ -1353,7 +1353,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 err return err
} }
} }

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

@@ -24,10 +24,10 @@ func TestImportImportScheme(t *testing.T) {
defer th.TearDown() defer th.TearDown()
// Mark the phase 2 permissions migration as completed. // Mark the phase 2 permissions migration as completed.
th.App.Srv.Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"}) th.App.Srv().Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"})
defer func() { defer func() {
th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2) th.App.Srv().Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
}() }()
// Try importing an invalid scheme in dryRun mode. // Try importing an invalid scheme in dryRun mode.
@@ -64,7 +64,7 @@ func TestImportImportScheme(t *testing.T) {
err := th.App.importScheme(&data, true) err := th.App.importScheme(&data, true)
require.NotNil(t, err, "Should have failed to import.") require.NotNil(t, err, "Should have failed to import.")
_, err = th.App.Srv.Store.Scheme().GetByName(*data.Name) _, err = th.App.Srv().Store.Scheme().GetByName(*data.Name)
require.NotNil(t, err, "Scheme should not have imported.") require.NotNil(t, err, "Scheme should not have imported.")
// Try importing a valid scheme in dryRun mode. // Try importing a valid scheme in dryRun mode.
@@ -73,7 +73,7 @@ func TestImportImportScheme(t *testing.T) {
err = th.App.importScheme(&data, true) err = th.App.importScheme(&data, true)
require.Nil(t, err, "Should have succeeded.") require.Nil(t, err, "Should have succeeded.")
_, err = th.App.Srv.Store.Scheme().GetByName(*data.Name) _, err = th.App.Srv().Store.Scheme().GetByName(*data.Name)
require.NotNil(t, err, "Scheme should not have imported.") require.NotNil(t, err, "Scheme should not have imported.")
// Try importing an invalid scheme. // Try importing an invalid scheme.
@@ -82,7 +82,7 @@ func TestImportImportScheme(t *testing.T) {
err = th.App.importScheme(&data, false) err = th.App.importScheme(&data, false)
require.NotNil(t, err, "Should have failed to import.") require.NotNil(t, err, "Should have failed to import.")
_, err = th.App.Srv.Store.Scheme().GetByName(*data.Name) _, err = th.App.Srv().Store.Scheme().GetByName(*data.Name)
require.NotNil(t, err, "Scheme should not have imported.") require.NotNil(t, err, "Scheme should not have imported.")
// Try importing a valid scheme with all params set. // Try importing a valid scheme with all params set.
@@ -91,7 +91,7 @@ func TestImportImportScheme(t *testing.T) {
err = th.App.importScheme(&data, false) err = th.App.importScheme(&data, false)
require.Nil(t, err, "Should have succeeded.") require.Nil(t, err, "Should have succeeded.")
scheme, err := th.App.Srv.Store.Scheme().GetByName(*data.Name) scheme, err := th.App.Srv().Store.Scheme().GetByName(*data.Name)
require.Nil(t, err, "Failed to import scheme: %v", err) require.Nil(t, err, "Failed to import scheme: %v", err)
assert.Equal(t, *data.Name, scheme.Name) assert.Equal(t, *data.Name, scheme.Name)
@@ -99,42 +99,42 @@ func TestImportImportScheme(t *testing.T) {
assert.Equal(t, *data.Description, scheme.Description) assert.Equal(t, *data.Description, scheme.Description)
assert.Equal(t, *data.Scope, scheme.Scope) assert.Equal(t, *data.Scope, scheme.Scope)
role, err := th.App.Srv.Store.Role().GetByName(scheme.DefaultTeamAdminRole) role, err := th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamAdminRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamAdminRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultTeamAdminRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn) assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged) assert.True(t, role.SchemeManaged)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultTeamUserRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamUserRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamUserRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultTeamUserRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn) assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged) assert.True(t, role.SchemeManaged)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultTeamGuestRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamGuestRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamGuestRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultTeamGuestRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn) assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged) assert.True(t, role.SchemeManaged)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultChannelAdminRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelAdminRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelAdminRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultChannelAdminRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn) assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged) assert.True(t, role.SchemeManaged)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultChannelUserRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelUserRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelUserRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultChannelUserRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn) assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged) assert.True(t, role.SchemeManaged)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultChannelGuestRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelGuestRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelGuestRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultChannelGuestRole.DisplayName, role.DisplayName)
@@ -148,7 +148,7 @@ func TestImportImportScheme(t *testing.T) {
err = th.App.importScheme(&data, false) err = th.App.importScheme(&data, false)
require.Nil(t, err, "Should have succeeded: %v", err) require.Nil(t, err, "Should have succeeded: %v", err)
scheme, err = th.App.Srv.Store.Scheme().GetByName(*data.Name) scheme, err = th.App.Srv().Store.Scheme().GetByName(*data.Name)
require.Nil(t, err, "Failed to import scheme: %v", err) require.Nil(t, err, "Failed to import scheme: %v", err)
assert.Equal(t, *data.Name, scheme.Name) assert.Equal(t, *data.Name, scheme.Name)
@@ -156,42 +156,42 @@ func TestImportImportScheme(t *testing.T) {
assert.Equal(t, *data.Description, scheme.Description) assert.Equal(t, *data.Description, scheme.Description)
assert.Equal(t, *data.Scope, scheme.Scope) assert.Equal(t, *data.Scope, scheme.Scope)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultTeamAdminRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamAdminRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamAdminRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultTeamAdminRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn) assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged) assert.True(t, role.SchemeManaged)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultTeamUserRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamUserRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamUserRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultTeamUserRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn) assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged) assert.True(t, role.SchemeManaged)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultTeamGuestRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamGuestRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamGuestRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultTeamGuestRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn) assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged) assert.True(t, role.SchemeManaged)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultChannelAdminRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelAdminRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelAdminRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultChannelAdminRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn) assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged) assert.True(t, role.SchemeManaged)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultChannelUserRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelUserRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelUserRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultChannelUserRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn) assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged) assert.True(t, role.SchemeManaged)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultChannelGuestRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelGuestRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelGuestRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultChannelGuestRole.DisplayName, role.DisplayName)
@@ -204,7 +204,7 @@ func TestImportImportScheme(t *testing.T) {
err = th.App.importScheme(&data, false) err = th.App.importScheme(&data, false)
require.NotNil(t, err, "Should have failed to import.") require.NotNil(t, err, "Should have failed to import.")
scheme, err = th.App.Srv.Store.Scheme().GetByName(*data.Name) scheme, err = th.App.Srv().Store.Scheme().GetByName(*data.Name)
require.Nil(t, err, "Failed to import scheme: %v", err) require.Nil(t, err, "Failed to import scheme: %v", err)
assert.Equal(t, *data.Name, scheme.Name) assert.Equal(t, *data.Name, scheme.Name)
@@ -219,10 +219,10 @@ func TestImportImportSchemeWithoutGuestRoles(t *testing.T) {
defer th.TearDown() defer th.TearDown()
// Mark the phase 2 permissions migration as completed. // Mark the phase 2 permissions migration as completed.
th.App.Srv.Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"}) th.App.Srv().Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"})
defer func() { defer func() {
th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2) th.App.Srv().Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
}() }()
// Try importing an invalid scheme in dryRun mode. // Try importing an invalid scheme in dryRun mode.
@@ -251,7 +251,7 @@ func TestImportImportSchemeWithoutGuestRoles(t *testing.T) {
err := th.App.importScheme(&data, true) err := th.App.importScheme(&data, true)
require.NotNil(t, err, "Should have failed to import.") require.NotNil(t, err, "Should have failed to import.")
_, err = th.App.Srv.Store.Scheme().GetByName(*data.Name) _, err = th.App.Srv().Store.Scheme().GetByName(*data.Name)
require.NotNil(t, err, "Scheme should not have imported.") require.NotNil(t, err, "Scheme should not have imported.")
// Try importing a valid scheme in dryRun mode. // Try importing a valid scheme in dryRun mode.
@@ -260,7 +260,7 @@ func TestImportImportSchemeWithoutGuestRoles(t *testing.T) {
err = th.App.importScheme(&data, true) err = th.App.importScheme(&data, true)
require.Nil(t, err, "Should have succeeded.") require.Nil(t, err, "Should have succeeded.")
_, err = th.App.Srv.Store.Scheme().GetByName(*data.Name) _, err = th.App.Srv().Store.Scheme().GetByName(*data.Name)
require.NotNil(t, err, "Scheme should not have imported.") require.NotNil(t, err, "Scheme should not have imported.")
// Try importing an invalid scheme. // Try importing an invalid scheme.
@@ -269,7 +269,7 @@ func TestImportImportSchemeWithoutGuestRoles(t *testing.T) {
err = th.App.importScheme(&data, false) err = th.App.importScheme(&data, false)
require.NotNil(t, err, "Should have failed to import.") require.NotNil(t, err, "Should have failed to import.")
_, err = th.App.Srv.Store.Scheme().GetByName(*data.Name) _, err = th.App.Srv().Store.Scheme().GetByName(*data.Name)
require.NotNil(t, err, "Scheme should not have imported.") require.NotNil(t, err, "Scheme should not have imported.")
// Try importing a valid scheme with all params set. // Try importing a valid scheme with all params set.
@@ -278,7 +278,7 @@ func TestImportImportSchemeWithoutGuestRoles(t *testing.T) {
err = th.App.importScheme(&data, false) err = th.App.importScheme(&data, false)
require.Nil(t, err, "Should have succeeded.") require.Nil(t, err, "Should have succeeded.")
scheme, err := th.App.Srv.Store.Scheme().GetByName(*data.Name) scheme, err := th.App.Srv().Store.Scheme().GetByName(*data.Name)
require.Nil(t, err, "Failed to import scheme: %v", err) require.Nil(t, err, "Failed to import scheme: %v", err)
assert.Equal(t, *data.Name, scheme.Name) assert.Equal(t, *data.Name, scheme.Name)
@@ -286,42 +286,42 @@ func TestImportImportSchemeWithoutGuestRoles(t *testing.T) {
assert.Equal(t, *data.Description, scheme.Description) assert.Equal(t, *data.Description, scheme.Description)
assert.Equal(t, *data.Scope, scheme.Scope) assert.Equal(t, *data.Scope, scheme.Scope)
role, err := th.App.Srv.Store.Role().GetByName(scheme.DefaultTeamAdminRole) role, err := th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamAdminRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamAdminRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultTeamAdminRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn) assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged) assert.True(t, role.SchemeManaged)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultTeamUserRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamUserRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamUserRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultTeamUserRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn) assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged) assert.True(t, role.SchemeManaged)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultTeamGuestRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamGuestRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamGuestRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultTeamGuestRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn) assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged) assert.True(t, role.SchemeManaged)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultChannelAdminRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelAdminRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelAdminRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultChannelAdminRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn) assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged) assert.True(t, role.SchemeManaged)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultChannelUserRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelUserRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelUserRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultChannelUserRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn) assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged) assert.True(t, role.SchemeManaged)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultChannelGuestRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelGuestRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelGuestRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultChannelGuestRole.DisplayName, role.DisplayName)
@@ -335,7 +335,7 @@ func TestImportImportSchemeWithoutGuestRoles(t *testing.T) {
err = th.App.importScheme(&data, false) err = th.App.importScheme(&data, false)
require.Nil(t, err, "Should have succeeded: %v", err) require.Nil(t, err, "Should have succeeded: %v", err)
scheme, err = th.App.Srv.Store.Scheme().GetByName(*data.Name) scheme, err = th.App.Srv().Store.Scheme().GetByName(*data.Name)
require.Nil(t, err, "Failed to import scheme: %v", err) require.Nil(t, err, "Failed to import scheme: %v", err)
assert.Equal(t, *data.Name, scheme.Name) assert.Equal(t, *data.Name, scheme.Name)
@@ -343,42 +343,42 @@ func TestImportImportSchemeWithoutGuestRoles(t *testing.T) {
assert.Equal(t, *data.Description, scheme.Description) assert.Equal(t, *data.Description, scheme.Description)
assert.Equal(t, *data.Scope, scheme.Scope) assert.Equal(t, *data.Scope, scheme.Scope)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultTeamAdminRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamAdminRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamAdminRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultTeamAdminRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn) assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged) assert.True(t, role.SchemeManaged)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultTeamUserRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamUserRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamUserRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultTeamUserRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn) assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged) assert.True(t, role.SchemeManaged)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultTeamGuestRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultTeamGuestRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultTeamGuestRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultTeamGuestRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn) assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged) assert.True(t, role.SchemeManaged)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultChannelAdminRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelAdminRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelAdminRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultChannelAdminRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn) assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged) assert.True(t, role.SchemeManaged)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultChannelUserRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelUserRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelUserRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultChannelUserRole.DisplayName, role.DisplayName)
assert.False(t, role.BuiltIn) assert.False(t, role.BuiltIn)
assert.True(t, role.SchemeManaged) assert.True(t, role.SchemeManaged)
role, err = th.App.Srv.Store.Role().GetByName(scheme.DefaultChannelGuestRole) role, err = th.App.Srv().Store.Role().GetByName(scheme.DefaultChannelGuestRole)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.DefaultChannelGuestRole.DisplayName, role.DisplayName) assert.Equal(t, *data.DefaultChannelGuestRole.DisplayName, role.DisplayName)
@@ -391,7 +391,7 @@ func TestImportImportSchemeWithoutGuestRoles(t *testing.T) {
err = th.App.importScheme(&data, false) err = th.App.importScheme(&data, false)
require.NotNil(t, err, "Should have failed to import.") require.NotNil(t, err, "Should have failed to import.")
scheme, err = th.App.Srv.Store.Scheme().GetByName(*data.Name) scheme, err = th.App.Srv().Store.Scheme().GetByName(*data.Name)
require.Nil(t, err, "Failed to import scheme: %v", err) require.Nil(t, err, "Failed to import scheme: %v", err)
assert.Equal(t, *data.Name, scheme.Name) assert.Equal(t, *data.Name, scheme.Name)
@@ -413,7 +413,7 @@ func TestImportImportRole(t *testing.T) {
err := th.App.importRole(&data, true, false) err := th.App.importRole(&data, true, false)
require.NotNil(t, err, "Should have failed to import.") require.NotNil(t, err, "Should have failed to import.")
_, err = th.App.Srv.Store.Role().GetByName(rid1) _, err = th.App.Srv().Store.Role().GetByName(rid1)
require.NotNil(t, err, "Should have failed to import.") require.NotNil(t, err, "Should have failed to import.")
// Try importing the valid role in dryRun mode. // Try importing the valid role in dryRun mode.
@@ -422,7 +422,7 @@ func TestImportImportRole(t *testing.T) {
err = th.App.importRole(&data, true, false) err = th.App.importRole(&data, true, false)
require.Nil(t, err, "Should have succeeded.") require.Nil(t, err, "Should have succeeded.")
_, err = th.App.Srv.Store.Role().GetByName(rid1) _, err = th.App.Srv().Store.Role().GetByName(rid1)
require.NotNil(t, err, "Role should not have imported as we are in dry run mode.") require.NotNil(t, err, "Role should not have imported as we are in dry run mode.")
// Try importing an invalid role. // Try importing an invalid role.
@@ -431,7 +431,7 @@ func TestImportImportRole(t *testing.T) {
err = th.App.importRole(&data, false, false) err = th.App.importRole(&data, false, false)
require.NotNil(t, err, "Should have failed to import.") require.NotNil(t, err, "Should have failed to import.")
_, err = th.App.Srv.Store.Role().GetByName(rid1) _, err = th.App.Srv().Store.Role().GetByName(rid1)
require.NotNil(t, err, "Role should not have imported.") require.NotNil(t, err, "Role should not have imported.")
// Try importing a valid role with all params set. // Try importing a valid role with all params set.
@@ -442,7 +442,7 @@ func TestImportImportRole(t *testing.T) {
err = th.App.importRole(&data, false, false) err = th.App.importRole(&data, false, false)
require.Nil(t, err, "Should have succeeded.") require.Nil(t, err, "Should have succeeded.")
role, err := th.App.Srv.Store.Role().GetByName(rid1) role, err := th.App.Srv().Store.Role().GetByName(rid1)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.Name, role.Name) assert.Equal(t, *data.Name, role.Name)
@@ -460,7 +460,7 @@ func TestImportImportRole(t *testing.T) {
err = th.App.importRole(&data, false, true) err = th.App.importRole(&data, false, true)
require.Nil(t, err, "Should have succeeded. %v", err) require.Nil(t, err, "Should have succeeded. %v", err)
role, err = th.App.Srv.Store.Role().GetByName(rid1) role, err = th.App.Srv().Store.Role().GetByName(rid1)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data.Name, role.Name) assert.Equal(t, *data.Name, role.Name)
@@ -479,7 +479,7 @@ func TestImportImportRole(t *testing.T) {
err = th.App.importRole(&data2, false, false) err = th.App.importRole(&data2, false, false)
require.Nil(t, err, "Should have succeeded.") require.Nil(t, err, "Should have succeeded.")
role, err = th.App.Srv.Store.Role().GetByName(rid1) role, err = th.App.Srv().Store.Role().GetByName(rid1)
require.Nil(t, err, "Should have found the imported role.") require.Nil(t, err, "Should have found the imported role.")
assert.Equal(t, *data2.Name, role.Name) assert.Equal(t, *data2.Name, role.Name)
@@ -495,17 +495,17 @@ func TestImportImportTeam(t *testing.T) {
defer th.TearDown() defer th.TearDown()
// Mark the phase 2 permissions migration as completed. // Mark the phase 2 permissions migration as completed.
th.App.Srv.Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"}) th.App.Srv().Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"})
defer func() { defer func() {
th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2) th.App.Srv().Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
}() }()
scheme1 := th.SetupTeamScheme() scheme1 := th.SetupTeamScheme()
scheme2 := th.SetupTeamScheme() scheme2 := th.SetupTeamScheme()
// Check how many teams are in the database. // Check how many teams are in the database.
teamsCount, err := th.App.Srv.Store.Team().AnalyticsTeamCount(false) teamsCount, err := th.App.Srv().Store.Team().AnalyticsTeamCount(false)
require.Nil(t, err, "Failed to get team count.") require.Nil(t, err, "Failed to get team count.")
data := TeamImportData{ data := TeamImportData{
@@ -585,10 +585,10 @@ func TestImportImportChannel(t *testing.T) {
defer th.TearDown() defer th.TearDown()
// Mark the phase 2 permissions migration as completed. // Mark the phase 2 permissions migration as completed.
th.App.Srv.Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"}) th.App.Srv().Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"})
defer func() { defer func() {
th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2) th.App.Srv().Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
}() }()
scheme1 := th.SetupChannelScheme() scheme1 := th.SetupChannelScheme()
@@ -605,7 +605,7 @@ func TestImportImportChannel(t *testing.T) {
require.Nil(t, err, "Failed to get team from database.") require.Nil(t, err, "Failed to get team from database.")
// Check how many channels are in the database. // Check how many channels are in the database.
channelCount, err := th.App.Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_OPEN) channelCount, err := th.App.Srv().Store.Channel().AnalyticsTypeCount("", model.CHANNEL_OPEN)
require.Nil(t, err, "Failed to get team count.") require.Nil(t, err, "Failed to get team count.")
// Do an invalid channel in dry-run mode. // Do an invalid channel in dry-run mode.
@@ -705,7 +705,7 @@ func TestImportImportUser(t *testing.T) {
defer th.TearDown() defer th.TearDown()
// Check how many users are in the database. // Check how many users are in the database.
userCount, err := th.App.Srv.Store.User().Count(model.UserCountOptions{ userCount, err := th.App.Srv().Store.User().Count(model.UserCountOptions{
IncludeDeleted: true, IncludeDeleted: true,
IncludeBotAccounts: false, IncludeBotAccounts: false,
}) })
@@ -719,7 +719,7 @@ func TestImportImportUser(t *testing.T) {
require.NotNil(t, err, "Should have failed to import invalid user.") require.NotNil(t, err, "Should have failed to import invalid user.")
// Check that no more users are in the DB. // Check that no more users are in the DB.
userCount2, err := th.App.Srv.Store.User().Count(model.UserCountOptions{ userCount2, err := th.App.Srv().Store.User().Count(model.UserCountOptions{
IncludeDeleted: true, IncludeDeleted: true,
IncludeBotAccounts: false, IncludeBotAccounts: false,
}) })
@@ -735,7 +735,7 @@ func TestImportImportUser(t *testing.T) {
require.Nil(t, err, "Should have succeeded to import valid user.") require.Nil(t, err, "Should have succeeded to import valid user.")
// Check that no more users are in the DB. // Check that no more users are in the DB.
userCount3, err := th.App.Srv.Store.User().Count(model.UserCountOptions{ userCount3, err := th.App.Srv().Store.User().Count(model.UserCountOptions{
IncludeDeleted: true, IncludeDeleted: true,
IncludeBotAccounts: false, IncludeBotAccounts: false,
}) })
@@ -750,7 +750,7 @@ func TestImportImportUser(t *testing.T) {
require.NotNil(t, err, "Should have failed to import invalid user.") require.NotNil(t, err, "Should have failed to import invalid user.")
// Check that no more users are in the DB. // Check that no more users are in the DB.
userCount4, err := th.App.Srv.Store.User().Count(model.UserCountOptions{ userCount4, err := th.App.Srv().Store.User().Count(model.UserCountOptions{
IncludeDeleted: true, IncludeDeleted: true,
IncludeBotAccounts: false, IncludeBotAccounts: false,
}) })
@@ -773,7 +773,7 @@ func TestImportImportUser(t *testing.T) {
require.Nil(t, err, "Should have succeeded to import valid user.") require.Nil(t, err, "Should have succeeded to import valid user.")
// Check that one more user is in the DB. // Check that one more user is in the DB.
userCount5, err := th.App.Srv.Store.User().Count(model.UserCountOptions{ userCount5, err := th.App.Srv().Store.User().Count(model.UserCountOptions{
IncludeDeleted: true, IncludeDeleted: true,
IncludeBotAccounts: false, IncludeBotAccounts: false,
}) })
@@ -816,7 +816,7 @@ func TestImportImportUser(t *testing.T) {
require.Nil(t, err, "Should have succeeded to update valid user %v", err) require.Nil(t, err, "Should have succeeded to update valid user %v", err)
// Check user count the same. // Check user count the same.
userCount6, err := th.App.Srv.Store.User().Count(model.UserCountOptions{ userCount6, err := th.App.Srv().Store.User().Count(model.UserCountOptions{
IncludeDeleted: true, IncludeDeleted: true,
IncludeBotAccounts: false, IncludeBotAccounts: false,
}) })
@@ -1334,10 +1334,10 @@ func TestImportImportUser(t *testing.T) {
// to the appropriate scheme-managed-role booleans. // to the appropriate scheme-managed-role booleans.
// Mark the phase 2 permissions migration as completed. // Mark the phase 2 permissions migration as completed.
th.App.Srv.Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"}) th.App.Srv().Store.System().Save(&model.System{Name: model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2, Value: "true"})
defer func() { defer func() {
th.App.Srv.Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2) th.App.Srv().Store.System().PermanentDeleteByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2)
}() }()
teamSchemeData := &SchemeImportData{ teamSchemeData := &SchemeImportData{
@@ -1374,7 +1374,7 @@ func TestImportImportUser(t *testing.T) {
err = th.App.importScheme(teamSchemeData, false) err = th.App.importScheme(teamSchemeData, false)
assert.Nil(t, err) assert.Nil(t, err)
teamScheme, err := th.App.Srv.Store.Scheme().GetByName(*teamSchemeData.Name) teamScheme, err := th.App.Srv().Store.Scheme().GetByName(*teamSchemeData.Name)
require.Nil(t, err, "Failed to import scheme") require.Nil(t, err, "Failed to import scheme")
teamData := &TeamImportData{ teamData := &TeamImportData{
@@ -1600,7 +1600,7 @@ func TestImportImportPost(t *testing.T) {
require.Nil(t, err, "Failed to get user from database.") require.Nil(t, err, "Failed to get user from database.")
// Count the number of posts in the testing team. // Count the number of posts in the testing team.
initialPostCount, err := th.App.Srv.Store.Post().AnalyticsPostCount(team.Id, false, false) initialPostCount, err := th.App.Srv().Store.Post().AnalyticsPostCount(team.Id, false, false)
require.Nil(t, err) require.Nil(t, err)
// Try adding an invalid post in dry run mode. // Try adding an invalid post in dry run mode.
@@ -1686,7 +1686,7 @@ func TestImportImportPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 1, team.Id) AssertAllPostsCount(t, th.App, initialPostCount, 1, team.Id)
// Check the post values. // Check the post values.
posts, err := th.App.Srv.Store.Post().GetPostsCreatedAt(channel.Id, time) posts, err := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, time)
require.Nil(t, err) require.Nil(t, err)
require.Len(t, posts, 1, "Unexpected number of posts found.") require.Len(t, posts, 1, "Unexpected number of posts found.")
@@ -1708,7 +1708,7 @@ func TestImportImportPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 1, team.Id) AssertAllPostsCount(t, th.App, initialPostCount, 1, team.Id)
// Check the post values. // Check the post values.
posts, err = th.App.Srv.Store.Post().GetPostsCreatedAt(channel.Id, time) posts, err = th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, time)
require.Nil(t, err) require.Nil(t, err)
require.Len(t, posts, 1, "Unexpected number of posts found.") require.Len(t, posts, 1, "Unexpected number of posts found.")
@@ -1755,7 +1755,7 @@ func TestImportImportPost(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
AssertAllPostsCount(t, th.App, initialPostCount, 4, team.Id) AssertAllPostsCount(t, th.App, initialPostCount, 4, team.Id)
posts, err = th.App.Srv.Store.Post().GetPostsCreatedAt(channel.Id, hashtagTime) posts, err = th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, hashtagTime)
require.Nil(t, err) require.Nil(t, err)
require.Len(t, posts, 1, "Unexpected number of posts found.") require.Len(t, posts, 1, "Unexpected number of posts found.")
@@ -1794,7 +1794,7 @@ func TestImportImportPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 5, team.Id) AssertAllPostsCount(t, th.App, initialPostCount, 5, team.Id)
// Check the post values. // Check the post values.
posts, err = th.App.Srv.Store.Post().GetPostsCreatedAt(channel.Id, flagsTime) posts, err = th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, flagsTime)
require.Nil(t, err) require.Nil(t, err)
require.Len(t, posts, 1, "Unexpected number of posts found.") require.Len(t, posts, 1, "Unexpected number of posts found.")
@@ -1827,7 +1827,7 @@ func TestImportImportPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 6, team.Id) AssertAllPostsCount(t, th.App, initialPostCount, 6, team.Id)
// Check the post values. // Check the post values.
posts, err = th.App.Srv.Store.Post().GetPostsCreatedAt(channel.Id, reactionPostTime) posts, err = th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, reactionPostTime)
require.Nil(t, err) require.Nil(t, err)
require.Len(t, posts, 1, "Unexpected number of posts found.") require.Len(t, posts, 1, "Unexpected number of posts found.")
@@ -1836,7 +1836,7 @@ func TestImportImportPost(t *testing.T) {
postBool = post.Message != *data.Message || post.CreateAt != *data.CreateAt || post.UserId != user.Id || !post.HasReactions postBool = post.Message != *data.Message || post.CreateAt != *data.CreateAt || post.UserId != user.Id || !post.HasReactions
require.False(t, postBool, "Post properties not as expected") require.False(t, postBool, "Post properties not as expected")
reactions, err := th.App.Srv.Store.Reaction().GetForPost(post.Id, false) reactions, err := th.App.Srv().Store.Reaction().GetForPost(post.Id, false)
require.Nil(t, err, "Can't get reaction") require.Nil(t, err, "Can't get reaction")
require.Len(t, reactions, 1, "Invalid number of reactions") require.Len(t, reactions, 1, "Invalid number of reactions")
@@ -1862,7 +1862,7 @@ func TestImportImportPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 8, team.Id) AssertAllPostsCount(t, th.App, initialPostCount, 8, team.Id)
// Check the post values. // Check the post values.
posts, err = th.App.Srv.Store.Post().GetPostsCreatedAt(channel.Id, replyPostTime) posts, err = th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, replyPostTime)
require.Nil(t, err) require.Nil(t, err)
require.Len(t, posts, 1, "Unexpected number of posts found.") require.Len(t, posts, 1, "Unexpected number of posts found.")
@@ -1872,7 +1872,7 @@ func TestImportImportPost(t *testing.T) {
require.False(t, postBool, "Post properties not as expected") require.False(t, postBool, "Post properties not as expected")
// Check the reply values. // Check the reply values.
replies, err := th.App.Srv.Store.Post().GetPostsCreatedAt(channel.Id, replyTime) replies, err := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, replyTime)
require.Nil(t, err) require.Nil(t, err)
require.Len(t, replies, 1, "Unexpected number of posts found.") require.Len(t, replies, 1, "Unexpected number of posts found.")
@@ -1943,10 +1943,10 @@ func TestImportImportDirectChannel(t *testing.T) {
defer th.TearDown() defer th.TearDown()
// Check how many channels are in the database. // Check how many channels are in the database.
directChannelCount, err := th.App.Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_DIRECT) directChannelCount, err := th.App.Srv().Store.Channel().AnalyticsTypeCount("", model.CHANNEL_DIRECT)
require.Nil(t, err, "Failed to get direct channel count.") require.Nil(t, err, "Failed to get direct channel count.")
groupChannelCount, err := th.App.Srv.Store.Channel().AnalyticsTypeCount("", model.CHANNEL_GROUP) groupChannelCount, err := th.App.Srv().Store.Channel().AnalyticsTypeCount("", model.CHANNEL_GROUP)
require.Nil(t, err, "Failed to get group channel count.") require.Nil(t, err, "Failed to get group channel count.")
// Do an invalid channel in dry-run mode. // Do an invalid channel in dry-run mode.
@@ -2128,7 +2128,7 @@ func TestImportImportDirectPost(t *testing.T) {
directChannel = channel directChannel = channel
// Get the number of posts in the system. // Get the number of posts in the system.
result, err := th.App.Srv.Store.Post().AnalyticsPostCount("", false, false) result, err := th.App.Srv().Store.Post().AnalyticsPostCount("", false, false)
require.Nil(t, err) require.Nil(t, err)
initialPostCount := result initialPostCount := result
@@ -2188,7 +2188,7 @@ func TestImportImportDirectPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 1, "") AssertAllPostsCount(t, th.App, initialPostCount, 1, "")
// Check the post values. // Check the post values.
posts, err := th.App.Srv.Store.Post().GetPostsCreatedAt(directChannel.Id, *data.CreateAt) posts, err := th.App.Srv().Store.Post().GetPostsCreatedAt(directChannel.Id, *data.CreateAt)
require.Nil(t, err) require.Nil(t, err)
require.Len(t, posts, 1) require.Len(t, posts, 1)
@@ -2203,7 +2203,7 @@ func TestImportImportDirectPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 1, "") AssertAllPostsCount(t, th.App, initialPostCount, 1, "")
// Check the post values. // Check the post values.
posts, err = th.App.Srv.Store.Post().GetPostsCreatedAt(directChannel.Id, *data.CreateAt) posts, err = th.App.Srv().Store.Post().GetPostsCreatedAt(directChannel.Id, *data.CreateAt)
require.Nil(t, err) require.Nil(t, err)
require.Len(t, posts, 1) require.Len(t, posts, 1)
@@ -2231,7 +2231,7 @@ func TestImportImportDirectPost(t *testing.T) {
require.Nil(t, err) require.Nil(t, err)
AssertAllPostsCount(t, th.App, initialPostCount, 4, "") AssertAllPostsCount(t, th.App, initialPostCount, 4, "")
posts, err = th.App.Srv.Store.Post().GetPostsCreatedAt(directChannel.Id, *data.CreateAt) posts, err = th.App.Srv().Store.Post().GetPostsCreatedAt(directChannel.Id, *data.CreateAt)
require.Nil(t, err) require.Nil(t, err)
require.Len(t, posts, 1) require.Len(t, posts, 1)
@@ -2260,7 +2260,7 @@ func TestImportImportDirectPost(t *testing.T) {
require.Nil(t, err) require.Nil(t, err)
// Check the post values. // Check the post values.
posts, err = th.App.Srv.Store.Post().GetPostsCreatedAt(directChannel.Id, *data.CreateAt) posts, err = th.App.Srv().Store.Post().GetPostsCreatedAt(directChannel.Id, *data.CreateAt)
require.Nil(t, err) require.Nil(t, err)
require.Len(t, posts, 1) require.Len(t, posts, 1)
@@ -2294,7 +2294,7 @@ func TestImportImportDirectPost(t *testing.T) {
groupChannel = channel groupChannel = channel
// Get the number of posts in the system. // Get the number of posts in the system.
result, err = th.App.Srv.Store.Post().AnalyticsPostCount("", false, false) result, err = th.App.Srv().Store.Post().AnalyticsPostCount("", false, false)
require.Nil(t, err) require.Nil(t, err)
initialPostCount = result initialPostCount = result
@@ -2359,7 +2359,7 @@ func TestImportImportDirectPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 1, "") AssertAllPostsCount(t, th.App, initialPostCount, 1, "")
// Check the post values. // Check the post values.
posts, err = th.App.Srv.Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.CreateAt) posts, err = th.App.Srv().Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.CreateAt)
require.Nil(t, err) require.Nil(t, err)
require.Len(t, posts, 1) require.Len(t, posts, 1)
@@ -2374,7 +2374,7 @@ func TestImportImportDirectPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 1, "") AssertAllPostsCount(t, th.App, initialPostCount, 1, "")
// Check the post values. // Check the post values.
posts, err = th.App.Srv.Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.CreateAt) posts, err = th.App.Srv().Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.CreateAt)
require.Nil(t, err) require.Nil(t, err)
require.Len(t, posts, 1) require.Len(t, posts, 1)
@@ -2402,7 +2402,7 @@ func TestImportImportDirectPost(t *testing.T) {
require.Nil(t, err) require.Nil(t, err)
AssertAllPostsCount(t, th.App, initialPostCount, 4, "") AssertAllPostsCount(t, th.App, initialPostCount, 4, "")
posts, err = th.App.Srv.Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.CreateAt) posts, err = th.App.Srv().Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.CreateAt)
require.Nil(t, err) require.Nil(t, err)
require.Len(t, posts, 1) require.Len(t, posts, 1)
@@ -2432,7 +2432,7 @@ func TestImportImportDirectPost(t *testing.T) {
require.Nil(t, err) require.Nil(t, err)
// Check the post values. // Check the post values.
posts, err = th.App.Srv.Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.CreateAt) posts, err = th.App.Srv().Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.CreateAt)
require.Nil(t, err) require.Nil(t, err)
require.Len(t, posts, 1) require.Len(t, posts, 1)
@@ -2455,7 +2455,7 @@ func TestImportImportEmoji(t *testing.T) {
err := th.App.importEmoji(&data, true) err := th.App.importEmoji(&data, true)
assert.NotNil(t, err, "Invalid emoji should have failed dry run") assert.NotNil(t, err, "Invalid emoji should have failed dry run")
emoji, err := th.App.Srv.Store.Emoji().GetByName(*data.Name, true) emoji, err := th.App.Srv().Store.Emoji().GetByName(*data.Name, true)
assert.Nil(t, emoji, "Emoji should not have been imported") assert.Nil(t, emoji, "Emoji should not have been imported")
assert.NotNil(t, err) assert.NotNil(t, err)
@@ -2475,7 +2475,7 @@ func TestImportImportEmoji(t *testing.T) {
err = th.App.importEmoji(&data, false) err = th.App.importEmoji(&data, false)
assert.Nil(t, err, "Valid emoji should have succeeded apply mode") assert.Nil(t, err, "Valid emoji should have succeeded apply mode")
emoji, err = th.App.Srv.Store.Emoji().GetByName(*data.Name, true) emoji, err = th.App.Srv().Store.Emoji().GetByName(*data.Name, true)
assert.NotNil(t, emoji, "Emoji should have been imported") assert.NotNil(t, emoji, "Emoji should have been imported")
assert.Nil(t, err, "Emoji should have been imported without any error") assert.Nil(t, err, "Emoji should have been imported without any error")

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

@@ -33,7 +33,7 @@ func ptrBool(b bool) *bool {
} }
func checkPreference(t *testing.T, a *App, userId string, category string, name string, value string) { func checkPreference(t *testing.T, a *App, userId string, category string, name string, value string) {
preferences, err := a.Srv.Store.Preference().GetCategory(userId, category) preferences, err := a.Srv().Store.Preference().GetCategory(userId, category)
require.Nilf(t, err, "Failed to get preferences for user %v with category %v", userId, category) require.Nilf(t, err, "Failed to get preferences for user %v with category %v", userId, category)
found := false found := false
for _, preference := range preferences { for _, preference := range preferences {
@@ -61,13 +61,13 @@ func checkNoError(t *testing.T, err *model.AppError) {
} }
func AssertAllPostsCount(t *testing.T, a *App, initialCount int64, change int64, teamName string) { func AssertAllPostsCount(t *testing.T, a *App, initialCount int64, change int64, teamName string) {
result, err := a.Srv.Store.Post().AnalyticsPostCount(teamName, false, false) result, err := a.Srv().Store.Post().AnalyticsPostCount(teamName, false, false)
require.Nil(t, err) require.Nil(t, err)
require.Equal(t, initialCount+change, result, "Did not find the expected number of posts.") require.Equal(t, initialCount+change, result, "Did not find the expected number of posts.")
} }
func AssertChannelCount(t *testing.T, a *App, channelType string, expectedCount int64) { func AssertChannelCount(t *testing.T, a *App, channelType string, expectedCount int64) {
count, err := a.Srv.Store.Channel().AnalyticsTypeCount("", channelType) count, err := a.Srv().Store.Channel().AnalyticsTypeCount("", channelType)
require.Equalf(t, expectedCount, count, "Channel count of type: %v. Expected: %v, Got: %v", channelType, expectedCount, count) require.Equalf(t, expectedCount, count, "Channel count of type: %v. Expected: %v, Got: %v", channelType, expectedCount, count)
require.Nil(t, err, "Failed to get channel count.") require.Nil(t, err, "Failed to get channel count.")
} }
@@ -219,7 +219,7 @@ func TestImportProcessImportDataFileVersionLine(t *testing.T) {
} }
func GetAttachments(userId string, th *TestHelper, t *testing.T) []*model.FileInfo { func GetAttachments(userId string, th *TestHelper, t *testing.T) []*model.FileInfo {
fileInfos, err := th.App.Srv.Store.FileInfo().GetForUser(userId) fileInfos, err := th.App.Srv().Store.FileInfo().GetForUser(userId)
require.Nil(t, err) require.Nil(t, err)
return fileInfos return fileInfos
} }
@@ -228,7 +228,7 @@ func AssertFileIdsInPost(files []*model.FileInfo, th *TestHelper, t *testing.T)
postId := files[0].PostId postId := files[0].PostId
assert.NotNil(t, postId) assert.NotNil(t, postId)
posts, err := th.App.Srv.Store.Post().GetPostsByIds([]string{postId}) posts, err := th.App.Srv().Store.Post().GetPostsByIds([]string{postId})
require.Nil(t, err) require.Nil(t, err)
assert.Equal(t, len(posts), 1) assert.Equal(t, len(posts), 1)

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

@@ -67,21 +67,21 @@ func (a *App) DoPostActionWithCookie(postId, actionId, userId, selectedOption st
// Start all queries here for parallel execution // Start all queries here for parallel execution
pchan := make(chan store.StoreResult, 1) pchan := make(chan store.StoreResult, 1)
go func() { go func() {
post, err := a.Srv.Store.Post().GetSingle(postId) post, err := a.Srv().Store.Post().GetSingle(postId)
pchan <- store.StoreResult{Data: post, Err: err} pchan <- store.StoreResult{Data: post, Err: err}
close(pchan) close(pchan)
}() }()
cchan := make(chan store.StoreResult, 1) cchan := make(chan store.StoreResult, 1)
go func() { go func() {
channel, err := a.Srv.Store.Channel().GetForPost(postId) channel, err := a.Srv().Store.Channel().GetForPost(postId)
cchan <- store.StoreResult{Data: channel, Err: err} cchan <- store.StoreResult{Data: channel, Err: err}
close(cchan) close(cchan)
}() }()
userChan := make(chan store.StoreResult, 1) userChan := make(chan store.StoreResult, 1)
go func() { go func() {
user, err := a.Srv.Store.User().Get(upstreamRequest.UserId) user, err := a.Srv().Store.User().Get(upstreamRequest.UserId)
userChan <- store.StoreResult{Data: user, Err: err} userChan <- store.StoreResult{Data: user, Err: err}
close(userChan) close(userChan)
}() }()
@@ -99,7 +99,7 @@ func (a *App) DoPostActionWithCookie(postId, actionId, userId, selectedOption st
return "", model.NewAppError("DoPostAction", "api.post.do_action.action_integration.app_error", nil, "postId doesn't match", http.StatusBadRequest) return "", model.NewAppError("DoPostAction", "api.post.do_action.action_integration.app_error", nil, "postId doesn't match", http.StatusBadRequest)
} }
channel, err := a.Srv.Store.Channel().Get(cookie.ChannelId, true) channel, err := a.Srv().Store.Channel().Get(cookie.ChannelId, true)
if err != nil { if err != nil {
return "", err return "", err
} }
@@ -168,7 +168,7 @@ func (a *App) DoPostActionWithCookie(postId, actionId, userId, selectedOption st
return return
} }
team, err := a.Srv.Store.Team().Get(upstreamRequest.TeamId) team, err := a.Srv().Store.Team().Get(upstreamRequest.TeamId)
teamChan <- store.StoreResult{Data: team, Err: err} teamChan <- store.StoreResult{Data: team, Err: err}
}() }()
@@ -279,10 +279,10 @@ func (a *App) DoActionRequest(rawURL string, body []byte) (*http.Response, *mode
subpath, _ := utils.GetSubpathFromConfig(a.Config()) subpath, _ := utils.GetSubpathFromConfig(a.Config())
siteURL, _ := url.Parse(*a.Config().ServiceSettings.SiteURL) siteURL, _ := url.Parse(*a.Config().ServiceSettings.SiteURL)
if (inURL.Hostname() == "localhost" || inURL.Hostname() == "127.0.0.1" || inURL.Hostname() == siteURL.Hostname()) && strings.HasPrefix(inURL.Path, path.Join(subpath, "plugins")) { if (inURL.Hostname() == "localhost" || inURL.Hostname() == "127.0.0.1" || inURL.Hostname() == siteURL.Hostname()) && strings.HasPrefix(inURL.Path, path.Join(subpath, "plugins")) {
req.Header.Set(model.HEADER_AUTH, "Bearer "+a.Session.Token) req.Header.Set(model.HEADER_AUTH, "Bearer "+a.Session().Token)
httpClient = a.HTTPService.MakeClient(true) httpClient = a.HTTPService().MakeClient(true)
} else { } else {
httpClient = a.HTTPService.MakeClient(false) httpClient = a.HTTPService().MakeClient(false)
} }
resp, httpErr := httpClient.Do(req) resp, httpErr := httpClient.Do(req)
@@ -342,8 +342,8 @@ func (a *App) DoLocalRequest(rawURL string, body []byte) (*http.Response, *model
if err != nil { if err != nil {
return nil, model.NewAppError("DoActionRequest", "api.post.do_action.action_integration.app_error", nil, "err="+err.Error(), http.StatusBadRequest) return nil, model.NewAppError("DoActionRequest", "api.post.do_action.action_integration.app_error", nil, "err="+err.Error(), http.StatusBadRequest)
} }
r.Header.Set("Mattermost-User-Id", a.Session.UserId) r.Header.Set("Mattermost-User-Id", a.Session().UserId)
r.Header.Set(model.HEADER_AUTH, "Bearer "+a.Session.Token) r.Header.Set(model.HEADER_AUTH, "Bearer "+a.Session().Token)
params := make(map[string]string) params := make(map[string]string)
params["plugin_id"] = pluginId params["plugin_id"] = pluginId
r = mux.SetURLVars(r, params) r = mux.SetURLVars(r, params)

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

@@ -417,7 +417,7 @@ func TestPostActionProps(t *testing.T) {
require.Nil(t, err) require.Nil(t, err)
assert.True(t, len(clientTriggerId) == 26) assert.True(t, len(clientTriggerId) == 26)
newPost, err := th.App.Srv.Store.Post().GetSingle(post.Id) newPost, err := th.App.Srv().Store.Post().GetSingle(post.Id)
require.Nil(t, err) require.Nil(t, err)
assert.True(t, newPost.IsPinned) assert.True(t, newPost.IsPinned)

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

@@ -8,7 +8,7 @@ import (
) )
func (a *App) GetJob(id string) (*model.Job, *model.AppError) { func (a *App) GetJob(id string) (*model.Job, *model.AppError) {
return a.Srv.Store.Job().Get(id) return a.Srv().Store.Job().Get(id)
} }
func (a *App) GetJobsPage(page int, perPage int) ([]*model.Job, *model.AppError) { func (a *App) GetJobsPage(page int, perPage int) ([]*model.Job, *model.AppError) {
@@ -16,7 +16,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) {
return a.Srv.Store.Job().GetAllPage(offset, limit) return a.Srv().Store.Job().GetAllPage(offset, limit)
} }
func (a *App) GetJobsByTypePage(jobType string, page int, perPage int) ([]*model.Job, *model.AppError) { func (a *App) GetJobsByTypePage(jobType string, page int, perPage int) ([]*model.Job, *model.AppError) {
@@ -24,13 +24,13 @@ 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) {
return a.Srv.Store.Job().GetAllByTypePage(jobType, offset, limit) return a.Srv().Store.Job().GetAllByTypePage(jobType, offset, limit)
} }
func (a *App) CreateJob(job *model.Job) (*model.Job, *model.AppError) { func (a *App) CreateJob(job *model.Job) (*model.Job, *model.AppError) {
return a.Srv.Jobs.CreateJob(job.Type, job.Data) return a.Srv().Jobs.CreateJob(job.Type, job.Data)
} }
func (a *App) CancelJob(jobId string) *model.AppError { func (a *App) CancelJob(jobId string) *model.AppError {
return a.Srv.Jobs.RequestCancellation(jobId) return a.Srv().Jobs.RequestCancellation(jobId)
} }

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

@@ -18,10 +18,10 @@ func TestGetJob(t *testing.T) {
Id: model.NewId(), Id: model.NewId(),
Status: model.NewId(), Status: model.NewId(),
} }
_, err := th.App.Srv.Store.Job().Save(status) _, err := th.App.Srv().Store.Job().Save(status)
require.Nil(t, err) require.Nil(t, err)
defer th.App.Srv.Store.Job().Delete(status.Id) defer th.App.Srv().Store.Job().Delete(status.Id)
received, err := th.App.GetJob(status.Id) received, err := th.App.GetJob(status.Id)
require.Nil(t, err) require.Nil(t, err)
@@ -53,9 +53,9 @@ func TestGetJobByType(t *testing.T) {
} }
for _, status := range statuses { for _, status := range statuses {
_, err := th.App.Srv.Store.Job().Save(status) _, err := th.App.Srv().Store.Job().Save(status)
require.Nil(t, err) require.Nil(t, err)
defer th.App.Srv.Store.Job().Delete(status.Id) defer th.App.Srv().Store.Job().Delete(status.Id)
} }
received, err := th.App.GetJobsByType(jobType, 0, 2) received, err := th.App.GetJobsByType(jobType, 0, 2)

12
app/layer_generators/app_iface.go.tmpl Обычный файл
Просмотреть файл

@@ -0,0 +1,12 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
// Code generated by "make store-layers"
// DO NOT EDIT
package app
// AppIface is extracted from App struct and contains all it's exported methods. It's provided to allow partial interface passing and app layers creation.
type AppIface interface {
{{.Content}}
}

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

@@ -12,10 +12,10 @@ import (
) )
func (a *App) SyncLdap() { func (a *App) SyncLdap() {
a.Srv.Go(func() { a.Srv().Go(func() {
if license := a.License(); license != nil && *license.Features.LDAP && *a.Config().LdapSettings.EnableSync { if license := a.License(); license != nil && *license.Features.LDAP && *a.Config().LdapSettings.EnableSync {
if ldapI := a.Ldap; ldapI != nil { if ldapI := a.Ldap(); ldapI != nil {
ldapI.StartSynchronizeJob(false) ldapI.StartSynchronizeJob(false)
} else { } else {
mlog.Error("Not executing ldap sync because ldap is not available") mlog.Error("Not executing ldap sync because ldap is not available")
@@ -26,7 +26,7 @@ func (a *App) SyncLdap() {
func (a *App) TestLdap() *model.AppError { func (a *App) TestLdap() *model.AppError {
license := a.License() license := a.License()
if ldapI := a.Ldap; ldapI != nil && license != nil && *license.Features.LDAP && (*a.Config().LdapSettings.Enable || *a.Config().LdapSettings.EnableSync) { if ldapI := a.Ldap(); ldapI != nil && license != nil && *license.Features.LDAP && (*a.Config().LdapSettings.Enable || *a.Config().LdapSettings.EnableSync) {
if err := ldapI.RunTest(); err != nil { if err := ldapI.RunTest(); err != nil {
err.StatusCode = 500 err.StatusCode = 500
return err return err
@@ -43,9 +43,9 @@ func (a *App) TestLdap() *model.AppError {
func (a *App) GetLdapGroup(ldapGroupID string) (*model.Group, *model.AppError) { func (a *App) GetLdapGroup(ldapGroupID string) (*model.Group, *model.AppError) {
var group *model.Group var group *model.Group
if a.Ldap != nil { if a.Ldap() != nil {
var err *model.AppError var err *model.AppError
group, err = a.Ldap.GetGroup(ldapGroupID) group, err = a.Ldap().GetGroup(ldapGroupID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -64,9 +64,9 @@ func (a *App) GetAllLdapGroupsPage(page int, perPage int, opts model.LdapGroupSe
var groups []*model.Group var groups []*model.Group
var total int var total int
if a.Ldap != nil { if a.Ldap() != nil {
var err *model.AppError var err *model.AppError
groups, total, err = a.Ldap.GetAllGroupsPage(page, perPage, opts) groups, total, err = a.Ldap().GetAllGroupsPage(page, perPage, opts)
if err != nil { if err != nil {
return nil, 0, err return nil, 0, err
} }
@@ -97,7 +97,7 @@ func (a *App) SwitchEmailToLdap(email, password, code, ldapLoginId, ldapPassword
return "", err return "", err
} }
ldapInterface := a.Ldap ldapInterface := a.Ldap()
if ldapInterface == nil { if ldapInterface == nil {
return "", model.NewAppError("SwitchEmailToLdap", "api.user.email_to_ldap.not_available.app_error", nil, "", http.StatusNotImplemented) return "", model.NewAppError("SwitchEmailToLdap", "api.user.email_to_ldap.not_available.app_error", nil, "", http.StatusNotImplemented)
} }
@@ -106,7 +106,7 @@ func (a *App) SwitchEmailToLdap(email, password, code, ldapLoginId, ldapPassword
return "", err return "", err
} }
a.Srv.Go(func() { a.Srv().Go(func() {
if err := a.SendSignInChangeEmail(user.Email, "AD/LDAP", user.Locale, a.GetSiteURL()); err != nil { if err := a.SendSignInChangeEmail(user.Email, "AD/LDAP", user.Locale, a.GetSiteURL()); err != nil {
mlog.Error(err.Error()) mlog.Error(err.Error())
} }
@@ -129,7 +129,7 @@ func (a *App) SwitchLdapToEmail(ldapPassword, code, email, newPassword string) (
return "", model.NewAppError("SwitchLdapToEmail", "api.user.ldap_to_email.not_ldap_account.app_error", nil, "", http.StatusBadRequest) return "", model.NewAppError("SwitchLdapToEmail", "api.user.ldap_to_email.not_ldap_account.app_error", nil, "", http.StatusBadRequest)
} }
ldapInterface := a.Ldap ldapInterface := a.Ldap()
if ldapInterface == nil || user.AuthData == nil { if ldapInterface == nil || user.AuthData == nil {
return "", model.NewAppError("SwitchLdapToEmail", "api.user.ldap_to_email.not_available.app_error", nil, "", http.StatusNotImplemented) return "", model.NewAppError("SwitchLdapToEmail", "api.user.ldap_to_email.not_available.app_error", nil, "", http.StatusNotImplemented)
} }
@@ -152,7 +152,7 @@ func (a *App) SwitchLdapToEmail(ldapPassword, code, email, newPassword string) (
T := utils.GetUserTranslations(user.Locale) T := utils.GetUserTranslations(user.Locale)
a.Srv.Go(func() { a.Srv().Go(func() {
if err := a.SendSignInChangeEmail(user.Email, T("api.templates.signin_change_email.body.method_email"), user.Locale, a.GetSiteURL()); err != nil { if err := a.SendSignInChangeEmail(user.Email, T("api.templates.signin_change_email.body.method_email"), user.Locale, a.GetSiteURL()); err != nil {
mlog.Error(err.Error()) mlog.Error(err.Error())
} }

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