63 lines
2.5 KiB
JavaScript
63 lines
2.5 KiB
JavaScript
/**
|
||
* Общие маскирующие JS-функции для контактных данных клиента.
|
||
* Зеркало PHP-helper'ов из engine/helpers/contacts.php.
|
||
*
|
||
* Зависимости: глобальная переменная window.userPermissions должна быть
|
||
* проброшена сервером (см. шаблон header'а).
|
||
*
|
||
* Подключается до main.js и crm.js.
|
||
*/
|
||
(function (window) {
|
||
'use strict';
|
||
|
||
/**
|
||
* Маскирует телефон клиента, сохраняя ПЕРВУЮ цифру после "+" (код страны).
|
||
* Примеры:
|
||
* "79991234567" → "+7 *** *** ** **" (российский)
|
||
* "+12025551234" → "+1 *** *** ** **" (США/Канада)
|
||
* "+491701234567" → "+4 *** *** ** **" (Германия)
|
||
* "+861812345678" → "+8 *** *** ** **" (Китай)
|
||
* Если в строке нет цифр — возвращаем "+ *** *** ** **".
|
||
*/
|
||
window.maskClientPhone = function (phone) {
|
||
if (!phone) return phone;
|
||
var digits = String(phone).replace(/[^0-9]/g, '');
|
||
if (digits === '') return '+ *** *** ** **';
|
||
return '+' + digits.charAt(0) + ' *** *** ** **';
|
||
};
|
||
|
||
/**
|
||
* Маскирует email клиента.
|
||
* Пример: "ivan@mail.ru" → "i***@m***.ru".
|
||
* Невалидный формат → "***@***".
|
||
*/
|
||
window.maskClientEmail = function (email) {
|
||
if (!email) return email;
|
||
var m = String(email).match(/^(.)[^@]*@(.)[^.]*(\..+)$/u);
|
||
if (!m) return '***@***';
|
||
return m[1] + '***@' + m[2] + '***' + m[3];
|
||
};
|
||
|
||
/**
|
||
* Проверка: должны ли скрываться контакты клиентов для текущего пользователя.
|
||
* Источник истины — window.userPermissions.hide_client_contacts.
|
||
*/
|
||
window.shouldHideContacts = function () {
|
||
return !!(window.userPermissions && window.userPermissions.hide_client_contacts == 1);
|
||
};
|
||
|
||
/**
|
||
* Условное маскирование одного значения телефона.
|
||
*/
|
||
window.maskPhoneIfNeeded = function (phone) {
|
||
return window.shouldHideContacts() ? window.maskClientPhone(phone) : phone;
|
||
};
|
||
|
||
/**
|
||
* Условное маскирование одного значения email.
|
||
*/
|
||
window.maskEmailIfNeeded = function (email) {
|
||
return window.shouldHideContacts() ? window.maskClientEmail(email) : email;
|
||
};
|
||
})(window);
|