feat: mask Iranian phone numbers in user-generated text fields

کاربران نتونن با گذاشتن شماره موبایل/تلفن توی بیو، کپشن پست/ریلز، توضیحاتِ
فروشگاه/کالا/پروژه/دوره/پروفایلِ آموزشگاه، بیرون از پلتفرم تماس بدن. یک
util مشترک (utils/phoneNumberMasking.js) شماره‌های ایرانی رو حتی وقتی
رقم‌ها با فاصله/خط‌فاصله/نقطه از هم جدا شده باشن تشخیص می‌ده و فقط همون
بخش رو با * جایگزین می‌کنه — بدون اینکه به قیمت/سایز/کد سفارش و بقیه‌ی
اعدادِ عادی دست بزنه. موقعِ ذخیره (نه نمایش) اعمال می‌شه، پس هیچ endpointِ
خوندنی نیاز به تغییر نداره.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
payacom
2026-09-15 15:54:26 +03:30
parent 5f99516078
commit 26979057d7
8 changed files with 102 additions and 14 deletions

View File

@@ -1,6 +1,7 @@
/* eslint-disable camelcase */
const UserModel = require('../../../models/UserModel')
const jwt = require('jsonwebtoken')
const { maskPhoneNumbers } = require('../../../utils/phoneNumberMasking')
const setConversation = async (req, res, next) => {
try {
@@ -23,7 +24,7 @@ const setConversation = async (req, res, next) => {
})
}
user.bio = bio
user.bio = maskPhoneNumbers(bio)
user.conversation_projects = conversation_projects
await user.save()
@@ -58,7 +59,7 @@ const updateConversation = async (req, res, next) => {
message: 'کاربری با این شناسه یافت نشد'
})
}
user.bio = bio
user.bio = maskPhoneNumbers(bio)
user.conversation_projects = conversation_projects
await user.save()