Skip to content

Commit ef0365c

Browse files
committed
another optional approach to the previous
1 parent 7ed9e4f commit ef0365c

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

src/routes/auth/signup/+server.ts

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import { error } from "@sveltejs/kit"
2+
import { formatError } from "$lib/utils"
3+
import { createStripeCustomer } from "$lib/server/stripe.server"
4+
5+
export const GET = async ({ request, locals: { supabaseServer } }) => {
6+
console.log("💻 Launcher sign up")
7+
const data = await request.json()
8+
const access_token = data?.access_token
9+
const refresh_token = data?.refresh_token
10+
11+
if (!access_token) error(403, "No access_token received.")
12+
if (!refresh_token) error(403, "No refresh_token received.")
13+
14+
const {
15+
data: { user },
16+
error: err
17+
} = await supabaseServer.auth.setSession({ access_token, refresh_token })
18+
if (err) error(401, formatError(err))
19+
if (!user) error(401, "Failed to get user.")
20+
21+
const {
22+
data: { session }
23+
} = await supabaseServer.auth.getSession()
24+
25+
const { count } = await supabaseServer
26+
.schema("profiles")
27+
.from("profiles")
28+
.select("*", { count: "exact", head: true })
29+
.eq("id", user.id)
30+
.single()
31+
32+
if (count) {
33+
return new Response(
34+
JSON.stringify({
35+
success: true,
36+
access_token: session?.access_token,
37+
refresh_token: session?.refresh_token
38+
}),
39+
{
40+
status: 200,
41+
headers: { "Content-Type": "application/json" }
42+
}
43+
)
44+
}
45+
46+
if (user.email && user.app_metadata.provider == "discord") {
47+
const discord = user.user_metadata["provider_id"]
48+
const stripe = await createStripeCustomer(
49+
user.id,
50+
user.email,
51+
discord,
52+
user.user_metadata["custom_claims"]["global_name"]
53+
)
54+
if (!stripe) error(403, "Failed to create stripe user for " + user.id)
55+
56+
const { error: err } = await supabaseServer.schema("profiles").from("profiles").insert({
57+
id: user.id,
58+
stripe,
59+
discord,
60+
username: "",
61+
avatar: "",
62+
role: null
63+
})
64+
65+
if (err) error(500, "Failed to INSERT profile: " + formatError(err))
66+
}
67+
68+
return new Response(
69+
JSON.stringify({
70+
success: true,
71+
access_token: session?.access_token,
72+
refresh_token: session?.refresh_token
73+
}),
74+
{
75+
status: 200,
76+
headers: { "Content-Type": "application/json" }
77+
}
78+
)
79+
}

0 commit comments

Comments
 (0)