12 implement twilio sms #37

Merged
BenjaminPalko merged 26 commits from 12-implement-twilio-sms into master 2025-01-02 20:11:28 -05:00
7 changed files with 35 additions and 22 deletions
Showing only changes of commit 5287eb794a - Show all commits

6
.env
View file

@ -1,7 +1,7 @@
# TWILIO
VITE_TWILIO_ACCOUNT_SID=
VITE_TWILIO_AUTH_TOKEN=
VITE_TWILIO_PHONE_NUMBER=
TWILIO_ACCOUNT_SID=
TWILIO_AUTH_TOKEN=
TWILIO_PHONE_NUMBER=
# PRISMA
piopi commented 2024-12-31 22:28:14 -05:00 (Migrated from github.com)
Review

Prefill them please with CHANGE_ME

Prefill them please with CHANGE_ME
DATABASE_URL="postgres://hestia:test123@localhost:5432/hestia"

7
src/app.d.ts vendored
View file

@ -1,4 +1,7 @@
// See https://svelte.dev/docs/kit/types#app.d.ts
import type { TwilioConfiguration } from '$lib/server/twilio';
// for information about these interfaces
declare global {
namespace App {
@ -6,6 +9,10 @@ declare global {
interface Locals {
user: import('lucia').User | null;
session: import('lucia').Session | null;
twilio: {
config: TwilioConfiguration;
client: import('twilio').Twilio;
};
}
// interface PageData {}
// interface PageState {}

12
src/hooks.server.ts Normal file
View file

@ -0,0 +1,12 @@
import { TwilioConfig } from '$lib/server/twilio';
import twilio from 'twilio';
export async function handle({ event, resolve }) {
const twilioConfig = TwilioConfig();
const twilioClient = twilio(twilioConfig.twilio_account_sid, twilioConfig.twilio_auth_token);
event.locals.twilio = {
config: twilioConfig,
client: twilioClient,
};
return await resolve(event);
}

View file

@ -1 +1 @@
export * from './twilio.client';
export * from './twilio.config';

View file

@ -1,4 +0,0 @@
import twilio from 'twilio';
import { TwilioConfig } from './twilio.config';
export const twilioClient = twilio(TwilioConfig.twilio_account_sid, TwilioConfig.twilio_auth_token);

View file

@ -1,3 +1,4 @@
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
import { env } from '$env/dynamic/private';
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
import { PhoneRegex } from '$lib/regex';
import { logger } from '$lib/server/logger';
import { z } from 'zod';
@ -8,24 +9,22 @@ export interface TwilioConfiguration {
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
twilio_phone_number: string;
}
const LoadConfig = (): TwilioConfiguration => {
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
export const TwilioConfig = (): TwilioConfiguration => {
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
const { success, data, error } = z
.object({
VITE_TWILIO_ACCOUNT_SID: z.string(),
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
VITE_TWILIO_AUTH_TOKEN: z.string(),
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
VITE_TWILIO_PHONE_NUMBER: z.string().regex(PhoneRegex),
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
TWILIO_ACCOUNT_SID: z.string().min(1),
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
TWILIO_AUTH_TOKEN: z.string().min(1),
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
TWILIO_PHONE_NUMBER: z.string().regex(PhoneRegex),
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
})
.safeParse(import.meta.env);
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
.safeParse(env);
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
if (!success) {
logger.error(error.message);
}
return {
twilio_account_sid: data!.VITE_TWILIO_ACCOUNT_SID,
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
twilio_auth_token: data!.VITE_TWILIO_AUTH_TOKEN,
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
twilio_phone_number: data!.VITE_TWILIO_PHONE_NUMBER,
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
twilio_account_sid: data!.TWILIO_ACCOUNT_SID,
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
twilio_auth_token: data!.TWILIO_AUTH_TOKEN,
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
twilio_phone_number: data!.TWILIO_PHONE_NUMBER,
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
};
};
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
export const TwilioConfig = LoadConfig();
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`

piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`
piopi commented 2024-12-31 22:43:38 -05:00 (Migrated from github.com)
Review

Add a script instead + add it to bun dev

Add a script instead + add it to `bun dev`

View file

@ -1,7 +1,5 @@
import { PhoneRegex } from '$lib/regex';
import { logger } from '$lib/server/logger';
import { twilioClient } from '$lib/server/twilio';
import { TwilioConfig } from '$lib/server/twilio/twilio.config';
import { fail, type Actions } from '@sveltejs/kit';
import zod from 'zod';
@ -31,11 +29,12 @@ export const actions = {
return fail(400, { error: 'invalid_message' });
}
const twilio = event.locals.twilio;
try {
const result = await twilioClient.messages.create({
const result = await twilio.client.messages.create({
to: phone,
body: message,
from: TwilioConfig.twilio_phone_number,
from: twilio.config.twilio_phone_number,
});
logger.debug(result);
} catch (e) {