···9797 if err != nil {
9898 log.Printf("rendering login page: %s", err)
9999 }
100100+100101 return
101102 case http.MethodPost:
102103 handle := strings.TrimPrefix(r.FormValue("handle"), "@")
···123124 }
124125125126 log.Printf("successfully saved session for %s (%s)", atSession.Handle, atSession.Did)
127127+128128+ did := resolved.DID.String()
129129+ defaultKnot := "knot1.tangled.sh"
130130+131131+ go func() {
132132+ log.Printf("adding %s to default knot", did)
133133+ err = s.enforcer.AddMember(defaultKnot, did)
134134+ if err != nil {
135135+ log.Println("failed to add user to knot1.tangled.sh: ", err)
136136+ return
137137+ }
138138+ err = s.enforcer.E.SavePolicy()
139139+ if err != nil {
140140+ log.Println("failed to add user to knot1.tangled.sh: ", err)
141141+ return
142142+ }
143143+144144+ secret, err := db.GetRegistrationKey(s.db, defaultKnot)
145145+ if err != nil {
146146+ log.Println("failed to get registration key for knot1.tangled.sh")
147147+ return
148148+ }
149149+ signedClient, err := NewSignedClient(defaultKnot, secret, s.config.Dev)
150150+ resp, err := signedClient.AddMember(did)
151151+ if err != nil {
152152+ log.Println("failed to add user to knot1.tangled.sh: ", err)
153153+ return
154154+ }
155155+156156+ if resp.StatusCode != http.StatusNoContent {
157157+ log.Println("failed to add user to knot1.tangled.sh: ", resp.StatusCode)
158158+ return
159159+ }
160160+ }()
161161+126162 s.pages.HxRedirect(w, "/")
127163 return
128164 }
···513549 case http.MethodGet:
514550 user := s.auth.GetUser(r)
515551 knots, err := s.enforcer.GetDomainsForUser(user.Did)
516516-517552 if err != nil {
518553 s.pages.Notice(w, "repo", "Invalid user account.")
519554 return
···523558 LoggedInUser: user,
524559 Knots: knots,
525560 })
561561+526562 case http.MethodPost:
527563 user := s.auth.GetUser(r)
528564
+5-1
readme.md
···11# tangled
2233-Hello Tanglers! This is the codebase for [Tangled](https://tangled.sh)—a code collaboration platform built on the [AT Protocol](https://atproto.com).
33+Hello Tanglers! This is the codebase for
44+[Tangled](https://tangled.sh)—a code collaboration platform built
55+on the [AT Protocol](https://atproto.com).
66+77+Read the introduction to Tangled [here](https://blog.tangled.sh/intro).