diff --git a/src/services/nnas/routes/support.ts b/src/services/nnas/routes/support.ts index 46522a8..6b4a3cc 100644 --- a/src/services/nnas/routes/support.ts +++ b/src/services/nnas/routes/support.ts @@ -2,8 +2,8 @@ import dns from 'node:dns'; import express from 'express'; import xmlbuilder from 'xmlbuilder'; import moment from 'moment'; -import { getPNIDByPID } from '@/database'; -import { sendEmailConfirmedEmail, sendConfirmationEmail, sendForgotPasswordEmail } from '@/util'; +import { getPNIDByEmailAddress, getPNIDByPID } from '@/database'; +import { sendEmailConfirmedEmail, sendConfirmationEmail, sendForgotPasswordEmail, sendEmailConfirmedParentalControlsEmail } from '@/util'; const router = express.Router(); @@ -125,6 +125,35 @@ router.get('/resend_confirmation', async (request: express.Request, response: ex response.status(200).send(''); }); +/** + * [GET] + * Replacement for: https://account.nintendo.net/v1/api/support/send_confirmation/pin/:email + * Description: Sends a users confirmation email that their email has been registered for parental controls + */ +router.get('/send_confirmation/pin/:email', async (request: express.Request, response: express.Response): Promise => { + const email = request.params.email; + + const pnid = await getPNIDByEmailAddress(email); + + if (!pnid) { + // TODO - Unsure if this is the right error + response.status(400).send(xmlbuilder.create({ + errors: { + error: { + code: '0130', + message: 'PID has not been registered yet' + } + } + }).end()); + + return; + } + + await sendEmailConfirmedParentalControlsEmail(pnid); + + response.status(200).send(''); +}); + /** * [GET] * Replacement for: https://account.nintendo.net/v1/api/support/forgotten_password/PID @@ -156,4 +185,4 @@ router.get('/forgotten_password/:pid', async (request: express.Request, response response.status(200).send(''); }); -export default router; \ No newline at end of file +export default router; diff --git a/src/util.ts b/src/util.ts index 753bfb3..0361952 100644 --- a/src/util.ts +++ b/src/util.ts @@ -224,6 +224,18 @@ export async function sendEmailConfirmedEmail(pnid: mongoose.HydratedDocument): Promise { + const options = { + to: pnid.email.address, + subject: '[Pretendo Network] Email address confirmed for Parental Controls', + username: pnid.username, + paragraph: 'your email address has been confirmed for use with Parental Controls.', + text: `Dear ${pnid.username}, \r\n\r\nYour email address has been confirmed for use with Parental Controls.` + }; + + await sendMail(options); +} + export async function sendForgotPasswordEmail(pnid: mongoose.HydratedDocument): Promise { const tokenOptions = { system_type: 0xF, // * API