mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-18 00:02:15 +00:00
added request validators
This commit is contained in:
@@ -6,7 +6,7 @@ use Illuminate\Http\Response;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Domain\Subscriptions\Services\StripeService;
|
||||
use Domain\Subscriptions\Requests\StoreUpgradeAccountRequest;
|
||||
use Domain\Teams\Requests\StoreUpgradeAccountRequest;
|
||||
|
||||
/**
|
||||
* Upgrade account to subscription
|
||||
|
||||
@@ -9,18 +9,23 @@ use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class BrowseSharedWithMeController
|
||||
{
|
||||
public function __invoke($id)
|
||||
public function __invoke($id): array
|
||||
{
|
||||
$rootId = Str::isUuid($id) ? $id : null;
|
||||
$requestedFolder = Str::isUuid($id) ? Folder::findOrFail($rootId) : null;
|
||||
|
||||
$relations = [
|
||||
'parent:id,name',
|
||||
'shared:token,id,item_id,permission,is_protected,expire_in'
|
||||
];
|
||||
|
||||
if ($rootId) {
|
||||
$folders = Folder::with(['parent:id,name', 'shared:token,id,item_id,permission,is_protected,expire_in'])
|
||||
$folders = Folder::with($relations)
|
||||
->where('id', $id)
|
||||
->sortable()
|
||||
->get();
|
||||
|
||||
$files = File::with(['parent:id,name', 'shared:token,id,item_id,permission,is_protected,expire_in'])
|
||||
$files = File::with($relations)
|
||||
->where('folder_id', $id)
|
||||
->sortable()
|
||||
->get();
|
||||
@@ -31,7 +36,7 @@ class BrowseSharedWithMeController
|
||||
->where('user_id', Auth::id())
|
||||
->pluck('folder_id');
|
||||
|
||||
$folders = Folder::with(['parent:id,name', 'shared:token,id,item_id,permission,is_protected,expire_in'])
|
||||
$folders = Folder::with($relations)
|
||||
->whereIn('id', $folderIds)
|
||||
->sortable()
|
||||
->get();
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
<?php
|
||||
namespace Domain\Teams\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Domain\Teams\Requests\ConvertIntoTeamFolderRequest;
|
||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||
use Illuminate\Http\Response;
|
||||
use Domain\Folders\Models\Folder;
|
||||
use App\Http\Controllers\Controller;
|
||||
@@ -15,16 +16,16 @@ class ConvertFolderIntoTeamFolderController extends Controller
|
||||
}
|
||||
|
||||
public function __invoke(
|
||||
Request $request,
|
||||
ConvertIntoTeamFolderRequest $request,
|
||||
Folder $folder
|
||||
): Response {
|
||||
): ResponseFactory|Response {
|
||||
$folder->update([
|
||||
'team_folder' => 1,
|
||||
'parent_id' => null,
|
||||
]);
|
||||
|
||||
// Invite team members
|
||||
($this->inviteMembers)($request->input('members'), $folder);
|
||||
($this->inviteMembers)($request->input('invitations'), $folder);
|
||||
|
||||
return response($folder, 201);
|
||||
}
|
||||
|
||||
@@ -6,12 +6,15 @@ use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Domain\Teams\Models\TeamFolderInvitation;
|
||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||
|
||||
class InvitationsController extends Controller
|
||||
{
|
||||
|
||||
public function update(
|
||||
TeamFolderInvitation $invitation
|
||||
): Response {
|
||||
): ResponseFactory|Response {
|
||||
|
||||
$user = User::where('email', $invitation->email)
|
||||
->firstOrFail();
|
||||
|
||||
@@ -31,7 +34,7 @@ class InvitationsController extends Controller
|
||||
|
||||
public function destroy(
|
||||
TeamFolderInvitation $invitation
|
||||
): Response {
|
||||
): ResponseFactory|Response {
|
||||
$invitation->update([
|
||||
'status' => 'rejected',
|
||||
]);
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
namespace Domain\Teams\Controllers;
|
||||
|
||||
use DB;
|
||||
use Illuminate\Http\Request;
|
||||
use Domain\Teams\Requests\CreateTeamFolderRequest;
|
||||
use Domain\Teams\Requests\UpdateTeamFolderMembersRequest;
|
||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||
use Domain\Files\Models\File;
|
||||
use Illuminate\Http\Response;
|
||||
use Domain\Folders\Models\Folder;
|
||||
@@ -47,8 +49,8 @@ class TeamFoldersController extends Controller
|
||||
}
|
||||
|
||||
public function store(
|
||||
Request $request,
|
||||
): Response {
|
||||
CreateTeamFolderRequest $request,
|
||||
): ResponseFactory|Response {
|
||||
$data = CreateTeamFolderData::fromRequest($request);
|
||||
|
||||
$folder = Folder::create([
|
||||
@@ -58,17 +60,17 @@ class TeamFoldersController extends Controller
|
||||
]);
|
||||
|
||||
// Invite team members
|
||||
($this->inviteMembers)($data->members, $folder);
|
||||
($this->inviteMembers)($data->invitations, $folder);
|
||||
|
||||
return response($folder, 201);
|
||||
}
|
||||
|
||||
public function update(
|
||||
Request $request,
|
||||
UpdateTeamFolderMembersRequest $request,
|
||||
Folder $folder,
|
||||
UpdateInvitationsAction $updateInvitations,
|
||||
UpdateMembersAction $updateMembers,
|
||||
): Response {
|
||||
): ResponseFactory|Response {
|
||||
$updateInvitations(
|
||||
$folder,
|
||||
$request->input('invitations')
|
||||
@@ -82,7 +84,7 @@ class TeamFoldersController extends Controller
|
||||
return response('Done', 201);
|
||||
}
|
||||
|
||||
public function destroy(Folder $folder): Response
|
||||
public function destroy(Folder $folder): ResponseFactory|Response
|
||||
{
|
||||
// Delete existing invitations
|
||||
DB::table('team_folder_invitations')
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace Domain\Teams\DTO;
|
||||
|
||||
use Spatie\DataTransferObject\DataTransferObject;
|
||||
@@ -6,13 +7,13 @@ use Spatie\DataTransferObject\DataTransferObject;
|
||||
class CreateTeamFolderData extends DataTransferObject
|
||||
{
|
||||
public string $name;
|
||||
public array $members;
|
||||
public array $invitations;
|
||||
|
||||
public static function fromRequest($request): self
|
||||
{
|
||||
return new self([
|
||||
'name' => $request->input('name'),
|
||||
'members' => $request->input('members'),
|
||||
'name' => $request->input('name'),
|
||||
'invitations' => $request->input('invitations'),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
30
src/Domain/Teams/Requests/ConvertIntoTeamFolderRequest.php
Normal file
30
src/Domain/Teams/Requests/ConvertIntoTeamFolderRequest.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace Domain\Teams\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class ConvertIntoTeamFolderRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'invitations' => 'required|array',
|
||||
];
|
||||
}
|
||||
}
|
||||
31
src/Domain/Teams/Requests/CreateTeamFolderRequest.php
Normal file
31
src/Domain/Teams/Requests/CreateTeamFolderRequest.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace Domain\Teams\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class CreateTeamFolderRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'name' => 'required|string',
|
||||
'invitations' => 'required|array',
|
||||
];
|
||||
}
|
||||
}
|
||||
31
src/Domain/Teams/Requests/UpdateTeamFolderMembersRequest.php
Normal file
31
src/Domain/Teams/Requests/UpdateTeamFolderMembersRequest.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace Domain\Teams\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class UpdateTeamFolderMembersRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'members' => 'present|array',
|
||||
'invitations' => 'present|array',
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -29,7 +29,7 @@ class TeamsTest extends TestCase
|
||||
->actingAs($user)
|
||||
->post('/api/teams/folders', [
|
||||
'name' => 'Company Project',
|
||||
'members' => [
|
||||
'invitations' => [
|
||||
[
|
||||
'email' => 'john@internal.com',
|
||||
'permission' => 'can-edit',
|
||||
@@ -76,7 +76,7 @@ class TeamsTest extends TestCase
|
||||
$this
|
||||
->actingAs($user)
|
||||
->post("/api/teams/convert/{$folder->id}", [
|
||||
'members' => [
|
||||
'invitations' => [
|
||||
[
|
||||
'email' => 'john@internal.com',
|
||||
'permission' => 'can-edit',
|
||||
@@ -484,6 +484,7 @@ class TeamsTest extends TestCase
|
||||
'permission' => 'can-view',
|
||||
],
|
||||
],
|
||||
'invitations' => [],
|
||||
])
|
||||
->assertCreated();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user