Bonjour,
Je cherche à enregistrer la date de dernière consultation du site des utilisateurs.
Tout bêtement je pensais qu'en mettant mon petit bout de code dans le constructeur de Controller.php
ca me ferait le boulot, mais à ce niveau là, auth()->user()
est null
Si quelqu'un a la solution, merci :)
Bonjour lolotoobo,
J'apellle Auth au niveau de mon layout principal de la manière suivante:
$user = \Auth::user(); ou Auth::user;
Puis j'ai accès en permanence aux données de la table users récupérées par la méthode appellée quelque soit la page renvoyée à conditon que cette page hérite du layout avec l'instruction @extends('layout').
Exemple: $user->updated_at;
J'ai essayé au niveau d'un controller et à priori cela fonctionne de la même mnière, sauf que je dois l'appeler à chaque fois que je veux la récupérer sur une page spécifique.
Je suis toujours sur la version 5.2, mas je pense que cela fonctionne avec les autres versions du famework.
J'espère avoir répondu à ta question
Alain
@alain9034 : désolé de ne t'avoir répondu. On peut faire comme ça oui :)
@rueduphp : Maintenant pour ce genre d'opérations, je passe par un observer sur User, c'est très pratique :) Et ça allège un peu le code des controlleurs.
Sinon tu rajoutes le constructeur dans Controller.php
protected $user;
public function __construct()
{
$this->middleware(function ($request, $next) {
$this->user = auth()->user();
$this->user->update([
'last_login_at' => Carbon::now(),
'last_login_ip' => \Request::ip()
]);
return $next($request);
});
}
Ton code devrait marcher vu que tu fais bien un callback dans le constructeur de Controller.
Par contre, je te conseille de passer par une classe middleware (exemple : UpdateLastLogin) plutôt qu'un callback dans le constructeur de Controller.
Oui ce code marche c'est la solution que j'ai trouvé
Oui j'aurais pu passer par un middleware, mais je n'ai utilisé cette technique que pour un seul projet :) mais merci de l'idée ca pourra me reservir
@joshow : Ne t'inquiète pas, c'est moi qui ait dû etre trop rapide dans ma réponse :) Je ne l'ai pas mal pris, bien au contraire car tu as raison pour faire du boulot propre on pourrait passer par un middleware, mais le projet ayant été rendu avec une méthode qui marche je n'y touche pas pour le moment hihihi
Et comme j'avais précisé plus haut maintenant pour ce genre de chose, je passe par des observers, je trouve ça tellement sympa et ca rend le code beaucoup plus "propre"