···1920 // temporarily, to add users to default knot and spindle
21 AppPassword string `env:"APP_PASSWORD"`
00022}
2324type OAuthConfig struct {
···1920 // 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}
2627type OAuthConfig struct {
+20-18
appview/oauth/handler/handler.go
···354}
355356var (
357- tangledHandle = "tangled.sh"
358- tangledDid = "did:plc:wshs7t2adsemcrrd4snkeqli"
0359 defaultSpindle = "spindle.tangled.sh"
360 defaultKnot = "knot1.tangled.sh"
361)
···379 }
380381 log.Printf("adding %s to default spindle", did)
382- session, err := o.createAppPasswordSession()
383 if err != nil {
384 log.Printf("failed to create session: %s", err)
385 return
···392 CreatedAt: time.Now().Format(time.RFC3339),
393 }
394395- if err := session.putRecord(record); err != nil {
396- log.Printf("failed to add member to default knot: %s", err)
397 return
398 }
399···416 }
417418 log.Printf("adding %s to default knot", did)
419- session, err := o.createAppPasswordSession()
420 if err != nil {
421 log.Printf("failed to create session: %s", err)
422 return
···429 CreatedAt: time.Now().Format(time.RFC3339),
430 }
431432- if err := session.putRecord(record); err != nil {
433 log.Printf("failed to add member to default knot: %s", err)
434 return
435 }
···441type session struct {
442 AccessJwt string `json:"accessJwt"`
443 PdsEndpoint string
0444}
445446-func (o *OAuthHandler) createAppPasswordSession() (*session, error) {
447- appPassword := o.config.Core.AppPassword
448 if appPassword == "" {
449 return nil, fmt.Errorf("no app password configured, skipping member addition")
450 }
451452- resolved, err := o.idResolver.ResolveIdent(context.Background(), tangledDid)
453 if err != nil {
454- return nil, fmt.Errorf("failed to resolve tangled.sh DID %s: %v", tangledDid, err)
455 }
456457 pdsEndpoint := resolved.PDSEndpoint()
458 if pdsEndpoint == "" {
459- return nil, fmt.Errorf("no PDS endpoint found for tangled.sh DID %s", tangledDid)
460 }
461462 sessionPayload := map[string]string{
463- "identifier": tangledHandle,
464 "password": appPassword,
465 }
466 sessionBytes, err := json.Marshal(sessionPayload)
···492 }
493494 session.PdsEndpoint = pdsEndpoint
0495496 return &session, nil
497}
498499-func (s *session) putRecord(record any) error {
500 recordBytes, err := json.Marshal(record)
501 if err != nil {
502 return fmt.Errorf("failed to marshal knot member record: %w", err)
503 }
504505 payload := map[string]any{
506- "repo": tangledDid,
507- "collection": tangled.KnotMemberNSID,
508 "rkey": tid.TID(),
509 "record": json.RawMessage(recordBytes),
510 }
···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 Knot: %w", err)
530 }
531 defer resp.Body.Close()
532533 if resp.StatusCode != http.StatusOK {
534- return fmt.Errorf("failed to add user to default Knot: HTTP %d", resp.StatusCode)
535 }
536537 return nil
···354}
355356var (
357+ tangledDid = "did:plc:wshs7t2adsemcrrd4snkeqli"
358+ icyDid = "did:plc:hwevmowznbiukdf6uk5dwrrq"
359+360 defaultSpindle = "spindle.tangled.sh"
361 defaultKnot = "knot1.tangled.sh"
362)
···380 }
381382 log.Printf("adding %s to default spindle", did)
383+ session, err := o.createAppPasswordSession(o.config.Core.AppPassword, tangledDid)
384 if err != nil {
385 log.Printf("failed to create session: %s", err)
386 return
···393 CreatedAt: time.Now().Format(time.RFC3339),
394 }
395396+ if err := session.putRecord(record, tangled.SpindleMemberNSID); err != nil {
397+ log.Printf("failed to add member to default spindle: %s", err)
398 return
399 }
400···417 }
418419 log.Printf("adding %s to default knot", did)
420+ session, err := o.createAppPasswordSession(o.config.Core.TmpAltAppPassword, icyDid)
421 if err != nil {
422 log.Printf("failed to create session: %s", err)
423 return
···430 CreatedAt: time.Now().Format(time.RFC3339),
431 }
432433+ if err := session.putRecord(record, tangled.KnotMemberNSID); err != nil {
434 log.Printf("failed to add member to default knot: %s", err)
435 return
436 }
···442type session struct {
443 AccessJwt string `json:"accessJwt"`
444 PdsEndpoint string
445+ Did string
446}
447448+func (o *OAuthHandler) createAppPasswordSession(appPassword, did string) (*session, error) {
0449 if appPassword == "" {
450 return nil, fmt.Errorf("no app password configured, skipping member addition")
451 }
452453+ resolved, err := o.idResolver.ResolveIdent(context.Background(), did)
454 if err != nil {
455+ return nil, fmt.Errorf("failed to resolve tangled.sh DID %s: %v", did, err)
456 }
457458 pdsEndpoint := resolved.PDSEndpoint()
459 if pdsEndpoint == "" {
460+ return nil, fmt.Errorf("no PDS endpoint found for tangled.sh DID %s", did)
461 }
462463 sessionPayload := map[string]string{
464+ "identifier": did,
465 "password": appPassword,
466 }
467 sessionBytes, err := json.Marshal(sessionPayload)
···493 }
494495 session.PdsEndpoint = pdsEndpoint
496+ session.Did = did
497498 return &session, nil
499}
500501+func (s *session) putRecord(record any, collection string) error {
502 recordBytes, err := json.Marshal(record)
503 if err != nil {
504 return fmt.Errorf("failed to marshal knot member record: %w", err)
505 }
506507 payload := map[string]any{
508+ "repo": s.Did,
509+ "collection": collection,
510 "rkey": tid.TID(),
511 "record": json.RawMessage(recordBytes),
512 }
···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 service: %w", err)
532 }
533 defer resp.Body.Close()
534535 if resp.StatusCode != http.StatusOK {
536+ return fmt.Errorf("failed to add user to default service: HTTP %d", resp.StatusCode)
537 }
538539 return nil