diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/env.ts | 26 | ||||
-rw-r--r-- | src/hooks.ts | 9 | ||||
-rw-r--r-- | src/routes/login.ts | 9 | ||||
-rw-r--r-- | src/routes/profile/update.ts | 10 | ||||
-rw-r--r-- | src/routes/verify.ts | 10 |
5 files changed, 38 insertions, 26 deletions
diff --git a/src/env.ts b/src/env.ts new file mode 100644 index 0000000..8927d76 --- /dev/null +++ b/src/env.ts @@ -0,0 +1,26 @@ +// Cloudflare Workers can't read process.env so we have to do it like this + +let skyblockStatsApiKey: string | undefined +try { + skyblockStatsApiKey = process.env.SKYBLOCK_STATS_API_KEY +} catch { + // @ts-ignore + skyblockStatsApiKey = SKYBLOCK_STATS_API_KEY +} +if (!skyblockStatsApiKey) + console.warn('SKYBLOCK_STATS_API_KEY is not set as an environment variable. This is required for logging in with Discord to work. It should be the same as the `key` environment variable in skyblock-api.') + +let discordClientId: string | undefined +try { + discordClientId = process.env.DISCORD_CLIENT_ID +} catch { + // @ts-ignore + discordClientId = DISCORD_CLIENT_ID +} +if (!discordClientId) + console.warn('DISCORD_CLIENT_ID is not set as an environment variable. This is required for logging in with Discord to work.') + +export { + skyblockStatsApiKey as SKYBLOCK_STATS_API_KEY, + discordClientId as DISCORD_CLIENT_ID, +}
\ No newline at end of file diff --git a/src/hooks.ts b/src/hooks.ts index 3875b88..151e572 100644 --- a/src/hooks.ts +++ b/src/hooks.ts @@ -1,10 +1,7 @@ import cookie from 'cookie' import type { ExternalFetch, GetSession, Handle } from '@sveltejs/kit' +import { SKYBLOCK_STATS_API_KEY } from './env' -// @ts-ignore Cloudflare Workers can't read process.env.SKYBLOCK_STATS_API_KEY but it can read SKYBLOCK_STATS_API_KEY -const skyblockStatsApiKey = process?.env?.SKYBLOCK_STATS_API_KEY || SKYBLOCK_STATS_API_KEY -if (!skyblockStatsApiKey) - console.warn('SKYBLOCK_STATS_API_KEY is not set as an environment variable. This is required for logging in with Skyblock Stats to work. It should be the same as the `key` environment variable in skyblock-api.') export const handle: Handle = async ({ event, resolve }) => { const cookies = cookie.parse(event.request.headers.get('cookie') || '') @@ -23,9 +20,9 @@ export const getSession: GetSession = async ({ locals }) => { } export const externalFetch: ExternalFetch = async (request) => { - if (skyblockStatsApiKey && request.url.startsWith('https://skyblock-api.matdoes.dev/')) { + if (SKYBLOCK_STATS_API_KEY && request.url.startsWith('https://skyblock-api.matdoes.dev/')) { // add the key as a header - request.headers.set('key', skyblockStatsApiKey) + request.headers.set('key', SKYBLOCK_STATS_API_KEY) } const response = await fetch(request) diff --git a/src/routes/login.ts b/src/routes/login.ts index be355d9..f343871 100644 --- a/src/routes/login.ts +++ b/src/routes/login.ts @@ -1,13 +1,10 @@ import type { RequestHandler } from '@sveltejs/kit' +import { DISCORD_CLIENT_ID } from '../env' -// @ts-ignore Cloudflare Workers can't read process.env -const discordClientId = process?.env?.DISCORD_CLIENT_ID || DISCORD_CLIENT_ID -if (!discordClientId) - console.warn('DISCORD_CLIENT_ID is not set as an environment variable. This is required for logging in with Discord to work.') export const get: RequestHandler = async ({ request }) => { const host = request.headers.get('host') - if (!discordClientId) + if (!DISCORD_CLIENT_ID) return { status: 500, headers: { @@ -30,7 +27,7 @@ export const get: RequestHandler = async ({ request }) => { return { status: 303, headers: { - location: `https://discord.com/oauth2/authorize?client_id=${discordClientId}&redirect_uri=${protocol}://${host}%2Floggedin&response_type=code&scope=identify` + location: `https://discord.com/oauth2/authorize?client_id=${DISCORD_CLIENT_ID}&redirect_uri=${protocol}://${host}%2Floggedin&response_type=code&scope=identify` } } } diff --git a/src/routes/profile/update.ts b/src/routes/profile/update.ts index a05cfea..5c1e788 100644 --- a/src/routes/profile/update.ts +++ b/src/routes/profile/update.ts @@ -5,6 +5,7 @@ import backgroundFileNames from '../../_backgrounds.json' import donators from '../../_donators.json' import admins from '../../_admins.json' import type { JSONValue } from '@sveltejs/kit/types/internal' +import { SKYBLOCK_STATS_API_KEY } from '../../env' const emojiRegex = /^(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])$/ @@ -13,11 +14,6 @@ function isValidEmoji(emoji: string) { return match && match[0] === emoji && match.index === 0 } -// @ts-ignore Cloudflare Workers can't read process.env -const skyblockStatsApiKey = process?.env?.SKYBLOCK_STATS_API_KEY || SKYBLOCK_STATS_API_KEY -if (!skyblockStatsApiKey) - console.warn('DISCORD_CLIENT_ID is not set as an environment variable. This is required for logging in with Discord to work.') - export const patch: RequestHandler = async ({ request, locals }) => { if (locals.sid === undefined) { @@ -26,7 +22,7 @@ export const patch: RequestHandler = async ({ request, locals }) => { status: 401, } } - if (!skyblockStatsApiKey) { + if (!SKYBLOCK_STATS_API_KEY) { return { body: { ok: false, error: 'The SKYBLOCK_STATS_API_KEY environment variable is not set.' }, status: 500, @@ -117,7 +113,7 @@ export const patch: RequestHandler = async ({ request, locals }) => { method: 'POST', headers: { 'Content-Type': 'application/json', - key: skyblockStatsApiKey + key: SKYBLOCK_STATS_API_KEY }, body: JSON.stringify(updatedAccount), }).then(r => r.json()) diff --git a/src/routes/verify.ts b/src/routes/verify.ts index cc1140c..c0d2f94 100644 --- a/src/routes/verify.ts +++ b/src/routes/verify.ts @@ -1,11 +1,7 @@ import { API_URL } from '$lib/api' import type { AccountSchema, CleanUser, SessionSchema } from '$lib/APITypes' import type { RequestHandler } from '@sveltejs/kit' - -// @ts-ignore Cloudflare Workers can't read process.env -const skyblockStatsApiKey = process?.env?.SKYBLOCK_STATS_API_KEY || SKYBLOCK_STATS_API_KEY -if (!skyblockStatsApiKey) - console.warn('DISCORD_CLIENT_ID is not set as an environment variable. This is required for logging in with Discord to work.') +import { SKYBLOCK_STATS_API_KEY } from '../env' function redirect(status: number, location: string) { @@ -18,7 +14,7 @@ function redirect(status: number, location: string) { } export const post: RequestHandler = async ({ request, locals }) => { - if (!skyblockStatsApiKey) { + if (!SKYBLOCK_STATS_API_KEY) { return redirect(303, `/verify?error=NO_KEY`) } if (locals.sid === undefined) { @@ -69,7 +65,7 @@ export const post: RequestHandler = async ({ request, locals }) => { method: 'POST', headers: { 'Content-Type': 'application/json', - key: skyblockStatsApiKey + key: SKYBLOCK_STATS_API_KEY }, body: JSON.stringify(updatedAccount), }).then(r => r.json()) |