5.5 KiB
5.5 KiB
Master Goals And Delivery Plan
North Star
Deliver a production-safe Qortal integration layer for Nextcloud that:
- lets admins onboard existing Nextcloud users into Qortal,
- enables Qortal-based sign-in via OIDC,
- gives users guided linking/onboarding prompts (in-app + email),
- provides a controlled path to use Q-Apps from inside Nextcloud.
Goal Breakdown
Goal 1: Admin-driven Qortal account enablement
Primary outcome:
- Admin can select users/groups and trigger Qortal onboarding.
Required capabilities:
- User selection UI in
qortal_integration. - Trigger actions:
create new Qortal accountlink existing Qortal account
- Store linkage state:
not_startedinvitedlinkedblocked
Acceptance criteria:
- Admin can trigger onboarding for one user and for bulk users by group.
- System records invitation timestamp and status per user.
- Re-triggering onboarding is idempotent and auditable.
Goal 2: Qortal-based authentication (OIDC)
Primary outcome:
- User can sign into Nextcloud using Qortal ownership proof.
Required capabilities:
- Broker OIDC endpoints implemented:
/.well-known/openid-configuration/authorize/token/userinfo/jwks
- Signed nonce challenge flow against External Auth API.
- Stable identity mapping (
sub-> Nextcloud user ID). - Policy modes:
- auto-provision
- link-only
- strict pre-provision
Acceptance criteria:
- Browser login completes end-to-end with Nextcloud
user_oidc. - Existing user linking works without duplicate account creation.
- Failed ownership proof returns deterministic OIDC errors.
Goal 3: User prompting and guided onboarding
Primary outcome:
- Users receive clear prompts to create or link Qortal identity when enabled by admin.
Required capabilities:
- In-app prompt:
- banner/modal in Nextcloud session for eligible users.
- Email notification:
- secure onboarding link with TTL and single-use token.
- User flow page:
- choose
createvslink existing. - show progress and error states.
- choose
Acceptance criteria:
- Admin can choose prompt channels:
- in-app only
- email only
- both
- Prompt dismiss/snooze behavior is stored and respected.
- All prompt/link actions are logged for audit.
Goal 4: Q-Apps access from Nextcloud
Primary outcome:
- Users can launch approved Q-Apps via Nextcloud without breaking trust boundaries.
Required capabilities:
- App catalog in Nextcloud admin:
- approved Q-Apps
- per-group access rules
- Launch strategy:
- Phase 1: embedded gateway proxy (same-origin) with read-only Q-Apps.
- Phase 2: optional signed context handoff for interactive features.
- Session/context handoff:
- short-lived signed launch token from broker.
Acceptance criteria:
- Admin can allow/deny Q-Apps by group.
- User can open allowed Q-App from Nextcloud and receive identity context.
- Access attempts are auditable.
Architecture Boundaries
Nextcloud app (qortal_integration)
Responsibilities:
- Admin UI and policy management.
- User onboarding prompts and routing.
- Audit/event visibility.
Non-responsibilities:
- Wallet secret storage.
- Transaction signing.
Broker service (qortal-oidc-broker)
Responsibilities:
- OIDC provider logic.
- Nextcloud provisioning bridge.
- External Auth integration.
- Signed launch tokens for Q-App handoff.
Qortal External Auth API
Responsibilities:
- Wallet lifecycle.
- Signature/approval operations.
- Qortal request execution.
Potentially also a direct Qortal API?
- This may be necessary for RENDER calls and creation of certain tx types.
- Auth API only handles authenticated requests, doesn’t handle viewing/rendering etc.
Proposed Data Model (Broker + App)
Core entities:
identity_mappingnextcloud_user_idqortal_addresswallet_id(optional)statuslinked_at
onboarding_campaignidcreated_by_admintarget_scope(users/groups)channels(in_app/email)created_at
onboarding_eventcampaign_idnextcloud_user_idevent_typemetadatacreated_at
qapp_policyqapp_idenabledallowed_groupsupdated_at
Delivery Phases
Phase A: Foundation hardening
Scope:
- Move in-memory mapping to Postgres.
- Complete OIDC endpoint implementation.
- Add audit logging baseline.
Exit criteria:
- Deterministic identity mapping and reliable OIDC login.
Phase B: Admin onboarding operations
Scope:
- Bulk user/group onboarding actions.
- Status dashboard and retry controls.
Exit criteria:
- Admin can run and monitor onboarding campaigns.
Phase C: User prompts and self-service linking
Scope:
- In-app prompts.
- Email onboarding links.
- User self-service create/link page.
Exit criteria:
- End users can complete onboarding with minimal admin intervention.
Phase D: Q-App launch platform
Scope:
- Approved Q-App catalog.
- Signed launch tokens.
- Group-based authorization.
Exit criteria:
- At least one Q-App launched from Nextcloud with secure context handoff.
Security Rules
- Never store plaintext wallet secrets in Nextcloud or broker DB.
- Use short-lived, single-use tokens for onboarding and app launch links.
- Keep all sensitive operations server-side; clients only receive scoped tokens.
- Sign all identity and launch assertions; include
aud,exp,nonce. - Log security-relevant events with immutable timestamps.
Immediate Next Build Order
- Add admin campaign model + invite trigger API.
- Add in-app prompt + onboarding link UX.
- Add first approved Q-App launch flow (link-out mode).