forked from ProjectSegfault/website
fix build
This commit is contained in:
parent
7847267ec8
commit
92753b1e35
@ -1 +1,8 @@
|
||||
AUTH_SECRET=myauthsecret # generate with https://generate-secret.vercel.app/32 or openssl rand -hex 32 on unix-like
|
||||
DB_URL=postgres://user:pass@localhost:5432/website
|
||||
AUTH_CLIENT_ID=your-authentik-client-id
|
||||
AUTH_CLIENT_SECRET=your-authentik-client-secret
|
||||
AUTH_ISSUER=https://authentik-domain/application/o/app-name/
|
||||
HCAPTCHA_SECRET=your-hcaptcha-secret
|
||||
HCAPTCHA_SITEKEY=your-hcaptcha-sitekey
|
||||
WEBHOOK=your-discord-webhook
|
||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -6,5 +6,4 @@ node_modules
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
||||
config/config.yml
|
||||
package-lock.json
|
@ -6,8 +6,6 @@ services:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
environment:
|
||||
AUTH_SECRET: ${AUTH_SECRET}
|
||||
ports:
|
||||
- 1337:4173
|
||||
volumes:
|
||||
|
@ -1,12 +0,0 @@
|
||||
db:
|
||||
url: "postgres://user:password@host:5432/database"
|
||||
|
||||
app:
|
||||
auth:
|
||||
clientId: "authentik-client-id"
|
||||
clientSecret: "authentik-client-secret"
|
||||
issuer: "https://yourdomain.com/application/o/app-name/"
|
||||
hcaptcha:
|
||||
secret: "your-hcaptcha-secret"
|
||||
sitekey: "your-hcaptcha-sitekey"
|
||||
webhook: "your-discord-webhook-url"
|
@ -1,14 +1,14 @@
|
||||
import { SvelteKitAuth } from "@auth/sveltekit"
|
||||
import Authentik from '@auth/core/providers/authentik';
|
||||
import config from "$lib/config";
|
||||
import { env } from "$env/dynamic/private";
|
||||
|
||||
export const handle = SvelteKitAuth({
|
||||
providers: [
|
||||
//@ts-ignore
|
||||
Authentik({
|
||||
clientId: config.app.auth.clientId,
|
||||
clientSecret: config.app.auth.clientSecret,
|
||||
issuer: config.app.auth.issuer
|
||||
clientId: env.AUTH_CLIENT_ID,
|
||||
clientSecret: env.AUTH_CLIENT_SECRET,
|
||||
issuer: env.AUTH_ISSUER
|
||||
})
|
||||
]
|
||||
})
|
@ -1,13 +1,14 @@
|
||||
<script>
|
||||
<script lang="ts">
|
||||
import HCaptcha from "svelte-hcaptcha";
|
||||
import { Note } from "$lib/Form";
|
||||
import config from "$lib/config";
|
||||
|
||||
let submit = false;
|
||||
|
||||
const showSubmitButton = () => {
|
||||
submit = !submit;
|
||||
};
|
||||
|
||||
export let sitekey: string;
|
||||
</script>
|
||||
|
||||
<Note
|
||||
@ -15,7 +16,7 @@
|
||||
icon="i-fa6-solid:circle-info"
|
||||
/>
|
||||
<HCaptcha
|
||||
sitekey={config.app.hcaptcha.sitekey}
|
||||
{sitekey}
|
||||
on:success={showSubmitButton}
|
||||
/>
|
||||
|
||||
|
@ -56,7 +56,7 @@
|
||||
<svelte:window bind:innerWidth />
|
||||
|
||||
<nav
|
||||
class="bg-primary border-b-1 border-b-grey flex p-2 flex-col justify-between nav:(flex-row items-center)"
|
||||
class="bg-primary border-b-1 border-b-solid border-b-grey flex p-2 flex-col justify-between nav:(flex-row items-center)"
|
||||
>
|
||||
<div class="flex flex-row items-center justify-between">
|
||||
<a
|
||||
|
@ -1,24 +0,0 @@
|
||||
import { parse } from "yaml";
|
||||
import fs from "fs";
|
||||
|
||||
interface Config {
|
||||
db: {
|
||||
url: string;
|
||||
};
|
||||
app: {
|
||||
auth: {
|
||||
clientId: string;
|
||||
clientSecret: string;
|
||||
issuer: string;
|
||||
}
|
||||
hcaptcha: {
|
||||
secret: string;
|
||||
sitekey: string;
|
||||
};
|
||||
webhook: string;
|
||||
};
|
||||
}
|
||||
|
||||
const config: Config = parse(fs.readFileSync("./config/config.yml", "utf8"));
|
||||
|
||||
export default config;
|
@ -1,8 +1,8 @@
|
||||
import { Sequelize, DataTypes } from "sequelize";
|
||||
import config from "$lib/config";
|
||||
import consola from "consola";
|
||||
import { env } from "$env/dynamic/private";
|
||||
|
||||
const sequelize = new Sequelize(config.db.url);
|
||||
const sequelize = new Sequelize(env.DB_URL);
|
||||
|
||||
sequelize.define("Announcements", {
|
||||
title: {
|
||||
|
@ -1,8 +1,14 @@
|
||||
import type { Actions } from "./$types";
|
||||
import type { Actions, PageServerLoad } from "./$types";
|
||||
import { Webhook, MessageBuilder } from "discord-webhook-node";
|
||||
import Joi from "joi";
|
||||
import { fail } from "@sveltejs/kit";
|
||||
import config from "$lib/config";
|
||||
import { env } from "$env/dynamic/private";
|
||||
|
||||
export const load = (() => {
|
||||
return {
|
||||
hcaptchaSitekey: env.HCAPTCHA_SITEKEY
|
||||
}
|
||||
}) satisfies PageServerLoad
|
||||
|
||||
export const actions: Actions = {
|
||||
form: async ({ request, getClientAddress, fetch }) => {
|
||||
@ -27,14 +33,14 @@ export const actions: Actions = {
|
||||
"Content-Type": "application/x-www-form-urlencoded"
|
||||
},
|
||||
body: new URLSearchParams({
|
||||
secret: config.app.hcaptcha.secret,
|
||||
secret: env.HCAPTCHA_SECRET,
|
||||
response: String(formData.get("h-captcha-response")),
|
||||
remoteip: ip
|
||||
})
|
||||
}).then((res) => res.json())
|
||||
|
||||
|
||||
const hook = new Webhook(config.app.webhook);
|
||||
const hook = new Webhook(env.WEBHOOK);
|
||||
|
||||
const data = await verify;
|
||||
|
||||
|
@ -1,8 +1,9 @@
|
||||
<script lang="ts">
|
||||
import { Note, Captcha, Meta, TextArea } from "$lib/Form";
|
||||
import type { ActionData } from "./$types";
|
||||
import type { ActionData, PageServerData } from "./$types";
|
||||
|
||||
export let form: ActionData;
|
||||
export let data: PageServerData;
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
@ -43,7 +44,7 @@
|
||||
name="message"
|
||||
placeholder="Your message"
|
||||
/>
|
||||
<Captcha>
|
||||
<Captcha sitekey={data.hcaptchaSitekey}>
|
||||
{#if form?.success}
|
||||
{form.message}
|
||||
{/if}
|
||||
|
Loading…
Reference in New Issue
Block a user