47 lines
974 B
Go
47 lines
974 B
Go
// Copyright 2018 The OpenPitrix Authors. All rights reserved.
|
|
// Use of this source code is governed by a Apache license
|
|
// that can be found in the LICENSE file.
|
|
|
|
package sender
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/golang/protobuf/ptypes/wrappers"
|
|
)
|
|
|
|
// ${group_path}:${user_id}
|
|
type OwnerPath string
|
|
|
|
func (o OwnerPath) match(accessPath OwnerPath) bool {
|
|
if string(accessPath) == "" {
|
|
return true
|
|
}
|
|
return strings.HasPrefix(string(o), string(accessPath))
|
|
}
|
|
|
|
func (o OwnerPath) CheckOwnerPathPermission(ownerPaths ...string) bool {
|
|
for _, ownerPath := range ownerPaths {
|
|
if !OwnerPath(ownerPath).match(o) {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
func (o OwnerPath) CheckPermission(s *Sender) bool {
|
|
return o.match(s.GetAccessPath())
|
|
}
|
|
|
|
func (o OwnerPath) Owner() string {
|
|
s := strings.Split(string(o), ":")
|
|
if len(s) < 2 {
|
|
return ""
|
|
}
|
|
return s[1]
|
|
}
|
|
|
|
func (o OwnerPath) ToProtoString() *wrappers.StringValue {
|
|
return &wrappers.StringValue{Value: string(o)}
|
|
}
|