52 lines
1.7 KiB
PHP
52 lines
1.7 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Http\Controllers;
|
||
|
|
|
||
|
|
use App\Models\Eleve;
|
||
|
|
use App\Models\Raccourci;
|
||
|
|
use App\Models\User;
|
||
|
|
use Illuminate\Http\RedirectResponse;
|
||
|
|
use Illuminate\Http\Request;
|
||
|
|
use Illuminate\Support\Facades\Auth;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* « Mes raccourcis » dans la barre latérale (séparation vitrine/application,
|
||
|
|
* 2026-10-13) : le prof ou l'élève épingle une page qu'il visite déjà.
|
||
|
|
*/
|
||
|
|
class RaccourciController extends Controller
|
||
|
|
{
|
||
|
|
public function store(Request $request): RedirectResponse
|
||
|
|
{
|
||
|
|
$donnees = $request->validate([
|
||
|
|
'label' => ['required', 'string', 'max:80'],
|
||
|
|
'url' => ['required', 'string', 'max:500'],
|
||
|
|
]);
|
||
|
|
|
||
|
|
$compte = Auth::guard('web')->user() ?? Auth::guard('eleve')->user();
|
||
|
|
$ordre = Raccourci::when($compte instanceof User, fn ($q) => $q->where('user_id', $compte->id))
|
||
|
|
->when($compte instanceof Eleve, fn ($q) => $q->where('eleve_id', $compte->id))
|
||
|
|
->max('ordre');
|
||
|
|
|
||
|
|
Raccourci::create([
|
||
|
|
'user_id' => $compte instanceof User ? $compte->id : null,
|
||
|
|
'eleve_id' => $compte instanceof Eleve ? $compte->id : null,
|
||
|
|
'label' => $donnees['label'],
|
||
|
|
'url' => $donnees['url'],
|
||
|
|
'ordre' => ($ordre ?? 0) + 1,
|
||
|
|
]);
|
||
|
|
|
||
|
|
return back()->with('raccourci_ajoute', true);
|
||
|
|
}
|
||
|
|
|
||
|
|
public function destroy(Raccourci $raccourci): RedirectResponse
|
||
|
|
{
|
||
|
|
$compte = Auth::guard('web')->user() ?? Auth::guard('eleve')->user();
|
||
|
|
$proprietaire = $compte instanceof User ? $raccourci->user_id === $compte->id : $raccourci->eleve_id === $compte->id;
|
||
|
|
abort_unless($proprietaire, 403);
|
||
|
|
|
||
|
|
$raccourci->delete();
|
||
|
|
|
||
|
|
return back();
|
||
|
|
}
|
||
|
|
}
|