SolidOS / SolidOS/solid-ui

getPod() assumes subdomain pattern, breaks path-based pods

Offen
#651 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
TypeScript
Sterne
153
Forks
46
Ø Merge
1 T. 8 Std.
Gemergte PRs (30 T.)
7

Beschreibung

Problem

The getPod() function in src/utils/headerFooterHelpers.ts assumes pods are at the origin (subdomain pattern), which breaks path-based pod servers.

Current code (line 17-20):

export function getPod (): NamedNode {
  // @@ TODO: This is given that mashlib runs on NSS - might need to change when we want it to run on other Pod servers
  return sym(document.location.origin).site()
}

The TODO comment acknowledges this limitation.

Impact

When using a path-based pod server (e.g., http://server.com/alice/), after login:

  • WebID: http://server.com/alice/profile/card#me
  • getPod() returns: http://server.com/
  • Profile guess becomes: http://server.com/profile/card#me
  • Should be: http://server.com/alice/profile/card#me

This causes 404 errors when mashlib tries to load the user's profile.

Affected Servers

  • Any path-based pod server
  • CSS (Community Solid Server) supports both subdomain and path patterns
  • JSS (JavaScript Solid Server) uses path pattern

Suggested Fix

Derive the pod root from the logged-in user's WebID rather than assuming document.location.origin:

export function getPod (): NamedNode {
  const user = authn.currentUser()
  if (user) {
    // Extract pod root from WebID's pim:storage or by convention
    const storage = getStorage(user)
    if (storage) return storage
  }
  // Fallback to origin-based (subdomain pattern)
  return sym(document.location.origin).site()
}

Or use the pim:storage triple from the user's profile which explicitly declares the pod root.

Environment

  • solid-ui version: latest (via mashlib CDN)
  • Server: JSS (JavaScript Solid Server) with path-based pods

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginnen Sie mit getPod() in src/utils/headerFooterHelpers.ts und untersuchen Sie, wie authn.currentUser(), WebID-Daten und storage in den umgebenden Hilfsfunktionen verfügbar sind. Überprüfen Sie das Verhalten mit einem pfadbasierten Pod wie http://server.com/alice/ und behalten Sie den bestehenden ursprungsbasierten Fallback für Subdomain-Pods bei.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
typescript
Bereich
authentication
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.