2015-06-22 7 views
8

Ho recentemente iniziato a imparare Laravel 5 e ho bisogno di creare un'area di amministrazione separata all'interno del sito.Best practice per creare l'area di interfaccia amministratore in Laravel 5

ho provato un sacco di ottenere la struttura di directory di file, ma la maggior parte di loro ho ottenuto sono per laravel 4 e non per il laravel 5.

Come laravel 5 si differenzia nella struttura da laravel 4.

Qualcuno può aiutarmi come configurare la struttura di directory per l'area di amministrazione e gli instradamenti.

Grazie in anticipo.

+0

ne dite di farlo nel modo semplice. Puoi creare risorse/viste/admin per tutte le tue visualizzazioni di amministrazione, quindi app \ admin per tutti i modelli di amministrazione, i controller e altri oggetti di amministrazione – Digitlimit

+0

Hai visto questo pacchetto? È per laravel 5: https://github.com/serverfireteam/panel – Digitlimit

+0

@Digitlimit Grazie per la risposta. Ti darò una prova stasera dopo il tuo primo commento. Per il secondo commento: è buono ma ha alcuni problemi nel backend e non è privo di errori, hai altri esempi come questo? – Veerendra

risposta

2

Ho recentemente creato un progetto in Laravel 5 con l'area Amministratore. Avevo usato ACL avanzato (Access Control Layer) per dare permessi di amministratore di ruolo. Per questo avevo usato Entrust Package. Quindi ho usato l'autenticazione di base di Laravel 5 e ho implementato Entrust.

Ho facilmente creato l'area di amministrazione con tutte le autorizzazioni. Ho anche provato a impostare le autorizzazioni automatiche nel middleware Authenticate.php

È possibile fare riferimento a questa domanda stack Entrust Automate, che avevo chiesto. Ma più tardi ho trovato la soluzione. Ti suggerisco di seguire l'architettura basata su URL, quindi il vecchio modo di gestire la struttura delle cartelle. Laravel 5 è il migliore per gli URL based che ti aiuterà anche a creare qualsiasi API se ti serviranno in futuro per le app mobili.

Spero che questo ti aiuti.

2

Generalmente eseguo il mio back-end, con pacchetti come entrust e un modello di avvio casuale adatto alle mie esigenze.
Poi ho messo le mie opinioni in vista/admin ei miei controller in Controller/admin e mettere tutte le rotte di amministrazione in un gruppo con un middleware collegato ad esso

Route::group(['namespace'=>'Admin','prefix'=>'admin','middleware'=>'role','role'=>'admin'],function(){ 
     Route::get('/','[email protected]'); 
} 

e poi nel middleware (questo è usando entrust).

public function handle($request, Closure $next) 
    { 
     $user = $this->auth->user(); 
     $route = $request->route(); 
     if($user && $route) 
     { 
      $actions = $route->getAction(); 
      if(array_key_exists('role',$actions)) { 
       $role=$actions['role']; 
       if(!$user->hasRole($role)) { 
        Flash::error('Unauthorized Access'); 

        abort(401); 
       } 
      } 
      else 
      { 
       Flash::error('Unauthorized Access'); 
       abort(401); 
      } 
     } 
     else 
     { 
      Flash::error('Unauthorized Access'); 
      abort(401); 
     } 
     return $next($request); 
    } 

Non dimenticare di registrare il middleware nel kernel.php accanto al file di percorsi.

Il middleware potrebbe sembrare complicato ma è semplicemente controlla se hai inserito un ruolo nel tuo gruppo en se poi l'utente attualmente connesso appartiene a quel gruppo.

Ricordo anche che quando si utilizza percorso action(), è necessario mettere lo spazio dei nomi di amministrazione prima che il nome del controller come action('Admin\[email protected]')