aboutsummaryrefslogtreecommitdiff
path: root/src/routes/api/oauth/callback/+server.ts
blob: 33ba6de9171a68eff59adf931f48056af88eebd6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import { dev } from '$app/environment';
import { env } from '$env/dynamic/private';
import { env as env2 } from '$env/dynamic/public';
import { redirect } from '@sveltejs/kit';

export const GET = async ({ url, cookies }) => {
	const formData = new FormData();

	formData.append('grant_type', 'authorization_code');
	formData.append('client_id', env2.PUBLIC_ANILIST_CLIENT_ID);
	formData.append('client_secret', env.ANILIST_CLIENT_SECRET);
	formData.append('redirect_uri', env2.PUBLIC_ANILIST_REDIRECT_URI);
	formData.append('code', url.searchParams.get('code') || 'null');
	cookies.set(
		'user',
		JSON.stringify(
			await (
				await fetch('https://anilist.co/api/v2/oauth/token', {
					method: 'POST',
					body: formData
				})
			).json()
		),
		{
			path: '/',
			maxAge: 60 * 60 * 24 * 7,
			httpOnly: true,
			sameSite: 'lax',
			secure: !dev
		}
	);

	throw redirect(303, '/');
};