this goto/label feels awkward... just make a quick helper function (not an instance method) that can check for a certain type of permission... then this becomes:

```go
var perm string
if channel != "" {
    perm = "subscribe"
} else {
    perm = "publish"
}
if !hasPermissionFor(a.Permissions, perm) {
   return false
}
```

(naming aside)