feat: send password change notice on every endpoint

This commit is contained in:
limes
2026-08-29 19:57:07 +02:00
parent c378553fe4
commit c1a885602d
4 changed files with 11 additions and 4 deletions

View File

@@ -2,7 +2,7 @@ import crypto from 'node:crypto';
import express from 'express';
import bcrypt from 'bcrypt';
import { PasswordResetToken } from '@/models/password-reset-token';
import { nintendoPasswordHash } from '@/util';
import { nintendoPasswordHash, sendPasswordResetNoticeEmail } from '@/util';
import { SystemType } from '@/types/common/system-types';
import { TokenType } from '@/types/common/token-types';
import { getPNIDByPID } from '@/database';
@@ -177,6 +177,8 @@ router.post('/', passwordResetRatelimit, async (request: express.Request, respon
await pnid.removeAllTokens();
await pnid.save();
await sendPasswordResetNoticeEmail(pnid);
response.json({
app: 'api',
status: 200

View File

@@ -2,7 +2,7 @@ import crypto from 'node:crypto';
import bcrypt from 'bcrypt';
import { Status, ServerError } from 'nice-grpc';
import { PasswordResetToken } from '@/models/password-reset-token';
import { nintendoPasswordHash } from '@/util';
import { nintendoPasswordHash, sendPasswordResetNoticeEmail } from '@/util';
import { getPNIDByPID } from '@/database';
import { SystemType } from '@/types/common/system-types';
import { TokenType } from '@/types/common/token-types';
@@ -92,5 +92,7 @@ export async function resetPassword(request: ResetPasswordRequest): Promise<Empt
await pnid.removeAllTokens();
await pnid.save();
await sendPasswordResetNoticeEmail(pnid);
return {};
}

View File

@@ -2,7 +2,7 @@ import crypto from 'node:crypto';
import bcrypt from 'bcrypt';
import { Status, ServerError } from 'nice-grpc';
import { PasswordResetToken } from '@/models/password-reset-token';
import { nintendoPasswordHash } from '@/util';
import { nintendoPasswordHash, sendPasswordResetNoticeEmail } from '@/util';
import { getPNIDByPID } from '@/database';
import { SystemType } from '@/types/common/system-types';
import { TokenType } from '@/types/common/token-types';
@@ -91,5 +91,7 @@ export async function resetPassword(request: ResetPasswordRequest): Promise<Rese
await pnid.removeAllTokens();
await pnid.save();
await sendPasswordResetNoticeEmail(pnid);
return {};
}

View File

@@ -6,7 +6,7 @@ import moment from 'moment';
import deviceCertificateMiddleware from '@/middleware/device-certificate';
import { deviceRatelimit } from '@/middleware/ratelimit';
import { connection as databaseConnection, doesPNIDExist, getPNIDProfileJSONByPID } from '@/database';
import { getAgeFromDate, getValueFromHeaders, nintendoPasswordHash, sendConfirmationEmail, sendPNIDDeletedEmail } from '@/util';
import { getAgeFromDate, getValueFromHeaders, nintendoPasswordHash, sendConfirmationEmail, sendPNIDDeletedEmail, sendPasswordResetNoticeEmail } from '@/util';
import IP2LocationManager from '@/ip2location';
import { PNID } from '@/models/pnid';
import { NEXAccount } from '@/models/nex-account';
@@ -652,6 +652,7 @@ router.put('/@me', async (request: express.Request, response: express.Response):
pnid.password = passwordHash;
await pnid.removeAllTokens();
await sendPasswordResetNoticeEmail(pnid);
}
pnid.gender = gender;