forked from
leaflet.pub/leaflet
a tool for shared writing and social publishing
1"use server";
2
3import { cookies } from "next/headers";
4import { supabaseServerClient } from "supabase/serverClient";
5
6export async function getIdentityData() {
7 let cookieStore = await cookies();
8 let auth_token =
9 cookieStore.get("auth_token")?.value ||
10 cookieStore.get("external_auth_token")?.value;
11 let auth_res = auth_token
12 ? await supabaseServerClient
13 .from("email_auth_tokens")
14 .select(
15 `*,
16 identities(
17 *,
18 bsky_profiles(*),
19 publication_subscriptions(*),
20 custom_domains!custom_domains_identity_id_fkey(publication_domains(*), *),
21 home_leaflet:permission_tokens!identities_home_page_fkey(*, permission_token_rights(*)),
22 permission_token_on_homepage(
23 created_at,
24 permission_tokens!inner(
25 id,
26 root_entity,
27 permission_token_rights(*),
28 leaflets_in_publications(*, publications(*), documents(*))
29 )
30 )
31 )`,
32 )
33 .eq("id", auth_token)
34 .eq("confirmed", true)
35 .single()
36 : null;
37 if (!auth_res?.data?.identities) return null;
38 if (auth_res.data.identities.atp_did) {
39 //I should create a relationship table so I can do this in the above query
40 let { data: publications } = await supabaseServerClient
41 .from("publications")
42 .select("*")
43 .eq("identity_did", auth_res.data.identities.atp_did);
44 return {
45 ...auth_res.data.identities,
46 publications: publications || [],
47 };
48 }
49
50 return { ...auth_res.data.identities, publications: [] };
51}