2014-12-19 7 views
19

Attualmente sto sperimentando con il nuovo Laravel 5 e ho ottenuto l'autenticazione per funzionare (registrazione/login).Laravel 5 new auth: ottieni l'utente corrente e come implementare i ruoli?

Per ottenere l'utente autenticato nel mio controller Attualmente iniettare Guard nella azione di controllo:

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()]); 
    } 
... 

prima domanda: E 'questo il modo consigliato?

Seconda domanda: Come posso implementare un tipo di ruoli/permessi? Qualcosa come client.edit, client.add, ... Larval 5 offre qualche tipo di comodità qui? Come impostare il ruolo/il permesso necessari per un'azione di route/controller?

Sto pensando che potrei aver bisogno di scrivere il mio middleware per quello. Qualche suggerimento su come affrontare il problema?

risposta

50

Dopo aver trascorso un po 'di tempo su laravel 5 posso una risposta alla mia domanda:

sta iniettando Guard il metodo raccomandato? No: Se avete bisogno di accedere Auth secondo lei, è possibile farlo già in questo modo:

@if(Auth::check()) 
    Current user: {{ Auth::user()->name }} 
@endif 

Questo utilizza la facciata Auth. Un elenco di tutte le facciate disponibili è in config/app.php sotto aliases:

Che cosa succede se ho bisogno Auth nel mio controller? L'iniezione di un'istanza di Guard come mostrato nella domanda funziona, ma non è necessario. È possibile utilizzare la facciata Auth come abbiamo fatto nel modello:

public function index() 
    { 
     if(\Auth::check() && \Auth::user()->name === 'Don') { 
      // Do something 
     } 
     return view('client.index'); 
    } 

essere consapevoli che il \ è necessario prima che il nome di facciata in quanto L5 sta usando gli spazi dei nomi.

voglio avere i permessi/ruoli utilizzando il nuovo meccanismo di autenticazione in L5: ho implementato un modulo di autorizzazione leggero utilizzando il nuovo middleware, si chiama Laraguard. Check it out su Github e fatemi sapere cosa ne pensate: https://github.com/cgrossde/Laraguard

UPDATE: Per ragioni di completezza voglio citare altri due progetti. Essi forniscono tutto il necessario per salvare i ruoli e le autorizzazioni nel DB e lavorare perfettamente insieme con Laraguard o da soli:

+0

hai creato percorsi di filtro per il ruolo utente sono bloccato con https://github.com/romanbican/roles –

+0

Great Man .. !!! tu fai la mia giornata !! –

+0

Ad ogni modo per farlo senza la facciata? – Petah

0

Se volete fare il vostro proprio autenticazione personalizzati, è necessario mantenere il modello utente da Laravel 5 con tutta la dipendenza. Dopo potrai accedere al tuo utente nel tuo controller. Non dimenticare di mettere (utilizzare Auth;) dopo lo spazio dei nomi del controller.

Problemi correlati