Joywork/js/contacts_visibility.js
2026-05-22 21:21:54 +03:00

63 lines
2.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Общие маскирующие 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);