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

View File

@@ -62,7 +62,7 @@
"/chunks/settings-password.js": "/chunks/settings-password.js?id=d00bf503d8126dc4",
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=092e324aad54656b",
"/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/recent-uploads.js": "/chunks/recent-uploads.js?id=c6ed26eaace65f01",
"/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=6adbb309c700eaf7",

View File

@@ -28,6 +28,6 @@ class GetShareLinkViaQrCodeController extends Controller
$qrCode = trim(substr($svg, strpos($svg, "\n") + 1));
// Return qr code
return response($qrCode, 201);
return response($qrCode);
}
}

View File

@@ -1,7 +1,9 @@
<?php
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 App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
@@ -25,34 +27,47 @@ class ShareController extends Controller
public function update(
UpdateShareRequest $request,
Share $share,
): ShareResource {
// Update sharing record
): JsonResponse {
$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([
'permission' => $request->input('permission'),
'is_protected' => $request->input('protected'),
'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'))
: $share->password,
]);
// Return shared record
return new ShareResource($share);
return response()->json(new ShareResource($share));
}
/**
* 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
Share::where('token', $token)
$record = Share::where('token', $token)
->where('user_id', Auth::id())
->firstOrFail()
->delete();
->first();
$record?->delete();
}
return response('Done.', 204);
return response()->json([
'type' => 'success',
'message' => 'The share links was revoked successfully.',
]);
}
}

View File

@@ -2,8 +2,8 @@
namespace Domain\Sharing\Controllers;
use Auth;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Domain\Sharing\Requests\ShareByEmailRequest;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use Domain\Sharing\Actions\SendViaEmailAction;
@@ -15,15 +15,18 @@ class ShareViaEmailController extends Controller
}
public function __invoke(
Request $request,
ShareByEmailRequest $request,
string $token,
): Response {
): JsonResponse {
($this->sendLinkToEmailAction)->onQueue()->execute(
emails: $request->input('emails'),
token: $token,
user: Auth::user(),
);
return response('Done.', 204);
return response()->json([
'type' => 'success',
'message' => 'The share link was shared via email successfully.',
]);
}
}

View File

@@ -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',
];
}
}

View File

@@ -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',
];
}
}

View File

@@ -1,7 +1,6 @@
<?php
namespace Domain\Sharing\Requests;
use Illuminate\Support\Facades\Auth;
use Illuminate\Foundation\Http\FormRequest;
class UpdateShareRequest extends FormRequest
@@ -13,7 +12,7 @@ class UpdateShareRequest extends FormRequest
*/
public function authorize()
{
return Auth::check();
return true;
}
/**
@@ -25,9 +24,9 @@ class UpdateShareRequest extends FormRequest
{
return [
'protected' => 'required|boolean',
'permission' => 'nullable|string',
'expiration' => 'integer|nullable',
'password' => 'string',
'password' => 'required_if:protected,true|string',
'permission' => 'sometimes|string',
'expiration' => 'sometimes|integer',
];
}
}