blob: fff9dc7be8102d96ee1533ae142415b8a1bf1eda [file] [log] [blame]
package server
import (
"strings"
"v.io/v23/ipc"
"v.io/v23/security"
"v.io/v23/services/security/access"
"v.io/v23/services/security/groups"
)
type manager struct {
st Store
acl access.TaggedACLMap
}
var _ ipc.Dispatcher = (*manager)(nil)
func NewManager(st Store, acl access.TaggedACLMap) *manager {
return &manager{st: st, acl: acl}
}
func (m *manager) Lookup(suffix string) (interface{}, security.Authorizer, error) {
suffix = strings.TrimPrefix(suffix, "/")
// TODO(sadovsky): Check that suffix is a valid group name.
// TODO(sadovsky): Use a real authorizer. Note, this authorizer will be
// relatively permissive. Stricter access control happens in the individual
// RPC methods. See syncgroupserver/main.go for example.
return groups.GroupServer(&group{name: suffix, m: m}), nil, nil
}