feat(chat): pedir cédula y celular al crear cuenta desde el chat

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro
2026-07-14 01:06:05 +00:00
co-authored by Claude Sonnet 4.6
parent a693ce2527
commit 5f06c27869
3 changed files with 35 additions and 7 deletions
+17 -6
View File
@@ -31,6 +31,8 @@ class PublicChat extends Component
public string $paso = 'email'; // email | verificacion | registro | chat
public string $email = '';
public string $nombreRegistro = '';
public string $cedulaRegistro = '';
public string $celularRegistro = '';
public string $codigoIngresado = '';
public ?string $emailMascarado = null;
public ?int $contactIdPending = null; // contact.id mientras espera verificacion
@@ -55,6 +57,8 @@ class PublicChat extends Component
protected $rules = [
'email' => 'required|email|max:100',
'nombreRegistro' => 'required|max:80',
'cedulaRegistro' => 'nullable|max:20',
'celularRegistro' => 'nullable|max:20',
'codigoIngresado' => 'nullable|digits:6',
];
@@ -95,14 +99,19 @@ class PublicChat extends Component
public function crearCuenta(): void
{
$this->validate([
'email' => 'required|email|max:100',
'nombreRegistro' => 'required|max:80',
'email' => 'required|email|max:100',
'nombreRegistro' => 'required|max:80',
'cedulaRegistro' => 'nullable|max:20',
'celularRegistro' => 'nullable|max:20',
]);
$user = User::create([
'name' => $this->nombreRegistro,
'email' => $this->email,
'password' => \Illuminate\Support\Facades\Hash::make(\Illuminate\Support\Str::random(16)),
'password' => Hash::make(Str::random(16)),
'cedula' => $this->cedulaRegistro ?: null,
'celular' => $this->celularRegistro ?: null,
'estado' => 'activo',
]);
$contact = ChatContact::create([
@@ -121,9 +130,11 @@ class PublicChat extends Component
public function rechazarRegistro(): void
{
$this->email = '';
$this->nombreRegistro = '';
$this->paso = 'email';
$this->email = '';
$this->nombreRegistro = '';
$this->cedulaRegistro = '';
$this->celularRegistro = '';
$this->paso = 'email';
}
// ─────────────────────────────────────────────────────────
+1
View File
@@ -29,6 +29,7 @@ class User extends Authenticatable
'parent_id',
'rank_id',
'celular',
];
protected $hidden = [
@@ -58,13 +58,29 @@
<form wire:submit.prevent="crearCuenta" class="space-y-4">
<div>
<label class="block text-[#8696a0] text-xs font-medium mb-1.5 uppercase tracking-wider">Tu nombre *</label>
<label class="block text-[#8696a0] text-xs font-medium mb-1.5 uppercase tracking-wider">Nombre completo *</label>
<input wire:model.defer="nombreRegistro" type="text" autocomplete="name"
placeholder="¿Cómo te llamas?"
class="w-full bg-[#2a3942] text-white rounded-xl px-4 py-3.5 outline-none border border-transparent focus:border-[#00a884] transition placeholder-[#8696a0]"
style="color-scheme: dark;">
@error('nombreRegistro') <span class="text-red-400 text-xs mt-1 block">{{ $message }}</span> @enderror
</div>
<div>
<label class="block text-[#8696a0] text-xs font-medium mb-1.5 uppercase tracking-wider">Cédula</label>
<input wire:model.defer="cedulaRegistro" type="text" inputmode="numeric"
placeholder="Número de cédula"
class="w-full bg-[#2a3942] text-white rounded-xl px-4 py-3.5 outline-none border border-transparent focus:border-[#00a884] transition placeholder-[#8696a0]"
style="color-scheme: dark;">
@error('cedulaRegistro') <span class="text-red-400 text-xs mt-1 block">{{ $message }}</span> @enderror
</div>
<div>
<label class="block text-[#8696a0] text-xs font-medium mb-1.5 uppercase tracking-wider">Celular</label>
<input wire:model.defer="celularRegistro" type="tel" inputmode="tel" autocomplete="tel"
placeholder="Ej: 3001234567"
class="w-full bg-[#2a3942] text-white rounded-xl px-4 py-3.5 outline-none border border-transparent focus:border-[#00a884] transition placeholder-[#8696a0]"
style="color-scheme: dark;">
@error('celularRegistro') <span class="text-red-400 text-xs mt-1 block">{{ $message }}</span> @enderror
</div>
<button type="submit"
class="w-full bg-[#00a884] active:bg-[#06cf9c] text-white font-semibold rounded-xl transition shadow-lg"
style="min-height: 48px;">