github.com/glide-im/glide@v1.6.0/pkg/subscription/subscription_impl/perm.go (about) 1 package subscription_impl 2 3 type PermMask int 4 5 const ( 6 MaskPermRead PermMask = 1 << iota 7 MaskPermWrite = 1 << iota 8 MaskPermAdmin = 1 << iota 9 MaskPermSystem = 1 << iota 10 ) 11 12 const ( 13 PermNone Permission = 0 14 PermRead Permission = 1 << MaskPermRead 15 PermWrite Permission = 1 << MaskPermWrite 16 PermAdmin Permission = 1 << MaskPermAdmin 17 ) 18 19 type Permission int64 20 21 func (perm Permission) allows(masks ...PermMask) bool { 22 for _, m := range masks { 23 if perm.denies(m) { 24 return false 25 } 26 } 27 return true 28 } 29 30 func (perm Permission) denies(mask PermMask) bool { 31 b := perm >> mask 32 return b&1 != 1 33 }