From 51df812a6c6a299daec2446f65fa3ac437d163ec Mon Sep 17 00:00:00 2001 From: James Collins Date: Wed, 19 Apr 2023 09:40:35 +1000 Subject: [PATCH] add display_name support --- app/Http/Controllers/Api/UserController.php | 5 +++-- app/Http/Requests/UserRegisterRequest.php | 1 + app/Http/Requests/UserRequest.php | 2 ++ app/Models/User.php | 10 ++++++++++ database/factories/UserFactory.php | 13 ++++++++++--- resources/js/views/Register.vue | 3 ++- tests/Feature/UsersApiTest.php | 2 ++ 7 files changed, 30 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php index 75c2806..8c56220 100644 --- a/app/Http/Controllers/Api/UserController.php +++ b/app/Http/Controllers/Api/UserController.php @@ -153,8 +153,9 @@ class UserController extends ApiController 'last_name' => $request->input('last_name'), 'username' => $request->input('username'), 'email' => $request->input('email'), - 'phone' => $request->input('phone'), - 'password' => Hash::make($request->input('password')) + 'phone' => $request->input('phone', ''), + 'password' => Hash::make($request->input('password')), + 'display_name' => $request->input('display_name', $request->input('username')), ]); $code = $user->codes()->create([ diff --git a/app/Http/Requests/UserRegisterRequest.php b/app/Http/Requests/UserRegisterRequest.php index e67a868..9bd6515 100644 --- a/app/Http/Requests/UserRegisterRequest.php +++ b/app/Http/Requests/UserRegisterRequest.php @@ -16,6 +16,7 @@ class UserRegisterRequest extends FormRequest return [ 'first_name' => 'required|string|max:255', 'last_name' => 'required|string|max:255', + 'display_name' => 'required|string|max:255', 'email' => 'required|string|email|max:255', 'username' => 'required|string|min:4|max:255|unique:users', 'password' => 'required|string|min:8', diff --git a/app/Http/Requests/UserRequest.php b/app/Http/Requests/UserRequest.php index 2cfd74a..6187e1f 100644 --- a/app/Http/Requests/UserRequest.php +++ b/app/Http/Requests/UserRequest.php @@ -17,6 +17,7 @@ class UserRequest extends BaseRequest 'username' => 'required|string|max:255|min:4|unique:users', 'first_name' => 'required|string|max:255|min:2', 'last_name' => 'required|string|max:255|min:2', + 'display_name' => 'required|string|max:255', 'email' => 'required|string|email|max:255', 'phone' => ['string', 'regex:/^(\+|00)?[0-9][0-9 \-\(\)\.]{7,32}$/'], 'email_verified_at' => 'date' @@ -46,6 +47,7 @@ class UserRequest extends BaseRequest ], 'first_name' => 'string|max:255|min:2', 'last_name' => 'string|max:255|min:2', + 'display_name' => 'string|max:255|min:2', 'email' => 'string|email|max:255', 'phone' => ['nullable','regex:/^(\+|00)?[0-9][0-9 \-\(\)\.]{7,32}$/'], 'password' => 'string|min:8' diff --git a/app/Models/User.php b/app/Models/User.php index 9bc63d1..8c15811 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -31,6 +31,7 @@ class User extends Authenticatable implements Auditable 'email', 'phone', 'password', + 'display_name', ]; /** @@ -66,6 +67,15 @@ class User extends Authenticatable implements Auditable 'permissions' ]; + /** + * The default attributes. + * + * @var string[] + */ + protected $attributes = [ + 'phone' => '', + ]; + // public function getPermissionsAttribute() { // return $this->permissions()->pluck('permission')->toArray(); diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 34dcaaa..98527a1 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -20,15 +20,22 @@ class UserFactory extends Factory $faker = \Faker\Factory::create(); $faker->addProvider(new \Faker\Provider\CustomInternetProvider($faker)); + $username = $faker->unique()->userNameWithMinLength(6); + $first_name = $faker->firstName(); + $last_name = $faker->lastName(); + + $display_name = $faker->randomElement([$username, $first_name . ' ' . $last_name]); + return [ - 'username' => $faker->unique()->userNameWithMinLength(6), - 'first_name' => $faker->firstName(), - 'last_name' => $faker->lastName(), + 'username' => $username, + 'first_name' => $first_name, + 'last_name' => $last_name, 'email' => $faker->safeEmail(), 'email_verified_at' => now(), 'phone' => $faker->phoneNumber(), 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password 'remember_token' => Str::random(10), + 'display_name' => $display_name, ]; } diff --git a/resources/js/views/Register.vue b/resources/js/views/Register.vue index 1f433fa..ab319b6 100644 --- a/resources/js/views/Register.vue +++ b/resources/js/views/Register.vue @@ -71,7 +71,7 @@ import { useReCaptcha } from "vue-recaptcha-v3"; import SMButton from "../components/SMButton.vue"; import SMFormCard from "../components/SMFormCard.vue"; import SMForm from "../components/SMForm.vue"; -import SMInput from "../depreciated/SMInput-old.vue"; +import SMInput from "../components/SMInput.vue"; import { api } from "../helpers/api"; import { Form, FormControl } from "../helpers/form"; import { @@ -145,6 +145,7 @@ const handleSubmit = async () => { phone: form.controls.phone.value, username: form.controls.username.value, password: form.controls.password.value, + display_name: form.controls.username.value, captcha_token: captcha, }, }); diff --git a/tests/Feature/UsersApiTest.php b/tests/Feature/UsersApiTest.php index 65a1d63..9b8d0ab 100644 --- a/tests/Feature/UsersApiTest.php +++ b/tests/Feature/UsersApiTest.php @@ -92,6 +92,7 @@ class UsersApiTest extends TestCase 'first_name' => 'John', 'last_name' => 'Doe', 'username' => 'johndoe', + 'display_name' => 'jackdoe', 'email' => 'johndoe@example.com', 'password' => 'password', ]; @@ -110,6 +111,7 @@ class UsersApiTest extends TestCase 'first_name' => 'Jack', 'last_name' => 'Doe', 'username' => 'jackdoe', + 'display_name' => 'jackdoe', 'email' => 'jackdoe@example.com', 'password' => 'password', ];