Refactored Supabase Clients using the new recommended approach by Supabase by centralizing all clients around one single implementation. (#51)

The previous clients have been marked as deprecated and will be removed at some point.
This commit is contained in:
Giancarlo Buomprisco
2024-08-14 17:13:59 +08:00
committed by GitHub
parent 2f0c4b4ae3
commit ba6e649461
41 changed files with 209 additions and 168 deletions

View File

@@ -7,7 +7,7 @@ import {
} from 'lucide-react';
import { Database } from '@kit/supabase/database';
import { getSupabaseServerComponentClient } from '@kit/supabase/server-component-client';
import { getSupabaseServerAdminClient } from '@kit/supabase/server-admin-client';
import { Alert, AlertDescription, AlertTitle } from '@kit/ui/alert';
import { AppBreadcrumbs } from '@kit/ui/app-breadcrumbs';
import { Badge } from '@kit/ui/badge';
@@ -49,9 +49,7 @@ export function AdminAccountPage(props: {
}
async function PersonalAccountPage(props: { account: Account }) {
const client = getSupabaseServerComponentClient({
admin: true,
});
const client = getSupabaseServerAdminClient();
const memberships = await getMemberships(props.account.id);
const { data, error } = await client.auth.admin.getUserById(props.account.id);
@@ -196,9 +194,7 @@ async function TeamAccountPage(props: {
}
async function SubscriptionsTable(props: { accountId: string }) {
const client = getSupabaseServerComponentClient({
admin: true,
});
const client = getSupabaseServerAdminClient();
const { data: subscription, error } = await client
.from('subscriptions')
@@ -345,9 +341,7 @@ async function SubscriptionsTable(props: { accountId: string }) {
}
async function getMemberships(userId: string) {
const client = getSupabaseServerComponentClient({
admin: true,
});
const client = getSupabaseServerAdminClient();
const memberships = await client
.from('accounts_memberships')
@@ -370,9 +364,7 @@ async function getMemberships(userId: string) {
}
async function getMembers(accountSlug: string) {
const client = getSupabaseServerComponentClient({
admin: true,
});
const client = getSupabaseServerAdminClient();
const members = await client.rpc('get_account_members', {
account_slug: accountSlug,

View File

@@ -1,6 +1,6 @@
import { notFound } from 'next/navigation';
import { getSupabaseServerComponentClient } from '@kit/supabase/server-component-client';
import { getSupabaseServerClient } from '@kit/supabase/server-client';
import { isSuperAdmin } from '../lib/server/utils/is-super-admin';
@@ -15,7 +15,7 @@ export function AdminGuard<Params extends object>(
Component: LayoutOrPageComponent<Params>,
) {
return async function AdminGuardServerComponentWrapper(params: Params) {
const client = getSupabaseServerComponentClient();
const client = getSupabaseServerClient();
const isUserSuperAdmin = await isSuperAdmin(client);
// if the user is not a super-admin, we redirect to a 404

View File

@@ -5,7 +5,8 @@ import { redirect } from 'next/navigation';
import { enhanceAction } from '@kit/next/actions';
import { getLogger } from '@kit/shared/logger';
import { getSupabaseServerActionClient } from '@kit/supabase/server-actions-client';
import { getSupabaseServerClient } from '@kit/supabase/server-client';
import { getSupabaseServerAdminClient } from '@kit/supabase/server-admin-client';
import {
BanUserSchema,
@@ -150,14 +151,14 @@ export const deleteAccountAction = adminAction(
);
function getAdminAuthService() {
const client = getSupabaseServerActionClient();
const adminClient = getSupabaseServerActionClient({ admin: true });
const client = getSupabaseServerClient();
const adminClient = getSupabaseServerAdminClient();
return createAdminAuthUserService(client, adminClient);
}
function getAdminAccountsService() {
const adminClient = getSupabaseServerActionClient({ admin: true });
const adminClient = getSupabaseServerAdminClient();
return createAdminAccountsService(adminClient);
}

View File

@@ -2,7 +2,7 @@ import 'server-only';
import { cache } from 'react';
import { getSupabaseServerComponentClient } from '@kit/supabase/server-component-client';
import { getSupabaseServerClient } from '@kit/supabase/server-client';
import { createAdminDashboardService } from '../services/admin-dashboard.service';
@@ -14,7 +14,7 @@ import { createAdminDashboardService } from '../services/admin-dashboard.service
export const loadAdminDashboard = cache(adminDashboardLoader);
function adminDashboardLoader() {
const client = getSupabaseServerComponentClient({ admin: true });
const client = getSupabaseServerClient();
const service = createAdminDashboardService(client);
return service.getDashboardData();

View File

@@ -1,6 +1,6 @@
import { notFound } from 'next/navigation';
import { getSupabaseServerActionClient } from '@kit/supabase/server-actions-client';
import { getSupabaseServerClient } from '@kit/supabase/server-client';
import { isSuperAdmin } from './is-super-admin';
@@ -11,7 +11,7 @@ import { isSuperAdmin } from './is-super-admin';
*/
export function adminAction<Args, Response>(fn: (params: Args) => Response) {
return async (params: Args) => {
const isAdmin = await isSuperAdmin(getSupabaseServerActionClient());
const isAdmin = await isSuperAdmin(getSupabaseServerClient());
if (!isAdmin) {
notFound();