Класс CrmUser представляет собой сущность пользователя в системе Ultralight CRM. Это основная бизнес-сущность, которая создается автоматически при установке системы и используется для аутентификации и авторизации пользователей.
App\Models\CrmUsercrm_userAuthenticatable (Laravel)Сущность 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)Перезаписывает телефонные номера пользователя.
Параметры:
$phones — массив телефонных номеровИсключения:
Exception — если у пользователя нет прав на записьЛогика работы:
Пример использования:
// Обновление телефонных номеров пользователя
$user->rewritePhones([
'+79991234567',
'+79887654321'
]);
rewriteEmails(array $emails)Функция добавляет дополнительные email пользователя. Новая электронная почта добавляется, только если за пользователем не закреплен добавляемый email.
Параметры:
$emails — массив email адресовИсключения:
Exception — если у пользователя нет прав на записьЛогика работы:
Пример использования:
// Обновление email адресов пользователя
$user->rewriteEmails([
'user@company.com',
'user@gmail.com'
]);
rewriteGroups(array $groups)Обновляет группы пользователя.
Параметры:
$groups — массив групп в формате [[group_id, is_active]]Исключения:
Exception — если у пользователя нет прав на записьЛогика работы:
Пример использования:
// Обновление групп пользователя
$user->rewriteGroups([
[1, 1], // Администраторы, активен
[2, 1], // Сотрудники, активен
[3, 0] // Отдел продаж, неактивен
]);
Класс использует trait EntityTrait, который предоставляет следующие методы:
initialize(int $id, int $typeId, bool $dnCheckRights = false)Инициализирует экземпляр сущности с указанными параметрами.
getField(string $name)Получает значение поля сущности по его имени.
setField(string $name, $value)Устанавливает значение поля сущности.
delete()Удаляет экземпляр сущности из базы данных.
save()Сохраняет изменения в экземпляре сущности.
Сущность CrmUser содержит следующие поля:
id — первичный ключ (автоинкремент)name — имя пользователяemail — email пользователя (уникальный)password — хеш пароляappeal — обращение (например, «Уважаемый»)primary_email — основной emailemails — дополнительные email (хранятся в crm_user_info)primary_phone — основной телефонphones — дополнительные телефоны (хранятся в crm_user_info)post — должностьemail_verified_at — дата подтверждения emailremember_token — токен для функции «Запомнить меня»created_at — дата созданияupdated_at — дата обновленияtable — имя таблицы: crm_userfillable — массив полей, которые могут быть массово присвоены:protected $fillable = [ 'name', 'email', 'password', 'appeal', "primary_email", "emails", "primary_phone", "phones", "post" ];hidden — массив полей, которые скрываются при преобразовании в массив/JSON:protected $hidden = ['password', 'remember_token'];timestamps — отключены: public $timestamps = false;| Уровень | Описание |
|---|---|
| 0 | Полный доступ (чтение и запись) |
| 1 | Только чтение |
| 2 | Доступ запрещен |
Примечание: Уровень доступа пользователя определяется через CrmAuthorization::getAccess() и зависит от групп, к которым он принадлежит.
Сущность использует стандартную систему аутентификации Laravel:
email и password для входаremember_token для функции «Запомнить меня»email_verified_at для подтверждения emailДополнительная контактная информация хранится в отдельной сущности CrmUserInfo:
user_idrewritePhones() и rewriteEmails()Пользователь может принадлежать нескольким группам:
user_grouprewriteGroups()// Создание нового пользователя
$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;
}
password скрыто при преобразовании в массив/JSONremember_token скрытоСущность CrmUser является фундаментальным компонентом системы Ultralight CRM. Она обеспечивает надежную аутентификацию и авторизацию пользователей, а также гибкое управление их данными и правами доступа. Благодаря своей архитектуре, сущность эффективно выполняет свою функцию управления пользователями системы.