From 6ae4fd1cddae70ca1619f518b9d5e9beba7e6e31 Mon Sep 17 00:00:00 2001 From: T'JAMPENS QUENTIN p2406187 Date: Tue, 9 Dec 2025 12:19:56 +0100 Subject: [PATCH 1/8] Install propaganistas/laravel-phone --- composer.json | 3 +- composer.lock | 152 +++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 153 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 5723e13..b8fdc46 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,8 @@ "php": "^8.2", "laravel/framework": "^12.0", "laravel/sanctum": "^4.0", - "laravel/tinker": "^2.10.1" + "laravel/tinker": "^2.10.1", + "propaganistas/laravel-phone": "^6.0" }, "require-dev": { "fakerphp/faker": "^1.23", diff --git a/composer.lock b/composer.lock index 842a0fd..b4ea3cb 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "3edf47f2940f72ca2b2fa46189569d0f", + "content-hash": "9b70f3eee6c6f4f563bb287c45fdf7cf", "packages": [ { "name": "brick/math", @@ -580,6 +580,84 @@ ], "time": "2023-10-12T05:21:21+00:00" }, + { + "name": "giggsey/libphonenumber-for-php-lite", + "version": "9.0.20", + "source": { + "type": "git", + "url": "https://github.com/giggsey/libphonenumber-for-php-lite.git", + "reference": "3b0b569a0fe8ec5aecbd972f64ddbc2ce30ebd0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/giggsey/libphonenumber-for-php-lite/zipball/3b0b569a0fe8ec5aecbd972f64ddbc2ce30ebd0a", + "reference": "3b0b569a0fe8ec5aecbd972f64ddbc2ce30ebd0a", + "shasum": "" + }, + "require": { + "php": "^8.1", + "symfony/polyfill-mbstring": "^1.17" + }, + "conflict": { + "giggsey/libphonenumber-for-php": "*" + }, + "require-dev": { + "ext-dom": "*", + "friendsofphp/php-cs-fixer": "^3.71", + "infection/infection": "^0.29|^0.31.0", + "nette/php-generator": "^4.1", + "php-coveralls/php-coveralls": "^2.7", + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^2.1.7", + "phpstan/phpstan-deprecation-rules": "^2.0.1", + "phpstan/phpstan-phpunit": "^2.0.4", + "phpstan/phpstan-strict-rules": "^2.0.3", + "phpunit/phpunit": "^10.5.45", + "symfony/console": "^6.4", + "symfony/filesystem": "^6.4", + "symfony/process": "^6.4" + }, + "suggest": { + "giggsey/libphonenumber-for-php": "Use libphonenumber-for-php for geocoding, carriers, timezones and matching" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.x-dev" + } + }, + "autoload": { + "psr-4": { + "libphonenumber\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Joshua Gigg", + "email": "giggsey@gmail.com", + "homepage": "https://giggsey.com/" + } + ], + "description": "A lite version of giggsey/libphonenumber-for-php, which is a PHP Port of Google's libphonenumber", + "homepage": "https://github.com/giggsey/libphonenumber-for-php-lite", + "keywords": [ + "geocoding", + "geolocation", + "libphonenumber", + "mobile", + "phonenumber", + "validation" + ], + "support": { + "issues": "https://github.com/giggsey/libphonenumber-for-php-lite/issues", + "source": "https://github.com/giggsey/libphonenumber-for-php-lite" + }, + "time": "2025-12-05T12:07:18+00:00" + }, { "name": "graham-campbell/result-type", "version": "v1.1.3", @@ -2652,6 +2730,78 @@ ], "time": "2025-08-21T11:53:16+00:00" }, + { + "name": "propaganistas/laravel-phone", + "version": "6.0.2", + "source": { + "type": "git", + "url": "https://github.com/Propaganistas/Laravel-Phone.git", + "reference": "ae8239becf2c11c8a8a754b8ac95a10ebb3ebb91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Propaganistas/Laravel-Phone/zipball/ae8239becf2c11c8a8a754b8ac95a10ebb3ebb91", + "reference": "ae8239becf2c11c8a8a754b8ac95a10ebb3ebb91", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "giggsey/libphonenumber-for-php-lite": "^9.0", + "illuminate/contracts": "^11.0|^12.0", + "illuminate/support": "^11.0|^12.0", + "illuminate/validation": "^11.0|^12.0", + "php": "^8.2" + }, + "require-dev": { + "laravel/pint": "^1.21", + "orchestra/testbench": "*", + "phpunit/phpunit": "^11.5.3" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Propaganistas\\LaravelPhone\\PhoneServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Propaganistas\\LaravelPhone\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Propaganistas", + "email": "Propaganistas@users.noreply.github.com" + } + ], + "description": "Adds phone number functionality to Laravel based on Google's libphonenumber API.", + "keywords": [ + "laravel", + "libphonenumber", + "phone", + "validation" + ], + "support": { + "issues": "https://github.com/Propaganistas/Laravel-Phone/issues", + "source": "https://github.com/Propaganistas/Laravel-Phone/tree/6.0.2" + }, + "funding": [ + { + "url": "https://github.com/Propaganistas", + "type": "github" + } + ], + "time": "2025-07-05T09:03:01+00:00" + }, { "name": "psr/clock", "version": "1.0.0", From 04e45f3b8330c841f937d7a130175b0080d92090 Mon Sep 17 00:00:00 2001 From: T'JAMPENS QUENTIN p2406187 Date: Tue, 9 Dec 2025 12:20:12 +0100 Subject: [PATCH 2/8] Check user phone --- app/Http/Controllers/UserController.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 3ace2e4..ea0dbf3 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -9,6 +9,7 @@ use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Log; use App\Services\GetRole; use App\Services\UserService; +use Propaganistas\LaravelPhone\PhoneNumber; class UserController extends Controller { @@ -27,12 +28,20 @@ class UserController extends Controller } public function create(Request $request): JsonResponse { + + $request->validate([ + 'phone' => ['required', 'phone:FR,national'] + ]); + + $phone = new PhoneNumber($request["phone"], 'FR'); + User::create([ "name" => $request["name"], "email" => $request["email"], "password" => Hash::make($request["password"]), "lastname" => $request["lastname"], "validate" => 0, + "phone" => $phone->formatInternational(), ]); return response()->json(['message' => 'User created successfully']); From 056f42b815f1e606297e268c4879f9ba70779426 Mon Sep 17 00:00:00 2001 From: T'JAMPENS QUENTIN p2406187 Date: Wed, 10 Dec 2025 09:52:22 +0100 Subject: [PATCH 3/8] Check user email --- app/Http/Controllers/UserController.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index ea0dbf3..cb533b1 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -30,7 +30,8 @@ class UserController extends Controller public function create(Request $request): JsonResponse { $request->validate([ - 'phone' => ['required', 'phone:FR,national'] + 'phone' => ['required', 'phone:FR,national'], + 'email' => 'required|email:strict,rfc', ]); $phone = new PhoneNumber($request["phone"], 'FR'); From 669fa6aa1686cf11254f52337df23ef07f7cb616 Mon Sep 17 00:00:00 2001 From: Giovanni-Josserand Date: Wed, 10 Dec 2025 11:25:48 +0100 Subject: [PATCH 4/8] add TYPESENSE_CONNECTION in .env.example --- .env.example | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.env.example b/.env.example index 408cc20..ee8b9bd 100644 --- a/.env.example +++ b/.env.example @@ -69,3 +69,5 @@ AWS_USE_PATH_STYLE_ENDPOINT=false VITE_APP_NAME="${APP_NAME}" SANCTUM_STATEFUL_DOMAINS=localhost,127.0.0.1,localhost:8000 + +TYPESENSE_CONNECTION=typesense From de08e5396a0e88635495de2aa4c32953e71956fd Mon Sep 17 00:00:00 2001 From: T'JAMPENS QUENTIN p2406187 Date: Wed, 10 Dec 2025 11:40:56 +0100 Subject: [PATCH 5/8] Update create user test --- tests/Users/Create user.bru | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/Users/Create user.bru b/tests/Users/Create user.bru index bea56af..3a58ad7 100644 --- a/tests/Users/Create user.bru +++ b/tests/Users/Create user.bru @@ -15,7 +15,8 @@ body:json { "name": "{{name}}", "lastname": "{{lastname}}", "email": "{{email}}", - "password": "{{password}}" + "password": "{{password}}", + "phone": "{{phone}}" } } @@ -24,6 +25,7 @@ vars:pre-request { email: password: lastname: + phone: } assert { From 639675c266d70bb80091565f7f27c6dd316b001d Mon Sep 17 00:00:00 2001 From: T'JAMPENS QUENTIN p2406187 Date: Wed, 10 Dec 2025 11:41:27 +0100 Subject: [PATCH 6/8] Update user role on validation --- app/Http/Controllers/UserController.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index cb533b1..88401f8 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -118,6 +118,7 @@ class UserController extends Controller $user = User::find($id); $user->validate = 1; + $user->role = 3; $user->verified_at = now(); $user->save(); From b3cffe30089f899219a97c4df07c72150a283420 Mon Sep 17 00:00:00 2001 From: T'JAMPENS QUENTIN p2406187 Date: Wed, 10 Dec 2025 12:10:50 +0100 Subject: [PATCH 7/8] Return isAdmin --- app/Services/UserService.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Services/UserService.php b/app/Services/UserService.php index 4944339..7a18fd7 100644 --- a/app/Services/UserService.php +++ b/app/Services/UserService.php @@ -14,6 +14,7 @@ class UserService "lastname" => $user->lastname, "email" => $user->email, "role" => GetRole::getRole($user->role), + "isAdmin" => $user->role === 1, "phone" => $user->phone, "created_at" => $user->created_at, "updated_at" => $user->updated_at, From 3e4396635754056851556094e79e0c8b350154f6 Mon Sep 17 00:00:00 2001 From: T'JAMPENS QUENTIN p2406187 Date: Wed, 10 Dec 2025 15:09:34 +0100 Subject: [PATCH 8/8] Send error if email is already used --- app/Http/Controllers/UserController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 88401f8..d6c6680 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -31,7 +31,7 @@ class UserController extends Controller $request->validate([ 'phone' => ['required', 'phone:FR,national'], - 'email' => 'required|email:strict,rfc', + 'email' => ['required', 'email:strict,rfc', 'unique:users,email'], ]); $phone = new PhoneNumber($request["phone"], 'FR');