From 6a27a5cf4737b8eaec722f30007972da43055802 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Sch=C3=B6ll?= Date: Mon, 26 Aug 2024 21:57:33 +0100 Subject: [PATCH] feat: migrate supabase cloud function to php script --- pages/index.html | 4 +- supabase/.gitignore | 3 - supabase/config.toml | 82 ----------------------- supabase/functions/ticktick-auth/index.ts | 80 ---------------------- supabase/seed.sql | 0 5 files changed, 2 insertions(+), 167 deletions(-) delete mode 100644 supabase/.gitignore delete mode 100644 supabase/config.toml delete mode 100644 supabase/functions/ticktick-auth/index.ts delete mode 100644 supabase/seed.sql diff --git a/pages/index.html b/pages/index.html index 1475af9..395f1ab 100644 --- a/pages/index.html +++ b/pages/index.html @@ -84,7 +84,7 @@

TickTick OAuth

document.querySelector('#step-1').style.display = 'none'; document.querySelector('#step-2').style.display = 'block'; - fetch("https://ywcmjymjeeppwgdfqncs.functions.supabase.co/ticktick-auth", + fetch("http://logseq-ticktick.mxs.sh.dedivirt2655.your-server.de/index.php", { method: "POST", headers: { @@ -112,4 +112,4 @@

TickTick OAuth

- \ No newline at end of file + diff --git a/supabase/.gitignore b/supabase/.gitignore deleted file mode 100644 index 773c7c3..0000000 --- a/supabase/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Supabase -.branches -.temp diff --git a/supabase/config.toml b/supabase/config.toml deleted file mode 100644 index 0220240..0000000 --- a/supabase/config.toml +++ /dev/null @@ -1,82 +0,0 @@ -# A string used to distinguish different Supabase projects on the same host. Defaults to the working -# directory name when running `supabase init`. -project_id = "logseq-ticktick-plugin" - -[api] -# Port to use for the API URL. -port = 54321 -# Schemas to expose in your API. Tables, views and stored procedures in this schema will get API -# endpoints. public and storage are always included. -schemas = ["public", "storage", "graphql_public"] -# Extra schemas to add to the search_path of every request. public is always included. -extra_search_path = ["public", "extensions"] -# The maximum number of rows returns from a view, table, or stored procedure. Limits payload size -# for accidental or malicious requests. -max_rows = 1000 - -[db] -# Port to use for the local database URL. -port = 54322 -# The database major version to use. This has to be the same as your remote database's. Run `SHOW -# server_version;` on the remote database to check. -major_version = 15 - -[studio] -# Port to use for Supabase Studio. -port = 54323 - -# Email testing server. Emails sent with the local dev setup are not actually sent - rather, they -# are monitored, and you can view the emails that would have been sent from the web interface. -[inbucket] -# Port to use for the email testing server web interface. -port = 54324 -smtp_port = 54325 -pop3_port = 54326 - -[storage] -# The maximum file size allowed (e.g. "5MB", "500KB"). -file_size_limit = "50MiB" - -[auth] -# The base URL of your website. Used as an allow-list for redirects and for constructing URLs used -# in emails. -site_url = "http://localhost:3000" -# A list of *exact* URLs that auth providers are permitted to redirect to post authentication. -additional_redirect_urls = ["https://localhost:3000"] -# How long tokens are valid for, in seconds. Defaults to 3600 (1 hour), maximum 604,800 seconds (one -# week). -jwt_expiry = 3600 -# Allow/disallow new user signups to your project. -enable_signup = true - -[auth.email] -# Allow/disallow new user signups via email to your project. -enable_signup = true -# If enabled, a user will be required to confirm any email change on both the old, and new email -# addresses. If disabled, only the new email is required to confirm. -double_confirm_changes = true -# If enabled, users need to confirm their email address before signing in. -enable_confirmations = false - -# Use an external OAuth provider. The full list of providers are: `apple`, `azure`, `bitbucket`, -# `discord`, `facebook`, `github`, `gitlab`, `google`, `keycloak`, `linkedin`, `notion`, `twitch`, -# `twitter`, `slack`, `spotify`, `workos`, `zoom`. -[auth.external.apple] -enabled = false -client_id = "" -secret = "" -# Overrides the default auth redirectUrl. -redirect_uri = "" -# Overrides the default auth provider URL. Used to support self-hosted gitlab, single-tenant Azure, -# or any other third-party OIDC providers. -url = "" - -[analytics] -enabled = false -port = 54327 -vector_port = 54328 -# Setup BigQuery project to enable log viewer on local development stack. -# See: https://logflare.app/guides/bigquery-setup -gcp_project_id = "" -gcp_project_number = "" -gcp_jwt_path = "supabase/gcloud.json" diff --git a/supabase/functions/ticktick-auth/index.ts b/supabase/functions/ticktick-auth/index.ts deleted file mode 100644 index 6a754b2..0000000 --- a/supabase/functions/ticktick-auth/index.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { serve } from "https://deno.land/std@0.168.0/http/server.ts" -import { Redis } from "https://deno.land/x/upstash_redis/mod.ts"; -import { Ratelimit } from "https://cdn.skypack.dev/@upstash/ratelimit@latest" - -const TICKTICK_AUTH_URL = "https://ticktick.com/oauth/token" - -const corsHeaders = { - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Allow-Headers': 'authorization, x-client-info, apikey, content-type', -} - -serve(async (req) => { - if (req.method === 'OPTIONS') { - return new Response('ok', { headers: corsHeaders }) - } - - const redis = new Redis({ - url: Deno.env.get("UPSTASH_REDIS_REST_URL"), - token: Deno.env.get("UPSTASH_REDIS_REST_TOKEN"), - }) - - const ratelimit = new Ratelimit({ - redis: redis, - limiter: Ratelimit.slidingWindow(10, "30 s"), - }); - - const ip = "any" - const { success } = await ratelimit.limit(ip) - - if (!success) { - return new Response( - JSON.stringify({ error: "rate_limit_exceeded", error_description: "Rate limit exceeded" }), - { status: 429, headers: { - "Content-Type": "application/json", - ...corsHeaders - } }, - ) - } - - const { client_id, client_secret, code, redirect_uri } = await req.json() - - if (!client_id || !client_secret || !code || !redirect_uri) { - return new Response( - JSON.stringify({ error: "missing_parameter", error_description: "Missing parameter: client_id, client_secret, code, redirect_uri" }), - { status: 400, headers: { - "Content-Type": "application/json", - ...corsHeaders - } }, - ) - } - - const response = await fetch(TICKTICK_AUTH_URL, { - method: "POST", - body: new URLSearchParams({ - client_id, - client_secret, - code, - redirect_uri, - grant_type: "authorization_code", - }), - }) - - if(!response.ok) { - return new Response( - JSON.stringify({ error: "unauthorized", error_description: "Unauthorized" }), - { status: 400, headers: { - "Content-Type": "application/json", - ...corsHeaders - } }, - ) - } - - return new Response( - JSON.stringify(await response.json()), - { status: 200, headers: - { "Content-Type": "application/json", - ...corsHeaders - } }, - ) -}) \ No newline at end of file diff --git a/supabase/seed.sql b/supabase/seed.sql deleted file mode 100644 index e69de29..0000000