$input */ public function create(array $input): User { $phoneNumber = $this->phoneVerificationOtpService->normalizePhoneNumber($input['phone_number'] ?? ''); Validator::make(array_merge($input, ['phone_number' => $phoneNumber]), [ 'name' => ['required', 'string', 'max:255'], 'email' => [ 'required', 'string', 'email', 'max:255', Rule::unique(User::class), ], 'ic_number' => ['required', 'string', 'max:255'], 'phone_number' => [ ...$this->phoneVerificationOtpService->phoneNumberRules(), Rule::unique(User::class), ], 'phone_verification_token' => ['required', 'string', 'size:64'], 'password' => ['required', 'string', 'min:8'], ], [ 'phone_number.required' => 'Nombor telefon diperlukan.', 'phone_number.regex' => 'Format nombor telefon tidak sah.', 'phone_number.unique' => 'Nombor telefon ini telah didaftarkan.', 'phone_verification_token.required' => 'Pengesahan nombor telefon diperlukan.', ])->validate(); $this->phoneVerificationOtpService->consumeRegistrationToken( $phoneNumber, $input['phone_verification_token'], ); $user = User::create([ 'name' => $input['name'], 'uuid' => Str::uuid(), 'email' => $input['email'], 'password' => Hash::make($input['password']), 'ic_number' => $input['ic_number'], 'phone_number' => $phoneNumber, 'phone_verified_at' => now(), 'status' => 'pending', ]); // Assign role using Spatie permissions $role = Role::where('name', 'Anggota')->first(); if ($role) { $user->assignRole($role); } return $user; } }