func (s *REST) Watch(ctx kapi.Context, options *kapi.ListOptions) (watch.Interface, error) { if ctx == nil { return nil, fmt.Errorf("Context is nil") } userInfo, exists := kapi.UserFrom(ctx) if !exists { return nil, fmt.Errorf("no user") } includeAllExistingProjects := (options != nil) && options.ResourceVersion == "0" watcher := projectauth.NewUserProjectWatcher(userInfo.GetName(), userInfo.GetGroups(), s.projectCache, s.authCache, includeAllExistingProjects) s.authCache.AddWatcher(watcher) go watcher.Watch() return watcher, nil }
func (s *REST) Watch(ctx kapi.Context, options *kapi.ListOptions) (watch.Interface, error) { if ctx == nil { return nil, fmt.Errorf("Context is nil") } userInfo, exists := kapi.UserFrom(ctx) if !exists { return nil, fmt.Errorf("no user") } includeAllExistingProjects := (options != nil) && options.ResourceVersion == "0" allowedNamespaces, err := scope.ScopesToVisibleNamespaces(userInfo.GetExtra()[authorizationapi.ScopesKey], s.authCache.GetClusterPolicyLister().ClusterPolicies()) if err != nil { return nil, err } watcher := projectauth.NewUserProjectWatcher(userInfo, allowedNamespaces, s.projectCache, s.authCache, includeAllExistingProjects) s.authCache.AddWatcher(watcher) go watcher.Watch() return watcher, nil }