Terms of Service page (public + acknowledge) (#39) (#43)
Deploy Beta / unit-tests (push) Successful in 12s
Unit Tests / test (push) Successful in 12s
Deploy Beta / deploy-beta (push) Successful in 9s

## Summary

Closes #39.

- Shared `TermsOfServiceDocument` used by public + acknowledge flows
- `/terms_of_service/` reachable without auth; `/legal/terms-of-service` alias
- Expanded clauses including **Analytics and Cookies** (always-on page views vs consent-gated events)
- Acknowledge still posts `/user/acknowledge_tos/` when signed in
- Links from Sign In, Sign Up, and Footer

## Test plan

- [ ] Visit `/terms_of_service/` logged out — document renders, no Acknowledge
- [ ] Visit `/legal/terms-of-service` — same public content
- [ ] Sign in as user needing ToS — Acknowledge posts and navigates home
- [ ] Confirm Sign In / Sign Up / Footer / consent banner link to ToS
- [ ] `npm run test:ci -- --testPathPattern='TermsOfService|Footer'`Reviewed-on: #43
This commit was merged in pull request #43.
This commit is contained in:
2026-07-27 07:49:40 -07:00
parent 966ad7aba4
commit 53236e613b
9 changed files with 325 additions and 89 deletions
+4 -3
View File
@@ -10,6 +10,7 @@ import PasswordReset from './llm-fe/pages/PasswordReset/PasswordReset';
import NotFound from './llm-fe/pages/NotFound/NotFound';
import { AuthContext } from './llm-fe/contexts/AuthContext';
import TermsOfService from './llm-fe/pages/TermsOfService/TermsOfService';
import PublicTermsOfServicePage from './llm-fe/pages/TermsOfService/PublicTermsOfServicePage';
import SetPassword from './llm-fe/components/SetPassword/SetPassword';
import AsyncDashboard2 from './llm-fe/pages/AsyncDashboard2/AsyncDashboard2';
import FeedbackPage2 from './llm-fe/pages/FeedbackPage2/FeedbackPage2';
@@ -61,14 +62,14 @@ class App extends Component {
<Route path={"/password_reset/"} Component={PasswordReset} />
<Route path={"/password_reset_confirmation/"} Component={PasswordResetConfirmation} />
<Route path={'/set_password/'} Component={SetPassword} />
{/* Public legal pages (also used for post-login ToS acknowledge) */}
<Route path={"/terms_of_service/"} Component={TermsOfService} />
<Route path={"/legal/terms-of-service"} Component={PublicTermsOfServicePage} />
<Route element={<ProtectedRoutes />}>
<Route path={"/"} index={true} Component={AsyncDashboard2} />
<Route path={"/account/"} Component={Account2} />
<Route path={"/document_storage"} Component={DocumentStoragePage} />
<Route path={"/terms_of_service/"} Component={TermsOfService} />
<Route path={"/feedback/"} Component={FeedbackPage2} />
<Route path={"/analytics/"} Component={AnalyticsPage} />