···
4
+
"Coves/internal/api/middleware"
"Coves/internal/core/communities"
···
46
-
// TODO(Communities-OAuth): Extract authenticated user DID from request context
47
-
// This MUST be replaced with OAuth middleware before production deployment
48
-
// Expected implementation:
49
-
// userDID := r.Context().Value("authenticated_user_did").(string)
50
-
// For now, we read from header (INSECURE - allows impersonation)
51
-
userDID := r.Header.Get("X-User-DID")
47
+
// Extract authenticated user DID and access token from request context (injected by auth middleware)
48
+
userDID := middleware.GetUserDID(r)
writeError(w, http.StatusUnauthorized, "AuthRequired", "Authentication required")
54
+
userAccessToken := middleware.GetUserAccessToken(r)
55
+
if userAccessToken == "" {
56
+
writeError(w, http.StatusUnauthorized, "AuthRequired", "Missing access token")
// Subscribe via service (write-forward to PDS)
58
-
subscription, err := h.service.SubscribeToCommunity(r.Context(), userDID, req.Community)
61
+
subscription, err := h.service.SubscribeToCommunity(r.Context(), userDID, userAccessToken, req.Community)
handleServiceError(w, err)
···
102
-
// TODO(Communities-OAuth): Extract authenticated user DID from request context
103
-
// This MUST be replaced with OAuth middleware before production deployment
104
-
// Expected implementation:
105
-
// userDID := r.Context().Value("authenticated_user_did").(string)
106
-
// For now, we read from header (INSECURE - allows impersonation)
107
-
userDID := r.Header.Get("X-User-DID")
105
+
// Extract authenticated user DID and access token from request context (injected by auth middleware)
106
+
userDID := middleware.GetUserDID(r)
writeError(w, http.StatusUnauthorized, "AuthRequired", "Authentication required")
112
+
userAccessToken := middleware.GetUserAccessToken(r)
113
+
if userAccessToken == "" {
114
+
writeError(w, http.StatusUnauthorized, "AuthRequired", "Missing access token")
// Unsubscribe via service (delete record on PDS)
114
-
err := h.service.UnsubscribeFromCommunity(r.Context(), userDID, req.Community)
119
+
err := h.service.UnsubscribeFromCommunity(r.Context(), userDID, userAccessToken, req.Community)
handleServiceError(w, err)