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
|
// See https://svelte.dev/docs/kit/types#app.d.ts
|
||||||
|
|
||||||
|
import type { Tenant, User } from '@prisma/client';
|
||||||
|
|
||||||
// for information about these interfaces
|
// for information about these interfaces
|
||||||
declare global {
|
declare global {
|
||||||
namespace App {
|
namespace App {
|
||||||
|
|
@ -10,6 +12,8 @@ declare global {
|
||||||
orgId?: string | null;
|
orgId?: string | null;
|
||||||
sessionId?: string;
|
sessionId?: string;
|
||||||
};
|
};
|
||||||
|
user: User;
|
||||||
|
tenant: Tenant;
|
||||||
}
|
}
|
||||||
// interface PageData {}
|
// interface PageData {}
|
||||||
// interface PageState {}
|
// interface PageState {}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { loadUserEnv } from '$lib/server/middleware';
|
||||||
|
import { sequence } from '@sveltejs/kit/hooks';
|
||||||
import { withClerkHandler } from 'clerk-sveltekit/server';
|
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 = {
|
export const actions = {
|
||||||
update: async (event) => {
|
update: async (event) => {
|
||||||
const form = await event.request.formData();
|
const form = await event.request.formData();
|
||||||
const tenantId = event.locals.auth!.orgId!;
|
const tenantId = event.locals.tenant.id;
|
||||||
|
|
||||||
if (!form.has('accountSID')) {
|
if (!form.has('accountSID')) {
|
||||||
return fail(400, { error: 'account_sid_missing' });
|
return fail(400, { error: 'account_sid_missing' });
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue