Mirror of @tangled.org/core. Running on a Raspberry Pi Zero 2 (Please be gentle).
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

appview: ingest spindle memberships

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

+31
+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 ··· 283 281 284 282 if err != nil { 285 283 return fmt.Errorf("failed to %s profile record: %w", e.Commit.Operation, err) 284 + } 285 + 286 + return nil 287 + } 288 + 289 + func ingestSpindleMember(_ *db.DbWrapper, e *models.Event, enforcer *rbac.Enforcer) error { 290 + did := e.Did 291 + var err error 292 + 293 + switch e.Commit.Operation { 294 + case models.CommitOperationCreate: 295 + raw := json.RawMessage(e.Commit.Record) 296 + record := tangled.SpindleMember{} 297 + err = json.Unmarshal(raw, &record) 298 + if err != nil { 299 + log.Printf("invalid record: %s", err) 300 + return err 301 + } 302 + 303 + // only spindle owner can invite to spindles 304 + ok, err := enforcer.IsSpindleInviteAllowed(did, record.Instance) 305 + if err != nil || !ok { 306 + return fmt.Errorf("failed to enforce permissions: %w", err) 307 + } 308 + 309 + err = enforcer.AddSpindleMember(record.Instance, record.Subject) 310 + if err != nil { 311 + return fmt.Errorf("failed to add member: %w", err) 312 + } 286 313 } 287 314 288 315 return nil