Eu tentei utilizar a classe RedirectReponse mas mesmo assim não funcionou, não retorna erro nenhum, contudo também não redireciona ele continua dentro da pagina LoginController .
Segue o código das classes
Classe abstrata mãe das classes de controle de acesso
<?php
namespace LibTeste;
use Illuminate\Http\Request;
use Illuminate\Http\RedirectResponse;
abstract class PessoaAcesso{
private $nivelAcesso;
protected $request;
public function __construct($arrayDadosPessoa, Request $request){
$this->request = $request;
$this->request->session()->put('pessoa',$arrayDadosPessoa);
}
abstract function Acessar();
function getNivelAcesso(){
$acessoId = $this->eventos_acesso_id->where('evento_id',$evento_id)
->where('pessoa_id',$pessoa['id'])
->select('acesso_id')
->get()->id;
$this->nivelAcesso = $acessoId;
return $this->nivelAcesso;
}
}
?>
Classe que controla o acesso e redireciona quando o usuário for um autor.
<?php
namespace LibTeste;
use App\Http\Controller;
use Illuminate\Http\Request;
use Illuminate\Http\RedirectResponse;
class AutorAcesso extends PessoaAcesso{
public function acessar(){
return redirect('/autor/home');
}
}
?>
classe que controla o login
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\model\Pessoa;
use App\model\AdmEvento;
use LibTeste\AdminAcesso;
use LibTeste\AutorAcesso;
use LibTeste\AvaliadorAcesso;
class LoginController extends Controller
{
//Função para controle de login no sistema
public function login(Request $request){
$login = $request->all(); //Recebe dados do form login
$search = Pessoa::where('email', $login['email'])->get()->all(); //consultado email no banco de dados
if(isset($search[0])){ //Se encontrado no banco de dados
$pessoa = $search[0]; //Variavel pessoa recebe informações da tabela pessoa
$pessoa_id = $pessoa['id'];
if($login['email'] == $pessoa['email'] and md5($login['senha']) == $pessoa['senha']){ //Se email e senha do form login confere
$acesso = AdmEvento::where('pessoa_id',$pessoa_id)->get();
if(isset($acesso[0])){
$adminAcesso = new AdminAcesso($pessoa,$request);
$adminAcesso->acessar();
}else{
$autorAcesso = new AutorAcesso($pessoa,$request);
$autorAcesso->acessar();
}
}else{
$msg_erro = "A senha não confere!";
return view('site/login', compact('msg_erro'));
}
}else{ //Se não encontrado no banco de dados
$msg_erro = "E-mail não encontrado na base de dados!";
return view('site/login', compact('msg_erro'));
}
}
// fim da função de login
}
Aguardo uma nova sugestão, desde já agradeço.