Joywork/js/contacts_visibility.js

63 lines
2.5 KiB
JavaScript
Raw Normal View History

2026-05-22 20:21:54 +02:00
/**
* Общие маскирующие 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);