Add missing permission check defaults/fallbacks

This commit is contained in:
Denis Arh
2019-03-14 17:36:01 +01:00
parent aefe6422ea
commit af98d3e6c3
2 changed files with 18 additions and 20 deletions
+10 -18
View File
@@ -132,7 +132,7 @@ func (p *permissions) CanJoinChannel(ch *types.Channel) bool {
}
func (p *permissions) CanLeaveChannel(ch *types.Channel) bool {
return p.checkAccess(ch.Resource().String(), "leave", p.canLeaveFallback(ch))
return p.checkAccess(ch.Resource().String(), "leave", p.allow())
}
func (p *permissions) CanArchiveChannel(ch *types.Channel) bool {
@@ -168,35 +168,36 @@ func (p *permissions) CanSendMessage(ch *types.Channel) bool {
}
func (p *permissions) CanReplyMessage(ch *types.Channel) bool {
return p.checkAccess(ch.Resource().String(), "message.reply")
return p.checkAccess(ch.Resource().String(), "message.reply", p.allow())
}
func (p *permissions) CanEmbedMessage(ch *types.Channel) bool {
return p.checkAccess(ch.Resource().String(), "message.embed")
return p.checkAccess(ch.Resource().String(), "message.embed", p.allow())
}
func (p *permissions) CanAttachMessage(ch *types.Channel) bool {
return p.checkAccess(ch.Resource().String(), "message.attach")
return p.checkAccess(ch.Resource().String(), "message.attach", p.allow())
}
func (p *permissions) CanUpdateOwnMessages(ch *types.Channel) bool {
return p.checkAccess(ch.Resource().String(), "message.update.own", p.isChannelOwnerFallback(ch))
return p.checkAccess(ch.Resource().String(), "message.update.own", p.allow())
}
func (p *permissions) CanUpdateMessages(ch *types.Channel) bool {
return p.checkAccess(ch.Resource().String(), "message.update.all", p.isChannelOwnerFallback(ch))
return p.checkAccess(ch.Resource().String(), "message.update.all")
}
func (p *permissions) CanDeleteOwnMessages(ch *types.Channel) bool {
return p.checkAccess(ch.Resource().String(), "message.delete.own", p.isChannelOwnerFallback(ch))
// @todo implement
return p.checkAccess(ch.Resource().String(), "message.delete.own", p.allow())
}
func (p *permissions) CanDeleteMessages(ch *types.Channel) bool {
return p.checkAccess(ch.Resource().String(), "message.delete.all", p.isChannelOwnerFallback(ch))
return p.checkAccess(ch.Resource().String(), "message.delete.all")
}
func (p *permissions) CanReactMessage(ch *types.Channel) bool {
return p.checkAccess(ch.Resource().String(), "message.react")
return p.checkAccess(ch.Resource().String(), "message.react", p.allow())
}
func (p permissions) canJoinFallback(ch *types.Channel) func() internalRules.Access {
@@ -233,15 +234,6 @@ func (p permissions) canSendMessagesFallback(ch *types.Channel) func() internalR
}
}
func (p permissions) canLeaveFallback(ch *types.Channel) func() internalRules.Access {
return func() internalRules.Access {
if ch.Member != nil && ch.Type != types.ChannelTypeGroup {
return internalRules.Allow
}
return internalRules.Deny
}
}
func (p permissions) allow() func() internalRules.Access {
return func() internalRules.Access {
return internalRules.Allow
+8 -2
View File
@@ -93,7 +93,7 @@ func (p *permissions) CanCreateApplication() bool {
}
func (p *permissions) CanReadRole(rl *types.Role) bool {
return p.checkAccess(rl.Resource().String(), "read")
return p.checkAccess(rl.Resource().String(), "read", p.allow())
}
func (p *permissions) CanUpdateRole(rl *types.Role) bool {
@@ -109,7 +109,7 @@ func (p *permissions) CanManageRoleMembers(rl *types.Role) bool {
}
func (p *permissions) CanReadApplication(app *types.Application) bool {
return p.checkAccess(app.Resource().String(), "read")
return p.checkAccess(app.Resource().String(), "read", p.allow())
}
func (p *permissions) CanUpdateApplication(app *types.Application) bool {
@@ -127,3 +127,9 @@ func (p *permissions) checkAccess(resource string, operation string, fallbacks .
}
return false
}
func (p permissions) allow() func() internalRules.Access {
return func() internalRules.Access {
return internalRules.Allow
}
}