From b751429dc582018d3c35265a02d4271d36c59e83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=8Carodej?= Date: Tue, 1 Feb 2022 16:01:57 +0100 Subject: [PATCH] UI/UX improvements --- resources/css/tailwind.css | 2 +- .../js/components/Admin/AppInputButton.vue | 4 +- .../js/components/Admin/AppInputSwitch.vue | 4 +- .../js/components/Admin/AppInputText.vue | 4 +- .../js/components/FilesView/InfoSidebar.vue | 2 +- .../js/components/Others/Forms/ImageInput.vue | 248 +++++------------- resources/js/views/Admin/Users/UserCreate.vue | 39 +-- resources/js/views/User/Settings.vue | 94 +++---- src/App/Users/Actions/CreateNewUserAction.php | 12 +- .../Authentication/RegisterUserController.php | 11 +- src/App/Users/DTO/CreateUserData.php | 2 +- src/App/Users/Models/User.php | 1 + .../Controllers/Users/UserController.php | 35 +-- .../Admin/Requests/CreateUserByAdmin.php | 1 - src/Support/helpers.php | 3 +- tests/Support/Helpers/HelperTest.php | 5 + 16 files changed, 174 insertions(+), 293 deletions(-) diff --git a/resources/css/tailwind.css b/resources/css/tailwind.css index 1a514043..9c6db922 100644 --- a/resources/css/tailwind.css +++ b/resources/css/tailwind.css @@ -11,7 +11,7 @@ } .input-dark { - @apply w-full dark:bg-2x-dark-foreground bg-light-background py-3 px-5 rounded-lg appearance-none border-transparent text-base font-bold border + @apply w-full dark:bg-2x-dark-foreground bg-light-background py-3 sm:px-5 px-4 rounded-lg appearance-none border-transparent sm:text-base text-sm font-bold border } .text-limit { diff --git a/resources/js/components/Admin/AppInputButton.vue b/resources/js/components/Admin/AppInputButton.vue index bd1c6e64..7e41f083 100644 --- a/resources/js/components/Admin/AppInputButton.vue +++ b/resources/js/components/Admin/AppInputButton.vue @@ -1,5 +1,5 @@ diff --git a/resources/js/components/Admin/AppInputSwitch.vue b/resources/js/components/Admin/AppInputSwitch.vue index c93e2f6e..b07a221d 100644 --- a/resources/js/components/Admin/AppInputSwitch.vue +++ b/resources/js/components/Admin/AppInputSwitch.vue @@ -1,5 +1,5 @@ diff --git a/resources/js/components/Admin/AppInputText.vue b/resources/js/components/Admin/AppInputText.vue index f60a7fd2..780b47d9 100644 --- a/resources/js/components/Admin/AppInputText.vue +++ b/resources/js/components/Admin/AppInputText.vue @@ -1,10 +1,10 @@ diff --git a/src/App/Users/Actions/CreateNewUserAction.php b/src/App/Users/Actions/CreateNewUserAction.php index c2d5b80f..2fed4298 100644 --- a/src/App/Users/Actions/CreateNewUserAction.php +++ b/src/App/Users/Actions/CreateNewUserAction.php @@ -5,20 +5,17 @@ use App\Users\Models\User; use App\Users\DTO\CreateUserData; use App\Http\Controllers\Controller; use Illuminate\Auth\Events\Registered; -use Illuminate\Contracts\Auth\StatefulGuard; class CreateNewUserAction extends Controller { public function __construct( - protected StatefulGuard $guard, protected AutoSubscribeForMeteredBillingAction $autoSubscribeForMeteredBilling, - ) { - } + ) {} /** * Validate and create a new user. */ - public function __invoke(CreateUserData $data) + public function __invoke(CreateUserData $data): User { $settings = get_settings([ 'user_verification', 'subscription_type', @@ -53,9 +50,6 @@ class CreateNewUserAction extends Controller event(new Registered($user)); - // Log in if verification is disabled - if (! $data->password || ! intval($settings['user_verification'])) { - $this->guard->login($user); - } + return $user; } } diff --git a/src/App/Users/Controllers/Authentication/RegisterUserController.php b/src/App/Users/Controllers/Authentication/RegisterUserController.php index 61e0bfd3..91bbb036 100644 --- a/src/App/Users/Controllers/Authentication/RegisterUserController.php +++ b/src/App/Users/Controllers/Authentication/RegisterUserController.php @@ -5,11 +5,13 @@ use App\Users\DTO\CreateUserData; use App\Http\Controllers\Controller; use App\Users\Actions\CreateNewUserAction; use App\Users\Requests\RegisterUserRequest; +use Illuminate\Contracts\Auth\StatefulGuard; class RegisterUserController extends Controller { public function __construct( - public CreateNewUserAction $createNewUser, + protected CreateNewUserAction $createNewUser, + protected StatefulGuard $guard, ) { } @@ -27,7 +29,12 @@ class RegisterUserController extends Controller $data = CreateUserData::fromRequest($request); // Register user - ($this->createNewUser)($data); + $user = ($this->createNewUser)($data); + + // Log in if verification is disabled + if (! $user->password || ! intval(get_settings('user_verification'))) { + $this->guard->login($user); + } return response('User successfully registered.', 201); } diff --git a/src/App/Users/DTO/CreateUserData.php b/src/App/Users/DTO/CreateUserData.php index 3d0a0748..d6f7449c 100644 --- a/src/App/Users/DTO/CreateUserData.php +++ b/src/App/Users/DTO/CreateUserData.php @@ -29,7 +29,7 @@ class CreateUserData extends DataTransferObject 'email' => $array['email'], 'avatar' => $array['avatar'], 'password' => $array['password'] ?? null, - 'oauth_provider' => $array['oauth_provider'], + 'oauth_provider' => $array['oauth_provider'] ?? null, ]); } } diff --git a/src/App/Users/Models/User.php b/src/App/Users/Models/User.php index a6ab2502..57389de0 100644 --- a/src/App/Users/Models/User.php +++ b/src/App/Users/Models/User.php @@ -30,6 +30,7 @@ use VueFileManager\Subscription\App\User\Traits\Billable; * @property string email * @property mixed favouriteFolders * @property string role + * @property string email_verified_at * @method static count() * @method static sortable(string[] $array) * @method static forceCreate(array $array) diff --git a/src/Domain/Admin/Controllers/Users/UserController.php b/src/Domain/Admin/Controllers/Users/UserController.php index 25e18824..ef40118d 100644 --- a/src/Domain/Admin/Controllers/Users/UserController.php +++ b/src/Domain/Admin/Controllers/Users/UserController.php @@ -1,6 +1,9 @@ bcrypt($request->input('password')), - 'role' => $request->input('role'), - 'email' => $request->input('email'), - 'email_verified_at' => now(), + // Map user data + $data = CreateUserData::fromArray([ + 'name' => $request->input('name'), + 'email' => $request->input('email'), + 'password' => $request->input('password'), + 'avatar' => store_avatar($request, 'avatar'), ]); - // Split username - $name = split_name($request->input('name')); + // Register user + $user = ($this->createNewUser)($data); - $user - ->settings() - ->create([ - 'avatar' => store_avatar($request, 'avatar'), - 'first_name' => $name['first_name'], - 'last_name' => $name['last_name'], - ]); + // Update user data + $user->email_verified_at = now(); + $user->role = $request->input('role'); + + $user->save(); return response(new UserResource($user), 201); } diff --git a/src/Domain/Admin/Requests/CreateUserByAdmin.php b/src/Domain/Admin/Requests/CreateUserByAdmin.php index cec5464b..730bf57f 100644 --- a/src/Domain/Admin/Requests/CreateUserByAdmin.php +++ b/src/Domain/Admin/Requests/CreateUserByAdmin.php @@ -26,7 +26,6 @@ class CreateUserByAdmin extends FormRequest 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:6|confirmed', 'name' => 'required|string|max:255', - 'max_storage_amount' => 'required|digits_between:1,9', 'role' => 'required|string', 'avatar' => 'sometimes|file', ]; diff --git a/src/Support/helpers.php b/src/Support/helpers.php index 145066f8..18f219dd 100644 --- a/src/Support/helpers.php +++ b/src/Support/helpers.php @@ -312,10 +312,11 @@ if (! function_exists('split_name')) { function split_name(string $name): array { $firstName = explode(' ', $name)[0]; + $lastName = str_replace("$firstName ", '', $name); return [ 'first_name' => $firstName, - 'last_name' => str_replace("$firstName ", '', $name), + 'last_name' => $lastName !== $firstName ? $lastName : null, ]; } } diff --git a/tests/Support/Helpers/HelperTest.php b/tests/Support/Helpers/HelperTest.php index a7c515bf..c5d156d9 100644 --- a/tests/Support/Helpers/HelperTest.php +++ b/tests/Support/Helpers/HelperTest.php @@ -19,5 +19,10 @@ class HelperTest extends TestCase $this->assertEquals('Jane', $secondTest['first_name']); $this->assertEquals('Doe Hobs', $secondTest['last_name']); + + $thirdTest = split_name('Jane'); + + $this->assertEquals('Jane', $thirdTest['first_name']); + $this->assertEquals('', $thirdTest['last_name']); } }