mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
Migrate Channel.GetMemberForPost to Sync by default (#11244)
* Migrate Channel.GetMemberForPost to Sync by default * fix indentation
This commit is contained in:
committed by
Jesús Espino
parent
327a1c92e8
commit
be5c962913
@@ -66,9 +66,7 @@ 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 {
|
||||||
var channelMember *model.ChannelMember
|
if channelMember, err := a.Srv.Store.Channel().GetMemberForPost(postId, session.UserId); err == nil {
|
||||||
if result := <-a.Srv.Store.Channel().GetMemberForPost(postId, session.UserId); result.Err == nil {
|
|
||||||
channelMember = result.Data.(*model.ChannelMember)
|
|
||||||
|
|
||||||
if a.RolesGrantPermission(channelMember.GetRoles(), permission.Id) {
|
if a.RolesGrantPermission(channelMember.GetRoles(), permission.Id) {
|
||||||
return true
|
return true
|
||||||
@@ -165,10 +163,7 @@ 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 {
|
||||||
var channelMember *model.ChannelMember
|
if channelMember, err := a.Srv.Store.Channel().GetMemberForPost(postId, askingUserId); err == nil {
|
||||||
if result := <-a.Srv.Store.Channel().GetMemberForPost(postId, askingUserId); result.Err == nil {
|
|
||||||
channelMember = result.Data.(*model.ChannelMember)
|
|
||||||
|
|
||||||
if a.RolesGrantPermission(channelMember.GetRoles(), permission.Id) {
|
if a.RolesGrantPermission(channelMember.GetRoles(), permission.Id) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1464,39 +1464,37 @@ func (s SqlChannelStore) IsUserInChannelUseCache(userId string, channelId string
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s SqlChannelStore) GetMemberForPost(postId string, userId string) store.StoreChannel {
|
func (s SqlChannelStore) GetMemberForPost(postId string, userId string) (*model.ChannelMember, *model.AppError) {
|
||||||
return store.Do(func(result *store.StoreResult) {
|
var dbMember channelMemberWithSchemeRoles
|
||||||
var dbMember channelMemberWithSchemeRoles
|
query := `
|
||||||
if err := s.GetReplica().SelectOne(&dbMember,
|
SELECT
|
||||||
`
|
ChannelMembers.*,
|
||||||
SELECT
|
TeamScheme.DefaultChannelGuestRole TeamSchemeDefaultGuestRole,
|
||||||
ChannelMembers.*,
|
TeamScheme.DefaultChannelUserRole TeamSchemeDefaultUserRole,
|
||||||
TeamScheme.DefaultChannelGuestRole TeamSchemeDefaultGuestRole,
|
TeamScheme.DefaultChannelAdminRole TeamSchemeDefaultAdminRole,
|
||||||
TeamScheme.DefaultChannelUserRole TeamSchemeDefaultUserRole,
|
ChannelScheme.DefaultChannelGuestRole ChannelSchemeDefaultGuestRole,
|
||||||
TeamScheme.DefaultChannelAdminRole TeamSchemeDefaultAdminRole,
|
ChannelScheme.DefaultChannelUserRole ChannelSchemeDefaultUserRole,
|
||||||
ChannelScheme.DefaultChannelGuestRole ChannelSchemeDefaultGuestRole,
|
ChannelScheme.DefaultChannelAdminRole ChannelSchemeDefaultAdminRole
|
||||||
ChannelScheme.DefaultChannelUserRole ChannelSchemeDefaultUserRole,
|
FROM
|
||||||
ChannelScheme.DefaultChannelAdminRole ChannelSchemeDefaultAdminRole
|
ChannelMembers
|
||||||
FROM
|
INNER JOIN
|
||||||
ChannelMembers
|
Posts ON ChannelMembers.ChannelId = Posts.ChannelId
|
||||||
INNER JOIN
|
INNER JOIN
|
||||||
Posts ON ChannelMembers.ChannelId = Posts.ChannelId
|
Channels ON ChannelMembers.ChannelId = Channels.Id
|
||||||
INNER JOIN
|
LEFT JOIN
|
||||||
Channels ON ChannelMembers.ChannelId = Channels.Id
|
Schemes ChannelScheme ON Channels.SchemeId = ChannelScheme.Id
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
Schemes ChannelScheme ON Channels.SchemeId = ChannelScheme.Id
|
Teams ON Channels.TeamId = Teams.Id
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
Teams ON Channels.TeamId = Teams.Id
|
Schemes TeamScheme ON Teams.SchemeId = TeamScheme.Id
|
||||||
LEFT JOIN
|
WHERE
|
||||||
Schemes TeamScheme ON Teams.SchemeId = TeamScheme.Id
|
ChannelMembers.UserId = :UserId
|
||||||
WHERE
|
AND
|
||||||
ChannelMembers.UserId = :UserId
|
Posts.Id = :PostId`
|
||||||
AND Posts.Id = :PostId`, map[string]interface{}{"UserId": userId, "PostId": postId}); err != nil {
|
if err := s.GetReplica().SelectOne(&dbMember, query, map[string]interface{}{"UserId": userId, "PostId": postId}); err != nil {
|
||||||
result.Err = model.NewAppError("SqlChannelStore.GetMemberForPost", "store.sql_channel.get_member_for_post.app_error", nil, "postId="+postId+", err="+err.Error(), http.StatusInternalServerError)
|
return nil, model.NewAppError("SqlChannelStore.GetMemberForPost", "store.sql_channel.get_member_for_post.app_error", nil, "postId="+postId+", err="+err.Error(), http.StatusInternalServerError)
|
||||||
return
|
}
|
||||||
}
|
return dbMember.ToModel(), nil
|
||||||
result.Data = dbMember.ToModel()
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s SqlChannelStore) GetAllChannelMembersForUser(userId string, allowFromCache bool, includeDeleted bool) store.StoreChannel {
|
func (s SqlChannelStore) GetAllChannelMembersForUser(userId string, allowFromCache bool, includeDeleted bool) store.StoreChannel {
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ type ChannelStore interface {
|
|||||||
IsUserInChannelUseCache(userId string, channelId string) bool
|
IsUserInChannelUseCache(userId string, channelId string) bool
|
||||||
GetAllChannelMembersNotifyPropsForChannel(channelId string, allowFromCache bool) (map[string]model.StringMap, *model.AppError)
|
GetAllChannelMembersNotifyPropsForChannel(channelId string, allowFromCache bool) (map[string]model.StringMap, *model.AppError)
|
||||||
InvalidateCacheForChannelMembersNotifyProps(channelId string)
|
InvalidateCacheForChannelMembersNotifyProps(channelId string)
|
||||||
GetMemberForPost(postId string, userId string) StoreChannel
|
GetMemberForPost(postId string, userId string) (*model.ChannelMember, *model.AppError)
|
||||||
InvalidateMemberCount(channelId string)
|
InvalidateMemberCount(channelId string)
|
||||||
GetMemberCountFromCache(channelId string) int64
|
GetMemberCountFromCache(channelId string) int64
|
||||||
GetMemberCount(channelId string, allowFromCache bool) StoreChannel
|
GetMemberCount(channelId string, allowFromCache bool) StoreChannel
|
||||||
|
|||||||
@@ -1865,13 +1865,13 @@ func testChannelStoreGetMemberForPost(t *testing.T, ss store.Store) {
|
|||||||
})
|
})
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
if r1 := <-ss.Channel().GetMemberForPost(p1.Id, m1.UserId); r1.Err != nil {
|
if r1, err := ss.Channel().GetMemberForPost(p1.Id, m1.UserId); err != nil {
|
||||||
t.Fatal(r1.Err)
|
t.Fatal(err)
|
||||||
} else if r1.Data.(*model.ChannelMember).ToJson() != m1.ToJson() {
|
} else if r1.ToJson() != m1.ToJson() {
|
||||||
t.Fatal("invalid returned channel member")
|
t.Fatal("invalid returned channel member")
|
||||||
}
|
}
|
||||||
|
|
||||||
if r2 := <-ss.Channel().GetMemberForPost(p1.Id, model.NewId()); r2.Err == nil {
|
if _, err := ss.Channel().GetMemberForPost(p1.Id, model.NewId()); err == nil {
|
||||||
t.Fatal("shouldn't have returned a member")
|
t.Fatal("shouldn't have returned a member")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -705,19 +705,28 @@ func (_m *ChannelStore) GetMemberCountFromCache(channelId string) int64 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetMemberForPost provides a mock function with given fields: postId, userId
|
// GetMemberForPost provides a mock function with given fields: postId, userId
|
||||||
func (_m *ChannelStore) GetMemberForPost(postId string, userId string) store.StoreChannel {
|
func (_m *ChannelStore) GetMemberForPost(postId string, userId string) (*model.ChannelMember, *model.AppError) {
|
||||||
ret := _m.Called(postId, userId)
|
ret := _m.Called(postId, userId)
|
||||||
|
|
||||||
var r0 store.StoreChannel
|
var r0 *model.ChannelMember
|
||||||
if rf, ok := ret.Get(0).(func(string, string) store.StoreChannel); ok {
|
if rf, ok := ret.Get(0).(func(string, string) *model.ChannelMember); ok {
|
||||||
r0 = rf(postId, userId)
|
r0 = rf(postId, userId)
|
||||||
} else {
|
} else {
|
||||||
if ret.Get(0) != nil {
|
if ret.Get(0) != nil {
|
||||||
r0 = ret.Get(0).(store.StoreChannel)
|
r0 = ret.Get(0).(*model.ChannelMember)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return r0
|
var r1 *model.AppError
|
||||||
|
if rf, ok := ret.Get(1).(func(string, string) *model.AppError); ok {
|
||||||
|
r1 = rf(postId, userId)
|
||||||
|
} else {
|
||||||
|
if ret.Get(1) != nil {
|
||||||
|
r1 = ret.Get(1).(*model.AppError)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return r0, r1
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetMembers provides a mock function with given fields: channelId, offset, limit
|
// GetMembers provides a mock function with given fields: channelId, offset, limit
|
||||||
|
|||||||
Reference in New Issue
Block a user