Mirror of @tangled.org/core. Running on a Raspberry Pi Zero 2

appview/oauth: very temp fix for adding to default knot

Signed-off-by: Anirudh Oppiliappan <anirudh@tangled.sh>

anirudh.fi eb3d6334 e15ed001

verified
+23 -18
+3
appview/config/config.go
··· 19 20 // temporarily, to add users to default knot and spindle 21 AppPassword string `env:"APP_PASSWORD"` 22 } 23 24 type OAuthConfig struct {
··· 19 20 // temporarily, to add users to default knot and spindle 21 AppPassword string `env:"APP_PASSWORD"` 22 + 23 + // uhhhh this is because knot1 is under icy's did 24 + TmpAltAppPassword string `env:"ALT_APP_PASSWORD, required"` 25 } 26 27 type OAuthConfig struct {
+20 -18
appview/oauth/handler/handler.go
··· 354 } 355 356 var ( 357 - tangledHandle = "tangled.sh" 358 - tangledDid = "did:plc:wshs7t2adsemcrrd4snkeqli" 359 defaultSpindle = "spindle.tangled.sh" 360 defaultKnot = "knot1.tangled.sh" 361 ) ··· 380 } 381 382 log.Printf("adding %s to default spindle", did) 383 - session, err := o.createAppPasswordSession() 384 if err != nil { 385 log.Printf("failed to create session: %s", err) 386 return ··· 393 CreatedAt: time.Now().Format(time.RFC3339), 394 } 395 396 - if err := session.putRecord(record); err != nil { 397 - log.Printf("failed to add member to default knot: %s", err) 398 return 399 } 400 ··· 417 } 418 419 log.Printf("adding %s to default knot", did) 420 - session, err := o.createAppPasswordSession() 421 if err != nil { 422 log.Printf("failed to create session: %s", err) 423 return ··· 430 CreatedAt: time.Now().Format(time.RFC3339), 431 } 432 433 - if err := session.putRecord(record); err != nil { 434 log.Printf("failed to add member to default knot: %s", err) 435 return 436 } ··· 442 type session struct { 443 AccessJwt string `json:"accessJwt"` 444 PdsEndpoint string 445 } 446 447 - func (o *OAuthHandler) createAppPasswordSession() (*session, error) { 448 - appPassword := o.config.Core.AppPassword 449 if appPassword == "" { 450 return nil, fmt.Errorf("no app password configured, skipping member addition") 451 } 452 453 - resolved, err := o.idResolver.ResolveIdent(context.Background(), tangledDid) 454 if err != nil { 455 - return nil, fmt.Errorf("failed to resolve tangled.sh DID %s: %v", tangledDid, err) 456 } 457 458 pdsEndpoint := resolved.PDSEndpoint() 459 if pdsEndpoint == "" { 460 - return nil, fmt.Errorf("no PDS endpoint found for tangled.sh DID %s", tangledDid) 461 } 462 463 sessionPayload := map[string]string{ 464 - "identifier": tangledHandle, 465 "password": appPassword, 466 } 467 sessionBytes, err := json.Marshal(sessionPayload) ··· 493 } 494 495 session.PdsEndpoint = pdsEndpoint 496 497 return &session, nil 498 } 499 500 - func (s *session) putRecord(record any) error { 501 recordBytes, err := json.Marshal(record) 502 if err != nil { 503 return fmt.Errorf("failed to marshal knot member record: %w", err) 504 } 505 506 payload := map[string]any{ 507 - "repo": tangledDid, 508 - "collection": tangled.KnotMemberNSID, 509 "rkey": tid.TID(), 510 "record": json.RawMessage(recordBytes), 511 } ··· 528 client := &http.Client{Timeout: 30 * time.Second} 529 resp, err := client.Do(req) 530 if err != nil { 531 - return fmt.Errorf("failed to add user to default Knot: %w", err) 532 } 533 defer resp.Body.Close() 534 535 if resp.StatusCode != http.StatusOK { 536 - return fmt.Errorf("failed to add user to default Knot: HTTP %d", resp.StatusCode) 537 } 538 539 return nil
··· 354 } 355 356 var ( 357 + tangledDid = "did:plc:wshs7t2adsemcrrd4snkeqli" 358 + icyDid = "did:plc:hwevmowznbiukdf6uk5dwrrq" 359 + 360 defaultSpindle = "spindle.tangled.sh" 361 defaultKnot = "knot1.tangled.sh" 362 ) ··· 379 } 380 381 log.Printf("adding %s to default spindle", did) 382 + session, err := o.createAppPasswordSession(o.config.Core.AppPassword, tangledDid) 383 if err != nil { 384 log.Printf("failed to create session: %s", err) 385 return ··· 392 CreatedAt: time.Now().Format(time.RFC3339), 393 } 394 395 + if err := session.putRecord(record, tangled.SpindleMemberNSID); err != nil { 396 + log.Printf("failed to add member to default spindle: %s", err) 397 return 398 } 399 ··· 416 } 417 418 log.Printf("adding %s to default knot", did) 419 + session, err := o.createAppPasswordSession(o.config.Core.TmpAltAppPassword, icyDid) 420 if err != nil { 421 log.Printf("failed to create session: %s", err) 422 return ··· 429 CreatedAt: time.Now().Format(time.RFC3339), 430 } 431 432 + if err := session.putRecord(record, tangled.KnotMemberNSID); err != nil { 433 log.Printf("failed to add member to default knot: %s", err) 434 return 435 } ··· 441 type session struct { 442 AccessJwt string `json:"accessJwt"` 443 PdsEndpoint string 444 + Did string 445 } 446 447 + func (o *OAuthHandler) createAppPasswordSession(appPassword, did string) (*session, error) { 448 if appPassword == "" { 449 return nil, fmt.Errorf("no app password configured, skipping member addition") 450 } 451 452 + resolved, err := o.idResolver.ResolveIdent(context.Background(), did) 453 if err != nil { 454 + return nil, fmt.Errorf("failed to resolve tangled.sh DID %s: %v", did, err) 455 } 456 457 pdsEndpoint := resolved.PDSEndpoint() 458 if pdsEndpoint == "" { 459 + return nil, fmt.Errorf("no PDS endpoint found for tangled.sh DID %s", did) 460 } 461 462 sessionPayload := map[string]string{ 463 + "identifier": did, 464 "password": appPassword, 465 } 466 sessionBytes, err := json.Marshal(sessionPayload) ··· 492 } 493 494 session.PdsEndpoint = pdsEndpoint 495 + session.Did = did 496 497 return &session, nil 498 } 499 500 + func (s *session) putRecord(record any, collection string) error { 501 recordBytes, err := json.Marshal(record) 502 if err != nil { 503 return fmt.Errorf("failed to marshal knot member record: %w", err) 504 } 505 506 payload := map[string]any{ 507 + "repo": s.Did, 508 + "collection": collection, 509 "rkey": tid.TID(), 510 "record": json.RawMessage(recordBytes), 511 } ··· 526 client := &http.Client{Timeout: 30 * time.Second} 527 resp, err := client.Do(req) 528 if err != nil { 529 + return fmt.Errorf("failed to add user to default service: %w", err) 530 } 531 defer resp.Body.Close() 532 533 if resp.StatusCode != http.StatusOK { 534 + return fmt.Errorf("failed to add user to default service: HTTP %d", resp.StatusCode) 535 } 536 537 return nil