diff options
author | mat <github@matdoes.dev> | 2022-03-18 17:38:09 -0500 |
---|---|---|
committer | mat <github@matdoes.dev> | 2022-03-18 17:38:09 -0500 |
commit | f8484b2f83911f90fc093202d8f37c80e1d86835 (patch) | |
tree | 4e1108542086dd7c19e472a5904140f914f1e6c4 | |
parent | f802ea11fc4d4623fad9e99ce39110c37cde619b (diff) | |
download | skyblock-stats-f8484b2f83911f90fc093202d8f37c80e1d86835.tar.gz skyblock-stats-f8484b2f83911f90fc093202d8f37c80e1d86835.tar.bz2 skyblock-stats-f8484b2f83911f90fc093202d8f37c80e1d86835.zip |
Cloudflare is dumb and can't read process.env
-rw-r--r-- | .eslintrc.cjs | 2 | ||||
-rw-r--r-- | src/hooks.ts | 9 | ||||
-rw-r--r-- | src/routes/login.ts | 9 | ||||
-rw-r--r-- | src/routes/logout.ts | 6 | ||||
-rw-r--r-- | src/routes/profile/update.ts | 10 | ||||
-rw-r--r-- | src/routes/verify.ts | 10 | ||||
-rw-r--r-- | svelte.config.js | 4 |
7 files changed, 31 insertions, 19 deletions
diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 699ccc4..e680809 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -21,5 +21,7 @@ module.exports = { '@typescript-eslint/no-non-null-assertion': 'off', '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/ban-types': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + }, }
\ No newline at end of file diff --git a/src/hooks.ts b/src/hooks.ts index 64c1b9d..6715fc3 100644 --- a/src/hooks.ts +++ b/src/hooks.ts @@ -1,8 +1,9 @@ import cookie from 'cookie' import type { ExternalFetch, GetSession, Handle } from '@sveltejs/kit' -const SKYBLOCK_STATS_API_KEY = process.env.SKYBLOCK_STATS_API_KEY -if (!SKYBLOCK_STATS_API_KEY) +// @ts-ignore Cloudflare Workers can't read process.env.SKYBLOCK_STATS_API_KEY but it can read SKYBLOCK_STATS_API_KEY +const skyblockStatsApiKey = SKYBLOCK_STATS_API_KEY || process.env.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 }) => { @@ -22,9 +23,9 @@ export const getSession: GetSession = async ({ locals }) => { } export const externalFetch: ExternalFetch = async (request) => { - if (SKYBLOCK_STATS_API_KEY && request.url.startsWith('https://skyblock-api.matdoes.dev/')) { + if (skyblockStatsApiKey && request.url.startsWith('https://skyblock-api.matdoes.dev/')) { // add the key as a header - request.headers.set('key', SKYBLOCK_STATS_API_KEY) + request.headers.set('key', skyblockStatsApiKey) } const response = await fetch(request) diff --git a/src/routes/login.ts b/src/routes/login.ts index 03ca5ee..e0224cd 100644 --- a/src/routes/login.ts +++ b/src/routes/login.ts @@ -1,12 +1,13 @@ import type { RequestHandler } from '@sveltejs/kit' -const DISCORD_CLIENT_ID = process.env.DISCORD_CLIENT_ID -if (!DISCORD_CLIENT_ID) +// @ts-ignore Cloudflare Workers can't read process.env +const discordClientId = DISCORD_CLIENT_ID || process.env.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 (!DISCORD_CLIENT_ID) + if (!discordClientId) return { status: 500, headers: { @@ -29,7 +30,7 @@ export const get: RequestHandler = async ({ request }) => { return { status: 303, headers: { - location: `https://discord.com/oauth2/authorize?client_id=${DISCORD_CLIENT_ID}&redirect_uri=${protocol}://${host}%2Floggedin&response_type=code&scope=identify` + location: `https://discord.com/oauth2/authorize?client_id=${discordClientId}&redirect_uri=${protocol}://${host}%2Floggedin&response_type=code&scope=identify` } } } diff --git a/src/routes/logout.ts b/src/routes/logout.ts index 19bd02b..9caebb6 100644 --- a/src/routes/logout.ts +++ b/src/routes/logout.ts @@ -1,11 +1,7 @@ import { API_URL } from '$lib/api' import type { RequestHandler } from '@sveltejs/kit' -const DISCORD_CLIENT_ID = process.env.DISCORD_CLIENT_ID -if (!DISCORD_CLIENT_ID) - 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, params, locals, url }) => { +export const get: RequestHandler = async ({ locals, url }) => { // if the sid is wrong, nothing to do if (url.searchParams.has('sid') && url.searchParams.get('sid') === locals.sid) { await fetch(`${API_URL}accounts/session`, { diff --git a/src/routes/profile/update.ts b/src/routes/profile/update.ts index 3bd6e57..3cdfabc 100644 --- a/src/routes/profile/update.ts +++ b/src/routes/profile/update.ts @@ -13,6 +13,12 @@ function isValidEmoji(emoji: string) { return match && match[0] === emoji && match.index === 0 } +// @ts-ignore Cloudflare Workers can't read process.env +const skyblockStatsApiKey = SKYBLOCK_STATS_API_KEY || process.env.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) { return { @@ -20,7 +26,7 @@ export const patch: RequestHandler = async ({ request, locals }) => { status: 401, } } - if (!process.env.SKYBLOCK_STATS_API_KEY) { + if (!skyblockStatsApiKey) { return { body: { ok: false, error: 'The SKYBLOCK_STATS_API_KEY environment variable is not set.' }, status: 500, @@ -111,7 +117,7 @@ export const patch: RequestHandler = async ({ request, locals }) => { method: 'POST', headers: { 'Content-Type': 'application/json', - key: process.env.SKYBLOCK_STATS_API_KEY + key: skyblockStatsApiKey }, body: JSON.stringify(updatedAccount), }).then(r => r.json()) diff --git a/src/routes/verify.ts b/src/routes/verify.ts index 132b094..c27db10 100644 --- a/src/routes/verify.ts +++ b/src/routes/verify.ts @@ -2,6 +2,12 @@ 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 = SKYBLOCK_STATS_API_KEY || process.env.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.') + + function redirect(status: number, location: string) { return { status, @@ -12,7 +18,7 @@ function redirect(status: number, location: string) { } export const post: RequestHandler = async ({ request, locals }) => { - if (!process.env.SKYBLOCK_STATS_API_KEY) { + if (!skyblockStatsApiKey) { return redirect(303, `/verify?error=NO_KEY`) } if (locals.sid === undefined) { @@ -63,7 +69,7 @@ export const post: RequestHandler = async ({ request, locals }) => { method: 'POST', headers: { 'Content-Type': 'application/json', - key: process.env.SKYBLOCK_STATS_API_KEY + key: skyblockStatsApiKey }, body: JSON.stringify(updatedAccount), }).then(r => r.json()) diff --git a/svelte.config.js b/svelte.config.js index 4945e1e..31ba570 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -1,5 +1,5 @@ -// import adapter from '@sveltejs/adapter-cloudflare' -import adapter from '@sveltejs/adapter-auto' +import adapter from '@sveltejs/adapter-cloudflare' +// import adapter from '@sveltejs/adapter-auto' import preprocess from 'svelte-preprocess' import dotenv from 'dotenv' |