forked from tangled.org/core
Monorepo for Tangled — https://tangled.org

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

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

anirudh.fi eb3d6334 e15ed001

verified
Changed files
+23 -18
appview
config
oauth
handler
+3
appview/config/config.go
···
// temporarily, to add users to default knot and spindle
AppPassword string `env:"APP_PASSWORD"`
+
+
// uhhhh this is because knot1 is under icy's did
+
TmpAltAppPassword string `env:"ALT_APP_PASSWORD, required"`
}
type OAuthConfig struct {
+20 -18
appview/oauth/handler/handler.go
···
}
var (
-
tangledHandle = "tangled.sh"
-
tangledDid = "did:plc:wshs7t2adsemcrrd4snkeqli"
+
tangledDid = "did:plc:wshs7t2adsemcrrd4snkeqli"
+
icyDid = "did:plc:hwevmowznbiukdf6uk5dwrrq"
+
defaultSpindle = "spindle.tangled.sh"
defaultKnot = "knot1.tangled.sh"
)
···
}
log.Printf("adding %s to default spindle", did)
-
session, err := o.createAppPasswordSession()
+
session, err := o.createAppPasswordSession(o.config.Core.AppPassword, tangledDid)
if err != nil {
log.Printf("failed to create session: %s", err)
return
···
CreatedAt: time.Now().Format(time.RFC3339),
}
-
if err := session.putRecord(record); err != nil {
-
log.Printf("failed to add member to default knot: %s", err)
+
if err := session.putRecord(record, tangled.SpindleMemberNSID); err != nil {
+
log.Printf("failed to add member to default spindle: %s", err)
return
}
···
}
log.Printf("adding %s to default knot", did)
-
session, err := o.createAppPasswordSession()
+
session, err := o.createAppPasswordSession(o.config.Core.TmpAltAppPassword, icyDid)
if err != nil {
log.Printf("failed to create session: %s", err)
return
···
CreatedAt: time.Now().Format(time.RFC3339),
}
-
if err := session.putRecord(record); err != nil {
+
if err := session.putRecord(record, tangled.KnotMemberNSID); err != nil {
log.Printf("failed to add member to default knot: %s", err)
return
}
···
type session struct {
AccessJwt string `json:"accessJwt"`
PdsEndpoint string
+
Did string
}
-
func (o *OAuthHandler) createAppPasswordSession() (*session, error) {
-
appPassword := o.config.Core.AppPassword
+
func (o *OAuthHandler) createAppPasswordSession(appPassword, did string) (*session, error) {
if appPassword == "" {
return nil, fmt.Errorf("no app password configured, skipping member addition")
}
-
resolved, err := o.idResolver.ResolveIdent(context.Background(), tangledDid)
+
resolved, err := o.idResolver.ResolveIdent(context.Background(), did)
if err != nil {
-
return nil, fmt.Errorf("failed to resolve tangled.sh DID %s: %v", tangledDid, err)
+
return nil, fmt.Errorf("failed to resolve tangled.sh DID %s: %v", did, err)
}
pdsEndpoint := resolved.PDSEndpoint()
if pdsEndpoint == "" {
-
return nil, fmt.Errorf("no PDS endpoint found for tangled.sh DID %s", tangledDid)
+
return nil, fmt.Errorf("no PDS endpoint found for tangled.sh DID %s", did)
}
sessionPayload := map[string]string{
-
"identifier": tangledHandle,
+
"identifier": did,
"password": appPassword,
}
sessionBytes, err := json.Marshal(sessionPayload)
···
}
session.PdsEndpoint = pdsEndpoint
+
session.Did = did
return &session, nil
}
-
func (s *session) putRecord(record any) error {
+
func (s *session) putRecord(record any, collection string) error {
recordBytes, err := json.Marshal(record)
if err != nil {
return fmt.Errorf("failed to marshal knot member record: %w", err)
}
payload := map[string]any{
-
"repo": tangledDid,
-
"collection": tangled.KnotMemberNSID,
+
"repo": s.Did,
+
"collection": collection,
"rkey": tid.TID(),
"record": json.RawMessage(recordBytes),
}
···
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
-
return fmt.Errorf("failed to add user to default Knot: %w", err)
+
return fmt.Errorf("failed to add user to default service: %w", err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
-
return fmt.Errorf("failed to add user to default Knot: HTTP %d", resp.StatusCode)
+
return fmt.Errorf("failed to add user to default service: HTTP %d", resp.StatusCode)
}
return nil