summaryrefslogtreecommitdiffstats
path: root/app/authorization.go
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2017-02-17 09:33:38 -0500
committerCorey Hulen <corey@hulen.com>2017-02-17 09:33:38 -0500
commit96f01d8c6c3dae37b6046b13d39aabc6853ba826 (patch)
tree2ccd6d5a4f0950cb9faa3b8e46384a41bda9177d /app/authorization.go
parent210b510c873e399a1079d6605ca206ae9a20d268 (diff)
downloadchat-96f01d8c6c3dae37b6046b13d39aabc6853ba826.tar.gz
chat-96f01d8c6c3dae37b6046b13d39aabc6853ba826.tar.bz2
chat-96f01d8c6c3dae37b6046b13d39aabc6853ba826.zip
Move channel permission check back to using cache (#5454)
Diffstat (limited to 'app/authorization.go')
-rw-r--r--app/authorization.go20
1 files changed, 13 insertions, 7 deletions
diff --git a/app/authorization.go b/app/authorization.go
index b43d64341..4d36c63e8 100644
--- a/app/authorization.go
+++ b/app/authorization.go
@@ -4,6 +4,8 @@
package app
import (
+ "strings"
+
l4g "github.com/alecthomas/log4go"
"github.com/mattermost/platform/model"
)
@@ -32,16 +34,20 @@ func SessionHasPermissionToChannel(session model.Session, channelId string, perm
return false
}
- channelMember, err := GetChannelMember(channelId, session.UserId)
- if err == nil {
- roles := channelMember.GetRoles()
- if CheckIfRolesGrantPermission(roles, permission.Id) {
- return true
+ cmc := Srv.Store.Channel().GetAllChannelMembersForUser(session.UserId, true)
+
+ var channelRoles []string
+ if cmcresult := <-cmc; cmcresult.Err == nil {
+ ids := cmcresult.Data.(map[string]string)
+ if roles, ok := ids[channelId]; ok {
+ channelRoles = strings.Fields(roles)
+ if CheckIfRolesGrantPermission(channelRoles, permission.Id) {
+ return true
+ }
}
}
- var channel *model.Channel
- channel, err = GetChannel(channelId)
+ channel, err := GetChannel(channelId)
if err == nil {
return SessionHasPermissionToTeam(session, channel.TeamId, permission)
}