Refactor authentication method to requireUser
Replaced the requireAuth method with requireUser to improve clarity and modified all instances where it was used. Renamed the import throughout multiple files and services and made changes accordingly, thus making it more specific and understandable that a logged-in user is needed. The return type of the method was also updated from Session to User to more accurately reflect the information it provides.
This commit is contained in:
@@ -7,7 +7,7 @@ import { z } from 'zod';
|
||||
import { getLineItemsFromPlanId } from '@kit/billing';
|
||||
import { getBillingGatewayProvider } from '@kit/billing-gateway';
|
||||
import { Logger } from '@kit/shared/logger';
|
||||
import { requireAuth } from '@kit/supabase/require-auth';
|
||||
import { requireUser } from '@kit/supabase/require-user';
|
||||
import { getSupabaseServerActionClient } from '@kit/supabase/server-actions-client';
|
||||
|
||||
import appConfig from '~/config/app.config';
|
||||
@@ -25,9 +25,9 @@ export async function createPersonalAccountCheckoutSession(params: {
|
||||
productId: string;
|
||||
}) {
|
||||
const client = getSupabaseServerActionClient();
|
||||
const { data, error } = await requireAuth(client);
|
||||
const { data: user, error } = await requireUser(client);
|
||||
|
||||
if (error ?? !data.user) {
|
||||
if (error ?? !user) {
|
||||
throw new Error('Authentication required');
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ export async function createPersonalAccountCheckoutSession(params: {
|
||||
|
||||
// in the case of personal accounts
|
||||
// the account ID is the same as the user ID
|
||||
const accountId = data.user.id;
|
||||
const accountId = user.id;
|
||||
|
||||
// the return URL for the checkout session
|
||||
const returnUrl = getCheckoutSessionReturnUrl();
|
||||
@@ -74,13 +74,13 @@ export async function createPersonalAccountCheckoutSession(params: {
|
||||
accountId,
|
||||
trialDays,
|
||||
paymentType: product.paymentType,
|
||||
customerEmail: data.user.email,
|
||||
customerEmail: user.email,
|
||||
customerId,
|
||||
});
|
||||
|
||||
Logger.info(
|
||||
{
|
||||
userId: data.user.id,
|
||||
userId: user.id,
|
||||
},
|
||||
`Checkout session created. Returning checkout token to client...`,
|
||||
);
|
||||
|
||||
@@ -43,6 +43,8 @@ export const loadTeamWorkspace = cache(async (accountSlug: string) => {
|
||||
|
||||
const accountData = accountResult.data[0];
|
||||
|
||||
// we cannot find any record for the selected organization
|
||||
// so we redirect the user to the home page
|
||||
if (!accountData) {
|
||||
return redirect(pathsConfig.app.home);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ import { notFound } from 'next/navigation';
|
||||
|
||||
import { getBillingGatewayProvider } from '@kit/billing-gateway';
|
||||
import { BillingSessionStatus } from '@kit/billing-gateway/components';
|
||||
import { requireAuth } from '@kit/supabase/require-auth';
|
||||
import { requireUser } from '@kit/supabase/require-user';
|
||||
import { getSupabaseServerComponentClient } from '@kit/supabase/server-component-client';
|
||||
|
||||
import billingConfig from '~/config/billing.config';
|
||||
@@ -66,8 +66,11 @@ export default withI18n(ReturnStripeSessionPage);
|
||||
|
||||
export async function loadCheckoutSession(sessionId: string) {
|
||||
const client = getSupabaseServerComponentClient();
|
||||
const { error } = await requireUser(client);
|
||||
|
||||
await requireAuth(client);
|
||||
if (error) {
|
||||
throw new Error('Authentication required');
|
||||
}
|
||||
|
||||
const gateway = await getBillingGatewayProvider(client);
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ import { z } from 'zod';
|
||||
|
||||
import { getLineItemsFromPlanId } from '@kit/billing';
|
||||
import { getBillingGatewayProvider } from '@kit/billing-gateway';
|
||||
import { requireAuth } from '@kit/supabase/require-auth';
|
||||
import { requireUser } from '@kit/supabase/require-user';
|
||||
import { getSupabaseServerActionClient } from '@kit/supabase/server-actions-client';
|
||||
|
||||
import appConfig from '~/config/app.config';
|
||||
@@ -33,13 +33,13 @@ export async function createTeamAccountCheckoutSession(params: {
|
||||
const productId = z.string().min(1).parse(params.productId);
|
||||
|
||||
// we require the user to be authenticated
|
||||
const { data: session } = await requireAuth(client);
|
||||
const { data: user } = await requireUser(client);
|
||||
|
||||
if (!session) {
|
||||
if (!user) {
|
||||
throw new Error('Authentication required');
|
||||
}
|
||||
|
||||
const userId = session.user.id;
|
||||
const userId = user.id;
|
||||
const accountId = params.accountId;
|
||||
|
||||
const hasPermission = await getPermissionsForAccountId(userId, accountId);
|
||||
@@ -67,7 +67,7 @@ export async function createTeamAccountCheckoutSession(params: {
|
||||
// find the customer ID for the account if it exists
|
||||
// (eg. if the account has been billed before)
|
||||
const customerId = await getCustomerIdFromAccountId(client, accountId);
|
||||
const customerEmail = session.user.email;
|
||||
const customerEmail = user.email;
|
||||
|
||||
// the return URL for the checkout session
|
||||
const returnUrl = getCheckoutSessionReturnUrl(params.slug);
|
||||
@@ -100,13 +100,13 @@ export async function createBillingPortalSession(formData: FormData) {
|
||||
})
|
||||
.parse(Object.fromEntries(formData));
|
||||
|
||||
const { data: session, error } = await requireAuth(client);
|
||||
const { data: user, error } = await requireUser(client);
|
||||
|
||||
if (error ?? !session) {
|
||||
if (error ?? !user) {
|
||||
throw new Error('Authentication required');
|
||||
}
|
||||
|
||||
const userId = session.user.id;
|
||||
const userId = user.id;
|
||||
|
||||
// we require the user to have permissions to manage billing for the account
|
||||
const hasPermission = await getPermissionsForAccountId(userId, accountId);
|
||||
|
||||
Reference in New Issue
Block a user