2013-09-01 12 views
7

Utilizzando PHP e laravel 4 Ho un metodo nel mio modello User come questo qui sotto per verificare la presenza di utente Admin ...Rientro utente corrente nel laravel 4

public function isAdmin() 
{ 
    if(isset($this->user_role) && $this->user_role === 'admin'){ 
     return true; 
    }else{ 
     return false; 
    } 
} 

Questo non funziona quando lo chiamo questa funzione in altre classi o modelli però.

per ottenere il risultato desiderato ho dovuto farlo in questo modo, invece ...

public function isAdmin() 
{ 
    if(isset(Auth::user()->user_role) && Auth::user()->user_role === 'admin'){ 
     return true; 
    }else{ 
     return false; 
    } 
} 

Sto cercando di accedere a questo dentro il mio Admin controller come questo qui sotto, ma restituisce un oggetto utente vuota invece di corrente Utente registrato nell'oggetto ...

public function __construct(User $user) 
{ 
    $this->user = $user; 
} 

Quindi la mia domanda è: come posso far funzionare la prima versione? Quando istanzio un oggetto User in un'altra classe, ho bisogno di accertarmi che abbia i dati per l'utente loggato corrente ma non sono sicuro che sia il modo migliore per farlo ... So che questo è di base Sono solo un po ' arrugginiti in questo momento potrebbe utilizzare l'aiuto, grazie

risposta

14

Ciò restituisce il repository utenti - non è l'attuale utente connesso

public function __construct(User $user) 

Per accedere al corrente utente connesso in qualsiasi punto della applicazione - basta fare

Auth::user() 

(come il tuo esempio di mezzo)

Così dunque - per verificare se un utente è un utente amministratore DOVUNQUE nella vostra applicazione - basta fare

if (Auth::user()->isAdmin()) 
{ 
    // yes 
} 
else 
{ 
    // no 
} 
+1

laravel è molto cool, ma sembra quasi lo fa troppo lavoro che è difficile sapere che cosa sta succedendo. Immagino che ho solo bisogno di imparare il framework più che sono abituato a fare cose da zero ... un po 'buffo che usare il framework sarebbe più difficile per me – JasonDavis

+0

@jasondavis Mantieniti, fai riferimento ai documenti, dopo averlo usato per un anno o così, è incredibile e non tornerò mai più. –

+0

@DustinGraham Nei 10 mesi da quando ho fatto quel commento, anche io non potevo vedere tornare indietro ora, è semplicemente fantastico. La mia unica lamentela è che vorrei che ci fosse anche una versione leggera per piccoli progetti micro. Laravel v3 aveva una versione lite con un singolo file e sarebbe fantastico se fosse possibile con L4 ma dubito che lo sia ora. – JasonDavis