++ gruppi: email fittizia iniziale+cognome per il sorvegliante; sciolto il gruppo l'utenza si elimina
- L'utenza del sorvegliante ha un'email fittizia creata dall'app: iniziale del nome e cognome @termanager.it (ffontana@termanager.it), come gli altri utenti. Via il nome utente: login di nuovo per email. - Sciolto il gruppo l'utenza si elimina, il sorvegliante torna un proclamatore come gli altri: assegnazioni a chi scioglie, registro a nome "Sorvegliante del gruppo ...". Via le utenze disattivate. - User::eliminaConservandoStorico(): l'eliminazione della pagina Utenti in un metodo solo, usato anche dallo scioglimento. - Migrazione 000030: elimina le utenze gia' disattivate, toglie users.username e users.disattivato_at, email di nuovo obbligatoria. - XML, informativa privacy, README, HANDOFF e test aggiornati. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -13,11 +13,8 @@ class LoginController extends Controller
|
||||
{
|
||||
public function __invoke(Request $request): RedirectResponse
|
||||
{
|
||||
// Il campo si chiama "email" ma accetta anche il nome utente del
|
||||
// sorvegliante di gruppo, che l'email non ce l'ha: con la chiocciola è
|
||||
// un'email, senza un nome utente (che la chiocciola non la contiene mai).
|
||||
$credentials = $request->validate([
|
||||
'email' => ['required', 'string', 'max:255'],
|
||||
'email' => ['required', 'email'],
|
||||
'password' => ['required', 'string', 'min:6'],
|
||||
'remember' => ['nullable', 'boolean'],
|
||||
]);
|
||||
@@ -32,11 +29,8 @@ class LoginController extends Controller
|
||||
->withInput($request->only('email', 'remember'));
|
||||
}
|
||||
|
||||
$identificativo = trim($credentials['email']);
|
||||
$campo = str_contains($identificativo, '@') ? 'email' : 'username';
|
||||
|
||||
if (! Auth::attempt([
|
||||
$campo => $campo === 'username' ? Str::lower($identificativo) : $identificativo,
|
||||
'email' => $credentials['email'],
|
||||
'password' => $credentials['password'],
|
||||
], $request->boolean('remember'))) {
|
||||
RateLimiter::hit($throttleKey);
|
||||
@@ -46,16 +40,6 @@ class LoginController extends Controller
|
||||
->withInput($request->only('email', 'remember'));
|
||||
}
|
||||
|
||||
// Utenza disattivata (gruppo di servizio sciolto): la password è giusta
|
||||
// ma non si entra.
|
||||
if (Auth::user()->isDisattivato()) {
|
||||
Auth::logout();
|
||||
|
||||
return back()
|
||||
->withErrors(['email' => 'Questa utenza è stata disattivata.'])
|
||||
->withInput($request->only('email', 'remember'));
|
||||
}
|
||||
|
||||
RateLimiter::clear($throttleKey);
|
||||
$request->session()->regenerate();
|
||||
activity()->causedBy(auth()->user())->log('login');
|
||||
|
||||
@@ -4,23 +4,18 @@ namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
/**
|
||||
* Due regole per gli utenti autenticati.
|
||||
*
|
||||
* 1. Un'utenza disattivata (gruppo di servizio sciolto) non può più lavorare:
|
||||
* anche una sessione già aperta viene chiusa alla richiesta successiva.
|
||||
*
|
||||
* 2. Il sorvegliante di gruppo vede solo il proprio gruppo e il proprio
|
||||
* profilo. La Home lo porta a "Il mio gruppo"; ogni altra pagina è 403,
|
||||
* anche scrivendone l'indirizzo a mano. Le azioni Livewire passano: i
|
||||
* componenti che può aprire controllano da sé che territori e assegnazioni
|
||||
* siano del suo gruppo, e gli altri non può caricarli.
|
||||
* Il sorvegliante di gruppo vede solo il proprio gruppo e il proprio
|
||||
* profilo. La Home lo porta a "Il mio gruppo"; ogni altra pagina è 403,
|
||||
* anche scrivendone l'indirizzo a mano. Le azioni Livewire passano: i
|
||||
* componenti che può aprire controllano da sé che territori e assegnazioni
|
||||
* siano del suo gruppo, e gli altri non può caricarli.
|
||||
*
|
||||
* Vale solo per chi ha il ruolo sorvegliante e nessun altro: un utente con
|
||||
* anche un altro ruolo resta regolato dai permessi di quel ruolo.
|
||||
* anche un altro ruolo resta regolato dai permessi di quel ruolo. Sciolto il
|
||||
* gruppo l'utenza si elimina: una sessione ancora aperta non ha più utente.
|
||||
*/
|
||||
class LimitaSorvegliante
|
||||
{
|
||||
@@ -43,14 +38,6 @@ class LimitaSorvegliante
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
if ($user->isDisattivato()) {
|
||||
Auth::guard('web')->logout();
|
||||
$request->session()->invalidate();
|
||||
$request->session()->regenerateToken();
|
||||
|
||||
return redirect()->route('login')->withErrors(['email' => 'Questa utenza è stata disattivata.']);
|
||||
}
|
||||
|
||||
if (! $user->isSorvegliante() || $user->roles->count() > 1) {
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user