'datetime', 'password' => 'hashed', 'password_change_required' => 'boolean', ]; } public function getActivitylogOptions(): LogOptions { return LogOptions::defaults() ->logOnly(['name', 'email']) ->logOnlyDirty() ->dontSubmitEmptyLogs(); } protected static function booted(): void { // Un indirizzo nuovo va confermato di nuovo, chiunque lo cambi. static::updating(function (self $utente) { if ($utente->isDirty('email') && ! $utente->isDirty('email_verified_at')) { $utente->email_verified_at = null; } }); } /** * Gli amministratori sono esenti dalla conferma dell'email: scelta * esplicita, perché l'amministratore deve poter entrare anche quando la * posta non funziona (è lui che la configura). Vale finché ha il ruolo: * se lo perde, torna a contare `email_verified_at`. */ public function esenteDaConfermaEmail(): bool { return $this->hasRole('amministratore'); } /** * Usato dal middleware `verified`: un esente è sempre "confermato". */ public function hasVerifiedEmail(): bool { return $this->esenteDaConfermaEmail() || ! is_null($this->email_verified_at); } /** * Manda l'email di conferma; false se il server di posta non risponde o * rifiuta. Chi chiama decide cosa dire: l'utente è comunque salvato, e * l'email si può richiedere di nuovo. Agli esenti non si manda nulla. */ public function inviaConfermaEmail(): bool { if ($this->esenteDaConfermaEmail()) { return true; } try { $this->sendEmailVerificationNotification(); } catch (\Throwable $e) { report($e); return false; } return true; } }