lk.zachem.info/app/Modules/User/Models/User.php

104 lines
2.4 KiB
PHP
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.

<?php
namespace Modules\User\Models;
use App\Models\ForcedPassword;
use Laravel\Sanctum\HasApiTokens;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasManyThrough;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable, ForcedPassword;
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'name',
'phone',
'email',
'password',
];
/**
* The attributes that should be hidden for serialization.
*
* @var array<int, string>
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast.
*
* @var array<string, string>
*/
protected $casts = [
'email_verified_at' => 'datetime',
'password' => 'hashed',
];
public function getPartialsName()
{
$name = explode(' ', $this->name);
return [
'firstName' => (array_key_exists(0, $name) ? $name[0] : ''),
'secondName' => (array_key_exists(1, $name) ? $name[1] : ''),
'familyName' => (array_key_exists(2, $name) ? $name[2] : '')
];
}
/**
* Функция проверят наличие роли у пользователя
* @param mixed $roleId - лучше брать из констант модели Modules\User\Models\Role
* @return bool
*/
public function hasRole($roleId)
{
$roles = $this->roles()->get();
if ($roles->where('id', $roleId)->count())
{
return true;
}
return false;
}
public function isAdmin()
{
return $this->hasRole(Role::SUPER_ADMIN);
}
public function isCityManager()
{
return $this->hasRole(Role::CITY_MANAGER);
}
public function roles(): HasManyThrough
{
return $this->hasManyThrough(
Role::class
,
UserRole::class
,
'user_id'
,
'id'
,
'id'
,
'role_id'
);
}
}