···316316 defer func() {
317317 eventTime := event.TimeUS
318318 lastTimeUs := eventTime + 1
319319- fmt.Println("lastTimeUs", lastTimeUs)
320319 if err := h.db.SaveLastTimeUs(lastTimeUs); err != nil {
321320 err = fmt.Errorf("(deferred) failed to save last time us: %w", err)
322321 }
+19-3
spindle/ingester.go
···33import (
44 "context"
55 "encoding/json"
66+ "errors"
67 "fmt"
77- "path/filepath"
8899 "tangled.sh/tangled.sh/core/api/tangled"
1010 "tangled.sh/tangled.sh/core/eventconsumer"
···100100 return nil
101101}
102102103103-func (s *Spindle) ingestRepo(_ context.Context, e *models.Event) error {
103103+func (s *Spindle) ingestRepo(ctx context.Context, e *models.Event) error {
104104 var err error
105105+ did := e.Did
106106+ resolver := idresolver.DefaultResolver()
105107106108 l := s.l.With("component", "ingester", "record", tangled.RepoNSID)
107109···137139 return fmt.Errorf("failed to add repo: %w", err)
138140 }
139141142142+ didSlashRepo, err := securejoin.SecureJoin(record.Owner, record.Name)
143143+ if err != nil {
144144+ return err
145145+ }
146146+140147 // add repo to rbac
141141- if err := s.e.AddRepo(record.Owner, rbac.ThisServer, filepath.Join(record.Owner, record.Name)); err != nil {
148148+ if err := s.e.AddRepo(record.Owner, rbac.ThisServer, didSlashRepo); err != nil {
142149 l.Error("failed to add repo to enforcer", "error", err)
143150 return fmt.Errorf("failed to add repo: %w", err)
151151+ }
152152+153153+ // add collaborators to rbac
154154+ owner, err := resolver.ResolveIdent(ctx, did)
155155+ if err != nil || owner.Handle.IsInvalidHandle() {
156156+ return err
157157+ }
158158+ if err := s.fetchAndAddCollaborators(ctx, owner, didSlashRepo); err != nil {
159159+ return err
144160 }
145161146162 // add this knot to the event consumer
+2-2
appview/repo/repo.go
···12251225 f, err := rp.repoResolver.Resolve(r)
12261226 user := rp.oauth.GetUser(r)
1227122712281228- // all spindles that this user is a member of
12291229- spindles, err := rp.enforcer.GetSpindlesForUser(user.Did)
12281228+ // all spindles that the repo owner is a member of
12291229+ spindles, err := rp.enforcer.GetSpindlesForUser(f.OwnerDid())
12301230 if err != nil {
12311231 log.Println("failed to fetch spindles", err)
12321232 return