Add sessionHolding template, unique 8-digit codes, reason slot for sessionCancelled, and disable unused notifications

This commit is contained in:
2026-08-21 10:44:51 +03:30
parent 5328f36f06
commit 091e519280
28 changed files with 2180 additions and 280 deletions
+33 -5
View File
@@ -11,7 +11,8 @@ const { generateUsername, generateSimplePassword } = require('../../utils/creden
const { sendAccountCreatedSms, sendPasswordResetSms } = require('../../utils/senders/smsMessages');
const logger = require('../../utils/logger');
const { mergeFullName, normalizeGender } = require('../../utils/userProfile');
const { pickNotifyFlags } = require('../../utils/notifyFlags');
const { resolveNotifyFlags } = require('../../utils/notifyResolver');
const { notifyAction } = require('../../utils/actionNotify');
const {
assertCanResetPasswordAndSms,
isCredentialsSmsDelivered
@@ -180,8 +181,24 @@ const createUserAdmin = async (body) => {
});
try {
if (pickNotifyFlags(body).sms) {
await sendAccountCreatedSms(profile.phoneNumber, username, plainPassword, user._id);
const notify = await resolveNotifyFlags(body, 'accountCreated');
if (notify.sms || notify.email || notify.bot) {
await notifyAction({
actionKey: 'accountCreated',
userId: user._id,
phoneNumber: profile.phoneNumber,
email: profile.email,
subject: 'ایجاد حساب کاربری',
body: `حساب کاربری شما ایجاد شد. نام کاربری: ${username} — کد کاربری: ${user.uniqueCode || ''}`,
smsHandler: () => sendAccountCreatedSms(
profile.phoneNumber,
username,
plainPassword,
user._id,
user.uniqueCode
),
requestSource: body
});
}
} catch (err) {
logger.error(`[createUserAdmin] Account SMS failed for ${profile.phoneNumber}: ${err.message}`);
@@ -287,8 +304,19 @@ const resetPasswordAndSendSms = async (id) => {
let smsSent = false;
try {
const sendResult = await sendPasswordResetSms(phoneNumber, username, plainPassword, user._id);
smsSent = isCredentialsSmsDelivered(sendResult);
const notify = await resolveNotifyFlags({}, 'passwordReset');
if (notify.sms || notify.email || notify.bot) {
const sendResult = await notifyAction({
actionKey: 'passwordReset',
userId: user._id,
phoneNumber,
email: user.email,
subject: 'بازنشانی رمز عبور',
body: `رمز عبور شما بازنشانی شد. نام کاربری: ${username} — کد کاربری: ${user.uniqueCode || ''}`,
smsHandler: () => sendPasswordResetSms(phoneNumber, username, plainPassword, user._id, user.uniqueCode)
});
smsSent = isCredentialsSmsDelivered(sendResult?.sms);
}
} catch (err) {
logger.error(`[resetPasswordAndSendSms] SMS failed for user=${user._id}: ${err.message}`);
}