Backend: Medien-Typen, Sprachnotizen, Event-Felder und Sync-Härtung
- Event-Medien tragen Typ (image/video/audio), Dauer und Notiz; Videos bekommen ein Poster, Audio wird per ffmpeg nach AAC (audio/mp4) gewandelt, Originale werden mit Range-Unterstützung gestreamt. - Upload nimmt eine Notiz (caption) direkt mit, PATCH ändert sie später. - Neue Event-Felder: Zeitraum (end_date), Kategorie, Personen, Meilenstein. Regeln zentral in EventFields, damit CRUD und Sync gleich prüfen. - Titel darf leer sein: ein Event entsteht mit dem ersten Eintrag. - Artisan-Befehl media:transcode-voice-notes wandelt alte WebM/Ogg-Notizen, die Safari nicht abspielen kann. - Login-Throttling, Settings-Validierung, Sync-Fehlercodes ohne Rohtext. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
f79dcb9928
commit
b262a6771f
59 changed files with 11879 additions and 197 deletions
|
|
@ -14,17 +14,23 @@ class AuthController extends Controller
|
|||
{
|
||||
public function login(LoginRequest $request): JsonResponse
|
||||
{
|
||||
$request->ensureIsNotRateLimited();
|
||||
|
||||
$credentials = $request->validated();
|
||||
$user = User::query()
|
||||
->where('email', $credentials['email'])
|
||||
->first();
|
||||
|
||||
if (! $user || ! Hash::check($credentials['password'], $user->password)) {
|
||||
$request->hitRateLimiter();
|
||||
|
||||
throw ValidationException::withMessages([
|
||||
'email' => __('auth.failed'),
|
||||
]);
|
||||
}
|
||||
|
||||
$request->clearRateLimiter();
|
||||
|
||||
$token = $user->createToken('quasar-app')->accessToken;
|
||||
|
||||
return response()->json([
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue