user settings api update

This commit is contained in:
Čarodej
2022-05-04 07:20:15 +02:00
parent 4fc5ccd26d
commit 3d2e279afd
31 changed files with 148 additions and 104 deletions

View File

@@ -1,6 +1,5 @@
<?php
use Domain\Sharing\Controllers\ShareItemController;
use Domain\Zip\Controllers\ZipController;
use Domain\Pages\Controllers\PagesController;
use Domain\Sharing\Controllers\ShareController;
@@ -9,6 +8,7 @@ use App\Users\Controllers\ResetPasswordController;
use Domain\Files\Controllers\UploadFileController;
use App\Users\Controllers\ForgotPasswordController;
use Domain\Folders\Controllers\FavouriteController;
use Domain\Sharing\Controllers\ShareItemController;
use Domain\SetupWizard\Controllers\PingAPIController;
use Domain\Folders\Controllers\CreateFolderController;
use Domain\Browsing\Controllers\BrowseFolderController;

View File

@@ -5,12 +5,12 @@ use App\Users\Controllers\Account\UpdatePasswordController;
use App\Users\Controllers\Account\StorageCapacityController;
use App\Users\Controllers\Verification\VerifyEmailController;
use Domain\Transactions\Controllers\GetTransactionsController;
use App\Users\Controllers\Verification\ResendVerificationEmail;
use App\Users\Controllers\Authentication\CheckAccountController;
use App\Users\Controllers\Account\UpdateProfileSettingsController;
use Domain\Notifications\Controllers\GetUserNotificationsController;
use App\Users\Controllers\Authentication\AccountAccessTokenController;
use Domain\Notifications\Controllers\FlushUserNotificationsController;
use App\Users\Controllers\Verification\ResendVerificationEmailController;
use Domain\Notifications\Controllers\MarkUserNotificationsAsReadController;
Route::post('/check', CheckAccountController::class);
@@ -19,7 +19,7 @@ Route::post('/check', CheckAccountController::class);
Route::get('/email/verify/{id}', VerifyEmailController::class)
->name('verification.verify');
Route::post('/email/verify/resend', ResendVerificationEmail::class)
Route::post('/email/verify/resend', ResendVerificationEmailController::class)
->name('verification.send');
Route::group(['middleware' => ['auth:sanctum']], function () {

View File

@@ -1,9 +1,10 @@
<?php
namespace App\Users\Controllers\Account;
use Illuminate\Http\Response;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Database\QueryException;
use App\Users\Requests\UpdateUserProfileSettingsRequest;
class UpdateProfileSettingsController extends Controller
@@ -11,10 +12,18 @@ class UpdateProfileSettingsController extends Controller
/**
* Update user settings
*/
public function __invoke(UpdateUserProfileSettingsRequest $request): Response
{
public function __invoke(
UpdateUserProfileSettingsRequest $request
): JsonResponse {
$successMessage = [
'type' => 'success',
'message' => "The {$request->input('name')} was successfully updated.",
];
// Check if is demo
abort_if(is_demo_account(), 204, 'Done.');
if (is_demo_account()) {
return response()->json($successMessage);
}
// Get user
$user = Auth::user();
@@ -27,15 +36,21 @@ class UpdateProfileSettingsController extends Controller
'avatar' => store_avatar($request, 'avatar'),
]);
return response('Saved!', 204);
return response()->json($successMessage);
}
$user
->settings()
->update(
make_single_input($request)
);
// Try to store user option
try {
$user
->settings()
->update(make_single_input($request));
} catch (QueryException $e) {
return response()->json([
'type' => 'error',
'message' => "You typed the invalid '{$request->input('name')}' name parameter.",
], 422);
}
return response('Saved!', 204);
return response()->json($successMessage);
}
}

View File

@@ -2,7 +2,7 @@
namespace App\Users\Controllers\Authentication;
use App\Users\Models\User;
use Illuminate\Http\Response;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use App\Users\Requests\CheckAccountRequest;
@@ -13,19 +13,22 @@ class CheckAccountController extends Controller
*/
public function __invoke(
CheckAccountRequest $request
): array | Response {
$user = User::whereEmail($request->input('email'))
): JsonResponse {
$user = User::where('email', $request->input('email'))
->first();
if (! $user) {
return response(__t('user_not_fount'), 404);
return response()->json([
'type' => 'error',
'message' => __t('user_not_fount'),
]);
}
return [
return response()->json([
'name' => $user->settings->first_name,
'avatar' => $user->settings->avatar,
'verified' => $user->email_verified_at ? 1 : 0,
'oauth_provider' => $user->password ? null : $user->oauth_provider,
];
]);
}
}

View File

@@ -1,25 +0,0 @@
<?php
namespace App\Users\Controllers\Verification;
use App\Users\Models\User;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Http\Controllers\Controller;
class ResendVerificationEmail extends Controller
{
public function __invoke(
Request $request
): Response {
$user = User::where('email', $request->input('email'))
->first();
if ($user->hasVerifiedEmail()) {
return response('Email was already verified.', 204);
}
$user->sendEmailVerificationNotification();
return response('Email verification link sent to your email', 204);
}
}

View File

@@ -0,0 +1,31 @@
<?php
namespace App\Users\Controllers\Verification;
use App\Users\Models\User;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use App\Users\Requests\ResendVerificationEmailRequest;
class ResendVerificationEmailController extends Controller
{
public function __invoke(
ResendVerificationEmailRequest $request
): JsonResponse {
$user = User::where('email', $request->input('email'))
->first();
if ($user->hasVerifiedEmail()) {
return response()->json([
'type' => 'error',
'message' => 'Email was already verified.',
], 422);
}
$user->sendEmailVerificationNotification();
return response()->json([
'type' => 'success',
'message' => 'Email verification link was sent to the email',
]);
}
}

View File

@@ -2,8 +2,7 @@
namespace App\Users\Controllers\Verification;
use App\Users\Models\User;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
@@ -11,10 +10,12 @@ class VerifyEmailController extends Controller
{
public function __invoke(
string $id,
Request $request,
): RedirectResponse | Response {
if (! $request->hasValidSignature()) {
return response('Invalid or expired url provided.', 401);
): RedirectResponse | JsonResponse {
if (! request()->hasValidSignature()) {
return response()->json([
'type' => 'error',
'message' => 'Invalid or expired url provided.',
], 422);
}
$user = User::find($id);

View File

@@ -23,7 +23,7 @@ class CheckAccountRequest extends FormRequest
public function rules()
{
return [
'email' => 'required|string|email',
'email' => 'required|email',
];
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace App\Users\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ResendVerificationEmailRequest 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 [
'email' => 'required|email',
];
}
}

View File

@@ -23,9 +23,9 @@ class UpdateUserProfileSettingsRequest extends FormRequest
public function rules()
{
return [
'name' => 'required|string',
'value' => 'sometimes|string',
'avatar' => 'sometimes|file',
'name' => 'string',
'value' => 'string|nullable',
];
}
}

View File

@@ -2,7 +2,6 @@
namespace Domain\Browsing\Controllers;
use Str;
use Illuminate\Http\Request;
use Domain\Files\Models\File;
use Domain\Folders\Models\Folder;
use Illuminate\Support\Facades\Auth;

View File

@@ -1,12 +1,12 @@
<?php
namespace Domain\Browsing\Controllers;
use Str;
use Domain\Files\Models\File;
use Domain\Folders\Models\Folder;
use Illuminate\Support\Facades\Auth;
use Domain\Files\Resources\FilesCollection;
use Domain\Folders\Resources\FolderCollection;
use Str;
class BrowseTrashContentController
{

View File

@@ -1,10 +1,10 @@
<?php
namespace Domain\Folders\Controllers;
use Domain\Folders\Requests\AddFolderToFavouritesRequest;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\JsonResponse;
use Domain\Folders\Requests\AddFolderToFavouritesRequest;
class FavouriteController extends Controller
{

View File

@@ -1,5 +1,4 @@
<?php
namespace Domain\Items\Requests;
use Illuminate\Foundation\Http\FormRequest;

View File

@@ -1,5 +1,4 @@
<?php
namespace Domain\Items\Requests;
use Illuminate\Foundation\Http\FormRequest;

View File

@@ -1,9 +1,9 @@
<?php
namespace Domain\RemoteUpload\Controllers;
use Illuminate\Http\JsonResponse;
use Domain\Sharing\Models\Share;
use Domain\Folders\Models\Folder;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use Domain\RemoteUpload\Requests\RemoteUploadRequest;
use Domain\RemoteUpload\Actions\GetContentFromExternalSource;

View File

@@ -3,9 +3,8 @@ namespace Domain\RemoteUpload\Controllers;
use DB;
use Domain\Folders\Models\Folder;
use Domain\RemoteUpload\Requests\RemoteUploadRequest;
use Domain\UploadRequest\Models\UploadRequest;
use Illuminate\Contracts\Filesystem\FileNotFoundException;
use Domain\RemoteUpload\Requests\RemoteUploadRequest;
use Domain\RemoteUpload\Actions\GetContentFromExternalSource;
class UploadFilesRemotelyForUploadRequestController

View File

@@ -1,12 +1,12 @@
<?php
namespace Domain\RemoteUpload\Controllers;
use Illuminate\Http\JsonResponse;
use Domain\Sharing\Models\Share;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use Domain\RemoteUpload\Requests\RemoteUploadRequest;
use Domain\Sharing\Actions\ProtectShareRecordAction;
use Domain\Sharing\Actions\VerifyAccessToItemAction;
use Domain\RemoteUpload\Requests\RemoteUploadRequest;
use Domain\RemoteUpload\Actions\GetContentFromExternalSource;
class VisitorRemoteUploadFileController extends Controller

View File

@@ -1,14 +1,14 @@
<?php
namespace Domain\Sharing\Controllers;
use Domain\Folders\Models\Folder;
use Domain\Sharing\Requests\RevokeSharesRequest;
use Illuminate\Http\JsonResponse;
use Domain\Sharing\Models\Share;
use Domain\Folders\Models\Folder;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Domain\Sharing\Resources\ShareResource;
use Domain\Sharing\Requests\UpdateShareRequest;
use Domain\Sharing\Requests\RevokeSharesRequest;
class ShareController extends Controller
{

View File

@@ -1,20 +1,20 @@
<?php
namespace Domain\Sharing\Controllers;
use App\Http\Controllers\Controller;
use Domain\Folders\Models\Folder;
use Domain\Sharing\Actions\SendViaEmailAction;
use Domain\Sharing\Models\Share;
use Domain\Sharing\Requests\CreateShareRequest;
use Domain\Sharing\Resources\ShareResource;
use Domain\Folders\Models\Folder;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use Domain\Sharing\Resources\ShareResource;
use Domain\Sharing\Actions\SendViaEmailAction;
use Domain\Sharing\Requests\CreateShareRequest;
class ShareItemController extends Controller
{
public function __construct(
public SendViaEmailAction $sendLinkToEmailAction,
) {}
) {
}
/**
* Generate file share link
@@ -65,4 +65,4 @@ class ShareItemController extends Controller
// Return created shared record
return response()->json(new ShareResource($shared), 201);
}
}
}

View File

@@ -2,10 +2,10 @@
namespace Domain\Sharing\Controllers;
use Auth;
use Domain\Sharing\Requests\ShareByEmailRequest;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use Domain\Sharing\Actions\SendViaEmailAction;
use Domain\Sharing\Requests\ShareByEmailRequest;
class ShareViaEmailController extends Controller
{

View File

@@ -1,5 +1,4 @@
<?php
namespace Domain\Sharing\Requests;
use Illuminate\Support\Facades\Auth;

View File

@@ -1,7 +1,6 @@
<?php
namespace Domain\Sharing\Requests;
use Illuminate\Support\Facades\Auth;
use Illuminate\Foundation\Http\FormRequest;
class ShareByEmailRequest extends FormRequest

View File

@@ -2,8 +2,8 @@
namespace Domain\Trash\Controllers;
use Domain\Files\Models\File;
use Illuminate\Http\JsonResponse;
use Domain\Folders\Models\Folder;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Storage;
@@ -24,7 +24,7 @@ class DumpTrashController extends Controller
Folder::onlyTrashed()
->where('user_id', auth()->id())
->cursor()
->each(fn($folder) => $folder->forceDelete());
->each(fn ($folder) => $folder->forceDelete());
// Delete files
File::onlyTrashed()

View File

@@ -1,5 +1,4 @@
<?php
namespace Domain\Trash\Requests;
use Illuminate\Foundation\Http\FormRequest;

View File

@@ -1,15 +1,15 @@
<?php
namespace Domain\Zip\Controllers;
use Domain\Folders\Models\Folder;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\ValidationException;
use ZipStream\ZipStream;
use Illuminate\Http\Request;
use Domain\Files\Models\File;
use Domain\Sharing\Models\Share;
use Domain\Folders\Models\Folder;
use Domain\Zip\Actions\ZipAction;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\ValidationException;
use Domain\Traffic\Actions\RecordDownloadAction;
use Domain\Sharing\Actions\ProtectShareRecordAction;
use Domain\Sharing\Actions\VerifyAccessToItemAction;
@@ -80,7 +80,8 @@ class VisitorZipController extends Controller
$zip = ($this->zip)($folders, $files, $shared);
($this->recordDownload)(
$zip->predictZipSize(), $shared->user_id
$zip->predictZipSize(),
$shared->user_id
);
return $zip;

View File

@@ -1,14 +1,14 @@
<?php
namespace Domain\Zip\Controllers;
use Domain\Files\Models\File;
use Domain\Folders\Models\Folder;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\ValidationException;
use ZipStream\ZipStream;
use Illuminate\Http\Request;
use Domain\Files\Models\File;
use Domain\Folders\Models\Folder;
use Domain\Zip\Actions\ZipAction;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\ValidationException;
use Domain\Traffic\Actions\RecordDownloadAction;
class ZipController extends Controller
@@ -55,7 +55,8 @@ class ZipController extends Controller
$zip = ($this->zip)($folders, $files);
($this->recordDownload)(
$zip->predictZipSize(), auth()->id()
$zip->predictZipSize(),
auth()->id()
);
return $zip;

View File

@@ -357,7 +357,7 @@ if (! function_exists('get_item')) {
$entry = ($namespace)::withTrashed()
->find($id);
if (!$entry) {
if (! $entry) {
abort(response()->json(entryNotFoundError()), 404);
}
@@ -1179,7 +1179,7 @@ if (! function_exists('replace_occurrence')) {
}
}
if (!function_exists('extractItemsFromGetAttribute')) {
if (! function_exists('extractItemsFromGetAttribute')) {
/**
* Extract items from get url attribute
*/
@@ -1195,7 +1195,7 @@ if (!function_exists('extractItemsFromGetAttribute')) {
if (! array_key_exists(0, $items) || ! array_key_exists(1, $items)) {
abort(
response()->json([
'type' => 'error',
'type' => 'error',
'message' => 'Incorrect argument format.',
], 422)
);

View File

@@ -1,7 +1,6 @@
<?php
namespace Tests\Domain\Files;
use Event;
use Storage;
use Tests\TestCase;
use App\Users\Models\User;
@@ -10,8 +9,6 @@ use Domain\Files\Models\File;
use Domain\Folders\Models\Folder;
use Illuminate\Http\UploadedFile;
use Domain\Settings\Models\Setting;
use Illuminate\Support\Facades\Http;
use Domain\RemoteUpload\Events\RemoteFileCreatedEvent;
class FileTest extends TestCase
{

View File

@@ -1,16 +1,15 @@
<?php
namespace Tests\Domain\RemoteUpload;
use Event;
use Storage;
use Tests\TestCase;
use App\Users\Models\User;
use Domain\Files\Models\File;
use Domain\Folders\Models\Folder;
use Domain\RemoteUpload\Events\RemoteFileCreatedEvent;
use Event;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Http;
use Storage;
use Tests\TestCase;
use Domain\RemoteUpload\Events\RemoteFileCreatedEvent;
class RemoteUploadTest extends TestCase
{
@@ -67,4 +66,4 @@ class RemoteUploadTest extends TestCase
Storage::assertExists("files/$file->user_id/$file->basename");
});
}
}
}

View File

@@ -1,5 +1,4 @@
<?php
namespace Tests\Domain\Sharing;
use Tests\TestCase;