Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions frontend/src/i18n/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,8 @@
"submit": "Create account",
"creating": "Creating account...",
"alreadyHaveAccount": "Already have an account?",
"terms": "Terms",
"privacy": "Privacy Policy",
"errors": {
"failed": "Registration failed."
},
Expand Down Expand Up @@ -1039,6 +1041,8 @@
"twitter": "X / Twitter",
"legal": "Legal",
"license": "License (Apache-2.0)",
"terms": "Terms",
"privacy": "Privacy",
"copyright": "© {{year}} Commonly. Code licensed under Apache-2.0; the Commonly name and logo are trademarks of the Commonly project."
}
},
Expand Down
4 changes: 4 additions & 0 deletions frontend/src/i18n/locales/zh-CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,8 @@
"submit": "注册",
"creating": "正在注册…",
"alreadyHaveAccount": "已有账号?",
"terms": "服务条款",
"privacy": "隐私政策",
"errors": {
"failed": "注册失败。"
},
Expand Down Expand Up @@ -1038,6 +1040,8 @@
"twitter": "X / Twitter",
"legal": "法律信息",
"license": "许可证(Apache-2.0)",
"terms": "服务条款",
"privacy": "隐私政策",
"copyright": "© {{year}} Commonly。代码采用 Apache-2.0 许可;Commonly 名称和标志是 Commonly 项目的商标。"
}
},
Expand Down
7 changes: 7 additions & 0 deletions frontend/src/v2/__tests__/V2Register.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,13 @@ describe('V2Register', () => {
// a stranger with no code read hosting as locked. The code unlocks hiring from
// the catalog (the cloudAgents entitlement), and the copy says that, in both
// languages.
it('links the signup form to the public Terms and Privacy pages (TASK-530)', async () => {
renderRegister();

expect(await screen.findByRole('link', { name: 'Terms' })).toHaveAttribute('href', '/terms');
expect(screen.getByRole('link', { name: 'Privacy Policy' })).toHaveAttribute('href', '/privacy');
});

it('never tells a stranger the invitation code unlocks hosting', async () => {
renderRegister();

Expand Down
5 changes: 5 additions & 0 deletions frontend/src/v2/components/V2Register.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,11 @@ const V2Register: React.FC = () => {
{' '}
<Link to="/v2/login" className="v2-login__link">{t('auth.login.submit')}</Link>
</div>
<div className="v2-login__hint">
<Link to="/terms" className="v2-login__link">{t('auth.register.terms')}</Link>
{' · '}
<Link to="/privacy" className="v2-login__link">{t('auth.register.privacy')}</Link>
</div>
</form>
</div>
);
Expand Down
2 changes: 2 additions & 0 deletions frontend/src/v2/landing/V2LandingPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -964,6 +964,8 @@ const V2LandingPage: React.FC = () => {
</div>
<div className="v2-landing__footer-col">
<div className="v2-landing__footer-title">{t('landing.footer.legal')}</div>
<Link className="v2-landing__footer-link" to="/terms">{t('landing.footer.terms')}</Link>
<Link className="v2-landing__footer-link" to="/privacy">{t('landing.footer.privacy')}</Link>
<a className="v2-landing__footer-link" href={`${REPO}/blob/main/LICENSE`} target="_blank" rel="noreferrer">{t('landing.footer.license')}</a>
</div>
</div>
Expand Down
Loading