60 lines
2.0 KiB
TypeScript
60 lines
2.0 KiB
TypeScript
//NEEDS WORKS ON < PAST CODE >
|
|
|
|
import { onRequest } from 'firebase-functions/v2/https';
|
|
import { logger } from 'firebase-functions/v2';
|
|
// Import Request/Response from express
|
|
|
|
// Import the MIDDLEWARE HANDLER and db from config
|
|
import { corsMiddlewareHandler, db } from '../config'; // Use the middleware export name
|
|
// Import error utility
|
|
import { toErrorWithMessage } from '../utils';
|
|
|
|
export const checkEmailDuplicateV2 = onRequest(async (request, response) => {
|
|
return corsMiddlewareHandler(request, response, async () => {
|
|
logger.info('checkEmailDuplicate: Function invoked via CORS Middleware.');
|
|
|
|
if (request.method !== 'POST') {
|
|
logger.warn(`checkEmailDuplicate: Method not allowed: ${request.method}`);
|
|
response.status(405).send({ message: 'Method Not Allowed.' });
|
|
return;
|
|
}
|
|
|
|
const { email } = request.body;
|
|
// ... rest of your validation and try/catch logic using db and logger ...
|
|
logger.info(`checkEmailDuplicate: Checking email: ${email}`);
|
|
|
|
if (!email || typeof email !== 'string') {
|
|
logger.warn('checkEmailDuplicate: Missing or invalid email field.');
|
|
response.status(400).send({
|
|
/* ... */
|
|
});
|
|
return;
|
|
}
|
|
|
|
try {
|
|
const usersCollection = db.collection('users');
|
|
const querySnapshot = await usersCollection
|
|
.where('email', '==', email)
|
|
.limit(1)
|
|
.get();
|
|
|
|
if (!querySnapshot.empty) {
|
|
logger.info(`checkEmailDuplicate: Email ${email} exists.`);
|
|
response.send({ status: 'exists' });
|
|
} else {
|
|
logger.info(`checkEmailDuplicate: Email ${email} is available.`);
|
|
response.send({ status: 'available' });
|
|
}
|
|
} catch (error: unknown) {
|
|
const errorMsg = toErrorWithMessage(error).message;
|
|
logger.error(
|
|
`checkEmailDuplicate: Error checking email ${email}: ${errorMsg}`,
|
|
{ error },
|
|
);
|
|
response.status(500).send({
|
|
/* ... */
|
|
});
|
|
}
|
|
}); // End of corsMiddlewareHandler callback
|
|
}); // End of onRequest
|