Como posso diferenciar autenticações no laravel? Exemplo: Administrador e Usuário comum sem usar multauth - Stack Overflow em Português
Como posso diferenciar rotas para um mesmo auth? Possuo uma tabela User e nela tenho cadastrado dois tipos de usuário: admin e usuário comum, ambos na tabela User, com os mesmos atributos.
Como posso fazer para diferenciar as rotas que vão aparecer pro adm e para o usuário comum, pois cada um tem acesso a coisas diferentes?
Pode indicar documentações para esse caso
editada 7/12/16 às 18:19
Você pode fazer isso através de um Middleware.
Você pode criar um middlewarepara verificar se o usuário atual é de um determinado nível. Assim, você pode fazer definir esse middleware nas rotas que você for definindo e que desejar que somente o administrador acesse.
Exemplificando melhor, primeiro você deve criar um middleware.
Rode o comando php artisan make:middleware AdminCheck.
Ele vai criar um arquivo em app/Http/Middlewares/AdminCheck.php. Então edite-o, como no caso abaixo:
class AdminCheck
if ($request->user()->admin == false) {
return abort(403, "Acesso não autorizado");
Em seguida, você deve adicionar esse middleware ao Http/Kernel da sua aplicação:
// outros middlewares
'auth.admin' => App\Http\Middleware\AdminCheck::class
Em seguida nas suas rotas, você define um grupo de rotas que poderão ser acessadas somente por esse grupo:
Route::group(['middleware' => ['auth', 'auth.admin'], function () {
No que no trecho $request->user()->admin == false eu estou fazendo uma verificação para saber se esse usuário foi registrado na minha base de dados como administrador. No caso, não é necessário que você faça igual eu fiz, mas é importante você ter uma forma de diferenciar um usuário comum de um usuário administrador. Essa forma você terá que elaborar. Estou comentando isso porque na sua pergunta você cita que estão registrados "admin e usuário comum, ambos na tabela User, com os mesmos atributos.".
editada 7/12/16 às 18:22
Muito bom, o exemplo do 403 legal +1 – Guilherme Nascimento 7/12/16 às 18:16
Até então tenho diferenciado esses dois usuário pelo registro em uma terceira tabela. Os usuários comum possui um cadastro na tabela sessão. Agora, acredito que terei que criar um atributo na tabela User que possa diferenciá-los. – Kaninchem 7/12/16 às 21:22
Muito bom exemplo, estou mexendo aqui! Obrigada! – Kaninchem 7/12/16 às 21:22
@Kaninchem a forma que você armazena quem é admin ou comum não importa, você só precisa escrever um código coerente com o que você já tem. – Wallace Maxters 9/12/16 às 11:16
@Kaninchem, cria uma terceira tabela com o nome de usuario_tipo, aí vc relaciona as duas, o admin, com o user para ela, e deixa as regras dos tipos de usuário acessíveis do middleware – Renan Oliveira 20/03/17 às 1:36
Esta não é a resposta que você está procurando? Pesquise outras perguntas com a tag laravel laravel-5 route auth ou faça sua própria pergunta.