mirror of
https://github.com/LukeHagar/website.git
synced 2025-12-09 21:07:46 +00:00
UPDATED
This commit is contained in:
@@ -3,8 +3,12 @@ import redirects from './redirects.json';
|
||||
import { sequence } from '@sveltejs/kit/hooks';
|
||||
import { BANNER_KEY } from '$lib/constants';
|
||||
import { dev } from '$app/environment';
|
||||
import { cookieKey, getInitUser } from '$routes/(init)/init/(utils)/auth';
|
||||
import { createInitSessionClient } from '$routes/(init)/init/(utils)/appwrite';
|
||||
import { type GithubUser } from '$routes/(init)/init/(utils)/auth';
|
||||
import {
|
||||
createInitServerClient,
|
||||
createInitSessionClient
|
||||
} from '$routes/(init)/init/(utils)/appwrite';
|
||||
import type { AppwriteUser } from '$lib/utils/console';
|
||||
|
||||
const redirectMap = new Map(redirects.map(({ link, redirect }) => [link, redirect]));
|
||||
|
||||
@@ -126,10 +130,69 @@ const bannerRewriter: Handle = async ({ event, resolve }) => {
|
||||
};
|
||||
|
||||
const initSession: Handle = async ({ event, resolve }) => {
|
||||
const { account } = createInitSessionClient(event.cookies);
|
||||
const session = await createInitSessionClient(event.cookies);
|
||||
|
||||
if (!session) {
|
||||
const response = await resolve(event);
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
const getGithubUser = async () => {
|
||||
try {
|
||||
const identitiesList = await session.account.listIdentities();
|
||||
console.log({ identitiesList });
|
||||
|
||||
if (!identitiesList.total) return null;
|
||||
const identity = identitiesList.identities[0];
|
||||
const { providerAccessToken, provider, providerEmail } = identity;
|
||||
if (provider !== 'github') return null;
|
||||
|
||||
const res = await fetch('https://api.github.com/user', {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
Authorization: `Bearer ${providerAccessToken}`
|
||||
}
|
||||
})
|
||||
.then((res) => {
|
||||
return res.json() as Promise<GithubUser>;
|
||||
})
|
||||
.then((user) => ({
|
||||
login: user.login,
|
||||
name: user.name,
|
||||
email: providerEmail,
|
||||
avatar_url: user.avatar_url
|
||||
}));
|
||||
|
||||
if (!res.login) {
|
||||
await session.account.deleteSession('current');
|
||||
return null;
|
||||
}
|
||||
|
||||
return res;
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
const getAppwriteUser = async (): Promise<AppwriteUser | null> => {
|
||||
const appwriteUser = await session.account
|
||||
.get()
|
||||
.then((res) => res)
|
||||
.catch((e) => null);
|
||||
|
||||
return appwriteUser;
|
||||
};
|
||||
|
||||
const getInitUser = async () => {
|
||||
const [github, appwrite] = await Promise.all([getGithubUser(), getAppwriteUser()]);
|
||||
|
||||
return { github, appwrite };
|
||||
};
|
||||
|
||||
event.locals.initSession = await session?.account.get();
|
||||
event.locals.initUser = await getInitUser();
|
||||
event.locals.initSession = await account.get();
|
||||
|
||||
const response = await resolve(event);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user