Jitsi (docker-jitsi-meet, version figée) derrière Nginx sur meet.syllabuslab.fr, accès par jeton JWT signé par le portail, modération du micro, mains levées synchronisées avec l'application. Pare-feu : UDP 10000 et pont interne br-visio (accords d'Adam). Jicofo n'authentifie plus lui-même : il donnait le rôle de propriétaire aux élèves. Capacité ramenée à 20 VM. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
51 lines
1.2 KiB
PHP
51 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
|
|
|
class Seance extends Model
|
|
{
|
|
use HasFactory;
|
|
|
|
public const PLANIFIEE = 'planifiee';
|
|
|
|
public const SALLE_ATTENTE = 'salle_attente';
|
|
|
|
public const EN_COURS = 'en_cours';
|
|
|
|
public const TERMINEE = 'terminee';
|
|
|
|
protected $fillable = ['classe_id', 'lab_id', 'statut', 'prevue_a', 'demarree_a', 'terminee_a', 'visio_ouverte_a', 'visio_salle', 'visio_chat'];
|
|
|
|
protected $casts = [
|
|
'prevue_a' => 'datetime',
|
|
'demarree_a' => 'datetime',
|
|
'terminee_a' => 'datetime',
|
|
'visio_ouverte_a' => 'datetime',
|
|
'visio_chat' => 'boolean',
|
|
];
|
|
|
|
public function visioOuverte(): bool
|
|
{
|
|
return $this->visio_ouverte_a !== null && $this->visio_salle !== null;
|
|
}
|
|
|
|
public function classe(): BelongsTo
|
|
{
|
|
return $this->belongsTo(Classe::class);
|
|
}
|
|
|
|
public function lab(): BelongsTo
|
|
{
|
|
return $this->belongsTo(Lab::class);
|
|
}
|
|
|
|
public function labSessions(): HasMany
|
|
{
|
|
return $this->hasMany(LabSession::class);
|
|
}
|
|
}
|