This commit is contained in:
Kruille 2026-02-23 22:09:40 +01:00
commit 0dc3d05c68
4 changed files with 33 additions and 17 deletions

17
Caddyfile Normal file
View file

@ -0,0 +1,17 @@
lan.vbytes.se {
reverse_proxy localhost:5000
log {
output file /var/log/caddy/access.log
}
encode gzip zstd
header {
Permissions-Policy interest-cohort=()
Strict-Transport-Security max-age=31536000;
X-Content-Type-Options nosniff
X-Frame-Options DENY
Referrer-Policy no-referrer-when-downgrade
}
}

View file

@ -14,7 +14,7 @@
"VbytesRelay": {
"BaseUrl": "https://api.lan.vbytes.se",
"ParticipantRegisterPath": "/api/participant",
"VolunteerRegisterPath": "/api/volunteer/register",
"VolunteerRegisterPath": "/api/volunteer",
"ApiKeyHeaderName": "X-Api-Key",
"ApiKey": "",
"ClientCertificatePfxPath": ""

View file

@ -11,7 +11,7 @@
"VbytesRelay": {
"BaseUrl": "https://api.lan.vbytes.se",
"ParticipantRegisterPath": "/api/participant",
"VolunteerRegisterPath": "/api/volunteer/register",
"VolunteerRegisterPath": "/api/volunteer",
"ApiKeyHeaderName": "X-Api-Key",
"ApiKey": "__SET_IN_USER_SECRETS__",
"ClientCertificatePfxPath": "__SET_IN_USER_SECRETS__"

View file

@ -4,7 +4,7 @@ import { useEffect, useState } from "react";
import Image from "next/image";
import Link from "next/link";
import { useRouter } from "next/navigation";
import router from "next/router";
interface EventContent {
registrationEnabled: boolean;
@ -29,7 +29,6 @@ const isValidMobileNumber = (value: string) =>
/^07\d{8}$/.test(normalizeMobileNumber(value));
export default function RegisterPage() {
const router = useRouter();
const [content, setContent] = useState<EventContent | null>(null);
const [formData, setFormData] = useState({
firstName: "",
@ -168,7 +167,7 @@ export default function RegisterPage() {
setShowBecomeMemberCta(false);
setIsSubmitting(true);
setMessage({ type: "info", text: "Processing your registration..." });
setMessage({ type: "info", text: "Behandlar din anmälan..." });
try {
// Returns Ok (200) if NOT registered, Conflict (409) if registered
@ -179,7 +178,7 @@ export default function RegisterPage() {
if (checkRes.status === 409) {
setMessage({
type: "error",
text: "This SSN is already registered for the LAN.",
text: "Detta personnummer är redan registrerat för LAN:et.",
});
setIsSubmitting(false);
return;
@ -218,7 +217,7 @@ export default function RegisterPage() {
if (response.ok) {
setMessage({
type: "success",
text: "Registration complete! You are now registered for the LAN.",
text: "Registreringen är klar! Du är nu anmäld till LAN:et.",
});
setShowBecomeMemberCta(!isMember);
@ -229,14 +228,14 @@ export default function RegisterPage() {
const errorData = await response.json();
setMessage({
type: "error",
text: errorData.message || "Event registration failed.",
text: errorData.message || "Registreringen misslyckades.",
});
}
} catch (error) {
console.error("Registration error:", error);
setMessage({
type: "error",
text: "A connection error occurred. Please check your internet and try again.",
text: "Ett anslutningsfel uppstod. Kontrollera internet och försök igen.",
});
} finally {
setIsSubmitting(false);
@ -269,7 +268,7 @@ export default function RegisterPage() {
/>
</div>
<div className="text-center mb-10">
<h1 className="text-3xl font-bold text-gray-900">Lan Registrering</h1>
<h1 className="text-3xl font-bold text-gray-900">LAN-registrering</h1>
<p className="mt-2 text-gray-600">
Vänligen fyll i detta formulär för att anmäla dig till lanet.
</p>
@ -399,7 +398,7 @@ export default function RegisterPage() {
htmlFor="email"
className="block text-sm font-medium text-gray-700"
>
Email
E-post
</label>
<input
type="email"
@ -473,7 +472,7 @@ export default function RegisterPage() {
htmlFor="guardianEmail"
className="block text-sm font-medium text-gray-700"
>
Vårdnadshavares Email *
Vårdnadshavares E-post *
</label>
<input
type="email"
@ -493,7 +492,7 @@ export default function RegisterPage() {
<div className="sm:col-span-2 pt-4 border-t border-gray-100 mt-4">
<h3 className="text-lg font-medium text-gray-900 mb-4">
Yttrligare uppgifter
Ytterligare uppgifter
</h3>
</div>
@ -575,11 +574,11 @@ export default function RegisterPage() {
htmlFor="hasApprovedGdpr"
className="font-medium text-gray-700"
>
GDPR godkännande *
GDPR-godkännande *
</label>
<p className="text-gray-500">
Jag Godkänner att min personliga uppgifter sparas och
hanteras i syfte för detta event.
Jag godkänner att mina personuppgifter sparas och hanteras i
syfte för detta event.
</p>
</div>
</div>
@ -617,7 +616,7 @@ export default function RegisterPage() {
disabled={isSubmitting}
className="w-full flex justify-center py-3 px-4 border border-transparent rounded-md shadow-sm text-base font-medium text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:bg-blue-400"
>
{isSubmitting ? "Registering..." : "Register for LAN"}
{isSubmitting ? "Registrerar..." : "Anmäl dig till LAN"}
</button>
</div>
</form>