Je suis actuellement en train d’expérimenter avec le nouveau Laravel 5 et j’ai obtenu l’authentification (registre/login).
Pour obtenir l'utilisateur authentifié dans mon contrôleur, j'injecte actuellement Guard
dans l'action du contrôleur:
use App\Http\Controllers\Controller;
use Illuminate\Contracts\Auth\Guard;
class ClientController extends Controller {
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index(Guard $auth)
{
return view('client.index', ['user' => $auth->user()]);
}
...
Première question: Est-ce la manière recommandée?
Deuxième question: Comment pourrais-je m'engager dans la mise en place de certains rôles/autorisations? Quelque chose comme client.edit
, client.add
, ... Est-ce que Larval 5 offre une certaine commodité ici? Comment définirais-je le rôle/autorisation nécessaire pour une action route/contrôleur?
Je pense que je pourrais avoir besoin d'écrire mon propre middleware pour cela. Des suggestions sur la façon d'aborder le problème?
Après avoir passé un peu plus de temps sur Laravel 5, je peux répondre à ma propre question:
Est-ce que l'injection Guard
est recommandée? Non: Si vous avez besoin d'accéder à Auth
à votre vue, vous pouvez le faire déjà comme ceci:
@if( Auth::check() )
Current user: {{ Auth::user()->name }}
@endif
Ceci utilise la façade Auth
. Une liste de toutes les façades disponibles est dans config/app.php
sous aliases:
Et si j'ai besoin de Auth
dans mon contrôleur? L'injection d'une instance de Guard
comme indiqué dans la question fonctionne, mais vous n'avez pas besoin de le faire. Vous pouvez utiliser la façade Auth
comme nous l'avons fait dans le modèle:
public function index()
{
if(\Auth::check() && \Auth::user()->name === 'Don') {
// Do something
}
return view('client.index');
}
Sachez que le \
est nécessaire avant le nom de la façade car L5 utilise des espaces de noms.
Je souhaite disposer d'autorisations/de rôles à l'aide du nouveau mécanisme d'authentification de L5: J'ai implémenté un module d'autorisation allégé utilisant le nouveau middleware, il s'appelle Laraguard. Allez voir sur Github et dites-moi ce que vous pensez: https://github.com/cgrossde/Laraguard
UPDATE: Par souci d'exhaustivité, je souhaite mentionner deux autres projets. Ils fournissent tout ce dont vous avez besoin pour enregistrer les rôles et les autorisations dans la base de données et fonctionnent parfaitement avec Laraguard ou séparément:
Si vous voulez créer votre propre authentification personnalisée, vous devez conserver le modèle utilisateur de Laravel 5 avec toutes les dépendances. Une fois que vous pourrez connecter votre utilisateur à votre contrôleur. N'oubliez pas de mettre (utilisez Auth;) après l'espace de noms de votre contrôleur.