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>
|
||||
<p>Visit <a href="https://svelte.dev/docs/kit">svelte.dev/docs/kit</a> to read the documentation</p>
|
||||
<script lang="ts">
|
||||
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) => {
|
||||
if (event.locals.user) {
|
||||
return redirect(302, '/demo/lucia');
|
||||
return redirect(302, '/');
|
||||
}
|
||||
return {};
|
||||
};
|
||||
@@ -50,7 +50,7 @@ export const actions: Actions = {
|
||||
const session = await auth.createSession(sessionToken, existingUser.id);
|
||||
auth.setSessionTokenCookie(event, sessionToken, session.expiresAt);
|
||||
|
||||
return redirect(302, '/demo/lucia');
|
||||
return redirect(302, '/');
|
||||
},
|
||||
register: async (event) => {
|
||||
const formData = await event.request.formData();
|
||||
@@ -82,7 +82,7 @@ export const actions: Actions = {
|
||||
} catch {
|
||||
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