forked from tangled.org/core
this repo has no description

appview: ingest spindle memberships

Signed-off-by: oppiliappan <me@oppi.li>

oppi.li 1d0275d6 924bcc27

verified
Changed files
+31
appview
+31
appview/ingester.go
··· 44 44 ingestArtifact(&d, e, enforcer) 45 45 case tangled.ActorProfileNSID: 46 46 ingestProfile(&d, e) 47 + case tangled.SpindleMemberNSID: 48 + ingestSpindleMember(&d, e, enforcer) 47 49 } 48 50 49 51 return err ··· 285 287 286 288 return nil 287 289 } 290 + 291 + func ingestSpindleMember(_ *db.DbWrapper, e *models.Event, enforcer *rbac.Enforcer) error { 292 + did := e.Did 293 + var err error 294 + 295 + switch e.Commit.Operation { 296 + case models.CommitOperationCreate: 297 + raw := json.RawMessage(e.Commit.Record) 298 + record := tangled.SpindleMember{} 299 + err = json.Unmarshal(raw, &record) 300 + if err != nil { 301 + log.Printf("invalid record: %s", err) 302 + return err 303 + } 304 + 305 + // only spindle owner can invite to spindles 306 + ok, err := enforcer.IsSpindleInviteAllowed(did, record.Instance) 307 + if err != nil || !ok { 308 + return fmt.Errorf("failed to enforce permissions: %w", err) 309 + } 310 + 311 + err = enforcer.AddSpindleMember(record.Instance, record.Subject) 312 + if err != nil { 313 + return fmt.Errorf("failed to add member: %w", err) 314 + } 315 + } 316 + 317 + return nil 318 + }