Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Daniel Kuroski

Laravel Autenticação com mais de uma tabela

Recommended Posts

Boa tarde.

 

Estou começando a aprender a utilizar o framework Laravel, e estou tendo dificuldades quanto a autenticação.

 

Por padrão nas configurações, podemos definir a tabela e o modelo que queremos utilizar para a autenticação.

 

Porém no meu sistema eu tenho 2 sessões que precisam disso, e só posso definir uma tabela pelo padrão.

 

Tenho a sessão de login para administradores/moderadores (que utiliza a tabela users) e outra sessão para as empresas (que utiliza a tabela empresas).

 

Já tentei utilizar alguns bundles, mas eles não tem uma documentação muito clara para mim.

 

Gostaria de saber se alguém tem alguma solução para este problema.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acabei encontrando uma solução alternativa para este problema.

 

Eu não consegui criar o meu próprio Driver para o DB, então decidi trabalhar com Roles.

 

Estou postando abaixo a solução

 

 

 

Encontrei um bundle que trabalha com Roles (funções) / permissões e níveis de permissões

https://github.com/Toddish/Verify

 

Sigam o passo-a-passo para a instalação do Bundle.

 

Segue um exemplo bem tosco xD de aplicação do bundle após a instalação:

 

 

aplication/routes.php

// INDEX
Route::get('/', function()
{
	return View::make('pages.home');
});


// Recebimento do form de LOGIN
Route::post('login', function() {

	$userinfo = array(
			'username' => Input::get('username'),
			'password' => Input::get('password'),
			'remember' => true
	);
	
	if ( Auth::attempt($userinfo) )
	{
		return Redirect::to('admin');
	}
	else
	{
		return Redirect::to('/')
		->with('login_errors', true);
	}
});


// LOGIN COM SUCESSO 
Route::get('admin', array('before' => 'auth', 'do' => function() {
	return View::make('pages.admin');
}));


// LOGOUT
Route::get('logout', function() {
	Auth::logout();
	return Redirect::to('/');
});


// CRIAR UM NOVO USUARIO
route::get('create', function() {
	$user = new Verify\Models\User;
	
	$user->set_password('123');
	$user->username = 'outroAdmin';
	$user->role_id = 2;
	$user->email = 'example@gmail.com';
	$user->created_at = date('Y-m-d H:i:s');
	
	$user->save();
});

 

 

 

 

application/views/templates/main.blade.php

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>KSI Tecnologia</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="author" content="">
</head>
<body>         
    @if ( Auth::guest() )
        <a class="btn" href="{{ URL::to('/')}}">
            Login
        </a>
    @else
        <a class="btn" href="{{ URL::to('logout')}}">
            Logout, <strong>{{ Auth::user()->username }} </strong>
        </a>    
    @endif

    <div class="container">
          
        @yield('content')
        
    </div><!--/container-->
</body>
</html>

 

 

application/views/pages/home.blade.php

@layout('templates.main')
@section('content')
  <div class="span4 offset4 well">
    {{ Form::open('login') }}
        <!-- check for login errors flash var -->
        @if (Session::has('login_errors'))
            {{ Alert::error("Usuário ou senha incorreto.") }}
        @endif
        <!-- username field -->
        <p>{{ Form::label('username', 'Usuário') }}</p>
        <p>{{ Form::text('username') }}</p>
        <!-- password field -->
        <p>{{ Form::label('password', 'Senha') }}</p>
        <p>{{ Form::password('password') }}</p>
        <!-- submit button -->
        <p>{{ Form::submit('Login', array('class' => 'btn-large')) }}</p>
    {{ Form::close() }}
</div>
    
@endsection

 

application/views/pages/admin.blade.php

@layout('templates.main')
@section('content')
	<div class="hero-unit">
    	<h1>Últimos chamados</h1>
	</div>
	<div class="row">
		@if(Auth::is('Admin'))
			<h1>Eu sou um Admin</h1>
		@endif
		
		@if(Auth::is('Super Admin'))
			<h1>Eu sou um SUPER Admin</h1>
		@endif
		
		@if(Auth::is('empresa'))
			<h1>Eu sou uma empresa</h1>
		@endif
	</div>
@endsection

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.