Fix #44, additional minor enhncements
This commit is contained in:
39
src/routes/tidalAuth/+page.server.ts
Normal file
39
src/routes/tidalAuth/+page.server.ts
Normal file
@ -0,0 +1,39 @@
|
||||
import { BASE_URL } from '$env/static/private';
|
||||
import { Logger } from '$lib/log';
|
||||
import { redirect } from '@sveltejs/kit';
|
||||
import type { PageServerLoad } from './$types';
|
||||
import { TidalPlaylistAdder } from '$lib/server/playlist/tidalPlaylistAdder';
|
||||
import { URL } from 'node:url';
|
||||
const { DEV } = import.meta.env;
|
||||
|
||||
const logger = new Logger('TidalAuth');
|
||||
|
||||
export const load: PageServerLoad = async ({ url, request }) => {
|
||||
const forwardedHost = request.headers.get('X-Forwarded-Host');
|
||||
let redirect_base;
|
||||
if (DEV) {
|
||||
redirect_base = url.origin;
|
||||
} else if (forwardedHost) {
|
||||
redirect_base = `${url.protocol}//${forwardedHost}`;
|
||||
} else {
|
||||
redirect_base = BASE_URL;
|
||||
}
|
||||
const redirect_uri = new URL(`${redirect_base}${url.pathname}`);
|
||||
const adder = new TidalPlaylistAdder();
|
||||
logger.debug(url.searchParams, url.hostname, redirect_uri);
|
||||
if (url.searchParams.has('code')) {
|
||||
await adder.receivedAuthCode(url.searchParams.get('code') || '', redirect_uri);
|
||||
redirect(307, '/');
|
||||
} else if (url.searchParams.has('error')) {
|
||||
logger.error('received error', url.searchParams.get('error'));
|
||||
return;
|
||||
}
|
||||
|
||||
if (await adder.authCodeExists()) {
|
||||
redirect(307, '/');
|
||||
}
|
||||
|
||||
const authUrl = adder.constructAuthUrl(redirect_uri);
|
||||
logger.debug('+page.server.ts', authUrl.toString());
|
||||
redirect(307, authUrl);
|
||||
};
|
Reference in New Issue
Block a user