Move completed legal-disclaimers change to archive, apply deltas to main specs: append "Terms acknowledgement at signup" requirement to journal-auth and create the legal-disclaimers capability spec covering Impressum, Terms, Datenschutzerklärung, alpha banner, and footer links. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
29 lines
1.3 KiB
Markdown
29 lines
1.3 KiB
Markdown
## Purpose
|
|
|
|
Authentication for the Journal app, including OAuth token storage for external services in the sync_connections table.
|
|
|
|
## Requirements
|
|
|
|
### Requirement: Store external service tokens
|
|
The journal auth system SHALL store OAuth tokens for external services alongside user credentials.
|
|
|
|
#### Scenario: Wahoo token storage
|
|
- **WHEN** a user connects their Wahoo account
|
|
- **THEN** access token, refresh token, expiry time, and Wahoo user ID are stored in the `wahoo_tokens` table
|
|
- **AND** tokens are associated with the journal user ID
|
|
|
|
### Requirement: Terms acknowledgement at signup
|
|
The registration form SHALL require explicit acknowledgement of the Terms of Service before an account can be created.
|
|
|
|
#### Scenario: Checkbox required
|
|
- **WHEN** a user views the registration form
|
|
- **THEN** they see a required checkbox labeled "I have read and agree to the Terms of Service, including that trails.cool is in alpha and my data may be reset"
|
|
- **AND** the checkbox label links to the Terms page
|
|
|
|
#### Scenario: Cannot submit without acknowledgement
|
|
- **WHEN** a user attempts to register without checking the acknowledgement box
|
|
- **THEN** the form blocks submission and shows a validation message
|
|
|
|
#### Scenario: Acknowledgement recorded
|
|
- **WHEN** a user successfully registers
|
|
- **THEN** the current timestamp is stored in `users.terms_accepted_at`
|