Catalogue en lecture seule (labs, banque de quiz officielle, cours) - choix d'Adam pour la première version, zéro donnée d'élève. Laravel Sanctum, un jeton Bearer par développeur créé depuis /jetons-api (un prof), portée catalogue:lire seulement. Quota par jeton (pas par compte ni par IP) dans Redis via un limiteur nommé, 60 requêtes/minute. Documentation : spécification OpenAPI 3.0 et page publique /api/docs. Désactive /sanctum/csrf-cookie (config/sanctum.php) : l'API est en jeton Bearer seulement, jamais en cookie de SPA. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
56 lines
1.6 KiB
PHP
56 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
// use Illuminate\Contracts\Auth\MustVerifyEmail;
|
|
use App\Models\Concerns\GerePreferences;
|
|
use App\Models\Concerns\GereSessionUnique;
|
|
use Database\Factories\UserFactory;
|
|
use Illuminate\Database\Eloquent\Attributes\Fillable;
|
|
use Illuminate\Database\Eloquent\Attributes\Hidden;
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
|
use Illuminate\Foundation\Auth\User as Authenticatable;
|
|
use Illuminate\Notifications\Notifiable;
|
|
use Laravel\Sanctum\HasApiTokens;
|
|
|
|
#[Fillable(['name', 'email', 'password', 'etablissement_id'])]
|
|
#[Hidden(['password', 'remember_token', 'jeton_session_actif'])]
|
|
class User extends Authenticatable
|
|
{
|
|
/** @use HasFactory<UserFactory> */
|
|
use GerePreferences, GereSessionUnique, HasApiTokens, HasFactory, Notifiable;
|
|
|
|
/**
|
|
* Get the attributes that should be cast.
|
|
*
|
|
* @return array<string, string>
|
|
*/
|
|
protected function casts(): array
|
|
{
|
|
return [
|
|
'email_verified_at' => 'datetime',
|
|
'password' => 'hashed',
|
|
'preferences' => 'array',
|
|
];
|
|
}
|
|
|
|
/** @return BelongsTo<Etablissement, $this> */
|
|
public function etablissement(): BelongsTo
|
|
{
|
|
return $this->belongsTo(Etablissement::class);
|
|
}
|
|
|
|
/** @return HasMany<Classe, $this> */
|
|
public function classes(): HasMany
|
|
{
|
|
return $this->hasMany(Classe::class);
|
|
}
|
|
|
|
/** @return HasMany<Raccourci, $this> */
|
|
public function raccourcis(): HasMany
|
|
{
|
|
return $this->hasMany(Raccourci::class)->orderBy('ordre');
|
|
}
|
|
}
|