Paillasse/portail/app/Models/Eleve.php
2026-10-12 21:32:52 +02:00

50 lines
1.4 KiB
PHP

<?php
namespace App\Models;
use App\Models\Concerns\GereSessionUnique;
use Database\Factories\EleveFactory;
use Illuminate\Auth\Authenticatable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
class Eleve extends Model implements AuthenticatableContract
{
/** @use HasFactory<EleveFactory> */
use Authenticatable, GereSessionUnique, HasFactory;
protected $fillable = ['classe_id', 'prenom', 'nom', 'identifiant', 'code_secret', 'jeton_qr'];
protected $hidden = ['code_secret', 'jeton_session_actif', 'jeton_qr'];
protected $casts = [
'derniere_connexion_a' => 'datetime',
];
public function getAuthPasswordName(): string
{
return 'code_secret';
}
/** @return BelongsTo<Classe, $this> */
public function classe(): BelongsTo
{
return $this->belongsTo(Classe::class);
}
/** @return HasMany<LabSession, $this> */
public function labSessions(): HasMany
{
return $this->hasMany(LabSession::class);
}
public function nomAffiche(): string
{
return $this->nom
? $this->prenom.' '.mb_substr($this->nom, 0, 1).'.'
: $this->prenom;
}
}