diff --git a/Caddyfile b/Caddyfile index 9103411..cbdbfcc 100644 --- a/Caddyfile +++ b/Caddyfile @@ -1,10 +1,6 @@ -anmalan.vbytes.se { +anmalan.vbytes.se, xn--anmlan-dua.vbytes.se { reverse_proxy localhost:5000 - log { - output file /var/log/caddy/access.log - } - encode gzip zstd header { diff --git a/src/Web/lan-frontend/app/register/page.tsx b/src/Web/lan-frontend/app/register/page.tsx index 5ebb383..991f80e 100644 --- a/src/Web/lan-frontend/app/register/page.tsx +++ b/src/Web/lan-frontend/app/register/page.tsx @@ -14,8 +14,19 @@ interface EventContent { const normalizeSsn = (value: string) => value.replace(/[\s\-+]/g, "").replace(/\D/g, ""); -const hasValidSsnLength = (value: string) => - value.length === 10 || value.length === 12; + +const isValidSsnFormat = (value: string) => { + if (!/^\d{12}$/.test(value)) return false; + const month = parseInt(value.substring(4, 6)); + const day = parseInt(value.substring(6, 8)); + return month >= 1 && month <= 12 && day >= 1 && day <= 31; +}; + +const getAgeFromSsn = (value: string) => { + const birthYear = parseInt(value.substring(0, 4)); + const currentYear = new Date().getFullYear(); + return currentYear - birthYear; +}; const isValidEmail = (value: string) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value); const normalizeMobileNumber = (value: string) => { @@ -119,8 +130,15 @@ export default function RegisterPage() { if (!normalizedSsn) { nextFieldErrors.ssn = "Personnummer krävs för registrering."; - } else if (!hasValidSsnLength(normalizedSsn)) { - nextFieldErrors.ssn = "Personnummer måste vara 10 eller 12 siffror."; + } else if (!isValidSsnFormat(normalizedSsn)) { + nextFieldErrors.ssn = "Ange ett giltigt personnummer (ÅÅÅÅMMDDXXXX)."; + } else { + const age = getAgeFromSsn(normalizedSsn); + if (age < 0) { + nextFieldErrors.ssn = "Personnummer kan inte vara i framtiden."; + } else if (age >= 100) { + nextFieldErrors.ssn = "Du är för gammal för att registrera dig."; + } } if (!trimmedFirstName) @@ -155,6 +173,10 @@ export default function RegisterPage() { nextFieldErrors.email = "Din e-postadress är ogiltig."; } + if (!formData.hasApprovedGdpr) { + nextFieldErrors.hasApprovedGdpr = "Du måste godkänna GDPR för att anmäla dig."; + } + if (Object.keys(nextFieldErrors).length > 0) { setFieldErrors(nextFieldErrors); setMessage({ @@ -275,6 +297,37 @@ export default function RegisterPage() {
+ {message.type === "success" && ( +{message.text}
++ Vi hittade dig inte i vårt medlemsregister. Genom att bli + medlem i vBytes hjälper du oss att anordna fler och bättre + LAN! +
+ + Klicka här för att bli medlem i vBytes + +