Add sessionHolding template, unique 8-digit codes, reason slot for sessionCancelled, and disable unused notifications
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
// /components/users/userModel.js
|
||||
|
||||
const mongoose = require('mongoose');
|
||||
const uniqueCodePlugin = require('../../utils/mongooseUniqueCodePlugin');
|
||||
|
||||
const refreshTokenSchema = new mongoose.Schema({
|
||||
token: { type: String, required: true },
|
||||
@@ -131,4 +132,6 @@ const userSchema = new mongoose.Schema({
|
||||
timestamps: true
|
||||
});
|
||||
|
||||
userSchema.plugin(uniqueCodePlugin);
|
||||
|
||||
module.exports = mongoose.model('User', userSchema);
|
||||
|
||||
@@ -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}`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user