La migliore architettura per un'app Laravel con frontend (utenti) e backend (solo amministratori)

4

Sto costruendo un'applicazione per il sito web utilizzando Laravel che mi consentirà di eseguire tornei di gioco. Il sito sarà composto da due tipi di utenti, uno degli "amministratori" che può aggiungere / modificare i risultati e l'altro sarà "utenti" che possono fondamentalmente visualizzare i risultati del torneo.

Potrei costruire in due modi ..

A) Avere una app di Laravel con il sito è principalmente il frontend e avere un percorso chiamato '/ admin' o '/ cms' che è l'amministrazione CMS a cui possono accedere solo gli amministratori. Gli amministratori avranno una propria tabella DB chiamata 'admins' così come la tabella 'users' (per gli utenti che accedono al 'frontend'). Posso usare le guardie in Laravel per evitare che un utente "normale" che ha effettuato l'accesso acceda all'amministratore, ecc. Ciò significherebbe che tutti i modelli / modelli sono in un posto, ecc.

B) Avere due app di Laravels individuali, ad esempio www.gamingsite.com & admin.gamingsite.com (possibilmente anche due domini completamente diversi) utilizzando lo stesso database con una tabella di amministratori e tabella utenti come già mostrato sopra, questo significherebbe che tutti i modelli / modelli sono completamente separati rispettivamente dal 'front' e dal 'backend' .

Entrambi hanno pro e contro .... cosa fanno di solito gli altri sviluppatori in questa situazione? Posso capire che entrambi funzionerebbero ma vorremmo sapere cosa gli altri sviluppatori prenderebbero in considerazione.

P.S Nota Sto usando Laravel 5.4

    
posta Zabs 28.02.2017 - 16:11
fonte

1 risposta

3

È molto più comune avere un'app e una tabella utenti. Guarda qualsiasi CMS là fuori (Wordpress, Joomla, software del forum) - gli amministratori sono sempre solo utenti regolari con privilegi aggiuntivi.

Nei progetti Laravel che ho scritto, seguo anche questo. Uso una tabella utenti e aggiungo un campo level che memorizza 1 per un utente normale e 100 per un amministratore. Il motivo dell'utilizzo degli interi è che posso aggiungere più livelli in futuro, ad es. 50 per "moderatore" ed è facile controllare più livelli come "moderatore o superiore". Di solito aggiungo funzioni alla classe Eloquent User , quindi posso scrivere if ($user->isAdmin()) e così via.

Quindi aggiungo /admin rotte che mappano ai controller che gestiscono solo le pagine di amministrazione. Laravel ha diversi metodi di autorizzazione integrati che puoi utilizzare. Personalmente, creo un middleware di "ruolo" poi nella mia AdminController::__construct() call $this->middleware('auth.role:admin'); ma ci sono molti modi per farlo.

    
risposta data 11.03.2017 - 16:10
fonte

Leggi altre domande sui tag