initial OIDC setup
This commit is contained in:
@@ -2,6 +2,8 @@ import { get_username } from '$lib/js/get_username';;
|
||||
import type { Actions, PageServerLoad } from "./$types"
|
||||
import { error } from "@sveltejs/kit"
|
||||
|
||||
export const load = (async ({cookies}) => {
|
||||
return { user: await get_username(cookies) }
|
||||
export const load = (async ({cookies, locals}) => {
|
||||
return {
|
||||
session: await locals.auth(),
|
||||
}
|
||||
});
|
||||
|
||||
@@ -3,9 +3,10 @@ import Header from '$lib/components/Header.svelte'
|
||||
import UserHeader from '$lib/components/UserHeader.svelte';
|
||||
export let data
|
||||
let username = ""
|
||||
if(data.user){
|
||||
username = data.user.username
|
||||
if(data.session){
|
||||
username = data.session.user.name
|
||||
}
|
||||
console.log(data)
|
||||
</script>
|
||||
|
||||
<Header>
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
import "$lib/css/nordtheme.css";
|
||||
import LinksGrid from "$lib/components/LinksGrid.svelte";
|
||||
export let data;
|
||||
import { SignIn, SignOut } from "@auth/sveltekit/components"
|
||||
import { page } from "$app/stores"
|
||||
/*console.log($page)*/
|
||||
/*console.log($page.daja.session.user)*/
|
||||
</script>
|
||||
<style>
|
||||
.hero{
|
||||
@@ -49,7 +53,8 @@ section h2{
|
||||
}
|
||||
</style>
|
||||
|
||||
{#if ! data.user}
|
||||
{#if ! data.session}
|
||||
|
||||
<section class=hero>
|
||||
<img src="https://bocken.org/static/user/full/Alexander.webp" alt="Smiling Alexander Bocken">
|
||||
<div>
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
import { redirect } from "@sveltejs/kit"
|
||||
import type { Actions, PageServerLoad } from "./$types"
|
||||
import { error } from "@sveltejs/kit"
|
||||
|
||||
export const actions: Actions = {
|
||||
login: async (event) => {
|
||||
const data = await event.request.formData()
|
||||
const res = await event.fetch('/api/user/login',
|
||||
{method: 'POST',
|
||||
body: JSON.stringify({
|
||||
username: data.get('username'),
|
||||
password: data.get('password'),
|
||||
})
|
||||
}
|
||||
)
|
||||
const jwt = await res.json()
|
||||
if(res.ok){
|
||||
event.cookies.set("UserSession", jwt, {
|
||||
path: "/",
|
||||
httpOnly: true,
|
||||
sameSite: "strict",
|
||||
secure: process.env.NODE_ENV === "production",
|
||||
maxAge: 60 * 60 * 24 * 7, // 1 week
|
||||
})
|
||||
|
||||
throw redirect(303, "/")
|
||||
}
|
||||
else{
|
||||
throw error(401, jwt.message)
|
||||
}
|
||||
},
|
||||
logout: async () => {
|
||||
throw redirect(303, "/logout")
|
||||
},
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
<script>
|
||||
import "$lib/css/form.css"
|
||||
import "$lib/css/nordtheme.css"
|
||||
</script>
|
||||
<form action="?/login" method=POST>
|
||||
<h1>Log In</h1>
|
||||
<p>
|
||||
Note: This is a separate account to all the services running on this server.
|
||||
Please only use this login if you want to edit recipes.
|
||||
In the future, this login will be merged with the other services.
|
||||
</p>
|
||||
<label>
|
||||
Benutzername
|
||||
<input type="text" name="username" required>
|
||||
</label>
|
||||
<label>
|
||||
Passwort
|
||||
<input name="password" type="password" required>
|
||||
</label>
|
||||
|
||||
<button type="submit">Log In</button>
|
||||
<p>Noch keinen Account? <a href=/register>Hier registrieren</a>.</p>
|
||||
</form>
|
||||
@@ -1 +0,0 @@
|
||||
{"terminal": "nvimterm"}
|
||||
@@ -1,8 +0,0 @@
|
||||
import redirect from "@sveltejs/kit"
|
||||
import type { Actions } from './$types';
|
||||
|
||||
export const actions: Actions = {
|
||||
default: async ({cookies}) => {
|
||||
cookies.delete("UserSession")
|
||||
}
|
||||
} satisfies Actions;
|
||||
@@ -1,7 +0,0 @@
|
||||
<script>
|
||||
import "$lib/css/form.css"
|
||||
</script>
|
||||
<form method='POST'>
|
||||
<h1>Log out</h1>
|
||||
<button type='submit'>Log Out</button>
|
||||
</form>
|
||||
Reference in New Issue
Block a user