Spaces:
Sleeping
Sleeping
File size: 1,381 Bytes
10dc6f2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | <?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
use HasFactory, Notifiable;
protected $fillable = ['name', 'email', 'password', 'role', 'phone'];
protected $hidden = ['password', 'remember_token'];
protected function casts(): array
{
return [
'email_verified_at' => 'datetime',
'password' => 'hashed',
];
}
// ββ Role Helpers βββββββββββββββββββββββββββββββββββββ
public function isAdmin(): bool { return $this->role === 'admin'; }
public function isOrganizer(): bool { return $this->role === 'organizer'; }
public function isCustomer(): bool { return $this->role === 'customer'; }
public function hasAdminAccess(): bool
{
return in_array($this->role, ['admin', 'organizer']);
}
// ββ Relationships ββββββββββββββββββββββββββββββββββββ
public function events()
{
return $this->hasMany(Event::class, 'organizer_id');
}
public function orders()
{
return $this->hasMany(Order::class);
}
}
|