diff --git a/src/hooks.server.ts b/src/hooks.server.ts new file mode 100644 index 0000000..885240e --- /dev/null +++ b/src/hooks.server.ts @@ -0,0 +1,18 @@ +import type { Handle } from "@sveltejs/kit"; + +export const handle: Handle = async ({ event, resolve }) => { + const githubToken = event.cookies.get("github_oauth_token") ?? null; + const githubUserResponse = await fetch("https://api.github.com/user", { + headers: { + Authorization: `Bearer ${githubToken}` + } + }); + if (githubUserResponse.ok) { + const githubUser = await githubUserResponse.json(); + event.locals.githubUser = githubUser; + } else { + event.locals.githubUser = null; + } + + return resolve(event); +}; diff --git a/src/routes/+layout.server.ts b/src/routes/+layout.server.ts index 35c77c6..8452f02 100644 --- a/src/routes/+layout.server.ts +++ b/src/routes/+layout.server.ts @@ -1,16 +1,5 @@ -// import { githubAuth } from "$lib/ts/github/auth"; -import type { RequestEvent } from "@sveltejs/kit"; - -export async function load(event: RequestEvent) { - const token = event.cookies.get("github_oauth_token") ?? null; - - const githubUserResponse = await fetch("https://api.github.com/user", { - headers: { - Authorization: `Bearer ${token}` - } - }); - const githubUser = await githubUserResponse.json(); +export async function load({ locals }) { return { - githubUser + githubUser: locals.githubUser }; } diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 881a318..797b351 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -34,7 +34,7 @@ class="absolute h-6 w-6 translate-y-10 transition-transform dark:translate-y-0" /> - {#if data.githubUser.login} + {#if data.githubUser} CN diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index d6a78de..6aa4f20 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -11,7 +11,7 @@ > My repositories - {#if !data.githubUser.login} + {#if !data.githubUser} diff --git a/src/routes/new/+page.server.ts b/src/routes/new/+page.server.ts new file mode 100644 index 0000000..743bb06 --- /dev/null +++ b/src/routes/new/+page.server.ts @@ -0,0 +1,7 @@ +import { redirect } from "@sveltejs/kit"; +export function load({ locals }) { + console.log(locals); + if (locals.githubUser === null) { + redirect(303, "/"); + } +} diff --git a/src/routes/new/+page.svelte b/src/routes/new/+page.svelte index bb09459..481ee78 100644 --- a/src/routes/new/+page.svelte +++ b/src/routes/new/+page.svelte @@ -12,7 +12,7 @@ let log: Array = []; export let data; - let repoName = document.getElementById("reponame"); + let repoName = ""; async function createRepo() { setupStep = "inprogress";