Skip to content

Puavo school-scoped sharing via Nextcloud's native UI - #2

Merged
eluttine merged 3 commits into
puavo-org:mainfrom
eluttine:rewrite
Aug 3, 2026
Merged

eluttine merged 3 commits into
puavo-org:mainfrom
eluttine:rewrite

Conversation

@eluttine

@eluttine eluttine commented May 25, 2026 •

Copy link
Copy Markdown
Collaborator

Rewrite from the v0.0.1 Vue + Puavo-API share-buttons sidebar to a backend-only implementation that surfaces class groups in Nextcloud's native share dialog — so teachers can share to their classes from the web, mobile, and desktop clients without an app-specific UI.

eluttine added 3 commits May 22, 2026 15:13
Replace the old Vue + Puavo-API share-buttons UI with a backend-only
implementation that surfaces class groups in Nextcloud's native share
dialog (web, mobile, desktop). Teachers are recognised from puavo LDAP
(puavoEduPersonAffiliation=teacher) and authorised per-school via
puavoSchool; sharing across schools the teacher doesn't belong to is
rejected by the same Share20\Manager check that protects everyone else.

- OCP\GroupInterface backend virtualises (uid, school) -> class group
  membership; the matching ISearchPlugin contributes those groups to
  the picker.
- LdapSync uses paged Access::search{Users,Groups} with combined
  filters — O(matches), not O(directory).
- Two app-owned tables: groupsharemachine_groups and
  groupsharemachine_teachers (composite (uid, school_dn) PK).
- occ groupsharemachine:sync + 15-minute TimedJob; diagnose command.
- 42 PHPUnit tests, psalm clean, REUSE-compliant.
@eluttine
eluttine merged commit 075a93d into puavo-org:main Aug 3, 2026
29 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant