++ Utenti: nuova password temporanea per il sorvegliante di gruppo
Sulla riga del sorvegliante, che prima non aveva azioni: "Nuova password temporanea" (mostrata una volta, da cambiare al primo accesso) e "Apri il gruppo". La logica sta in GruppiServizio::nuovaPasswordTemporanea(), usata anche dalla pagina del gruppo; azzera anche il "ricordami". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -3,8 +3,11 @@
|
||||
namespace App\Livewire\Settings;
|
||||
|
||||
use App\Livewire\Concerns\Avvisa;
|
||||
use App\Models\GruppoServizio;
|
||||
use App\Models\User;
|
||||
use App\Services\GruppiServizio;
|
||||
use Illuminate\Validation\Rule;
|
||||
use InvalidArgumentException;
|
||||
use Livewire\Attributes\Locked;
|
||||
use Livewire\Component;
|
||||
use Spatie\Permission\Models\Role;
|
||||
@@ -22,6 +25,17 @@ class UsersIndex extends Component
|
||||
#[Locked]
|
||||
public array $availableRoles = [];
|
||||
|
||||
/**
|
||||
* Nuova password temporanea di un sorvegliante di gruppo, mostrata una
|
||||
* volta sola (come nella pagina del gruppo). Locked: le scrive solo
|
||||
* nuovaPasswordSorvegliante().
|
||||
*/
|
||||
#[Locked]
|
||||
public ?int $passwordPerUtenteId = null;
|
||||
|
||||
#[Locked]
|
||||
public ?string $passwordTemporanea = null;
|
||||
|
||||
public ?int $editingUserId = null;
|
||||
public string $editName = '';
|
||||
public string $editEmail = '';
|
||||
@@ -238,10 +252,39 @@ class UsersIndex extends Component
|
||||
$this->avvisa('Utente cancellato. I log sono stati preservati.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Il sorvegliante ha perso la password: una temporanea nuova, da cambiare
|
||||
* al primo accesso. È l'unica cosa che di quell'utenza si fa da qui; il
|
||||
* resto passa dal gruppo (gestitaDaiGruppi).
|
||||
*/
|
||||
public function nuovaPasswordSorvegliante(int $userId): void
|
||||
{
|
||||
$this->authorize('settings.manage');
|
||||
$user = User::query()->findOrFail($userId);
|
||||
|
||||
try {
|
||||
$this->passwordTemporanea = app(GruppiServizio::class)->nuovaPasswordTemporanea($user);
|
||||
} catch (InvalidArgumentException $e) {
|
||||
$this->avvisaErrore($e->getMessage());
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$this->passwordPerUtenteId = $user->id;
|
||||
}
|
||||
|
||||
public function chiudiPassword(): void
|
||||
{
|
||||
$this->reset(['passwordPerUtenteId', 'passwordTemporanea']);
|
||||
}
|
||||
|
||||
public function render()
|
||||
{
|
||||
return view('livewire.settings.users-index', [
|
||||
'users' => User::query()->with('roles')->orderBy('name')->get(),
|
||||
// Per ogni sorvegliante il suo gruppo, per il collegamento.
|
||||
'gruppiDeiSorveglianti' => GruppoServizio::pluck('id', 'sorvegliante_id'),
|
||||
'utentePassword' => $this->passwordPerUtenteId ? User::find($this->passwordPerUtenteId) : null,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user