41 create tenant twilio config #62
6 changed files with 50 additions and 2 deletions
4
src/app.d.ts
vendored
4
src/app.d.ts
vendored
|
|
@ -1,5 +1,7 @@
|
|||
// See https://svelte.dev/docs/kit/types#app.d.ts
|
||||
|
||||
import type { Tenant, User } from '@prisma/client';
|
||||
|
||||
// for information about these interfaces
|
||||
declare global {
|
||||
namespace App {
|
||||
|
|
@ -10,6 +12,8 @@ declare global {
|
|||
orgId?: string | null;
|
||||
sessionId?: string;
|
||||
};
|
||||
user: User;
|
||||
tenant: Tenant;
|
||||
}
|
||||
// interface PageData {}
|
||||
// interface PageState {}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
import { loadUserEnv } from '$lib/server/middleware';
|
||||
import { sequence } from '@sveltejs/kit/hooks';
|
||||
import { withClerkHandler } from 'clerk-sveltekit/server';
|
||||
|
||||
export const handle = withClerkHandler();
|
||||
export const handle = sequence(withClerkHandler(), loadUserEnv());
|
||||
|
|
|
|||
1
src/lib/server/middleware/index.ts
Normal file
1
src/lib/server/middleware/index.ts
Normal file
|
|
@ -0,0 +1 @@
|
|||
export * from './server';
|
||||
1
src/lib/server/middleware/server/index.ts
Normal file
1
src/lib/server/middleware/server/index.ts
Normal file
|
|
@ -0,0 +1 @@
|
|||
export * from './loadUserEnv';
|
||||
40
src/lib/server/middleware/server/loadUserEnv.ts
Normal file
40
src/lib/server/middleware/server/loadUserEnv.ts
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
import { logger } from '$lib/server/logger';
|
||||
import { prisma } from '$lib/server/prisma';
|
||||
import type { Handle } from '@sveltejs/kit';
|
||||
|
||||
const unAuthedRoutes = ['/login'];
|
||||
|
||||
export function loadUserEnv(): Handle {
|
||||
return async ({ event, resolve }) => {
|
||||
if (event.route.id === null || unAuthedRoutes.includes(event.route.id)) {
|
||||
return resolve(event);
|
||||
}
|
||||
try {
|
||||
const tenant = await prisma.tenant.findUniqueOrThrow({
|
||||
where: {
|
||||
clerkOrganizationId: event.locals.auth.orgId ?? undefined,
|
||||
},
|
||||
});
|
||||
const user = await prisma.user.findUniqueOrThrow({
|
||||
where: {
|
||||
clerkId_tenantId: { clerkId: event.locals.auth.userId!, tenantId: tenant.id },
|
||||
},
|
||||
});
|
||||
|
||||
event.locals.tenant = tenant;
|
||||
event.locals.user = user;
|
||||
} catch (error) {
|
||||
if (error instanceof Error) {
|
||||
logger.error(error.message);
|
||||
}
|
||||
return new Response(null, {
|
||||
status: 307,
|
||||
headers: {
|
||||
location: '/login',
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
return resolve(event);
|
||||
};
|
||||
}
|
||||
|
|
@ -21,7 +21,7 @@ export const load = async (event) => {
|
|||
export const actions = {
|
||||
update: async (event) => {
|
||||
const form = await event.request.formData();
|
||||
const tenantId = event.locals.auth!.orgId!;
|
||||
const tenantId = event.locals.tenant.id;
|
||||
|
||||
if (!form.has('accountSID')) {
|
||||
return fail(400, { error: 'account_sid_missing' });
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue