* chore: migration to SvelteKit 2 * stage 1: migrate to svelte 5 and fix rerendering issues * stage 2: fix more $: reactivity across dashboard * fix merge conflicts * chore: migrate code in main to svelte 5 * chore: update preventDefault * chore: simplify tsconfig and remove unused mobileMenuRef in MobileMenu.svelte * chore: enforce .ts across dashboard * rename from classroomio-com to website * stage-3: Replace carbon icon svelte with lucide icon * update lock file * chore: finish icon replacement * fix: settings and setup page multiple rerender * stage 3: More icon and rerendering fixes * feat: setup drizzle and better auth * fix: onboarding validation error showing translation key #586 (#593) * fix: onboarding validation error showing translation key #586 * fix: remove debug log for profile update errors * chore: add a clean command * fix: remove message from email verification response
47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
import { json } from '@sveltejs/kit';
|
|
import sendEmail from '$mail/sendEmail';
|
|
|
|
// API to send invite to teacher
|
|
export async function POST({ fetch, request }) {
|
|
const body = await request.json();
|
|
const { org, email } = body;
|
|
|
|
console.log('/POST api/email/invite', body);
|
|
|
|
if (!org || !Object.keys(org).length || !email) {
|
|
return json({ success: false, message: 'Org data and Teacher name are required' }, { status: 400 });
|
|
}
|
|
|
|
const { id, name, siteName } = org;
|
|
|
|
const origin = request.headers.get('origin');
|
|
const inviteData = JSON.stringify({
|
|
email,
|
|
orgId: id,
|
|
orgSiteName: siteName
|
|
});
|
|
const inviteLink = `${origin}/invite/t/${encodeURIComponent(btoa(inviteData))}`;
|
|
console.log('inviteData', inviteData);
|
|
|
|
const emailData = [
|
|
{
|
|
from: `"Best from ClassroomIO" <notify@mail.classroomio.com>`,
|
|
to: email,
|
|
subject: `Join ${name} on ClassroomIO 😃`,
|
|
content: `
|
|
<p>Hey there,</p>
|
|
<p> You have been invited to join ${name} on ClassroomIO 🎉🎉🎉.</p>
|
|
<div>
|
|
<a class="button" href="${inviteLink}">Accept Invitation</a>
|
|
</div>
|
|
`
|
|
}
|
|
];
|
|
await sendEmail(fetch)(emailData);
|
|
|
|
return json({
|
|
success: true,
|
|
message: 'Email sent'
|
|
});
|
|
}
|