tangled
alpha
login
or
join now
diffdown.com
/
diffdown-app
0
fork
atom
Diffdown is a real-time collaborative Markdown editor/previewer built on the AT Protocol
diffdown.com
0
fork
atom
overview
issues
10
pulls
pipelines
fix: validate session in database for WebSocket auth
John Luther
3 weeks ago
bfd8d60d
a97e055a
+15
-1
1 changed file
expand all
collapse all
unified
split
internal
handler
handler.go
+15
-1
internal/handler/handler.go
reviewed
···
748
748
parser := jwt.Parser{}
749
749
_, _, err := parser.ParseUnverified(accessToken, claims)
750
750
if err != nil {
751
751
-
return "", "", err
751
751
+
return "", "", fmt.Errorf("parse token: %w", err)
752
752
}
753
753
754
754
did, ok := (*claims)["sub"].(string)
755
755
if !ok {
756
756
return "", "", fmt.Errorf("no sub in token")
757
757
+
}
758
758
+
759
759
+
user, err := h.DB.GetUserByDID(did)
760
760
+
if err != nil {
761
761
+
return "", "", fmt.Errorf("user not found: %w", err)
762
762
+
}
763
763
+
764
764
+
session, err := h.DB.GetATProtoSession(user.ID)
765
765
+
if err != nil {
766
766
+
return "", "", fmt.Errorf("session not found: %w", err)
767
767
+
}
768
768
+
769
769
+
if time.Now().After(session.ExpiresAt) {
770
770
+
return "", "", fmt.Errorf("session expired")
757
771
}
758
772
759
773
name, _ := (*claims)["name"].(string)