mirror of
https://github.com/koel/koel
synced 2024-11-24 13:13:05 +00:00
chore: better validation rules
This commit is contained in:
parent
f22f1e0cba
commit
de44bc781b
11 changed files with 40 additions and 20 deletions
|
@ -14,8 +14,7 @@ class AddSongsToPlaylistRequest extends Request
|
||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'songs' => 'required|array',
|
'songs' => ['required', 'array', Rule::exists(Song::class, 'id')],
|
||||||
'songs.*' => [Rule::exists(Song::class, 'id')],
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
namespace App\Http\Requests\API;
|
namespace App\Http\Requests\API;
|
||||||
|
|
||||||
|
use App\Models\Song;
|
||||||
|
use Illuminate\Validation\Rule;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @property array<string> $songs
|
* @property array<string> $songs
|
||||||
*/
|
*/
|
||||||
|
@ -11,7 +14,7 @@ class BatchInteractionRequest extends Request
|
||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'songs' => 'required|array|exists:songs,id',
|
'songs' => ['required', 'array', Rule::exists(Song::class, 'id')],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
namespace App\Http\Requests\API;
|
namespace App\Http\Requests\API;
|
||||||
|
|
||||||
use App\Facades\License;
|
use App\Facades\License;
|
||||||
|
use App\Models\Song;
|
||||||
|
use Illuminate\Validation\Rule;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @property-read array<string> $songs
|
* @property-read array<string> $songs
|
||||||
|
@ -13,7 +15,7 @@ class ChangeSongsVisibilityRequest extends Request
|
||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'songs' => 'required|exists:songs,id',
|
'songs' => ['required', 'array', Rule::exists(Song::class, 'id')],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
namespace App\Http\Requests\API;
|
namespace App\Http\Requests\API;
|
||||||
|
|
||||||
|
use App\Models\Song;
|
||||||
|
use Illuminate\Validation\Rule;
|
||||||
|
|
||||||
/** @property-read array<string> $songs */
|
/** @property-read array<string> $songs */
|
||||||
class DeleteSongsRequest extends Request
|
class DeleteSongsRequest extends Request
|
||||||
{
|
{
|
||||||
|
@ -9,7 +12,7 @@ class DeleteSongsRequest extends Request
|
||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'songs' => 'required|array|exists:songs,id',
|
'songs' => ['required', 'array', Rule::exists(Song::class, 'id')],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
namespace App\Http\Requests\API;
|
namespace App\Http\Requests\API;
|
||||||
|
|
||||||
use App\Models\Playlist;
|
use App\Models\Playlist;
|
||||||
use App\Rules\AllPlaylistsBelongToUser;
|
use App\Rules\AllPlaylistsBelongTo;
|
||||||
use Illuminate\Validation\Rule;
|
use Illuminate\Validation\Rule;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -15,8 +15,12 @@ class PlaylistFolderPlaylistDestroyRequest extends Request
|
||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'playlists' => ['required', 'array', new AllPlaylistsBelongToUser($this->user())],
|
'playlists' => [
|
||||||
'playlists.*' => [Rule::exists(Playlist::class, 'id')],
|
'required',
|
||||||
|
'array',
|
||||||
|
new AllPlaylistsBelongTo($this->user()),
|
||||||
|
Rule::exists(Playlist::class, 'id'),
|
||||||
|
],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
namespace App\Http\Requests\API;
|
namespace App\Http\Requests\API;
|
||||||
|
|
||||||
use App\Models\Playlist;
|
use App\Models\Playlist;
|
||||||
use App\Rules\AllPlaylistsBelongToUser;
|
use App\Rules\AllPlaylistsBelongTo;
|
||||||
use Illuminate\Validation\Rule;
|
use Illuminate\Validation\Rule;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -15,8 +15,12 @@ class PlaylistFolderPlaylistStoreRequest extends Request
|
||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'playlists' => ['required', 'array', new AllPlaylistsBelongToUser($this->user())],
|
'playlists' => [
|
||||||
'playlists.*' => [Rule::exists(Playlist::class, 'id')],
|
'required',
|
||||||
|
'array',
|
||||||
|
new AllPlaylistsBelongTo($this->user()),
|
||||||
|
Rule::exists(Playlist::class, 'id'),
|
||||||
|
],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
namespace App\Http\Requests\API;
|
namespace App\Http\Requests\API;
|
||||||
|
|
||||||
|
use App\Models\Song;
|
||||||
|
use Illuminate\Validation\Rule;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @property-read array<string> $songs
|
* @property-read array<string> $songs
|
||||||
*/
|
*/
|
||||||
|
@ -11,7 +14,7 @@ class RemoveSongsFromPlaylistRequest extends Request
|
||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'songs' => 'required|array|exists:songs,id',
|
'songs' => ['required', 'array', Rule::exists(Song::class, 'id')],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,9 +2,12 @@
|
||||||
|
|
||||||
namespace App\Http\Requests\API;
|
namespace App\Http\Requests\API;
|
||||||
|
|
||||||
|
use App\Models\Song;
|
||||||
|
use Illuminate\Validation\Rule;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @property array<string> $songs
|
* @property-read array<string> $songs
|
||||||
* @property array<mixed> $data
|
* @property-read array<mixed> $data
|
||||||
*/
|
*/
|
||||||
class SongUpdateRequest extends Request
|
class SongUpdateRequest extends Request
|
||||||
{
|
{
|
||||||
|
@ -13,7 +16,7 @@ class SongUpdateRequest extends Request
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'data' => 'required|array',
|
'data' => 'required|array',
|
||||||
'songs' => 'required|array|exists:songs,id',
|
'songs' => ['required', 'array', Rule::exists(Song::class, 'id')],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,8 +14,7 @@ class UpdateQueueStateRequest extends Request
|
||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'songs' => 'array',
|
'songs' => ['array', Rule::exists(Song::class, 'id')],
|
||||||
'songs.*' => [Rule::exists(Song::class, 'id')],
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ use App\Models\User;
|
||||||
use Illuminate\Contracts\Validation\Rule;
|
use Illuminate\Contracts\Validation\Rule;
|
||||||
use Illuminate\Support\Arr;
|
use Illuminate\Support\Arr;
|
||||||
|
|
||||||
class AllPlaylistsBelongToUser implements Rule
|
final class AllPlaylistsBelongTo implements Rule
|
||||||
{
|
{
|
||||||
public function __construct(private User $user)
|
public function __construct(private User $user)
|
||||||
{
|
{
|
|
@ -45,7 +45,7 @@ class InteractionTest extends TestCase
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testToggle(): void
|
public function testToggleLike(): void
|
||||||
{
|
{
|
||||||
$this->expectsEvents(SongLikeToggled::class);
|
$this->expectsEvents(SongLikeToggled::class);
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ class InteractionTest extends TestCase
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testToggleBatch(): void
|
public function testToggleLikeBatch(): void
|
||||||
{
|
{
|
||||||
$this->expectsEvents(SongsBatchLiked::class);
|
$this->expectsEvents(SongsBatchLiked::class);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue