diff --git a/app/Models/Note.php b/app/Models/Note.php index bbed5e62..270bf58b 100644 --- a/app/Models/Note.php +++ b/app/Models/Note.php @@ -12,6 +12,7 @@ use GuzzleHttp\Client; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; @@ -286,6 +287,13 @@ class Note extends Model */ public function scopeNb60(Builder $query, string $nb60id): Builder { + $realId = resolve(Numbers::class)->b60tonum($nb60id); + + // Check nb60 does not translate to ID too big for database int4 column + if ($realId > 2_147_483_647) { + abort(404); + } + return $query->where('id', resolve(Numbers::class)->b60tonum($nb60id)); } diff --git a/public/assets/app.js.br b/public/assets/app.js.br index 961f6a03..eac06b54 100644 Binary files a/public/assets/app.js.br and b/public/assets/app.js.br differ diff --git a/tests/Feature/NotesControllerTest.php b/tests/Feature/NotesControllerTest.php index ec550437..bf1c315f 100644 --- a/tests/Feature/NotesControllerTest.php +++ b/tests/Feature/NotesControllerTest.php @@ -73,4 +73,11 @@ class NotesControllerTest extends TestCase $response = $this->get('/notes/112233'); $response->assertNotFound(); } + + /** @test */ + public function checkNoteIdNotOutOfRange(): void + { + $response = $this->get('/notes/photou-photologo'); + $response->assertNotFound(); + } }