diff --git a/.env.testing b/.env.testing index 8b7af98b..5b8372e0 100644 --- a/.env.testing +++ b/.env.testing @@ -1,6 +1,6 @@ APP_NAME=Laravel APP_ENV=local -APP_KEY=base64:x5KqtYx90b6qdRZ0tzl1LunUYNlu6uXZATY3oKTMn1M= +APP_KEY=base64:qBL7kIM+I1U3jdkTiAelfVgVOLT3hfu0iOr8bUz2k1I= APP_DEBUG=true APP_URL=http://localhost APP_DEMO=false diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 40e70220..4881fd13 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -54,7 +54,7 @@ "/chunks/demo.js": "/chunks/demo.js?id=355303e4230cb5ae", "/chunks/successfully-email-verified.js": "/chunks/successfully-email-verified.js?id=c26cb144101e7c79", "/chunks/successfully-email-send.js": "/chunks/successfully-email-send.js?id=170d814982e1c475", - "/chunks/sign-in.js": "/chunks/sign-in.js?id=1631a0f4a4ad25c2", + "/chunks/sign-in.js": "/chunks/sign-in.js?id=a837482b53d989dc", "/chunks/sign-up.js": "/chunks/sign-up.js?id=2af6073efe54c560", "/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=ff8954243e86c1e1", "/chunks/create-new-password.js": "/chunks/create-new-password.js?id=2f0401ee2fc148c4", @@ -63,7 +63,7 @@ "/chunks/settings-password.js": "/chunks/settings-password.js?id=d00bf503d8126dc4", "/chunks/settings-storage.js": "/chunks/settings-storage.js?id=ecfee7f7e98204f8", "/chunks/billing.js": "/chunks/billing.js?id=dd217d680baafb84", - "/chunks/platform.js": "/chunks/platform.js?id=a31d808015c4e7ea", + "/chunks/platform.js": "/chunks/platform.js?id=90d43ec56b62c721", "/chunks/files.js": "/chunks/files.js?id=5f29f35c280e680b", "/chunks/recent-uploads.js": "/chunks/recent-uploads.js?id=6f43aea38e0927bc", "/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=6e819ffe88a0fd1d", diff --git a/resources/js/components/Popups/ShareEditPopup.vue b/resources/js/components/Popups/ShareEditPopup.vue index 571c58f5..61130a27 100644 --- a/resources/js/components/Popups/ShareEditPopup.vue +++ b/resources/js/components/Popups/ShareEditPopup.vue @@ -277,7 +277,7 @@ export default { axios .get(`/api/share/${this.shareOptions.token}/qr`) .then((response) => { - this.qrCode = response.data + this.qrCode = response.data.data.svg }) .catch(() => this.$isSomethingWrong()) }, diff --git a/resources/js/store/modules/userAuth.js b/resources/js/store/modules/userAuth.js index b2cddf95..176bf11d 100644 --- a/resources/js/store/modules/userAuth.js +++ b/resources/js/store/modules/userAuth.js @@ -61,8 +61,8 @@ const actions = { axios .get(`/api/socialite/${provider}/redirect`) .then((response) => { - if (response.data.url) { - window.location.href = response.data.url + if (response.data.data.url) { + window.location.href = response.data.data.url } }) .catch(() => this.$isSomethingWrong()) diff --git a/resources/js/views/Auth/SignIn.vue b/resources/js/views/Auth/SignIn.vue index 28b7268e..1e2e16c0 100644 --- a/resources/js/views/Auth/SignIn.vue +++ b/resources/js/views/Auth/SignIn.vue @@ -320,7 +320,7 @@ export default { .catch((error) => { if (error.response.status == 404) { this.$refs.log_in.setErrors({ - 'E-Mail': [error.response.data], + 'E-Mail': [error.response.data.message], }) } diff --git a/src/App/Socialite/Controllers/SocialiteCallbackController.php b/src/App/Socialite/Controllers/SocialiteCallbackController.php index e3d77fe6..3420a941 100644 --- a/src/App/Socialite/Controllers/SocialiteCallbackController.php +++ b/src/App/Socialite/Controllers/SocialiteCallbackController.php @@ -4,6 +4,8 @@ namespace App\Socialite\Controllers; use App\Users\Models\User; use App\Users\DTO\CreateUserData; use App\Http\Controllers\Controller; +use Illuminate\Http\JsonResponse; +use Illuminate\Http\RedirectResponse; use Laravel\Socialite\Facades\Socialite; use App\Users\Actions\CreateNewUserAction; use Illuminate\Contracts\Auth\StatefulGuard; @@ -21,8 +23,9 @@ class SocialiteCallbackController extends Controller /** * @throws MeteredBillingPlanDoesntExist */ - public function __invoke($provider) - { + public function __invoke( + $provider + ): JsonResponse|RedirectResponse { $isAllowedRegistration = intval(get_settings('registration')); // Get socialite user @@ -52,7 +55,7 @@ class SocialiteCallbackController extends Controller // TODO: redirect to the error page if ($plan->doesntExist()) { - return response([ + return response()->json([ 'type' => 'error', 'message' => 'User registrations are temporarily disabled', ], 409); @@ -61,7 +64,7 @@ class SocialiteCallbackController extends Controller // Check if account registration is enabled if (! $isAllowedRegistration) { - return response([ + return response()->json([ 'type' => 'error', 'message' => 'User registration is not allowed', ], 401); diff --git a/src/App/Socialite/Controllers/SocialiteRedirectController.php b/src/App/Socialite/Controllers/SocialiteRedirectController.php index 718b47d0..ebd262db 100644 --- a/src/App/Socialite/Controllers/SocialiteRedirectController.php +++ b/src/App/Socialite/Controllers/SocialiteRedirectController.php @@ -1,17 +1,26 @@ stateless()->redirect()->getTargetUrl(); + public function __invoke( + string $provider + ): JsonResponse { + $url = Socialite::driver($provider) + ->stateless() + ->redirect() + ->getTargetUrl(); return response()->json([ - 'url' => $url, + 'type' => 'success', + 'message' => 'The user was successfully verified', + 'data' => [ + 'url' => $url, + ], ]); } } diff --git a/src/App/Users/Controllers/Account/AccountDetailsController.php b/src/App/Users/Controllers/Account/AccountDetailsController.php index 6ff1cf5e..7bd7d769 100644 --- a/src/App/Users/Controllers/Account/AccountDetailsController.php +++ b/src/App/Users/Controllers/Account/AccountDetailsController.php @@ -1,8 +1,8 @@ json(new UserResource(auth()->user())); } } diff --git a/src/App/Users/Controllers/Account/StorageCapacityController.php b/src/App/Users/Controllers/Account/StorageCapacityController.php index 4102a9a9..774f76c2 100644 --- a/src/App/Users/Controllers/Account/StorageCapacityController.php +++ b/src/App/Users/Controllers/Account/StorageCapacityController.php @@ -1,15 +1,15 @@ json( + new UserStorageResource(auth()->user()) ); } } diff --git a/src/App/Users/Controllers/Authentication/AccountAccessTokenController.php b/src/App/Users/Controllers/Authentication/AccountAccessTokenController.php index 3121e6ab..b29cae6b 100644 --- a/src/App/Users/Controllers/Authentication/AccountAccessTokenController.php +++ b/src/App/Users/Controllers/Authentication/AccountAccessTokenController.php @@ -14,9 +14,9 @@ class AccountAccessTokenController extends Controller /** * Get all user tokens */ - public function index(): Response + public function index(): JsonResponse { - return response( + return response()->json( Auth::user()->tokens()->get() ); } @@ -24,8 +24,9 @@ class AccountAccessTokenController extends Controller /** * Create user tokens */ - public function store(CreateAccessTokenRequest $request): JsonResponse - { + public function store( + CreateAccessTokenRequest $request + ): JsonResponse { if (isDemoAccount()) { return response()->json([ 'plainTextToken' => Str::random(40), @@ -41,8 +42,9 @@ class AccountAccessTokenController extends Controller /** * Delete user token */ - public function destroy(PersonalAccessToken $token): JsonResponse - { + public function destroy( + PersonalAccessToken $token + ): JsonResponse { $successMessage = [ 'type' => 'success', 'message' => 'The token was successfully deleted.', @@ -61,6 +63,6 @@ class AccountAccessTokenController extends Controller $token->delete(); - return response()->json($successMessage, 200); + return response()->json($successMessage); } } diff --git a/src/App/Users/Controllers/Authentication/AuthenticateAndReturnBearerTokenController.php b/src/App/Users/Controllers/Authentication/AuthenticateAndReturnBearerTokenController.php index 12b88b27..7637baa6 100644 --- a/src/App/Users/Controllers/Authentication/AuthenticateAndReturnBearerTokenController.php +++ b/src/App/Users/Controllers/Authentication/AuthenticateAndReturnBearerTokenController.php @@ -13,8 +13,9 @@ class AuthenticateAndReturnBearerTokenController extends Controller /** * @throws ValidationException */ - public function __invoke(LoginUserRequest $request): JsonResponse - { + public function __invoke( + LoginUserRequest $request + ): JsonResponse { // Get user $user = User::where('email', $request->input('email')) ->firstOrFail(); diff --git a/src/App/Users/Controllers/Authentication/RegisterUserController.php b/src/App/Users/Controllers/Authentication/RegisterUserController.php index f3652260..ade376a2 100644 --- a/src/App/Users/Controllers/Authentication/RegisterUserController.php +++ b/src/App/Users/Controllers/Authentication/RegisterUserController.php @@ -17,8 +17,9 @@ class RegisterUserController extends Controller ) { } - public function __invoke(RegisterUserRequest $request): JsonResponse - { + public function __invoke( + RegisterUserRequest $request + ): JsonResponse { // Check if account registration is enabled if (! intval(get_settings('registration'))) { return response()->json([ diff --git a/src/App/Users/Controllers/GetAvatarController.php b/src/App/Users/Controllers/GetAvatarController.php index 70042817..dd3c8f0c 100644 --- a/src/App/Users/Controllers/GetAvatarController.php +++ b/src/App/Users/Controllers/GetAvatarController.php @@ -1,9 +1,9 @@ getDiskData(); + [$upload, $download, $uploadTotal, $downloadTotal, $storageUsage] = $this->getDiskData(); // Get total earnings from transactions $totalEarnings = DB::table('transactions') diff --git a/src/Domain/Admin/Controllers/Dashboard/GetLatestTransactionsController.php b/src/Domain/Admin/Controllers/Dashboard/GetLatestTransactionsController.php index e1b9af6d..6d4f5061 100644 --- a/src/Domain/Admin/Controllers/Dashboard/GetLatestTransactionsController.php +++ b/src/Domain/Admin/Controllers/Dashboard/GetLatestTransactionsController.php @@ -1,13 +1,14 @@ 'desc', @@ -15,6 +16,6 @@ class GetLatestTransactionsController extends Controller ->take(5) ->get(); - return new TransactionCollection($transactions); + return response()->json(new TransactionCollection($transactions)); } } diff --git a/src/Domain/Admin/Controllers/Dashboard/GetNewbiesController.php b/src/Domain/Admin/Controllers/Dashboard/GetNewbiesController.php index c9a5729c..552a6767 100644 --- a/src/Domain/Admin/Controllers/Dashboard/GetNewbiesController.php +++ b/src/Domain/Admin/Controllers/Dashboard/GetNewbiesController.php @@ -2,12 +2,13 @@ namespace Domain\Admin\Controllers\Dashboard; use App\Users\Models\User; +use Illuminate\Http\JsonResponse; use App\Http\Controllers\Controller; use App\Users\Resources\UsersCollection; class GetNewbiesController extends Controller { - public function __invoke(): UsersCollection + public function __invoke(): JsonResponse { $users = User::sortable([ 'created_at' => 'desc', @@ -15,6 +16,6 @@ class GetNewbiesController extends Controller ->take(5) ->get(); - return new UsersCollection($users); + return response()->json(new UsersCollection($users)); } } diff --git a/src/Domain/Admin/Controllers/Users/ChangeUserRoleController.php b/src/Domain/Admin/Controllers/Users/ChangeUserRoleController.php index 8d2df2e0..9b81e66a 100644 --- a/src/Domain/Admin/Controllers/Users/ChangeUserRoleController.php +++ b/src/Domain/Admin/Controllers/Users/ChangeUserRoleController.php @@ -2,6 +2,7 @@ namespace Domain\Admin\Controllers\Users; use App\Users\Models\User; +use Illuminate\Http\JsonResponse; use App\Http\Controllers\Controller; use App\Users\Resources\UserResource; use Domain\Admin\Requests\ChangeRoleRequest; @@ -11,15 +12,15 @@ class ChangeUserRoleController extends Controller public function __invoke( ChangeRoleRequest $request, User $user, - ): UserResource { + ): JsonResponse { if (isDemoAccount()) { - return new UserResource($user); + return response()->json(new UserResource($user)); } // Update user role $user->role = $request->input('attributes.role'); $user->update(); - return new UserResource($user); + return response()->json(new UserResource($user)); } } diff --git a/src/Domain/Admin/Controllers/Users/ChangeUserStorageCapacityController.php b/src/Domain/Admin/Controllers/Users/ChangeUserStorageCapacityController.php index 51082f08..f998158e 100644 --- a/src/Domain/Admin/Controllers/Users/ChangeUserStorageCapacityController.php +++ b/src/Domain/Admin/Controllers/Users/ChangeUserStorageCapacityController.php @@ -2,6 +2,7 @@ namespace Domain\Admin\Controllers\Users; use App\Users\Models\User; +use Illuminate\Http\JsonResponse; use App\Http\Controllers\Controller; use App\Users\Resources\UserStorageResource; use Domain\Admin\Requests\ChangeStorageCapacityRequest; @@ -14,10 +15,10 @@ class ChangeUserStorageCapacityController extends Controller public function __invoke( ChangeStorageCapacityRequest $request, User $user, - ): UserStorageResource { + ): JsonResponse { // Abort in demo mode if (isDemoAccount()) { - return new UserStorageResource($user); + return response()->json(new UserStorageResource($user)); } $user @@ -26,6 +27,6 @@ class ChangeUserStorageCapacityController extends Controller $request->input('attributes') ); - return new UserStorageResource($user); + return response()->json(new UserStorageResource($user)); } } diff --git a/src/Domain/Admin/Controllers/Users/DeleteUserController.php b/src/Domain/Admin/Controllers/Users/DeleteUserController.php index 2c8ae299..79c22e51 100644 --- a/src/Domain/Admin/Controllers/Users/DeleteUserController.php +++ b/src/Domain/Admin/Controllers/Users/DeleteUserController.php @@ -2,7 +2,7 @@ namespace Domain\Admin\Controllers\Users; use App\Users\Models\User; -use Illuminate\Http\Response; +use Illuminate\Http\JsonResponse; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Auth; use Domain\Admin\Requests\DeleteUserRequest; @@ -17,21 +17,39 @@ class DeleteUserController extends Controller DeleteUserRequest $request, User $user, DeleteUserDataAction $deleteUserData, - ): Response { + ): JsonResponse { if (is_demo()) { - return response('Done.', 204); + return response()->json([ + 'type' => 'success', + 'message' => 'The user was successfully deleted', + ]); } if ($user->subscription && $user->subscription->active()) { - abort(202, "You can\'t delete this account since user has active subscription."); + abort( + response()->json([ + 'type' => 'error', + 'message' => "You can\'t delete this account since user has active subscription.", + ], 202) + ); } if ($user->id === Auth::id()) { - abort(406, "You can\'t delete your account"); + abort( + response()->json([ + 'type' => 'error', + 'message' => "You can\'t delete your account", + ], 406) + ); } if (trim($user->settings->name) !== $request->input('name')) { - abort(403, 'The name you typed is wrong!'); + abort( + response()->json([ + 'type' => 'error', + 'message' => 'The name you typed is wrong!', + ], 403) + ); } $user->delete(); @@ -39,6 +57,9 @@ class DeleteUserController extends Controller // Delete all user data ($deleteUserData)($user); - return response('Done.', 204); + return response()->json([ + 'type' => 'success', + 'message' => 'The user was successfully deleted', + ]); } } diff --git a/src/Domain/Admin/Controllers/Users/ResetUserPasswordController.php b/src/Domain/Admin/Controllers/Users/ResetUserPasswordController.php index 8ee8e6f9..9973f3bf 100644 --- a/src/Domain/Admin/Controllers/Users/ResetUserPasswordController.php +++ b/src/Domain/Admin/Controllers/Users/ResetUserPasswordController.php @@ -2,7 +2,7 @@ namespace Domain\Admin\Controllers\Users; use App\Users\Models\User; -use Illuminate\Http\Response; +use Illuminate\Http\JsonResponse; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Password; @@ -11,10 +11,15 @@ class ResetUserPasswordController extends Controller /** * Send user password reset link */ - public function __invoke(User $user): Response + public function __invoke(User $user): JsonResponse { + $message = [ + 'type' => 'success', + 'message' => 'The password reset link was send succesfully', + ]; + if (is_demo()) { - return response('Done.', 204); + return response()->json($message); } // Get password token @@ -24,6 +29,6 @@ class ResetUserPasswordController extends Controller // Send user email $user->sendPasswordResetNotification($token); - return response('Done.', 204); + return response()->json($message); } } diff --git a/src/Domain/Admin/Controllers/Users/ShowUserStorageCapacityController.php b/src/Domain/Admin/Controllers/Users/ShowUserStorageCapacityController.php index 5c4a4596..76562053 100644 --- a/src/Domain/Admin/Controllers/Users/ShowUserStorageCapacityController.php +++ b/src/Domain/Admin/Controllers/Users/ShowUserStorageCapacityController.php @@ -2,6 +2,7 @@ namespace Domain\Admin\Controllers\Users; use App\Users\Models\User; +use Illuminate\Http\JsonResponse; use App\Http\Controllers\Controller; use App\Users\Resources\UserStorageResource; @@ -10,8 +11,8 @@ class ShowUserStorageCapacityController extends Controller /** * Get user storage details */ - public function __invoke(User $user): UserStorageResource + public function __invoke(User $user): JsonResponse { - return new UserStorageResource($user); + return response()->json(new UserStorageResource($user)); } } diff --git a/src/Domain/Admin/Controllers/Users/UserController.php b/src/Domain/Admin/Controllers/Users/UserController.php index 9265f971..b06f1d8a 100644 --- a/src/Domain/Admin/Controllers/Users/UserController.php +++ b/src/Domain/Admin/Controllers/Users/UserController.php @@ -2,8 +2,8 @@ namespace Domain\Admin\Controllers\Users; use App\Users\Models\User; -use Illuminate\Http\Response; use App\Users\DTO\CreateUserData; +use Illuminate\Http\JsonResponse; use App\Http\Controllers\Controller; use App\Users\Resources\UserResource; use App\Users\Resources\UsersCollection; @@ -21,26 +21,26 @@ class UserController extends Controller /** * Get all users */ - public function index(): UsersCollection + public function index(): JsonResponse { $users = User::sortable(['created_at', 'DESC']) ->paginate(15); - return new UsersCollection($users); + return response()->json(new UsersCollection($users)); } /** * Get user details */ - public function show(User $user): UserResource + public function show(User $user): JsonResponse { - return new UserResource($user); + return response()->json(new UserResource($user)); } /** * Create new user by admin */ - public function store(CreateUserByAdmin $request): Response + public function store(CreateUserByAdmin $request): JsonResponse { // Map user data $data = CreateUserData::fromArray([ @@ -55,7 +55,7 @@ class UserController extends Controller try { $user = ($this->createNewUser)($data); } catch (MeteredBillingPlanDoesntExist $e) { - return response([ + return response()->json([ 'type' => 'error', 'message' => 'User registrations are temporarily disabled', ], 409); @@ -67,6 +67,6 @@ class UserController extends Controller $user->save(); - return response(new UserResource($user), 201); + return response()->json(new UserResource($user), 201); } } diff --git a/src/Domain/Browsing/Controllers/SpotlightSearchController.php b/src/Domain/Browsing/Controllers/SpotlightSearchController.php index b92c5d3c..69d5e827 100644 --- a/src/Domain/Browsing/Controllers/SpotlightSearchController.php +++ b/src/Domain/Browsing/Controllers/SpotlightSearchController.php @@ -7,6 +7,7 @@ use Illuminate\Support\Arr; use Domain\Files\Models\File; use App\Users\Models\UserSetting; use Domain\Folders\Models\Folder; +use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\Auth; use Domain\Items\Requests\SearchRequest; use Domain\Files\Resources\FilesCollection; @@ -17,7 +18,7 @@ class SpotlightSearchController { public function __invoke( SearchRequest $request - ) { + ): JsonResponse { // Prepare queries $query = remove_accents( $request->input('query') @@ -32,11 +33,12 @@ class SpotlightSearchController return $this->searchFiles($query); } - private function searchUsers($query) - { + private function searchUsers( + string $query + ): JsonResponse { // Prevent to show non admin user searching if (Auth::user()->role !== 'admin') { - abort(401); + abort(response()->json(accessDeniedError()), 403); } // Get user ids @@ -44,13 +46,16 @@ class SpotlightSearchController ->get() ->pluck('user_id'); - return new UsersMinimalCollection( + $users = new UsersMinimalCollection( User::find($results) ); + + return response()->json($users); } - private function searchFiles(string $query) - { + private function searchFiles( + string $query + ): JsonResponse { $user_id = Auth::id(); // Get "shared with me" folders @@ -92,9 +97,9 @@ class SpotlightSearchController ->take(3); // Collect folders and files to single array - return [ + return response()->json([ 'folders' => new FolderCollection($folders), 'files' => new FilesCollection($files), - ]; + ]); } } diff --git a/src/Domain/Files/Actions/DownloadFileAction.php b/src/Domain/Files/Actions/DownloadFileAction.php index 58257b23..8526cd83 100644 --- a/src/Domain/Files/Actions/DownloadFileAction.php +++ b/src/Domain/Files/Actions/DownloadFileAction.php @@ -6,11 +6,13 @@ use Illuminate\Http\Response; use Illuminate\Http\RedirectResponse; use Illuminate\Support\Facades\Storage; use Symfony\Component\HttpFoundation\StreamedResponse; +use Illuminate\Contracts\Filesystem\FileNotFoundException; class DownloadFileAction { /** * Call and download file + * @throws FileNotFoundException */ public function __invoke(File $file): Response|StreamedResponse|RedirectResponse { @@ -21,7 +23,9 @@ class DownloadFileAction $fileName = getPrettyName($file); // Check if file exist - abort_if(Storage::missing($filePath), 404, 'The file not found.'); + if (Storage::missing($filePath)) { + throw new FileNotFoundException(); + } // Format response header $header = [ diff --git a/src/Domain/Files/Actions/DownloadThumbnailAction.php b/src/Domain/Files/Actions/DownloadThumbnailAction.php index f8eb2b3f..2f7d3f4d 100644 --- a/src/Domain/Files/Actions/DownloadThumbnailAction.php +++ b/src/Domain/Files/Actions/DownloadThumbnailAction.php @@ -2,19 +2,21 @@ namespace Domain\Files\Actions; use Domain\Files\Models\File; -use Illuminate\Http\Response; use Illuminate\Support\Facades\Storage; use Symfony\Component\HttpFoundation\StreamedResponse; +use Illuminate\Contracts\Filesystem\FileNotFoundException; class DownloadThumbnailAction { /** * Get image thumbnail for browser + * + * @throws FileNotFoundException */ public function __invoke( string $filename, File $file - ): StreamedResponse|Response { + ): StreamedResponse { // Get file path $filePath = "/files/$file->user_id/$filename"; @@ -25,7 +27,7 @@ class DownloadThumbnailAction // Check if original file exist if (! Storage::exists($substituteFilePath)) { - return response('File not found', 404); + throw new FileNotFoundException(); } // Return image thumbnail diff --git a/src/Domain/Files/Controllers/FileAccess/GetFileController.php b/src/Domain/Files/Controllers/FileAccess/GetFileController.php index 6341218c..f7ac4e02 100644 --- a/src/Domain/Files/Controllers/FileAccess/GetFileController.php +++ b/src/Domain/Files/Controllers/FileAccess/GetFileController.php @@ -3,7 +3,7 @@ namespace Domain\Files\Controllers\FileAccess; use Gate; use Domain\Files\Models\File; -use Illuminate\Http\Response; +use Illuminate\Http\JsonResponse; use App\Http\Controllers\Controller; use Illuminate\Http\RedirectResponse; use Domain\Files\Actions\DownloadFileAction; @@ -20,7 +20,7 @@ class GetFileController extends Controller public function __invoke( string $filename, - ): Response|RedirectResponse|StreamedResponse { + ): JsonResponse|RedirectResponse|StreamedResponse { // Get requested file $file = File::withTrashed() ->where('basename', $filename) @@ -28,12 +28,12 @@ class GetFileController extends Controller // Check if user can download file if (! $file->user->canDownload()) { - return response(userActionNotAllowedError(), 401); + return response()->json(userActionNotAllowedError(), 401); } // Check if user has privileges to download file if (! Gate::any(['can-edit', 'can-view'], [$file, null])) { - return response(accessDeniedError(), 403); + return response()->json(accessDeniedError(), 403); } // TODO: resolve video buffering diff --git a/src/Domain/Files/Controllers/FileAccess/GetThumbnailController.php b/src/Domain/Files/Controllers/FileAccess/GetThumbnailController.php index 6987cbe5..5d5216a4 100644 --- a/src/Domain/Files/Controllers/FileAccess/GetThumbnailController.php +++ b/src/Domain/Files/Controllers/FileAccess/GetThumbnailController.php @@ -4,7 +4,7 @@ namespace Domain\Files\Controllers\FileAccess; use Gate; use Illuminate\Http\Request; use Domain\Files\Models\File; -use Illuminate\Http\Response; +use Illuminate\Http\JsonResponse; use App\Http\Controllers\Controller; use Domain\Files\Actions\DownloadThumbnailAction; use Symfony\Component\HttpFoundation\StreamedResponse; @@ -17,10 +17,13 @@ class GetThumbnailController extends Controller ) { } + /** + * @throws FileNotFoundException + */ public function __invoke( Request $request, string $filename, - ): FileNotFoundException | StreamedResponse | Response { + ): FileNotFoundException | StreamedResponse | JsonResponse { // Get requested thumbnail $file = File::withTrashed() ->where('basename', substr($filename, 3)) @@ -28,7 +31,7 @@ class GetThumbnailController extends Controller // Check if user has privileges to download file if (! Gate::any(['can-edit', 'can-view'], [$file, null])) { - return response(accessDeniedError(), 403); + return response()->json(accessDeniedError(), 403); } return ($this->downloadThumbnail)($filename, $file); diff --git a/src/Domain/Files/Controllers/FileAccess/VisitorGetFileController.php b/src/Domain/Files/Controllers/FileAccess/VisitorGetFileController.php index fe868516..ab12f463 100644 --- a/src/Domain/Files/Controllers/FileAccess/VisitorGetFileController.php +++ b/src/Domain/Files/Controllers/FileAccess/VisitorGetFileController.php @@ -2,8 +2,8 @@ namespace Domain\Files\Controllers\FileAccess; use Domain\Files\Models\File; -use Illuminate\Http\Response; use Domain\Sharing\Models\Share; +use Illuminate\Http\JsonResponse; use App\Http\Controllers\Controller; use Illuminate\Http\RedirectResponse; use Domain\Files\Actions\DownloadFileAction; @@ -11,6 +11,7 @@ use Domain\Traffic\Actions\RecordDownloadAction; use Domain\Sharing\Actions\ProtectShareRecordAction; use Symfony\Component\HttpFoundation\StreamedResponse; use Domain\Sharing\Actions\VerifyAccessToItemWithinAction; +use Illuminate\Contracts\Filesystem\FileNotFoundException; /** * Get file public @@ -25,13 +26,16 @@ class VisitorGetFileController extends Controller ) { } + /** + * @throws FileNotFoundException + */ public function __invoke( $filename, Share $shared, - ): StreamedResponse|RedirectResponse|Response { + ): StreamedResponse|RedirectResponse|JsonResponse { // Check if user can download file if (! $shared->user->canDownload()) { - return response(userActionNotAllowedError(), 401); + return response()->json(userActionNotAllowedError(), 401); } // Check ability to access protected share files diff --git a/src/Domain/Files/Controllers/FileAccess/VisitorGetThumbnailController.php b/src/Domain/Files/Controllers/FileAccess/VisitorGetThumbnailController.php index 563bca0f..2fa9bea3 100644 --- a/src/Domain/Files/Controllers/FileAccess/VisitorGetThumbnailController.php +++ b/src/Domain/Files/Controllers/FileAccess/VisitorGetThumbnailController.php @@ -9,6 +9,7 @@ use Domain\Files\Actions\DownloadThumbnailAction; use Domain\Sharing\Actions\ProtectShareRecordAction; use Symfony\Component\HttpFoundation\StreamedResponse; use Domain\Sharing\Actions\VerifyAccessToItemWithinAction; +use Illuminate\Contracts\Filesystem\FileNotFoundException; /** * Get public image thumbnail @@ -23,6 +24,9 @@ class VisitorGetThumbnailController extends Controller ) { } + /** + * @throws FileNotFoundException + */ public function __invoke( $filename, Share $shared, diff --git a/src/Domain/Files/Controllers/UploadFileChunksController.php b/src/Domain/Files/Controllers/UploadFileChunksController.php index 97229149..9425fa9a 100644 --- a/src/Domain/Files/Controllers/UploadFileChunksController.php +++ b/src/Domain/Files/Controllers/UploadFileChunksController.php @@ -26,8 +26,9 @@ class UploadFileChunksController extends Controller * * @throws FileNotFoundException */ - public function __invoke(UploadChunkRequest $request) - { + public function __invoke( + UploadChunkRequest $request + ) { if (isDemoAccount()) { return ($this->fakeUploadFile)($request); } diff --git a/src/Domain/Files/Controllers/UploadFileController.php b/src/Domain/Files/Controllers/UploadFileController.php index 5d92a156..8f0c79e6 100644 --- a/src/Domain/Files/Controllers/UploadFileController.php +++ b/src/Domain/Files/Controllers/UploadFileController.php @@ -19,8 +19,9 @@ class UploadFileController extends Controller ) { } - public function __invoke(UploadFileRequest $request): JsonResponse - { + public function __invoke( + UploadFileRequest $request + ): JsonResponse { if (isDemoAccount()) { return response()->json(($this->fakeUploadFile)($request), 201); } diff --git a/src/Domain/Files/Controllers/VisitorShowFileController.php b/src/Domain/Files/Controllers/VisitorShowFileController.php index 337d8cbf..692bf5fb 100644 --- a/src/Domain/Files/Controllers/VisitorShowFileController.php +++ b/src/Domain/Files/Controllers/VisitorShowFileController.php @@ -4,6 +4,7 @@ namespace Domain\Files\Controllers; use Gate; use Domain\Files\Models\File; use Domain\Sharing\Models\Share; +use Illuminate\Auth\Access\AuthorizationException; use Illuminate\Http\JsonResponse; use Domain\Files\Resources\FileResource; @@ -12,6 +13,9 @@ use Domain\Files\Resources\FileResource; */ class VisitorShowFileController { + /** + * @throws AuthorizationException + */ public function __invoke( Share $shared ): JsonResponse { diff --git a/src/Domain/Files/Controllers/VisitorUploadFileChunksController.php b/src/Domain/Files/Controllers/VisitorUploadFileChunksController.php index da8b7dae..4e5cb6a9 100644 --- a/src/Domain/Files/Controllers/VisitorUploadFileChunksController.php +++ b/src/Domain/Files/Controllers/VisitorUploadFileChunksController.php @@ -72,7 +72,7 @@ class VisitorUploadFileChunksController extends Controller // Set public access url $file->setSharedPublicUrl($shared->token); - return response(new FileResource($file), 201); + return response()->json(new FileResource($file), 201); } } } diff --git a/src/Domain/Folders/Controllers/FavouriteController.php b/src/Domain/Folders/Controllers/FavouriteController.php index ce46b122..d353503e 100644 --- a/src/Domain/Folders/Controllers/FavouriteController.php +++ b/src/Domain/Folders/Controllers/FavouriteController.php @@ -11,8 +11,9 @@ class FavouriteController extends Controller /** * Add folder to user favourites */ - public function store(AddFolderToFavouritesRequest $request): JsonResponse - { + public function store( + AddFolderToFavouritesRequest $request + ): JsonResponse { $successResponse = [ 'type' => 'success', 'message' => 'Folder was successfully added into your favourites folders', @@ -37,8 +38,9 @@ class FavouriteController extends Controller /** * Remove folder from user favourites */ - public function destroy(string $id): JsonResponse - { + public function destroy( + string $id + ): JsonResponse { $successResponse = [ 'type' => 'success', 'message' => 'Folder was successfully removed from your favourites folders', diff --git a/src/Domain/Folders/Controllers/NavigationTreeController.php b/src/Domain/Folders/Controllers/NavigationTreeController.php index 804c5319..e2ccfe6d 100644 --- a/src/Domain/Folders/Controllers/NavigationTreeController.php +++ b/src/Domain/Folders/Controllers/NavigationTreeController.php @@ -2,12 +2,13 @@ namespace Domain\Folders\Controllers; use Domain\Folders\Models\Folder; +use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Auth; class NavigationTreeController { - public function __invoke(): array + public function __invoke(): JsonResponse { // Get signed user folders $folders = Folder::with('folders:id,parent_id,name,team_folder') @@ -36,7 +37,7 @@ class NavigationTreeController ->sortable() ->get(['id', 'parent_id', 'name']); - return [ + return response()->json([ [ 'location' => 'files', 'name' => __t('menu.files'), @@ -58,6 +59,6 @@ class NavigationTreeController 'isMovable' => false, 'isOpen' => false, ], - ]; + ]); } } diff --git a/src/Domain/Invoices/Controllers/GetInvoiceController.php b/src/Domain/Invoices/Controllers/GetInvoiceController.php index ad017a2a..b936b285 100644 --- a/src/Domain/Invoices/Controllers/GetInvoiceController.php +++ b/src/Domain/Invoices/Controllers/GetInvoiceController.php @@ -16,8 +16,9 @@ class GetInvoiceController extends Controller ) { } - public function __invoke(Transaction $invoice): View|Factory|Application - { + public function __invoke( + Transaction $invoice + ): View { // Get app settings $settings = json_decode( Setting::all() diff --git a/src/Domain/Items/Controllers/RenameFileOrFolderController.php b/src/Domain/Items/Controllers/RenameFileOrFolderController.php index 7a01a792..0dfec56c 100644 --- a/src/Domain/Items/Controllers/RenameFileOrFolderController.php +++ b/src/Domain/Items/Controllers/RenameFileOrFolderController.php @@ -1,6 +1,7 @@ fakeRenameFileOrFolder)($request, $id); if ($request->input('type') === 'folder') { - return new FolderResource($item); + return response()->json(new FolderResource($item)); } - return new FileResource($item); + return response()->json(new FileResource($item)); } // If request contain icon or color, then change it @@ -47,9 +48,9 @@ class RenameFileOrFolderController extends Controller $item = ($this->renameFileOrFolder)($request, $id); if ($request->input('type') === 'folder') { - return new FolderResource($item); + return response()->json(new FolderResource($item)); } - return new FileResource($item); + return response()->json(new FileResource($item)); } } diff --git a/src/Domain/Localization/Controllers/CurrentLocalizationController.php b/src/Domain/Localization/Controllers/CurrentLocalizationController.php index 6eec150a..36e21c58 100644 --- a/src/Domain/Localization/Controllers/CurrentLocalizationController.php +++ b/src/Domain/Localization/Controllers/CurrentLocalizationController.php @@ -1,7 +1,7 @@ rememberForever("language-translations-$lang", function () use ($lang) { try { @@ -25,8 +25,10 @@ class CurrentLocalizationController } }); - return $translations + $appTranslations = $translations ? map_language_translations($translations) : get_default_language_translations(); + + return response()->json($appTranslations); } } diff --git a/src/Domain/Localization/Controllers/LanguageController.php b/src/Domain/Localization/Controllers/LanguageController.php index 713a43be..0ef13f6d 100644 --- a/src/Domain/Localization/Controllers/LanguageController.php +++ b/src/Domain/Localization/Controllers/LanguageController.php @@ -1,7 +1,7 @@ json( new LanguageCollection( Language::sortable(['created_at', 'DESC'])->get() - ), - 200 + ) ); } /** * Get all language strings for admin translate */ - public function show(Language $language): Response - { - return response( - new LanguageResource($language), - 200 - ); + public function show( + Language $language + ): JsonResponse { + return response()->json(new LanguageResource($language)); } /** * Create new language */ - public function store(CreateLanguageRequest $request): Response - { + public function store( + CreateLanguageRequest $request + ): JsonResponse { // Abort in demo mode - abort_if(is_demo(), 204, 'Done.'); + if (is_demo()) { + $language = Language::query() + ->where('locale', 'en') + ->first(); + + return response()->json( + new LanguageResource($language), + 201 + ); + } $language = Language::create([ 'name' => $request->input('name'), 'locale' => $request->input('locale'), ]); - return response( + return response()->json( new LanguageResource($language), 201 ); @@ -61,15 +68,20 @@ class LanguageController extends Controller public function update( UpdateLanguageRequest $request, Language $language - ): Response { + ): JsonResponse { // Abort in demo mode - abort_if(is_demo(), 204, 'Done.'); + if (is_demo()) { + return response()->json( + new LanguageResource($language), + 201 + ); + } $language->update( make_single_input($request) ); - return response( + return response()->json( new LanguageResource($language), 201 ); @@ -78,13 +90,23 @@ class LanguageController extends Controller /** * Delete the language with all children strings */ - public function destroy(Language $language): Response - { - // Abort in demo mode - abort_if(is_demo(), 204, 'Done.'); + public function destroy( + Language $language + ): JsonResponse { + $message = [ + 'type' => 'success', + 'message' => 'The language was successfully deleted', + ]; + + if (is_demo()) { + return response()->json($message); + } if ($language->locale === 'en') { - return response("Sorry, you can't delete default language.", 401); + return response()->json([ + 'type' => 'error', + 'message' => "Sorry, you can't delete default language.", + ], 422); } // If user try to delete language used as default, @@ -96,9 +118,6 @@ class LanguageController extends Controller $language->delete(); - return response( - 'Done', - 204 - ); + return response()->json($message); } } diff --git a/src/Domain/Localization/Controllers/UpdateLanguageStringController.php b/src/Domain/Localization/Controllers/UpdateLanguageStringController.php index 0e42c6ae..2aa5291c 100644 --- a/src/Domain/Localization/Controllers/UpdateLanguageStringController.php +++ b/src/Domain/Localization/Controllers/UpdateLanguageStringController.php @@ -1,7 +1,7 @@ 'success', + 'message' => 'The language strings was successfully updated', + ]; + + if (is_demo()) { + return response()->json($message); + } $language ->languageTranslations() @@ -27,9 +33,6 @@ class UpdateLanguageStringController extends Controller cache()->forget("language-translations-{$language->locale}"); - return response( - 'Done', - 204 - ); + return response()->json($message); } } diff --git a/src/Domain/Notifications/Controllers/FlushUserNotificationsController.php b/src/Domain/Notifications/Controllers/FlushUserNotificationsController.php index 27e20380..fdcbd614 100644 --- a/src/Domain/Notifications/Controllers/FlushUserNotificationsController.php +++ b/src/Domain/Notifications/Controllers/FlushUserNotificationsController.php @@ -18,7 +18,10 @@ class FlushUserNotificationsController extends Controller } // Delete all notifications - auth()->user()->notifications()->delete(); + auth() + ->user() + ->notifications() + ->delete(); return response()->json($successMessage); } diff --git a/src/Domain/Notifications/Controllers/GetUserNotificationsController.php b/src/Domain/Notifications/Controllers/GetUserNotificationsController.php index 6281726f..8b8f2383 100644 --- a/src/Domain/Notifications/Controllers/GetUserNotificationsController.php +++ b/src/Domain/Notifications/Controllers/GetUserNotificationsController.php @@ -1,15 +1,18 @@ user()->notifications ); + + return response()->json($notifications); } } diff --git a/src/Domain/Notifications/Controllers/MarkUserNotificationsAsReadController.php b/src/Domain/Notifications/Controllers/MarkUserNotificationsAsReadController.php index f6d0b2f0..cba90ea6 100644 --- a/src/Domain/Notifications/Controllers/MarkUserNotificationsAsReadController.php +++ b/src/Domain/Notifications/Controllers/MarkUserNotificationsAsReadController.php @@ -18,9 +18,12 @@ class MarkUserNotificationsAsReadController extends Controller } // Mark all notifications as read - auth()->user()->unreadNotifications()->update([ - 'read_at' => now(), - ]); + auth() + ->user() + ->unreadNotifications() + ->update([ + 'read_at' => now(), + ]); return response()->json($successMessage); } diff --git a/src/Domain/Pages/Controllers/AdminPagesController.php b/src/Domain/Pages/Controllers/AdminPagesController.php index 3ae72d99..fd72664a 100644 --- a/src/Domain/Pages/Controllers/AdminPagesController.php +++ b/src/Domain/Pages/Controllers/AdminPagesController.php @@ -3,7 +3,7 @@ namespace Domain\Pages\Controllers; use Illuminate\Http\Request; use Domain\Pages\Models\Page; -use Illuminate\Http\Response; +use Illuminate\Http\JsonResponse; use App\Http\Controllers\Controller; use Domain\Pages\Resources\PageResource; use Domain\Pages\Resources\PageCollection; @@ -13,37 +13,38 @@ class AdminPagesController extends Controller /** * Get all pages */ - public function index(): PageCollection + public function index(): JsonResponse { - return new PageCollection( + return response()->json(new PageCollection( Page::sortable() ->paginate(10) - ); + )); } /** * Get single page resource */ - public function show(Page $page): PageResource + public function show(Page $page): JsonResponse { - return new PageResource($page); + return response()->json(new PageResource($page)); } /** * Update page content */ - public function update(Request $request, Page $page): Response - { + public function update( + Request $request, + Page $page, + ): JsonResponse { // Abort in demo mode - abort_if(is_demo(), 204, 'Done.'); + if (is_demo()) { + return response()->json(new PageResource($page)); + } $page->update( make_single_input($request) ); - return response( - new PageResource($page), - 204 - ); + return response()->json(new PageResource($page)); } } diff --git a/src/Domain/RemoteUpload/Controllers/RemoteUploadFileController.php b/src/Domain/RemoteUpload/Controllers/RemoteUploadFileController.php index feb3778e..fd96ecee 100644 --- a/src/Domain/RemoteUpload/Controllers/RemoteUploadFileController.php +++ b/src/Domain/RemoteUpload/Controllers/RemoteUploadFileController.php @@ -15,8 +15,10 @@ class RemoteUploadFileController extends Controller ) { } - public function __invoke(RemoteUploadRequest $request, ?Share $shared = null): JsonResponse - { + public function __invoke( + RemoteUploadRequest $request, + ?Share $shared = null, + ): JsonResponse { $successMessage = [ 'type' => 'success', 'message' => 'Files was successfully uploaded.', diff --git a/src/Domain/RemoteUpload/Controllers/UploadFilesRemotelyForUploadRequestController.php b/src/Domain/RemoteUpload/Controllers/UploadFilesRemotelyForUploadRequestController.php index 23ac0993..2c91bdeb 100644 --- a/src/Domain/RemoteUpload/Controllers/UploadFilesRemotelyForUploadRequestController.php +++ b/src/Domain/RemoteUpload/Controllers/UploadFilesRemotelyForUploadRequestController.php @@ -6,6 +6,7 @@ use Domain\UploadRequest\Models\UploadRequest; use Domain\RemoteUpload\Requests\RemoteUploadRequest; use Domain\RemoteUpload\Actions\GetContentFromExternalSource; use Domain\UploadRequest\Actions\CreateUploadRequestRootFolderAction; +use Illuminate\Http\JsonResponse; class UploadFilesRemotelyForUploadRequestController { @@ -15,8 +16,10 @@ class UploadFilesRemotelyForUploadRequestController ) { } - public function __invoke(RemoteUploadRequest $request, UploadRequest $uploadRequest) - { + public function __invoke( + RemoteUploadRequest $request, + UploadRequest $uploadRequest + ): JsonResponse { $successMessage = [ 'type' => 'success', 'message' => 'Files was successfully uploaded.', diff --git a/src/Domain/Settings/Controllers/DownloadLogController.php b/src/Domain/Settings/Controllers/DownloadLogController.php index 3f9351cf..de40a22e 100644 --- a/src/Domain/Settings/Controllers/DownloadLogController.php +++ b/src/Domain/Settings/Controllers/DownloadLogController.php @@ -1,35 +1,33 @@ json([ + 'type' => 'success', + ]); } // Get log path $logPath = storage_path("logs/$log"); // Download log - return response()->download( - storage_path("logs/$log"), - $log, - [ + return response() + ->download(storage_path("logs/$log"), $log, [ 'Accept-Ranges' => 'bytes', 'Content-Type' => 'text/plain', 'Content-Length' => File::size($logPath), 'Content-Range' => 'bytes 0-600/' . File::size($logPath), 'Content-Disposition' => "attachment; filename=$log", - ] - ); + ]); } } diff --git a/src/Domain/Settings/Controllers/FlushCacheController.php b/src/Domain/Settings/Controllers/FlushCacheController.php index 3abf5731..78b13554 100644 --- a/src/Domain/Settings/Controllers/FlushCacheController.php +++ b/src/Domain/Settings/Controllers/FlushCacheController.php @@ -2,7 +2,7 @@ namespace Domain\Settings\Controllers; use Artisan; -use Illuminate\Http\Response; +use Illuminate\Http\JsonResponse; use App\Http\Controllers\Controller; class FlushCacheController extends Controller @@ -10,10 +10,17 @@ class FlushCacheController extends Controller /** * Clear application cache */ - public function __invoke(): Response + public function __invoke(): JsonResponse { + $message = [ + 'type' => 'success', + 'message' => 'The cache was successfully flushed', + ]; + // Abort in demo mode - abort_if(is_demo(), 204, 'Done.'); + if (is_demo()) { + return response()->json($message); + } if (! app()->runningUnitTests()) { Artisan::call('cache:clear'); @@ -21,6 +28,6 @@ class FlushCacheController extends Controller Artisan::call('config:cache'); } - return response('Done', 204); + return response()->json($message); } } diff --git a/src/Domain/Settings/Controllers/GetAppImageController.php b/src/Domain/Settings/Controllers/GetAppImageController.php index 742c3b41..7943c2a3 100644 --- a/src/Domain/Settings/Controllers/GetAppImageController.php +++ b/src/Domain/Settings/Controllers/GetAppImageController.php @@ -1,9 +1,9 @@ getServerSetupStatus)(); @@ -32,6 +33,6 @@ class GetServerStatusController 'lastUpdate' => isRunningCron() ? format_date(cache()->get('latest_cron_update')) : null, ]; - return $status; + return response()->json($status); } } diff --git a/src/Domain/Settings/Controllers/GetSettingsValueController.php b/src/Domain/Settings/Controllers/GetSettingsValueController.php index fbda0862..8917e6ef 100644 --- a/src/Domain/Settings/Controllers/GetSettingsValueController.php +++ b/src/Domain/Settings/Controllers/GetSettingsValueController.php @@ -2,7 +2,7 @@ namespace Domain\Settings\Controllers; use Illuminate\Http\Request; -use Illuminate\Support\Collection; +use Illuminate\Http\JsonResponse; use Domain\Settings\Models\Setting; class GetSettingsValueController @@ -17,24 +17,32 @@ class GetSettingsValueController */ public function __invoke( Request $request - ): Collection { + ): JsonResponse { if (str_contains($request->get('column'), '|')) { $columns = collect(explode('|', $request->get('column'))) ->each(function ($column) { if (in_array($column, $this->blacklist)) { - abort(401); + abort( + response()->json(accessDeniedError(), 401) + ); } }); - return Setting::whereIn('name', $columns) + $settings = Setting::whereIn('name', $columns) ->pluck('value', 'name'); + + return response()->json($settings); } if (in_array($request->get('column'), $this->blacklist)) { - abort(401); + abort( + response()->json(accessDeniedError(), 401) + ); } - return Setting::where('name', $request->get('column')) + $settings = Setting::where('name', $request->get('column')) ->pluck('value', 'name'); + + return response()->json($settings); } } diff --git a/src/Domain/Settings/Controllers/StoreBroadcastServiceCredentialsController.php b/src/Domain/Settings/Controllers/StoreBroadcastServiceCredentialsController.php index 98cc3060..47d92872 100644 --- a/src/Domain/Settings/Controllers/StoreBroadcastServiceCredentialsController.php +++ b/src/Domain/Settings/Controllers/StoreBroadcastServiceCredentialsController.php @@ -2,7 +2,7 @@ namespace Domain\Settings\Controllers; use Artisan; -use Illuminate\Http\Response; +use Illuminate\Http\JsonResponse; use Domain\Settings\Requests\StoreBroadcastServiceCredentialsRequest; class StoreBroadcastServiceCredentialsController @@ -10,10 +10,17 @@ class StoreBroadcastServiceCredentialsController /** * Configure stripe additionally */ - public function __invoke(StoreBroadcastServiceCredentialsRequest $request): Response - { - // Abort in demo mode - abort_if(is_demo(), 204, 'Done.'); + public function __invoke( + StoreBroadcastServiceCredentialsRequest $request + ): JsonResponse { + $message = [ + 'type' => 'success', + 'message' => 'The 3rd part authentication credentials was successfully set', + ]; + + if (is_demo()) { + return response()->json($message); + } // Get and store credentials if (! app()->runningUnitTests()) { @@ -54,6 +61,6 @@ class StoreBroadcastServiceCredentialsController } } - return response('Done', 204); + return response()->json($message); } } diff --git a/src/Domain/Settings/Controllers/StoreEmailCredentialsController.php b/src/Domain/Settings/Controllers/StoreEmailCredentialsController.php index ebd9d6b8..8f47dbeb 100644 --- a/src/Domain/Settings/Controllers/StoreEmailCredentialsController.php +++ b/src/Domain/Settings/Controllers/StoreEmailCredentialsController.php @@ -22,10 +22,18 @@ class StoreEmailCredentialsController /** * Set new email credentials to .env file */ - public function __invoke(StoreEmailCredentialsRequest $request): JsonResponse - { + public function __invoke( + StoreEmailCredentialsRequest $request + ): JsonResponse { + $message = [ + 'type' => 'success', + 'message' => 'The email credentials was successfully set', + ]; + // Abort in demo mode - abort_if(is_demo(), 204, 'Done.'); + if (is_demo()) { + return response()->json($message); + } if (! app()->runningUnitTests()) { // Test email connection @@ -107,6 +115,6 @@ class StoreEmailCredentialsController Artisan::call('config:cache'); } - return response()->json('Done', 204); + return response()->json($message); } } diff --git a/src/Domain/Settings/Controllers/StorePaymentServiceCredentialsController.php b/src/Domain/Settings/Controllers/StorePaymentServiceCredentialsController.php index 677d93f6..8ab1d1d4 100644 --- a/src/Domain/Settings/Controllers/StorePaymentServiceCredentialsController.php +++ b/src/Domain/Settings/Controllers/StorePaymentServiceCredentialsController.php @@ -2,7 +2,7 @@ namespace Domain\Settings\Controllers; use Artisan; -use Illuminate\Http\Response; +use Illuminate\Http\JsonResponse; use Domain\Settings\Models\Setting; use Domain\Settings\Actions\TestPayPalConnectionAction; use Domain\Settings\Actions\TestStripeConnectionAction; @@ -21,10 +21,17 @@ class StorePaymentServiceCredentialsController /** * Configure stripe additionally */ - public function __invoke(StorePaymentServiceCredentialsRequest $request): Response - { - // Abort in demo mode - abort_if(is_demo(), 204, 'Done.'); + public function __invoke( + StorePaymentServiceCredentialsRequest $request + ): JsonResponse { + $message = [ + 'type' => 'success', + 'message' => 'The payment credentials was successfully set', + ]; + + if (is_demo()) { + return response()->json($message); + } $options = [ 'stripe' => [ @@ -105,6 +112,6 @@ class StorePaymentServiceCredentialsController } } - return response('Done', 204); + return response()->json($message); } } diff --git a/src/Domain/Settings/Controllers/StoreSocialServiceCredentialsController.php b/src/Domain/Settings/Controllers/StoreSocialServiceCredentialsController.php index 2dcee8a1..b020cbd2 100644 --- a/src/Domain/Settings/Controllers/StoreSocialServiceCredentialsController.php +++ b/src/Domain/Settings/Controllers/StoreSocialServiceCredentialsController.php @@ -2,7 +2,7 @@ namespace Domain\Settings\Controllers; use Artisan; -use Illuminate\Http\Response; +use Illuminate\Http\JsonResponse; use Domain\Settings\Models\Setting; use Domain\Settings\Requests\StoreSocialServiceCredentialsRequest; @@ -11,10 +11,17 @@ class StoreSocialServiceCredentialsController /** * Configure stripe additionally */ - public function __invoke(StoreSocialServiceCredentialsRequest $request): Response - { - // Abort in demo mode - abort_if(is_demo(), 204, 'Done.'); + public function __invoke( + StoreSocialServiceCredentialsRequest $request + ): JsonResponse { + $message = [ + 'type' => 'success', + 'message' => 'The 3rd part authentication credentials was successfully set', + ]; + + if (is_demo()) { + return response()->json($message); + } // Set on social login Setting::updateOrCreate([ @@ -55,6 +62,6 @@ class StoreSocialServiceCredentialsController } } - return response('Done', 204); + return response()->json($message); } } diff --git a/src/Domain/Settings/Controllers/StoreStorageCredentialsController.php b/src/Domain/Settings/Controllers/StoreStorageCredentialsController.php index 2b2cfaa9..b8b1a73e 100644 --- a/src/Domain/Settings/Controllers/StoreStorageCredentialsController.php +++ b/src/Domain/Settings/Controllers/StoreStorageCredentialsController.php @@ -2,7 +2,7 @@ namespace Domain\Settings\Controllers; use Artisan; -use Illuminate\Http\Response; +use Illuminate\Http\JsonResponse; use Domain\Settings\DTO\S3CredentialsData; use Domain\Settings\Actions\TestS3ConnectionAction; use Domain\Settings\Actions\TestFTPConnectionAction; @@ -19,10 +19,17 @@ class StoreStorageCredentialsController /** * Set new email credentials to .env file */ - public function __invoke(StoreStorageCredentialsRequest $request): Response - { - // Abort in demo mode - abort_if(is_demo(), 204, 'Done.'); + public function __invoke( + StoreStorageCredentialsRequest $request + ): JsonResponse { + $message = [ + 'type' => 'success', + 'message' => 'The storage credentials was successfully set', + ]; + + if (is_demo()) { + return response()->json($message); + } // Get storage driver from request $driver = match ($request->input('storage.driver')) { @@ -72,6 +79,6 @@ class StoreStorageCredentialsController Artisan::call('config:cache'); } - return response('Done', 204); + return response()->json($message); } } diff --git a/src/Domain/Settings/Controllers/UpdateSettingValueController.php b/src/Domain/Settings/Controllers/UpdateSettingValueController.php index a125c084..2e1782af 100644 --- a/src/Domain/Settings/Controllers/UpdateSettingValueController.php +++ b/src/Domain/Settings/Controllers/UpdateSettingValueController.php @@ -2,7 +2,7 @@ namespace Domain\Settings\Controllers; use Illuminate\Http\Request; -use Illuminate\Http\Response; +use Illuminate\Http\JsonResponse; use Domain\Settings\Models\Setting; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Artisan; @@ -12,10 +12,17 @@ class UpdateSettingValueController extends Controller /** * Update setting item. */ - public function __invoke(Request $request): Response + public function __invoke(Request $request): JsonResponse { + $message = [ + 'type' => 'success', + 'message' => 'The value was successfully updated', + ]; + // Abort in demo mode - abort_if(is_demo(), 204, 'Done.'); + if (is_demo()) { + return response()->json($message); + } // Store image if exist if ($request->hasFile($request->input('name'))) { @@ -26,7 +33,7 @@ class UpdateSettingValueController extends Controller 'value' => store_system_image($request, $request->input('name')), ]); - return response('Done', 204); + return response()->json($message); } // Set paypal live option @@ -41,7 +48,7 @@ class UpdateSettingValueController extends Controller Artisan::call('config:cache'); } - return response('Done', 204); + return response()->json($message); } // Find and update variable @@ -50,6 +57,6 @@ class UpdateSettingValueController extends Controller ['value' => $request->input('value')] ); - return response('Done', 204); + return response()->json($message); } } diff --git a/src/Domain/Settings/Controllers/UpgradeLicenseController.php b/src/Domain/Settings/Controllers/UpgradeLicenseController.php index 0ade7d32..7ab95171 100644 --- a/src/Domain/Settings/Controllers/UpgradeLicenseController.php +++ b/src/Domain/Settings/Controllers/UpgradeLicenseController.php @@ -3,19 +3,18 @@ namespace Domain\Settings\Controllers; use DB; use Artisan; -use Illuminate\Http\Response; +use Illuminate\Http\JsonResponse; use Domain\Settings\Models\Setting; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Http; use Domain\Localization\Models\Language; -use Illuminate\Contracts\Foundation\Application; -use Illuminate\Contracts\Routing\ResponseFactory; use Domain\Settings\Requests\UpgradeLicenseRequest; class UpgradeLicenseController extends Controller { - public function __invoke(UpgradeLicenseRequest $request): Response|Application|ResponseFactory - { + public function __invoke( + UpgradeLicenseRequest $request + ): JsonResponse { // Verify purchase code $response = Http::get("https://verify.vuefilemanager.com/api/verify-code/{$request->input('purchaseCode')}"); @@ -94,9 +93,15 @@ class UpgradeLicenseController extends Controller Artisan::call('config:clear'); Artisan::call('cache:clear'); - return response('Your license was successfully upgraded', 201); + return response()->json([ + 'status' => 'success', + 'message' => 'Your license was successfully upgraded', + ], 201); } - return response('Purchase code is invalid or is not Extended License.', 400); + return response()->json([ + 'status' => 'error', + 'message' => 'Purchase code is invalid or is not Extended License.', + ], 400); } } diff --git a/src/Domain/SetupWizard/Controllers/StoreAppSettingsController.php b/src/Domain/SetupWizard/Controllers/StoreAppSettingsController.php index 46e90eb3..59e88b84 100644 --- a/src/Domain/SetupWizard/Controllers/StoreAppSettingsController.php +++ b/src/Domain/SetupWizard/Controllers/StoreAppSettingsController.php @@ -2,7 +2,7 @@ namespace Domain\SetupWizard\Controllers; use Illuminate\Support\Str; -use Illuminate\Http\Response; +use Illuminate\Http\JsonResponse; use Domain\Settings\Models\Setting; use App\Http\Controllers\Controller; use Domain\SetupWizard\Requests\StoreAppSetupRequest; @@ -14,7 +14,7 @@ class StoreAppSettingsController extends Controller */ public function __invoke( StoreAppSetupRequest $request - ): Response { + ): JsonResponse { collect([ [ 'name' => 'subscription_type', @@ -102,6 +102,9 @@ class StoreAppSettingsController extends Controller ]); } - return response('Done', 204); + return response()->json([ + 'type' => 'success', + 'message' => 'The app settings was set successfully', + ]); } } diff --git a/src/Domain/SetupWizard/Controllers/StoreDatabaseCredentialsController.php b/src/Domain/SetupWizard/Controllers/StoreDatabaseCredentialsController.php index 2e93cfff..cbec1908 100644 --- a/src/Domain/SetupWizard/Controllers/StoreDatabaseCredentialsController.php +++ b/src/Domain/SetupWizard/Controllers/StoreDatabaseCredentialsController.php @@ -3,6 +3,7 @@ namespace Domain\SetupWizard\Controllers; use DB; use Artisan; +use Illuminate\Http\JsonResponse; use Illuminate\Http\Response; use App\Http\Controllers\Controller; use Doctrine\DBAL\Driver\PDOException; @@ -16,7 +17,7 @@ class StoreDatabaseCredentialsController extends Controller */ public function __invoke( StoreDatabaseCredentialsRequest $request - ): Response { + ): JsonResponse { if (! app()->runningUnitTests()) { try { // Set temporary database connection @@ -57,6 +58,9 @@ class StoreDatabaseCredentialsController extends Controller Artisan::call('config:cache'); } - return response('Done', 204); + return response()->json([ + 'type' => 'success', + 'message' => 'The database was set successfully', + ]); } } diff --git a/src/Domain/SetupWizard/Controllers/StoreEnvironmentSettingsController.php b/src/Domain/SetupWizard/Controllers/StoreEnvironmentSettingsController.php index 81383e74..36e9bb7c 100644 --- a/src/Domain/SetupWizard/Controllers/StoreEnvironmentSettingsController.php +++ b/src/Domain/SetupWizard/Controllers/StoreEnvironmentSettingsController.php @@ -194,6 +194,9 @@ class StoreEnvironmentSettingsController extends Controller Artisan::call('config:cache'); } - return response()->json('Done', 204); + return response()->json([ + 'type' => 'success', + 'message' => 'The environment was set successfully', + ]); } } diff --git a/src/Domain/Sharing/Controllers/GetShareLinkViaQrCodeController.php b/src/Domain/Sharing/Controllers/GetShareLinkViaQrCodeController.php index 5a58f53e..b8f57b3d 100644 --- a/src/Domain/Sharing/Controllers/GetShareLinkViaQrCodeController.php +++ b/src/Domain/Sharing/Controllers/GetShareLinkViaQrCodeController.php @@ -2,7 +2,7 @@ namespace Domain\Sharing\Controllers; use BaconQrCode\Writer; -use Illuminate\Http\Response; +use Illuminate\Http\JsonResponse; use BaconQrCode\Renderer\Color\Rgb; use App\Http\Controllers\Controller; use BaconQrCode\Renderer\ImageRenderer; @@ -12,8 +12,9 @@ use BaconQrCode\Renderer\RendererStyle\RendererStyle; class GetShareLinkViaQrCodeController extends Controller { - public function __invoke($token): Response - { + public function __invoke( + $token + ): JsonResponse { // Get share url $url = url('/share', ['token' => $token]); @@ -28,6 +29,12 @@ class GetShareLinkViaQrCodeController extends Controller $qrCode = trim(substr($svg, strpos($svg, "\n") + 1)); // Return qr code - return response($qrCode); + return response()->json([ + 'type' => 'success', + 'message' => 'QR code successfully generated', + 'data' => [ + 'svg' => $qrCode, + ], + ]); } } diff --git a/src/Domain/Sharing/Controllers/ShareController.php b/src/Domain/Sharing/Controllers/ShareController.php index 641b72ee..7b32e687 100644 --- a/src/Domain/Sharing/Controllers/ShareController.php +++ b/src/Domain/Sharing/Controllers/ShareController.php @@ -54,8 +54,9 @@ class ShareController extends Controller /** * Delete sharing item */ - public function destroy(RevokeSharesRequest $request): JsonResponse - { + public function destroy( + RevokeSharesRequest $request + ): JsonResponse { foreach ($request->input('tokens') as $token) { // Delete share record $record = Share::where('token', $token) diff --git a/src/Domain/Sharing/Controllers/VisitorUnlockLockedShareController.php b/src/Domain/Sharing/Controllers/VisitorUnlockLockedShareController.php index 7fff3a78..d5dc1c46 100644 --- a/src/Domain/Sharing/Controllers/VisitorUnlockLockedShareController.php +++ b/src/Domain/Sharing/Controllers/VisitorUnlockLockedShareController.php @@ -28,7 +28,7 @@ class VisitorUnlockLockedShareController extends Controller ]); // Return authorize token with shared options - return response(new ShareResource($shared), 200) + return response(new ShareResource($shared)) ->cookie('share_session', $cookie, 43200); } diff --git a/src/Domain/Teams/Controllers/ConvertFolderIntoTeamFolderController.php b/src/Domain/Teams/Controllers/ConvertFolderIntoTeamFolderController.php index f5bdf6c8..5799a9c6 100644 --- a/src/Domain/Teams/Controllers/ConvertFolderIntoTeamFolderController.php +++ b/src/Domain/Teams/Controllers/ConvertFolderIntoTeamFolderController.php @@ -2,6 +2,7 @@ namespace Domain\Teams\Controllers; use Domain\Folders\Models\Folder; +use Illuminate\Auth\Access\AuthorizationException; use Illuminate\Http\JsonResponse; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Gate; @@ -19,6 +20,9 @@ class ConvertFolderIntoTeamFolderController extends Controller ) { } + /** + * @throws AuthorizationException + */ public function __invoke( ConvertIntoTeamFolderRequest $request, Folder $folder diff --git a/src/Domain/Teams/Controllers/InvitationsController.php b/src/Domain/Teams/Controllers/InvitationsController.php index 75c54b8f..64e6f97a 100644 --- a/src/Domain/Teams/Controllers/InvitationsController.php +++ b/src/Domain/Teams/Controllers/InvitationsController.php @@ -11,8 +11,9 @@ use Domain\Teams\Actions\ClearActionInInvitationNotificationAction; class InvitationsController extends Controller { - public function show(TeamFolderInvitation $invitation): JsonResponse - { + public function show( + TeamFolderInvitation $invitation + ): JsonResponse { // Check if invitation is not pending if ($invitation->status !== 'pending') { return response()->json([ diff --git a/src/Domain/Teams/Controllers/LeaveTeamFolderController.php b/src/Domain/Teams/Controllers/LeaveTeamFolderController.php index 4c618951..9223b11e 100644 --- a/src/Domain/Teams/Controllers/LeaveTeamFolderController.php +++ b/src/Domain/Teams/Controllers/LeaveTeamFolderController.php @@ -9,8 +9,9 @@ use App\Http\Controllers\Controller; class LeaveTeamFolderController extends Controller { - public function __invoke(Folder $folder): JsonResponse - { + public function __invoke( + Folder $folder + ): JsonResponse { $successMessage = [ 'type' => 'success', 'message' => 'You left the team folder.', diff --git a/src/Domain/Teams/Controllers/NavigationTreeController.php b/src/Domain/Teams/Controllers/NavigationTreeController.php index 2584c7e2..ad24b811 100644 --- a/src/Domain/Teams/Controllers/NavigationTreeController.php +++ b/src/Domain/Teams/Controllers/NavigationTreeController.php @@ -7,13 +7,14 @@ use Illuminate\Http\JsonResponse; class NavigationTreeController { - public function __invoke(Folder $folder): JsonResponse - { + public function __invoke( + Folder $folder + ): JsonResponse { // Get the root team folder $teamFolder = $folder->getLatestParent(); if (! Gate::any(['can-edit', 'can-view'], [$teamFolder, null])) { - abort(403, 'Access Denied'); + return response()->json(accessDeniedError(), 403); } $folders = Folder::with('folders:id,parent_id,id,name,team_folder') diff --git a/src/Domain/Transactions/Controllers/GetAllTransactionsController.php b/src/Domain/Transactions/Controllers/GetAllTransactionsController.php index 1ba64c92..6c36b5ac 100644 --- a/src/Domain/Transactions/Controllers/GetAllTransactionsController.php +++ b/src/Domain/Transactions/Controllers/GetAllTransactionsController.php @@ -2,18 +2,19 @@ namespace Domain\Transactions\Controllers; use App\Users\Models\User; +use Illuminate\Http\JsonResponse; use App\Http\Controllers\Controller; use Domain\Transactions\Resources\TransactionCollection; use VueFileManager\Subscription\Domain\Transactions\Models\Transaction; class GetAllTransactionsController extends Controller { - public function __invoke(User $user) + public function __invoke(User $user): JsonResponse { $transactions = Transaction::with('user') ->sortable(['created_at' => 'desc']) ->paginate(20); - return new TransactionCollection($transactions); + return response()->json(new TransactionCollection($transactions)); } } diff --git a/src/Domain/Transactions/Controllers/GetTransactionsController.php b/src/Domain/Transactions/Controllers/GetTransactionsController.php index ee017a6c..046acf19 100644 --- a/src/Domain/Transactions/Controllers/GetTransactionsController.php +++ b/src/Domain/Transactions/Controllers/GetTransactionsController.php @@ -2,18 +2,19 @@ namespace Domain\Transactions\Controllers; use App\Http\Controllers\Controller; +use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\Auth; use Domain\Transactions\Resources\TransactionCollection; class GetTransactionsController extends Controller { - public function __invoke() + public function __invoke(): JsonResponse { $transactions = Auth::user() ->transactions() ->sortable(['created_at' => 'desc']) ->paginate(15); - return new TransactionCollection($transactions); + return response()->json(new TransactionCollection($transactions)); } } diff --git a/src/Domain/Transactions/Controllers/GetUserTransactionsController.php b/src/Domain/Transactions/Controllers/GetUserTransactionsController.php index d8397b89..e5a3b10a 100644 --- a/src/Domain/Transactions/Controllers/GetUserTransactionsController.php +++ b/src/Domain/Transactions/Controllers/GetUserTransactionsController.php @@ -2,18 +2,19 @@ namespace Domain\Transactions\Controllers; use App\Users\Models\User; +use Illuminate\Http\JsonResponse; use App\Http\Controllers\Controller; use Domain\Transactions\Resources\TransactionCollection; class GetUserTransactionsController extends Controller { - public function __invoke(User $user) + public function __invoke(User $user): JsonResponse { $transactions = $user ->transactions() ->sortable(['created_at' => 'desc']) ->paginate(20); - return new TransactionCollection($transactions); + return response()->json(new TransactionCollection($transactions)); } } diff --git a/src/Domain/UploadRequest/Controllers/CreateUploadRequestController.php b/src/Domain/UploadRequest/Controllers/CreateUploadRequestController.php index 869769b4..bc1dc4f7 100644 --- a/src/Domain/UploadRequest/Controllers/CreateUploadRequestController.php +++ b/src/Domain/UploadRequest/Controllers/CreateUploadRequestController.php @@ -17,8 +17,9 @@ class CreateUploadRequestController extends Controller /** * @throws AuthorizationException */ - public function __invoke(StoreUploadRequest $request): JsonResponse - { + public function __invoke( + StoreUploadRequest $request + ): JsonResponse { // Check if user is owner of the file if ($request->has('folder_id')) { $folder = Folder::findOrFail($request->input('folder_id')); diff --git a/src/Domain/UploadRequest/Controllers/DeleteFileOrFolderController.php b/src/Domain/UploadRequest/Controllers/DeleteFileOrFolderController.php index 6947834d..68e27a21 100644 --- a/src/Domain/UploadRequest/Controllers/DeleteFileOrFolderController.php +++ b/src/Domain/UploadRequest/Controllers/DeleteFileOrFolderController.php @@ -15,11 +15,6 @@ class DeleteFileOrFolderController DeleteItemRequest $request, UploadRequest $uploadRequest ): JsonResponse { - $successMessage = [ - 'type' => 'success', - 'message' => 'Items was successfully deleted.', - ]; - foreach ($request->input('items') as $file) { // Get file or folder item $item = get_item($file['type'], $file['id']); @@ -35,7 +30,10 @@ class DeleteFileOrFolderController } } - return response()->json($successMessage); + return response()->json([ + 'type' => 'success', + 'message' => 'Items was successfully deleted.', + ]); } private function destroyFile(File $file): void diff --git a/src/Domain/UploadRequest/Controllers/FileAccess/GetFileFromUploadRequestController.php b/src/Domain/UploadRequest/Controllers/FileAccess/GetFileFromUploadRequestController.php index 855143f6..707e17bb 100644 --- a/src/Domain/UploadRequest/Controllers/FileAccess/GetFileFromUploadRequestController.php +++ b/src/Domain/UploadRequest/Controllers/FileAccess/GetFileFromUploadRequestController.php @@ -2,7 +2,6 @@ namespace Domain\UploadRequest\Controllers\FileAccess; use Domain\Files\Models\File; -use Illuminate\Http\Response; use Illuminate\Http\RedirectResponse; use Domain\Files\Actions\DownloadFileAction; use Domain\UploadRequest\Models\UploadRequest; @@ -20,10 +19,13 @@ class GetFileFromUploadRequestController ) { } + /** + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + */ public function __invoke( string $filename, - UploadRequest $uploadRequest - ): StreamedResponse|RedirectResponse|Response { + UploadRequest $uploadRequest, + ): StreamedResponse|RedirectResponse { // Get file $file = File::where('user_id', $uploadRequest->user_id) ->where('basename', $filename) diff --git a/src/Domain/UploadRequest/Controllers/FileAccess/GetThumbnailFromUploadRequestController.php b/src/Domain/UploadRequest/Controllers/FileAccess/GetThumbnailFromUploadRequestController.php index ca349724..308f032d 100644 --- a/src/Domain/UploadRequest/Controllers/FileAccess/GetThumbnailFromUploadRequestController.php +++ b/src/Domain/UploadRequest/Controllers/FileAccess/GetThumbnailFromUploadRequestController.php @@ -2,13 +2,10 @@ namespace Domain\UploadRequest\Controllers\FileAccess; use Domain\Files\Models\File; -use Illuminate\Http\Response; use App\Http\Controllers\Controller; use Domain\UploadRequest\Models\UploadRequest; use Domain\Traffic\Actions\RecordDownloadAction; -use Illuminate\Contracts\Foundation\Application; use Domain\Files\Actions\DownloadThumbnailAction; -use Illuminate\Contracts\Routing\ResponseFactory; use Symfony\Component\HttpFoundation\StreamedResponse; /** @@ -22,10 +19,13 @@ class GetThumbnailFromUploadRequestController extends Controller ) { } + /** + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + */ public function __invoke( string $filename, UploadRequest $uploadRequest - ): Application|ResponseFactory|Response|StreamedResponse { + ): StreamedResponse { // Get file $file = File::where('user_id', $uploadRequest->user_id) ->where('basename', substr($filename, 3)) diff --git a/src/Domain/UploadRequest/Controllers/GetFolderTreeForUploadRequestController.php b/src/Domain/UploadRequest/Controllers/GetFolderTreeForUploadRequestController.php index c002baca..2d8154d3 100644 --- a/src/Domain/UploadRequest/Controllers/GetFolderTreeForUploadRequestController.php +++ b/src/Domain/UploadRequest/Controllers/GetFolderTreeForUploadRequestController.php @@ -1,25 +1,24 @@ whereParentId($uploadRequest->id) - ->whereUserId($uploadRequest->user_id) + ->where('parent_id', $uploadRequest->id) + ->where('user_id', $uploadRequest->user_id) ->sortable() ->get(['id', 'parent_id', 'id', 'name']); - return [ + return response()->json([ [ 'name' => __t('upload_request'), 'location' => 'upload-request', @@ -27,6 +26,6 @@ class GetFolderTreeForUploadRequestController extends Controller 'isMovable' => true, 'isOpen' => true, ], - ]; + ]); } } diff --git a/src/Domain/UploadRequest/Controllers/GetUploadRequestController.php b/src/Domain/UploadRequest/Controllers/GetUploadRequestController.php index 5f8cb576..3d43d806 100644 --- a/src/Domain/UploadRequest/Controllers/GetUploadRequestController.php +++ b/src/Domain/UploadRequest/Controllers/GetUploadRequestController.php @@ -1,13 +1,15 @@ json(new UploadRequestResource($uploadRequest)); } } diff --git a/src/Domain/UploadRequest/Controllers/MoveItemInUploadRequestController.php b/src/Domain/UploadRequest/Controllers/MoveItemInUploadRequestController.php index 493e1ea3..e4ba7e73 100644 --- a/src/Domain/UploadRequest/Controllers/MoveItemInUploadRequestController.php +++ b/src/Domain/UploadRequest/Controllers/MoveItemInUploadRequestController.php @@ -20,7 +20,9 @@ class MoveItemInUploadRequestController extends Controller return response()->json(accessDeniedError(), 403); } - $item->update(['parent_id' => $request->input('to_id') ?? $uploadRequest->id]); + $item->update([ + 'parent_id' => $request->input('to_id') ?? $uploadRequest->id + ]); } return response()->json([ diff --git a/src/Domain/UploadRequest/Controllers/RenameFileOrFolderController.php b/src/Domain/UploadRequest/Controllers/RenameFileOrFolderController.php index 8ea77c3a..4f935f1a 100644 --- a/src/Domain/UploadRequest/Controllers/RenameFileOrFolderController.php +++ b/src/Domain/UploadRequest/Controllers/RenameFileOrFolderController.php @@ -7,6 +7,7 @@ use Domain\Folders\Resources\FolderResource; use Domain\Items\Requests\RenameItemRequest; use Domain\UploadRequest\Models\UploadRequest; use Domain\Folders\Actions\UpdateFolderPropertyAction; +use Illuminate\Http\JsonResponse; use Support\Demo\Actions\FakeRenameFileOrFolderAction; class RenameFileOrFolderController extends Controller @@ -17,14 +18,17 @@ class RenameFileOrFolderController extends Controller ) { } - public function __invoke(UploadRequest $uploadRequest, string $id, RenameItemRequest $request) - { + public function __invoke( + UploadRequest $uploadRequest, + string $id, + RenameItemRequest $request, + ): JsonResponse { // Get item $item = get_item($request->input('type'), $id); // Check privileges if (! in_array($item->parent_id, getChildrenFolderIds($uploadRequest->id))) { - return response('Access Denied', 403); + return response()->json(accessDeniedError(), 403); } // If request contain icon or color, then change it @@ -36,9 +40,9 @@ class RenameFileOrFolderController extends Controller $item->update(['name' => $request->input('name')]); if ($request->input('type') === 'folder') { - return new FolderResource($item); + return response()->json(new FolderResource($item)); } - return new FileResource($item); + return response()->json(new FileResource($item)); } } diff --git a/src/Domain/UploadRequest/Controllers/SetUploadRequestAsFilledController.php b/src/Domain/UploadRequest/Controllers/SetUploadRequestAsFilledController.php index 755ef227..311e8365 100644 --- a/src/Domain/UploadRequest/Controllers/SetUploadRequestAsFilledController.php +++ b/src/Domain/UploadRequest/Controllers/SetUploadRequestAsFilledController.php @@ -7,8 +7,9 @@ use Domain\UploadRequest\Notifications\UploadRequestFulfilledNotification; class SetUploadRequestAsFilledController { - public function __invoke(UploadRequest $uploadRequest): JsonResponse - { + public function __invoke( + UploadRequest $uploadRequest + ): JsonResponse { $uploadRequest->update([ 'status' => 'filled', ]); diff --git a/src/Domain/UploadRequest/Controllers/UploadFileChunksForUploadRequestController.php b/src/Domain/UploadRequest/Controllers/UploadFileChunksForUploadRequestController.php index a3ceb0e9..94b90316 100644 --- a/src/Domain/UploadRequest/Controllers/UploadFileChunksForUploadRequestController.php +++ b/src/Domain/UploadRequest/Controllers/UploadFileChunksForUploadRequestController.php @@ -24,8 +24,10 @@ class UploadFileChunksForUploadRequestController /** * @throws FileNotFoundException */ - public function __invoke(UploadChunkRequest $request, UploadRequest $uploadRequest) - { + public function __invoke( + UploadChunkRequest $request, + UploadRequest $uploadRequest, + ) { // Get upload request root folder query $folder = Folder::where('id', $uploadRequest->id); diff --git a/tests/Domain/Admin/AdminTest.php b/tests/Domain/Admin/AdminTest.php index 0fb5164f..71c7d83c 100644 --- a/tests/Domain/Admin/AdminTest.php +++ b/tests/Domain/Admin/AdminTest.php @@ -142,7 +142,7 @@ class AdminTest extends TestCase $this ->actingAs($admin) ->postJson("/api/admin/users/$user->id/reset-password") - ->assertStatus(204); + ->assertStatus(200); Notification::assertTimesSent(1, ResetPassword::class); } @@ -310,7 +310,7 @@ class AdminTest extends TestCase $this->deleteJson("/api/admin/users/$user->id/delete", [ 'name' => $user->settings->name, ]) - ->assertStatus(204); + ->assertStatus(200); $this->assertDatabaseMissing('user_settings', [ 'user_id' => $user->id, diff --git a/tests/Domain/Languages/AdminLanguageTranslatorTest.php b/tests/Domain/Languages/AdminLanguageTranslatorTest.php index 6a84962d..ffafad66 100644 --- a/tests/Domain/Languages/AdminLanguageTranslatorTest.php +++ b/tests/Domain/Languages/AdminLanguageTranslatorTest.php @@ -85,7 +85,7 @@ class AdminLanguageTranslatorTest extends TestCase $this ->actingAs($admin) ->deleteJson("/api/admin/languages/$language->id") - ->assertStatus(204); + ->assertStatus(200); $this->assertDatabaseMissing('languages', [ 'name' => 'SlovenĨina', @@ -114,7 +114,7 @@ class AdminLanguageTranslatorTest extends TestCase $this ->actingAs($admin) ->deleteJson("/api/admin/languages/$language->id") - ->assertStatus(401); + ->assertStatus(422); } /** diff --git a/tests/Domain/Pages/AdminPagesTest.php b/tests/Domain/Pages/AdminPagesTest.php index e9558213..187164bf 100644 --- a/tests/Domain/Pages/AdminPagesTest.php +++ b/tests/Domain/Pages/AdminPagesTest.php @@ -64,7 +64,7 @@ class AdminPagesTest extends TestCase ->patchJson('/api/admin/pages/terms-of-service', [ 'name' => 'title', 'value' => 'New Title', - ])->assertStatus(204); + ])->assertStatus(200); $this->assertDatabaseHas('pages', [ 'title' => 'New Title', diff --git a/tests/Domain/Settings/SettingsTest.php b/tests/Domain/Settings/SettingsTest.php index 380b4a61..5d942230 100644 --- a/tests/Domain/Settings/SettingsTest.php +++ b/tests/Domain/Settings/SettingsTest.php @@ -84,7 +84,7 @@ class SettingsTest extends TestCase ->patchJson('/api/admin/settings', [ 'name' => 'header_title', 'value' => 'New Header Title', - ])->assertStatus(204); + ])->assertStatus(200); $this->assertDatabaseHas('settings', [ 'value' => 'New Header Title', @@ -112,7 +112,7 @@ class SettingsTest extends TestCase ->patchJson('/api/admin/settings', [ 'name' => 'app_logo', 'app_logo' => $logo, - ])->assertStatus(204); + ])->assertStatus(200); $this->assertDatabaseMissing('settings', [ 'app_logo' => null, @@ -134,7 +134,7 @@ class SettingsTest extends TestCase $this ->actingAs($admin) ->getJson('/api/admin/settings/flush-cache') - ->assertStatus(204); + ->assertStatus(200); } /** @@ -151,7 +151,7 @@ class SettingsTest extends TestCase 'service' => 'stripe', 'key' => '123456789', 'secret' => '123456789', - ])->assertStatus(204); + ])->assertStatus(200); $this->assertDatabaseHas('settings', [ 'name' => 'allowed_stripe', @@ -173,7 +173,7 @@ class SettingsTest extends TestCase 'client_id' => '123456789', 'client_secret' => '123456789', 'service' => 'facebook', - ])->assertStatus(204); + ])->assertStatus(200); $this->assertDatabaseHas('settings', [ 'name' => 'allowed_facebook', @@ -198,7 +198,7 @@ class SettingsTest extends TestCase 'smtp.username' => 'john@doe.com', 'smtp.password' => 'secret', 'smtp.encryption' => 'tls', - ])->assertStatus(204); + ])->assertStatus(200); } /** @@ -220,7 +220,7 @@ class SettingsTest extends TestCase 'bucket' => 'cloud', 'endpoint' => 'https://cloud.frankfurt.storage.com', ], - ])->assertStatus(204); + ])->assertStatus(200); } /** @@ -241,7 +241,7 @@ class SettingsTest extends TestCase 'cluster' => 'eu', 'port' => null, 'host' => null, - ])->assertStatus(204); + ])->assertStatus(200); } /**