Ver Fonte

profilo e user

FabioFratini há 9 meses atrás
pai
commit
69fc743c19

+ 48 - 78
app/Http/Livewire/Profile.php

@@ -1,107 +1,77 @@
 <?php
 
 namespace App\Http\Livewire;
-
+use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Hash;
 use Livewire\Component;
 
 class Profile extends Component
 {
-    public $name, $email, $password, $passwordConfirm, $update = false, $editPassword = false, $errorConfirm;
-
-    protected $rules = [
-        'name' => 'required',
-        'email' => 'required'
-    ];
-
-    protected $messages = [
-        'name.required' => 'Il nome è obbligatorio',
-        'email.required' => 'La mail è obbligatoria',
-        'password.required' => 'La password è obbligatoria',
-        'passwordConfirm.required' => 'La conferma password è obbligatoria',
-    ];
+    public $editMode = false;
 
-    public function resetFields(){
-        //$this->name = '';
-        //$this->email = '';
-        $this->errorConfirm = '';
-        $this->password = '';
-        $this->newPassword = '';
-    }
+    public $name;
+    public $cognome;
+    public $email;
+    public $telefono;
+    public $cellulare;
+    public $password;
 
     public function mount()
     {
-        $this->name = \Auth::user()->name;
-        $this->email = \Auth::user()->email;
+        $user = Auth::user();
+        $this->name = $user->name;
+        $this->cognome = $user->cognome;
+        $this->email = $user->email;
+        $this->telefono = $user->telefono;
+        $this->cellulare = $user->cellulare;
     }
 
-    public function render()
-    {
-        
-        return view('livewire.profile');
-    }
-
-    public function edit()
-    {
-        //$this->resetFields();
-        $this->update = true;
-    }
 
-    public function editPwd()
+    public function enableEditMode()
     {
-        $this->resetFields();
-        $this->editPassword = true;
+        $this->editMode = true;
     }
 
     public function save()
     {
-
-        $this->validate();
-        try {
-            $user = \Auth::user();
-            $user->name = $this->name;
-            $user->email = $this->email;
-            if ($this->password != '')
-            {
-                $user->password = bcrypt($this->password);
-            }
-            $user->save();
-            session()->flash('success','Dato creato');
-            $this->resetFields();
-            $this->update = false;
-        } catch (\Exception $ex) {
-            session()->flash('error','Errore (' . $ex->getMessage() . ')');
+        $this->validate([
+            'name' => 'required',
+            'cognome' => 'required',
+            'email' => 'required|email',
+            'password' => 'nullable|min:6',
+        ]);
+
+        $user = Auth::user();
+        $user->name = $this->name;
+        $user->cognome = $this->cognome;
+        $user->email = $this->email;
+        $user->telefono = $this->telefono;
+        $user->cellulare = $this->cellulare;
+
+        if (!empty($this->password)) {
+            $user->password = Hash::make($this->password);
         }
-    }
 
-    public function updatePwd()
-    {
-        $this->errorConfirm = '';
-        $this->validate(['password' => 'required', 'passwordConfirm' => 'required']);
-        try {
-            $user = \Auth::user();
-            if ($this->password == $this->passwordConfirm)
-            {
-                $user->password = bcrypt($this->password);
-                $user->save();
-                session()->flash('success','Dato creato');
-                $this->resetFields();
-                $this->update = false;
-            }
-            else
-            {
-                $this->errorConfirm = 'Le password non coincidono';
-            }
-        } catch (\Exception $ex) {
-            session()->flash('error','Errore (' . $ex->getMessage() . ')');
-        }
+        $user->save();
+
+        session()->flash('message', 'Profilo aggiornato con successo!');
+
+        $this->editMode = false;
     }
 
     public function cancel()
     {
-        $this->resetFields();
-        $this->update = false;
-        $this->editPassword = false;
+        $this->editMode = false;
+        $this->resetInputFields();
     }
 
+    private function resetInputFields(){
+        $this->name = '';
+        $this->cognome = '';
+        $this->email = '';
+        $this->telefono = '';
+        $this->cellulare = '';
+        $this->password = '';
+    }
 }
 

+ 43 - 2
app/Http/Livewire/User.php

@@ -2,26 +2,30 @@
 
 namespace App\Http\Livewire;
 
+use Illuminate\Support\Facades\Log;
 use Livewire\Component;
 
 class User extends Component
 {
-    public $records, $name, $email, $password, $oldPassword, $level, $enabled, $dataId, $update = false, $add = false;
+    public $records, $name,$cognome, $email, $password, $oldPassword, $level, $enabled, $dataId, $update = false, $add = false;
 
     protected $rules = [
         'name' => 'required',
+        'cognome' => 'required',
         'email' => 'required',
         'password' => 'required'
     ];
 
     protected $messages = [
         'name.required' => 'Il nome è obbligatorio',
+        'cognome.required' => 'Il cognome è obbligatorio',
         'email.required' => 'La mail è obbligatoria',
         'password.required' => 'La password è obbligatoria',
     ];
 
     public function resetFields(){
         $this->name = '';
+        $this->cognome = '';
         $this->email = '';
         $this->password = '';
         $this->oldPassword = '';
@@ -32,7 +36,7 @@ class User extends Component
 
     public function render()
     {
-        $this->records = \App\Models\User::select('id', 'name', 'email', 'password', 'level', 'enabled')->get();
+        $this->records = \App\Models\User::select('id', 'name','cognome' ,'email', 'password', 'level', 'enabled')->get();
         return view('livewire.user');
     }
 
@@ -45,15 +49,37 @@ class User extends Component
 
     public function store()
     {
+        Log::info('User store', [
+            'name' => $this->name,
+            'cognome' => $this->cognome,
+            'email' => $this->email,
+            'level' => $this->level,
+            'enabled' => $this->enabled
+        ]);
         $this->validate();
+        Log::info('User store', [
+            'name' => $this->name,
+            'cognome' => $this->cognome,
+            'email' => $this->email,
+            'level' => $this->level,
+            'enabled' => $this->enabled
+        ]);
         try {
             \App\Models\User::create([
                 'name' => $this->name,
+                'cognome' => $this->cognome,
                 'email' => $this->email,
                 'password' => bcrypt($this->password),
                 'level' => $this->level,
                 'enabled' => $this->enabled
             ]);
+            Log::info('User created', [
+                'name' => $this->name,
+                'cognome' => $this->cognome,
+                'email' => $this->email,
+                'level' => $this->level,
+                'enabled' => $this->enabled
+            ]);
             session()->flash('success','Dato creato');
             $this->resetFields();
             $this->add = false;
@@ -69,6 +95,7 @@ class User extends Component
                 session()->flash('error','Dato non trovato');
             } else {
                 $this->name = $user->name;
+                $this->cognome = $user->cognome;
                 $this->email = $user->email;
                 $this->password = $user->password;
                 $this->level = $user->level;
@@ -76,6 +103,12 @@ class User extends Component
                 $this->update = true;
                 $this->add = false;
             }
+            Log::info('User edit', [
+                'name' => $this->name,
+                'cognome' => $this->cognome,
+                'email' => $this->email,
+                'level' => $this->level
+            ]);
         } catch (\Exception $ex) {
             session()->flash('error','Errore (' . $ex->getMessage() . ')');
         }
@@ -88,11 +121,19 @@ class User extends Component
             if ($this->pa)
             \App\Models\User::whereId($this->dataId)->update([
                 'name' => $this->name,
+                'cognome' => $this->cognome,
                 'email' => $this->email,
                 'password' => bcrypt($this->password),
                 'level' => $this->level,
                 'enabled' => $this->enabled
             ]);
+            Log::info('User updated', [
+                'name' => $this->name,
+                'cognome' => $this->cognome,
+                'email' => $this->email,
+                'level' => $this->level,
+                'enabled' => $this->enabled
+            ]);
             session()->flash('success','Dato aggiornato');
             $this->resetFields();
             $this->update = false;

+ 3 - 0
app/Models/User.php

@@ -19,6 +19,9 @@ class User extends Authenticatable
      */
     protected $fillable = [
         'name',
+        'cognome',
+        'telefono',
+        'cellulare',
         'email',
         'password',
         'level'

+ 30 - 0
database/migrations/2025_04_17_102305_add_fields_to_users_table.php

@@ -0,0 +1,30 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migration.
+     */
+    public function up(): void
+    {
+        Schema::table('users', function (Blueprint $table) {
+            $table->string('cellulare')->nullable()->after('email');
+            $table->string('telefono')->nullable()->after('cellulare');
+            $table->string('cognome')->nullable()->after('name');
+        });
+    }
+
+    /**
+     * Reverse the migration.
+     */
+    public function down(): void
+    {
+        Schema::table('users', function (Blueprint $table) {
+            $table->dropColumn(['cellulare', 'telefono', 'cognome']);
+        });
+    }
+};

+ 58 - 81
resources/views/livewire/profile.blade.php

@@ -1,98 +1,75 @@
 <div class="col card--ui" id="card--dashboard">
 
-        <div class="container">
+    <div class="container">
 
-            @if (session()->has('error'))
-                <div class="alert alert-danger" role="alert">
-                    {{ session()->get('error') }}
-                </div>
-            @endif
-
-            <div class="row">
-                <div class="col">
+        @if (session()->has('error'))
+            <div class="alert alert-danger" role="alert">
+                {{ session()->get('error') }}
+            </div>
+        @endif
 
-                    <form action="">
+        <div class="row">
+            <div class="col">
 
-                        <div class="row mb-3">
-                            <div class="col-md-6">
-                                <div class="form--item">
-                                    <label for="inputName" class="form-label"><b>Nome</b></label>
-                                    @if($update)
-                                        <input class="form-control  @error('name') is-invalid @enderror" type="text" id="name" placeholder="Nome" wire:model="name">
-                                        @error('name')
-                                            <div class="invalid-feedback">{{ $message }}</div>
-                                        @enderror
-                                    @else
-                                        <br>{{$name}}
-                                    @endif
-                                </div>
-                            </div>
+                <form wire:submit.prevent="save">
 
-                            <div class="col-md-6">
-                                <div class="form--item">
-                                    <label for="email" class="form-label"><b>Email</b></label>
-                                    @if($update)
-                                        <input class="form-control  @error('email') is-invalid @enderror" type="text" id="email" placeholder="Email" wire:model="email">
-                                        @error('email')
-                                            <div class="invalid-feedback">{{ $message }}</div>
-                                        @enderror
-                                    @else
-                                        <br>{{$email}}
-                                    @endif
-                                </div>
-                            </div>
+                    <div class="row mb-3 mt-4">
+                        <div class="col-md-6">
+                            <label for="inputName" class="form-label"><b>Nome</b></label>
+                            <input class="form-control " type="text" id="name" placeholder="Nome"
+                                   wire:model="name" {{ $editMode ? '' : 'disabled' }}>
                         </div>
 
-                        <!-- // inline input field -->
-
-                        <div class="form--item">
-                            <button type="button" class="btn--ui lightGrey" wire:click="cancel()">Annulla</button>
-                            @if($update)
-                                <button type="submit" class="btn--ui" wire:click.prevent="save()">Salva</button>
-                            @else
-                                <button type="submit" class="btn--ui" wire:click.prevent="edit()">Modifica</button>
-                            @endif
+                        <div class="col-md-6">
+                            <label for="inputName" class="form-label"><b>Cognome</b></label>
+                            <input class="form-control" type="text" id="cognome" placeholder="Cognome"
+                                   wire:model="cognome" {{ $editMode ? '' : 'disabled' }}>
                         </div>
 
-                        <br><br>
-
-                        @if($editPassword)
-
-                            <div class="row mb-3">
-                                <div class="col-md-6">
-                                    <div class="form--item">
-                                        <label for="password" class="form-label">Password</label>
-                                        <input class="form-control js-keyupTitle @error('password') is-invalid @enderror" type="password" id="password" wire:model="password">
-                                        @error('password')
-                                            <div class="invalid-feedback">{{ $message }}</div>
-                                        @enderror
-                                    </div>
-                                </div>
-                                <div class="col-md-6">
-                                    <div class="form--item">
-                                        <label for="passwordConfirm" class="form-label">Conferma password</label>
-                                        <input class="form-control js-keyupTitle @error('passwordConfirm') is-invalid @enderror" type="password" id="passwordConfirm" wire:model="passwordConfirm">
-                                        @error('passwordConfirm')
-                                            <div class="invalid-feedback">{{ $message }}</div>
-                                        @enderror
-                                    </div>
-                                </div>
+                        <h5 class="mb-3 mt-3" style="color:#0C6197;">Contatti</h5>
+                        <div class="row">
+                            <div class="col-md-6 mb-3">
+                                <label class="form-label">Telefono</label>
+                                <input type="text" class="form-control" wire:model="telefono" {{ $editMode ? '' : 'disabled' }}>
                             </div>
-                            <span style="color:red">{{$errorConfirm}}</span>
-
-                        @endif
+                            <div class="col-md-6 mb-3">
+                                <label class="form-label">Cellulare</label>
+                                <input type="text"
+                                       class="form-control @error('cellulare') is-invalid @enderror"
+                                       wire:model="cellulare" {{ $editMode ? '' : 'disabled' }}>
+                                @error('cellulare') <span class="text-danger">{{ $message }}</span> @enderror
+                            </div>
+                        </div>
 
-                        <div class="form--item" style="margin-top: 10px">
-                            @if($editPassword)
-                                <button type="submit" class="btn--ui" wire:click.prevent="updatePwd()">Salva</button>
-                            @else
-                                <button type="submit" class="btn--ui" wire:click.prevent="editPwd()">Modifica password</button>
-                            @endif
-                            <button type="button" class="btn--ui lightGrey" wire:click="cancel()">Annulla</button>
+                        <h5 class="mb-3" style="color:#0C6197;">Credenziali Accesso</h5>
+                        <div class="col-md-4 mb-3">
+                            <label class="form-label">Email</label>
+                            <input type="email"
+                                   class="form-control @error('email') is-invalid @enderror"
+                                   wire:model="email" {{ $editMode ? '' : 'disabled' }}>
+                            @error('email') <span class="text-danger">{{ $message }}</span> @enderror
                         </div>
+                        <div class="col-md-4 mb-3">
+                            <label class="form-label">Password</label>
+                            <input type="password"
+                                   class="form-control @error('password') is-invalid @enderror"
+                                   wire:model="password" {{ $editMode ? '' : 'disabled' }}>
+                            @error('password') <span class="text-danger">{{ $message }}</span> @enderror
+                            <small class="form-text text-muted">Lasciare vuoto per non modificare</small>
+                        </div>
+                    </div>
+
+                    <div class="form--item" style="margin-top: 10px">
+                        <button type="button" class="btn--ui lightGrey" wire:click="cancel()">Annulla</button>
+                        @if ($editMode)
+                            <button type="submit" class="btn--ui" wire:click.prevent="save()">Salva</button>
+                        @else
+                            <button type="button" class="btn--ui" wire:click="enableEditMode()">Modifica</button>
+                        @endif
+                    </div>
 
-                    </form>
-                </div>
+                </form>
             </div>
         </div>
+    </div>
 </div>

+ 14 - 4
resources/views/livewire/user.blade.php

@@ -76,6 +76,15 @@
                                     @enderror
                                 </div>
                             </div>
+                            <div class="col-md-6">
+                                <div class="form--item">
+                                    <label for="name" class="form-label">Cognome</label>
+                                    <input class="form-control js-keyupTitle @error('') is-invalid @enderror" type="text" id="cognome" placeholder="Cognome" wire:model="cognome">
+                                    @error('cognome')
+                                        <div class="invalid-feedback">{{ $message }}</div>
+                                    @enderror
+                                </div>
+                            </div>
                             <div class="col-md-6">
                                 <div class="form--item">
                                     <label for="email" class="form-label">Email</label>
@@ -85,18 +94,19 @@
                                     @enderror
                                 </div>
                             </div>
-                        </div>
-                        <div class="row mt-3">
-                            <div class="col-md-6 mt-3">
+                            <div class="col-md-6 ">
                                 <div class="form--item">
                                     <label for="password" class="form-label">Password</label>
-                                    <small>Lasciare vuota per NON modificarla</small>
                                     <input class="form-control js-keyupTitle @error('password') is-invalid @enderror" type="text" id="password" placeholder="Password" wire:model="password" type="password">
+                                    <small>Lasciare vuota per NON modificarla</small>
                                     @error('password')
                                         <div class="invalid-feedback">{{ $message }}</div>
                                     @enderror
                                 </div>
                             </div>
+                        </div>
+                        <div class="row mt-3">
+
                             <div class="col-md-6">
                                 <div class="form--item">
                                     <label for="enabled" class="form-label">Livello</label>