+37
-1
appview/state/state.go
+37
-1
appview/state/state.go
···
97
97
if err != nil {
98
98
log.Printf("rendering login page: %s", err)
99
99
}
100
+
100
101
return
101
102
case http.MethodPost:
102
103
handle := strings.TrimPrefix(r.FormValue("handle"), "@")
···
123
124
}
124
125
125
126
log.Printf("successfully saved session for %s (%s)", atSession.Handle, atSession.Did)
127
+
128
+
did := resolved.DID.String()
129
+
defaultKnot := "knot1.tangled.sh"
130
+
131
+
go func() {
132
+
log.Printf("adding %s to default knot", did)
133
+
err = s.enforcer.AddMember(defaultKnot, did)
134
+
if err != nil {
135
+
log.Println("failed to add user to knot1.tangled.sh: ", err)
136
+
return
137
+
}
138
+
err = s.enforcer.E.SavePolicy()
139
+
if err != nil {
140
+
log.Println("failed to add user to knot1.tangled.sh: ", err)
141
+
return
142
+
}
143
+
144
+
secret, err := db.GetRegistrationKey(s.db, defaultKnot)
145
+
if err != nil {
146
+
log.Println("failed to get registration key for knot1.tangled.sh")
147
+
return
148
+
}
149
+
signedClient, err := NewSignedClient(defaultKnot, secret, s.config.Dev)
150
+
resp, err := signedClient.AddMember(did)
151
+
if err != nil {
152
+
log.Println("failed to add user to knot1.tangled.sh: ", err)
153
+
return
154
+
}
155
+
156
+
if resp.StatusCode != http.StatusNoContent {
157
+
log.Println("failed to add user to knot1.tangled.sh: ", resp.StatusCode)
158
+
return
159
+
}
160
+
}()
161
+
126
162
s.pages.HxRedirect(w, "/")
127
163
return
128
164
}
···
513
549
case http.MethodGet:
514
550
user := s.auth.GetUser(r)
515
551
knots, err := s.enforcer.GetDomainsForUser(user.Did)
516
-
517
552
if err != nil {
518
553
s.pages.Notice(w, "repo", "Invalid user account.")
519
554
return
···
523
558
LoggedInUser: user,
524
559
Knots: knots,
525
560
})
561
+
526
562
case http.MethodPost:
527
563
user := s.auth.GetUser(r)
528
564
+5
-1
readme.md
+5
-1
readme.md
···
1
1
# tangled
2
2
3
-
Hello Tanglers! This is the codebase for [Tangled](https://tangled.sh)—a code collaboration platform built on the [AT Protocol](https://atproto.com).
3
+
Hello Tanglers! This is the codebase for
4
+
[Tangled](https://tangled.sh)—a code collaboration platform built
5
+
on the [AT Protocol](https://atproto.com).
6
+
7
+
Read the introduction to Tangled [here](https://blog.tangled.sh/intro).