SVSP
TECHNOLOGIES

Документация

CrmUser

Общее описание

Класс CrmUser представляет собой сущность пользователя в системе Ultralight CRM. Это основная бизнес-сущность, которая создается автоматически при установке системы и используется для аутентификации и авторизации пользователей.

Основная информация

Назначение

Сущность CrmUser предназначена для:

Методы

groups()

Возвращает связь многие-ко-многим для соединения пользователя с группами.

Возвращает: Объект связи BelongsToMany

Пример использования:

// Получение всех групп пользователя
$userGroups = $user->groups;

// Проверка принадлежности к группе
$inGroup = $user->groups()->where('crm_group_id', $groupId)->exists();

// Добавление пользователя в группу
$user->groups()->attach($groupId);

// Удаление пользователя из группы
$user->groups()->detach($groupId);

userInfo()

Возвращает связь один-ко-многим для соединения пользователя с контактной информацией.

Возвращает: Объект связи HasMany

Пример использования:

// Получение всей контактной информации пользователя
$contactInfo = $user->userInfo;

// Получение только телефонов
$phones = $user->userInfo()->where('type', 'PHONE')->get();

// Получение только email
$emails = $user->userInfo()->where('type', 'EMAIL')->get();

rewritePhones($phones)

Перезаписывает телефонные номера пользователя.

Параметры:

Исключения:

Логика работы:

  1. Проверяет уровень доступа пользователя (должен быть 0)
  2. Удаляет все существующие записи телефонов пользователя
  3. Создает новые записи для каждого телефона из массива

Пример использования:

// Обновление телефонных номеров пользователя
$user->rewritePhones([
'+79991234567',
'+79887654321'
]);

rewriteEmails(array $emails)

Функция добавляет дополнительные email пользователя. Новая электронная почта добавляется, только если за пользователем не закреплен добавляемый email.

Параметры:

Исключения:

Логика работы:

  1. Проверяет уровень доступа пользователя (должен быть 0)
  2. Удаляет все существующие записи email пользователя
  3. Создает новые записи для каждого email из массива

Пример использования:

// Обновление email адресов пользователя
$user->rewriteEmails([
'user@company.com',
'user@gmail.com'
]);

rewriteGroups(array $groups)

Обновляет группы пользователя.

Параметры:

Исключения:

Логика работы:

  1. Проверяет уровень доступа пользователя (должен быть 0)
  2. Удаляет пользователя из всех групп
  3. Добавляет пользователя в указанные группы (если is_active = 1)

Пример использования:

// Обновление групп пользователя
$user->rewriteGroups([
[1, 1], // Администраторы, активен
[2, 1], // Сотрудники, активен
[3, 0] // Отдел продаж, неактивен
]);

Наследуемые методы от Entity

Класс использует trait EntityTrait, который предоставляет следующие методы:

initialize(int $id, int $typeId, bool $dnCheckRights = false)

Инициализирует экземпляр сущности с указанными параметрами.

getField(string $name)

Получает значение поля сущности по его имени.

setField(string $name, $value)

Устанавливает значение поля сущности.

delete()

Удаляет экземпляр сущности из базы данных.

save()

Сохраняет изменения в экземпляре сущности.

Поля сущности

Сущность CrmUser содержит следующие поля:

Основные поля

Защищенные свойства

Уровни доступа

УровеньОписание
0Полный доступ (чтение и запись)
1Только чтение
2Доступ запрещен

Примечание: Уровень доступа пользователя определяется через CrmAuthorization::getAccess() и зависит от групп, к которым он принадлежит.

Механизм работы

Аутентификация

Сущность использует стандартную систему аутентификации Laravel:

Контактная информация

Дополнительная контактная информация хранится в отдельной сущности CrmUserInfo:

Принадлежность к группам

Пользователь может принадлежать нескольким группам:

Практическое использование

Создание пользователя

// Создание нового пользователя
$userId = EntityTable::createEntity(1, [
'name' => 'Иван Иванов',
'email' => 'ivan@example.com',
'password' => bcrypt('secret'),
'appeal' => 'Уважаемый',
'primary_email' => 'ivan@company.com',
'primary_phone' => '+79991234567',
'post' => 'Менеджер'
]);

// Инициализация сущности
$user = new CrmUser();
$user->initialize($userId->entityId, 1);

Управление контактной информацией

// Обновление телефонных номеров
$user->rewritePhones([
'+79991234567',
'+79887654321',
'+79776543210'
]);

// Обновление email адресов
$user->rewriteEmails([
'ivan@company.com',
'ivan@gmail.com',
'i.ivanov@yahoo.com'
]);

Управление группами

// Добавление пользователя в группы
// Формат: [group_id, is_active]
$user->rewriteGroups([
[1, 1], // Администраторы
[2, 1], // Сотрудники
[3, 1] // Отдел продаж
]);

// Получение групп пользователя
$userGroups = $user->groups;

// Проверка принадлежности к группе администраторов
$isAdmin = $user->groups()->where('crm_group_id', 1)->exists();

Получение информации о пользователе

// Получение основной информации
echo $user->getField('name');
echo $user->getField('email');
echo $user->getField('post');

// Получение контактной информации
$phones = $user->userInfo()->where('type', 'PHONE')->get();
$emails = $user->userInfo()->where('type', 'EMAIL')->get();

foreach ($phones as $phone) {
echo $phone->info;
}

Безопасность

Хранение паролей

Уровни доступа

Защита данных

Рекомендации по использованию

  1. Валидируйте данные — при создании и обновлении пользователя
  2. Используйте хеширование — для паролей
  3. Ограничьте доступ — к методам изменения данных
  4. Документируйте политики — управления пользователями
  5. Регулярно аудируйте — изменения в учетных записях

Заключение

Сущность CrmUser является фундаментальным компонентом системы Ultralight CRM. Она обеспечивает надежную аутентификацию и авторизацию пользователей, а также гибкое управление их данными и правами доступа. Благодаря своей архитектуре, сущность эффективно выполняет свою функцию управления пользователями системы.

SVSP
TECHNOLOGIES
Политика конфиденциальности
Политика конфиденциальности