// registered /auth route
fastify.route({
method: ['GET', 'POST'],
url: '/*',
async handler(request, reply) {
try {
const url = new URL(request.url, `http://${request.headers.host}`);
const headers = new Headers();
Object.entries(request.headers).forEach(([key, value]) => {
if (value) headers.append(key, value.toString());
});
const req = new Request(url.toString(), {
method: request.method,
headers,
body: request.body ? JSON.stringify(request.body) : undefined,
});
const response = await auth.handler(req);
reply.status(response.status);
response.headers.forEach((value, key) => reply.header(key, value));
reply.send(response.body ? await response.text() : null);
} catch (error) {
fastify.log.error('Authentication Error:');
fastify.log.error(error);
reply.status(StatusCodes.INTERNAL_SERVER_ERROR).send({
error: ReasonPhrases.INTERNAL_SERVER_ERROR,
code: 'AUTH_FAILURE',
});
}
},
});
fastify.post('/is-email-available', {
handler: async (req, res) => {
const { email } = req.body;
const available = await userService.isEmailAvailable(email);
res.status(StatusCodes.OK).send({ available });
},
});
// registered /auth route
fastify.route({
method: ['GET', 'POST'],
url: '/*',
async handler(request, reply) {
try {
const url = new URL(request.url, `http://${request.headers.host}`);
const headers = new Headers();
Object.entries(request.headers).forEach(([key, value]) => {
if (value) headers.append(key, value.toString());
});
const req = new Request(url.toString(), {
method: request.method,
headers,
body: request.body ? JSON.stringify(request.body) : undefined,
});
const response = await auth.handler(req);
reply.status(response.status);
response.headers.forEach((value, key) => reply.header(key, value));
reply.send(response.body ? await response.text() : null);
} catch (error) {
fastify.log.error('Authentication Error:');
fastify.log.error(error);
reply.status(StatusCodes.INTERNAL_SERVER_ERROR).send({
error: ReasonPhrases.INTERNAL_SERVER_ERROR,
code: 'AUTH_FAILURE',
});
}
},
});
fastify.post('/is-email-available', {
handler: async (req, res) => {
const { email } = req.body;
const available = await userService.isEmailAvailable(email);
res.status(StatusCodes.OK).send({ available });
},
});