From d3efbaad34a5037ed25a604e48930e6e200a04f3 Mon Sep 17 00:00:00 2001 From: br0kenpixel <23280129+br0kenpixel@users.noreply.github.com> Date: Tue, 21 Oct 2025 17:15:23 +0200 Subject: [PATCH] feat: enhance user registration to include role-based data for students and employers --- .../Auth/RegisteredUserController.php | 49 +++++++++++++++++-- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/backend/app/Http/Controllers/Auth/RegisteredUserController.php b/backend/app/Http/Controllers/Auth/RegisteredUserController.php index c6edf9c..882d4f0 100644 --- a/backend/app/Http/Controllers/Auth/RegisteredUserController.php +++ b/backend/app/Http/Controllers/Auth/RegisteredUserController.php @@ -3,13 +3,14 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; +use App\Models\Company; +use App\Models\StudentData; use App\Models\User; use Illuminate\Auth\Events\Registered; use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; -use Illuminate\Validation\Rules; class RegisteredUserController extends Controller { @@ -20,18 +21,56 @@ class RegisteredUserController extends Controller */ public function store(Request $request): Response { + $password = bin2hex(random_bytes(16)); + $request->validate([ - 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'lowercase', 'email', 'max:255', 'unique:'.User::class], - 'password' => ['required', 'confirmed', Rules\Password::defaults()], + 'first_name' => ['required', 'string', 'max:64'], + 'last_name' => ['required', 'string', 'max:64'], + 'phone' => ['required', 'string', 'max:13'], + 'role' => ['required', 'string', 'uppercase', 'in:STUDENT,EMPLOYER'], + + // študentské info + 'student_data' => ['required_if:role,STUDENT', 'array'], + 'student_data.address' => ['required_if:role,STUDENT', 'string', 'max:64'], + 'student_data.personal_email' => ['required_if:role,STUDENT', 'string', 'email'], + 'student_data.study_field' => ['required_if:role,STUDENT', 'string', 'max:32'], + + // firemné info + 'company_data' => ['required_if:role,EMPLOYER', 'array'], + 'company_data.name' => ['required_if:role,EMPLOYER', 'string', 'max:64'], + 'company_data.address' => ['required_if:role,EMPLOYER', 'string', 'max:64'], + 'company_data.ico' => ['required_if:role,EMPLOYER', 'integer'], + 'company_data.hiring' => ['required_if:role,EMPLOYER', 'boolean'], ]); $user = User::create([ - 'name' => $request->name, 'email' => $request->email, - 'password' => Hash::make($request->string('password')), + 'first_name' => $request->first_name, + 'last_name' => $request->last_name, + 'name' => "{$request->first_name} {$request->last_name}", + 'phone' => $request->phone, + 'role' => $request->role, + 'password' => Hash::make($password), ]); + if($user->role === "STUDENT") { + StudentData::create([ + 'user_id' => $user->id, + 'address' => $request->student_data['address'], + 'personal_email' => $request->student_data['personal_email'], + 'study_field' => $request->student_data['study_field'], + ]); + } else if($user->role === "EMPLOYER") { + Company::create([ + 'name' => $request->company_data['name'], + 'address' => $request->company_data['address'], + 'ico' => $request->company_data['ico'], + 'contact' => $user->id, + 'hiring' => $request->company_data['hiring'], + ]); + } + event(new Registered($user)); Auth::login($user);