share records api update

This commit is contained in:
Čarodej
2022-05-03 15:54:31 +02:00
parent 664f8d8e53
commit 8b3f76d1d0
7 changed files with 103 additions and 25 deletions
+1 -1
View File
@@ -62,7 +62,7 @@
"/chunks/settings-password.js": "/chunks/settings-password.js?id=d00bf503d8126dc4", "/chunks/settings-password.js": "/chunks/settings-password.js?id=d00bf503d8126dc4",
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=092e324aad54656b", "/chunks/settings-storage.js": "/chunks/settings-storage.js?id=092e324aad54656b",
"/chunks/billing.js": "/chunks/billing.js?id=115c25478cee576d", "/chunks/billing.js": "/chunks/billing.js?id=115c25478cee576d",
"/chunks/platform.js": "/chunks/platform.js?id=6c6ff48803c933ab", "/chunks/platform.js": "/chunks/platform.js?id=e0dcb4aa27710e07",
"/chunks/files.js": "/chunks/files.js?id=a74bc8acc7ea876a", "/chunks/files.js": "/chunks/files.js?id=a74bc8acc7ea876a",
"/chunks/recent-uploads.js": "/chunks/recent-uploads.js?id=c6ed26eaace65f01", "/chunks/recent-uploads.js": "/chunks/recent-uploads.js?id=c6ed26eaace65f01",
"/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=6adbb309c700eaf7", "/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=6adbb309c700eaf7",
@@ -28,6 +28,6 @@ class GetShareLinkViaQrCodeController extends Controller
$qrCode = trim(substr($svg, strpos($svg, "\n") + 1)); $qrCode = trim(substr($svg, strpos($svg, "\n") + 1));
// Return qr code // Return qr code
return response($qrCode, 201); return response($qrCode);
} }
} }
@@ -1,7 +1,9 @@
<?php <?php
namespace Domain\Sharing\Controllers; namespace Domain\Sharing\Controllers;
use Illuminate\Http\Response; use Domain\Folders\Models\Folder;
use Domain\Sharing\Requests\RevokeSharesRequest;
use Illuminate\Http\JsonResponse;
use Domain\Sharing\Models\Share; use Domain\Sharing\Models\Share;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
@@ -25,34 +27,47 @@ class ShareController extends Controller
public function update( public function update(
UpdateShareRequest $request, UpdateShareRequest $request,
Share $share, Share $share,
): ShareResource { ): JsonResponse {
// Update sharing record $item = get_item($share->type, $share->item_id);
// If sharing folder, check permission attribute
if ($item instanceof Folder && $request->missing('permission')) {
return response()->json([
'type' => 'error',
'message' => 'The permission field for folder is required.',
], 422);
}
$share->update([ $share->update([
'permission' => $request->input('permission'),
'is_protected' => $request->input('protected'),
'expire_in' => $request->input('expiration') ?? null, 'expire_in' => $request->input('expiration') ?? null,
'password' => $request->input('password') 'permission' => $request->input('permission'),
'is_protected' => $request->boolean('protected'),
'password' => $request->has('password')
? bcrypt($request->input('password')) ? bcrypt($request->input('password'))
: $share->password, : $share->password,
]); ]);
// Return shared record // Return shared record
return new ShareResource($share); return response()->json(new ShareResource($share));
} }
/** /**
* Delete sharing item * Delete sharing item
*/ */
public function destroy(): Response public function destroy(RevokeSharesRequest $request): JsonResponse
{ {
foreach (request()->input('tokens') as $token) { foreach ($request->input('tokens') as $token) {
// Delete share record // Delete share record
Share::where('token', $token) $record = Share::where('token', $token)
->where('user_id', Auth::id()) ->where('user_id', Auth::id())
->firstOrFail() ->first();
->delete();
$record?->delete();
} }
return response('Done.', 204); return response()->json([
'type' => 'success',
'message' => 'The share links was revoked successfully.',
]);
} }
} }
@@ -2,8 +2,8 @@
namespace Domain\Sharing\Controllers; namespace Domain\Sharing\Controllers;
use Auth; use Auth;
use Illuminate\Http\Request; use Domain\Sharing\Requests\ShareByEmailRequest;
use Illuminate\Http\Response; use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Domain\Sharing\Actions\SendViaEmailAction; use Domain\Sharing\Actions\SendViaEmailAction;
@@ -15,15 +15,18 @@ class ShareViaEmailController extends Controller
} }
public function __invoke( public function __invoke(
Request $request, ShareByEmailRequest $request,
string $token, string $token,
): Response { ): JsonResponse {
($this->sendLinkToEmailAction)->onQueue()->execute( ($this->sendLinkToEmailAction)->onQueue()->execute(
emails: $request->input('emails'), emails: $request->input('emails'),
token: $token, token: $token,
user: Auth::user(), user: Auth::user(),
); );
return response('Done.', 204); return response()->json([
'type' => 'success',
'message' => 'The share link was shared via email successfully.',
]);
} }
} }
@@ -0,0 +1,30 @@
<?php
namespace Domain\Sharing\Requests;
use Illuminate\Foundation\Http\FormRequest;
class RevokeSharesRequest 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 [
'tokens' => 'required|array',
'tokens.*' => 'string',
];
}
}
@@ -0,0 +1,31 @@
<?php
namespace Domain\Sharing\Requests;
use Illuminate\Support\Facades\Auth;
use Illuminate\Foundation\Http\FormRequest;
class ShareByEmailRequest 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 [
'emails' => 'required|array',
'emails.*' => 'email',
];
}
}
@@ -1,7 +1,6 @@
<?php <?php
namespace Domain\Sharing\Requests; namespace Domain\Sharing\Requests;
use Illuminate\Support\Facades\Auth;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
class UpdateShareRequest extends FormRequest class UpdateShareRequest extends FormRequest
@@ -13,7 +12,7 @@ class UpdateShareRequest extends FormRequest
*/ */
public function authorize() public function authorize()
{ {
return Auth::check(); return true;
} }
/** /**
@@ -25,9 +24,9 @@ class UpdateShareRequest extends FormRequest
{ {
return [ return [
'protected' => 'required|boolean', 'protected' => 'required|boolean',
'permission' => 'nullable|string', 'password' => 'required_if:protected,true|string',
'expiration' => 'integer|nullable', 'permission' => 'sometimes|string',
'password' => 'string', 'expiration' => 'sometimes|integer',
]; ];
} }
} }