Files
bobu/functions/src/auth/checkEmail.ts
2025-06-03 21:13:56 +09:00

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