feat:move auth demo to main
This commit is contained in:
12
src/routes/+page.server.ts
Normal file
12
src/routes/+page.server.ts
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
import { redirect } from '@sveltejs/kit';
|
||||||
|
import type { PageServerLoad } from './$types';
|
||||||
|
|
||||||
|
export const load: PageServerLoad = async (event) => {
|
||||||
|
if (!event.locals.user) {
|
||||||
|
return redirect(302, '/login');
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
user: event.locals.user
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -1,2 +1,14 @@
|
|||||||
<h1>Welcome to SvelteKit</h1>
|
<script lang="ts">
|
||||||
<p>Visit <a href="https://svelte.dev/docs/kit">svelte.dev/docs/kit</a> to read the documentation</p>
|
import { enhance } from '$app/forms';
|
||||||
|
import type { PageServerData } from './$types';
|
||||||
|
|
||||||
|
let { data }: { data: PageServerData } = $props();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<h1>Welcome to Serengo</h1>
|
||||||
|
<p>Hi, {data.user.username}!</p>
|
||||||
|
<p>Your user ID is {data.user.id}.</p>
|
||||||
|
|
||||||
|
<form method="post" action="/logout" use:enhance>
|
||||||
|
<button>Sign out</button>
|
||||||
|
</form>
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
<a href="/demo/lucia">lucia</a>
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
import * as auth from '$lib/server/auth';
|
|
||||||
import { fail, redirect } from '@sveltejs/kit';
|
|
||||||
import { getRequestEvent } from '$app/server';
|
|
||||||
import type { Actions, PageServerLoad } from './$types';
|
|
||||||
|
|
||||||
export const load: PageServerLoad = async () => {
|
|
||||||
const user = requireLogin();
|
|
||||||
return { user };
|
|
||||||
};
|
|
||||||
|
|
||||||
export const actions: Actions = {
|
|
||||||
logout: async (event) => {
|
|
||||||
if (!event.locals.session) {
|
|
||||||
return fail(401);
|
|
||||||
}
|
|
||||||
await auth.invalidateSession(event.locals.session.id);
|
|
||||||
auth.deleteSessionTokenCookie(event);
|
|
||||||
|
|
||||||
return redirect(302, '/demo/lucia/login');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
function requireLogin() {
|
|
||||||
const { locals } = getRequestEvent();
|
|
||||||
|
|
||||||
if (!locals.user) {
|
|
||||||
return redirect(302, '/demo/lucia/login');
|
|
||||||
}
|
|
||||||
|
|
||||||
return locals.user;
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import { enhance } from '$app/forms';
|
|
||||||
import type { PageServerData } from './$types';
|
|
||||||
|
|
||||||
let { data }: { data: PageServerData } = $props();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<h1>Hi, {data.user.username}!</h1>
|
|
||||||
<p>Your user ID is {data.user.id}.</p>
|
|
||||||
<form method="post" action="?/logout" use:enhance>
|
|
||||||
<button>Sign out</button>
|
|
||||||
</form>
|
|
||||||
@@ -9,7 +9,7 @@ import type { Actions, PageServerLoad } from './$types';
|
|||||||
|
|
||||||
export const load: PageServerLoad = async (event) => {
|
export const load: PageServerLoad = async (event) => {
|
||||||
if (event.locals.user) {
|
if (event.locals.user) {
|
||||||
return redirect(302, '/demo/lucia');
|
return redirect(302, '/');
|
||||||
}
|
}
|
||||||
return {};
|
return {};
|
||||||
};
|
};
|
||||||
@@ -50,7 +50,7 @@ export const actions: Actions = {
|
|||||||
const session = await auth.createSession(sessionToken, existingUser.id);
|
const session = await auth.createSession(sessionToken, existingUser.id);
|
||||||
auth.setSessionTokenCookie(event, sessionToken, session.expiresAt);
|
auth.setSessionTokenCookie(event, sessionToken, session.expiresAt);
|
||||||
|
|
||||||
return redirect(302, '/demo/lucia');
|
return redirect(302, '/');
|
||||||
},
|
},
|
||||||
register: async (event) => {
|
register: async (event) => {
|
||||||
const formData = await event.request.formData();
|
const formData = await event.request.formData();
|
||||||
@@ -82,7 +82,7 @@ export const actions: Actions = {
|
|||||||
} catch {
|
} catch {
|
||||||
return fail(500, { message: 'An error has occurred' });
|
return fail(500, { message: 'An error has occurred' });
|
||||||
}
|
}
|
||||||
return redirect(302, '/demo/lucia');
|
return redirect(302, '/');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
15
src/routes/logout/+page.server.ts
Normal file
15
src/routes/logout/+page.server.ts
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import * as auth from '$lib/server/auth';
|
||||||
|
import { fail, redirect } from '@sveltejs/kit';
|
||||||
|
import type { Actions } from './$types';
|
||||||
|
|
||||||
|
export const actions: Actions = {
|
||||||
|
default: async (event) => {
|
||||||
|
if (!event.locals.session) {
|
||||||
|
return fail(401);
|
||||||
|
}
|
||||||
|
await auth.invalidateSession(event.locals.session.id);
|
||||||
|
auth.deleteSessionTokenCookie(event);
|
||||||
|
|
||||||
|
return redirect(302, '/login');
|
||||||
|
}
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user