asdf
This commit is contained in:
1 parent
2b7ac42d6b
commit
76cedf8400
7 files changed
+41
-60
No files matched your search
+4
-14
@@ -54,8 +54,8 @@ const en = {
|
||||
},
|
||||
manifesto: {
|
||||
lines: ['Security built in,', 'not bolted on.'],
|
||||
p1: 'Infrastructure is software now. Private 5G networks, industrial control systems and cloud platforms are assembled from the code and components of many vendors. Every interface between them is an attack surface, and off-the-shelf tools were not built for that.',
|
||||
p2: 'CipherCell is a security engineering company for software. We model real adversaries, build zero trust into the architecture rather than around it, and prove that the code holds. From the first threat model to the running system.',
|
||||
p1: 'Infrastructure is software now. Private 5G networks, industrial control systems and cloud platforms are assembled from the code and components of many vendors, and every interface between them is an attack surface that off-the-shelf tools were never designed to cover.',
|
||||
p2: 'CipherCell is a security engineering company built by specialists in networks and software. We take on the hard problems, whatever the vertical, and solve them with security at the core of every decision.',
|
||||
cta: 'About CipherCell',
|
||||
},
|
||||
method: {
|
||||
@@ -278,11 +278,6 @@ const en = {
|
||||
failed: 'Registration did not go through. Please try again, or write to office@ciphercell.de.',
|
||||
},
|
||||
pages: {
|
||||
confirm: {
|
||||
title: 'Confirm your registration.',
|
||||
body: 'One click, and your address is registered for the CipherVerifier alpha. One email when it is released. Nothing else.',
|
||||
submit: 'Confirm registration',
|
||||
},
|
||||
confirmed: {
|
||||
title: 'Registered.',
|
||||
body: 'Your address is confirmed. You will hear from us once, when the CipherVerifier alpha is released.',
|
||||
@@ -404,8 +399,8 @@ const de: typeof en = {
|
||||
},
|
||||
manifesto: {
|
||||
lines: ['Sicherheit eingebaut,', 'nicht nachträglich angefügt.'],
|
||||
p1: 'Infrastruktur ist heute Software. Private 5G-Netze, industrielle Steuerungssysteme und Cloud-Plattformen werden aus Code und Komponenten vieler Hersteller zusammengesetzt. Jede Schnittstelle dazwischen ist eine Angriffsfläche, und Standardwerkzeuge sind dafür nicht gebaut.',
|
||||
p2: 'CipherCell ist ein Security-Engineering-Unternehmen für Software. Wir modellieren reale Angreifer, verankern Zero Trust in der Architektur statt daneben und weisen nach, dass der Code standhält. Vom ersten Bedrohungsmodell bis zum laufenden System.',
|
||||
p1: 'Infrastruktur ist heute Software. Private 5G-Netze, industrielle Steuerungssysteme und Cloud-Plattformen setzen sich aus Code und Komponenten vieler Hersteller zusammen und jede Schnittstelle dazwischen ist eine Angriffsfläche, für die Lösungen von der Stange nie gedacht waren.',
|
||||
p2: 'CipherCell ist ein Security-Engineering-Unternehmen von Spezialisten für Netzwerke und Software. Wir packen die schwierigen Probleme an, ganz gleich in welcher Branche, und machen Sicherheit zum Kern jeder Entscheidung.',
|
||||
cta: 'Über CipherCell',
|
||||
},
|
||||
method: {
|
||||
@@ -628,11 +623,6 @@ const de: typeof en = {
|
||||
failed: 'Die Registrierung ist nicht angekommen. Bitte versuchen Sie es erneut oder schreiben Sie an office@ciphercell.de.',
|
||||
},
|
||||
pages: {
|
||||
confirm: {
|
||||
title: 'Registrierung bestätigen.',
|
||||
body: 'Ein Klick, und Ihre Adresse ist für die Alpha von CipherVerifier registriert. Eine E-Mail, sobald sie erscheint. Sonst nichts.',
|
||||
submit: 'Registrierung bestätigen',
|
||||
},
|
||||
confirmed: {
|
||||
title: 'Registriert.',
|
||||
body: 'Ihre Adresse ist bestätigt. Sie hören einmal von uns, sobald die Alpha von CipherVerifier erscheint.',
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
import Base from '../layouts/Base.astro';
|
||||
import { localePath, t, type Lang } from '../i18n/ui';
|
||||
interface Props { lang: Lang; page: 'confirm' | 'confirmed' | 'error' }
|
||||
interface Props { lang: Lang; page: 'confirmed' | 'error' }
|
||||
const { lang, page } = Astro.props;
|
||||
const p = t(lang).verifier.soon.notify.pages;
|
||||
const r = p[page];
|
||||
@@ -13,28 +13,12 @@ const product = localePath(lang, '/cipherverifier');
|
||||
<h1 class="display result__title">{r.title}</h1>
|
||||
<div class="result__body">
|
||||
<p class="muted">{r.body}</p>
|
||||
{page === 'confirm' ? (
|
||||
// The token travels in the link's query; the script copies it into the post. The
|
||||
// button, not the link, confirms: mail scanners open links but do not press buttons.
|
||||
<form action="/notify/verify" method="post" data-confirm>
|
||||
<input type="hidden" name="lang" value={lang} />
|
||||
<input type="hidden" name="t" value="" />
|
||||
<button class="button" type="submit">{p.confirm.submit}</button>
|
||||
</form>
|
||||
) : (
|
||||
<a class="link" href={page === 'error' ? `${product}#notify` : product}>{'link' in r ? r.link : ''}</a>
|
||||
)}
|
||||
<a class="link" href={page === 'error' ? `${product}#notify` : product}>{r.link}</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</Base>
|
||||
|
||||
<script>
|
||||
const form = document.querySelector<HTMLFormElement>('[data-confirm]');
|
||||
const field = form?.querySelector<HTMLInputElement>('[name="t"]');
|
||||
if (field) field.value = new URLSearchParams(location.search).get('t') ?? '';
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.result__title { grid-column: 1 / -1; }
|
||||
.result__body { grid-column: 1 / -1; display: grid; gap: var(--space-5); max-width: var(--measure); justify-items: start; }
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
---
|
||||
import NotifyPage from '../../_NotifyPage.astro';
|
||||
---
|
||||
<NotifyPage lang="de" page="confirm" />
|
||||
@@ -1,4 +0,0 @@
|
||||
---
|
||||
import NotifyPage from '../_NotifyPage.astro';
|
||||
---
|
||||
<NotifyPage lang="en" page="confirm" />
|
||||
Reference in new issue
Block a user