forked from mirror/crumbs-original
Co-authored-by: fredicious <1580688+fredicious@users.noreply.github.com>
27 lines
1010 B
TypeScript
27 lines
1010 B
TypeScript
import { json, error } from '@sveltejs/kit';
|
|
import type { RequestHandler } from './$types.js';
|
|
import { getUserId } from '$lib/server/api-utils.js';
|
|
import { updateUserProfile, getUser } from '$lib/server/auth.js';
|
|
import { isEmailConfigured, sendEmailChangedEmail } from '$lib/server/email.js';
|
|
|
|
export const PUT: RequestHandler = async ({ request, ...event }) => {
|
|
const userId = getUserId(event);
|
|
const { displayName, email } = await request.json();
|
|
|
|
if (email !== undefined && !email) {
|
|
throw error(400, 'Email cannot be empty');
|
|
}
|
|
|
|
// Capture old email before update to notify on change
|
|
const existingUser = email !== undefined ? getUser(userId) : null;
|
|
|
|
updateUserProfile(userId, { displayName, email });
|
|
|
|
// Send notification to old email when email address changes
|
|
if (isEmailConfigured() && existingUser?.email && email && existingUser.email !== email) {
|
|
sendEmailChangedEmail(existingUser.email, existingUser.displayName, email).catch(() => {});
|
|
}
|
|
|
|
return json({ success: true });
|
|
};
|