Skip to content

[Guests] Use the full OpenCloud Web UI as an authenticated guest #2825

Closed

Description

@kulmann

User Story

  • As a guest whose invitation link has been resolved and authenticated on the resolve page, I want to use the OpenCloud Web UI as a full-fledged application — scoped to what I was invited to, so that I can browse, open, and (per my role) edit the shared files, folders, or Space as naturally as a regular user, rather than through a stripped-down public-link view.

User value

Uncertainties: to be clarified

  1. Authentication type. Web currently distinguishes several auth types, e.g. user, publicLink, hybrid. It is unclear whether a guest can ride the existing user type, or whether we must introduce a new guest type alongside the others (and also include it in hybrid).
  2. Space resource type. It is unclear whether the invited resource can be represented with existing space resource types (e.g. ShareSpaceResource), or whether we must introduce a virtual GuestSpaceResource, analogous to PublicSpaceResource (see web-client/src/helpers/space/types.ts).

Acceptance Criteria

  • After authentication, the guest lands in the OpenCloud Web UI (not a reduced public-link viewer) on the invited resource.
  • The guest can only see and reach resources they were granted; there is no way to browse the wider instance, other users' content, or unrelated Spaces.
  • The guest's effective permissions match their assigned role (e.g. a Viewer cannot edit).
  • Navigation elements that are meaningless or forbidden for a guest are hidden or disabled - the UI presents no dead ends or actions that will always fail.
  • When the 24h session expires mid-use, the guest is routed to the guest session expired page (see [Guests] Authenticate a guest via the emailed link on a resolve page #2823 )

Finalised when uncertainties were clarified

  • The chosen authentication type is implemented and documented: either the guest rides user, or a new guest type is added alongside user / publicLink / hybrid and handled everywhere authContext is branched on.
  • The invited resource is represented by the chosen space resource type: either an existing type (e.g. ShareSpaceResource), or a new virtual GuestSpaceResource modelled on PublicSpaceResource.
  • All routes/apps correctly account for the guest case (either because user covers them, or because the new guest branch is handled).

Activity

  1. moved this from Qualification to Backlog in OpenCloud Team Boardon Jul 7, 2026
  2. moved this from Backlog to Blocked in OpenCloud Team Boardon Aug 20, 2026
  3. self-assigned this
    on Sep 9, 2026
  4. moved this from Blocked to In Progress in OpenCloud Team Boardon Oct 15, 2026
  5. JammingBen commented on Oct 16, 2026

    @JammingBen
    Member

    The chosen authentication type is implemented and documented: either the guest rides user, or a new guest type is added alongside user / publicLink / hybrid and handled everywhere authContext is branched on.

    There is a new guest auth type. This seems cleaner, since the authentication is completely different between users (OIDC access token) and guests (cookie).

    The invited resource is represented by the chosen space resource type: either an existing type (e.g. ShareSpaceResource), or a new virtual GuestSpaceResource modelled on PublicSpaceResource.

    Spaces for guests are ShareSpaceResource like for regular users.

    All routes/apps correctly account for the guest case (either because user covers them, or because the new guest branch is handled).

    I'm not sure if that's what was originally planned, but a resolved guest link is more akin to a public link than a logged in user. It resolves to a dedicated route files/guest/share/.... There are no nav items, i.e. no Personal, Spaces and Trash bin. IMO they don't make sense for guest users, and the server doesn't support it AFAICT.

    The resolved guest view will gain a few more features over a public link: Shared with me, search, Collaboration. #3816 however tackles only the necessary groundwork.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions