Skip to content

Instantly share code, notes, and snippets.

@valdiney
Created March 31, 2016 20:46
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save valdiney/4f5997f7a0352c8cbda3f20178ff3b56 to your computer and use it in GitHub Desktop.
Save valdiney/4f5997f7a0352c8cbda3f20178ff3b56 to your computer and use it in GitHub Desktop.
Versão 1.5
<?php
class Login_Controller extends Controller
{
protected $view;
protected $browser;
protected $device;
protected $send_email;
protected $radcheck;
protected $visitante;
protected $dispositivo;
protected $radacct;
protected $publicidade;
protected $logomarca;
protected $hotspot;
protected $bem_vindo;
protected $leia_mais;
protected $aviseme;
protected $login_form;
public function __construct(Array $models, Array $services)
{
$this->radcheck = $models['Radcheck'];
$this->visitante = $models['Visitante'];
$this->dispositivo = $models['Dispositivo'];
$this->radacct = $models['Radacct'];
$this->publicidade = $models['Publicidade'];
$this->logomarca = $models['Logomarca'];
$this->hotspot = $models['Login_Hotspot_Layout'];
$this->bem_vindo = $models['Bem_vindo'];
$this->leia_mais = $models['Leia_mais'];
$this->visualizacao = $models['Visualizacao_publicidade'];
$this->aviseme = $models['Aviseme'];
$this->login_form = $models['Login_form'];
$this->browser = $services['Browser_detection'];
$this->device = $services['Device_detection'];
$this->send_email = $services['Send_email'];
$this->view = $this->view();
}
# Recebe o Post vindo do Mikrotik
public function recebe_do_mikrotik()
{
# Dados vindos da página do Mikrotik
$data_mikrotik['mac'] = Input::in_post('mac');
$data_mikrotik['ip'] = Input::in_post('ip');
$data_mikrotik['link-orig'] = Input::in_post('link-orig');
$data_mikrotik['error'] = Input::in_post('error');
$data_mikrotik['chap-id'] = Input::in_post('chap-id');
$data_mikrotik['chap-challenge'] = Input::in_post('chap-challenge');
$data_mikrotik['link-login-only'] = Input::in_post('link-login-only');
$data_mikrotik['link-orig-esc'] = Input::in_post('link-orig-esc');
$data_mikrotik['mac-esc'] = Input::in_post('mac-esc');
$data_mikrotik['server-name'] = Input::in_post('server-namer');
# Passa os dados que vem da página do Mikrotik para a Session
foreach ($data_mikrotik as $key => $dados) {
Session::put_session($key, $dados);
}
# Verifica se o Cliente é recorrente por via do MAC
if ($this->radacct->verifica_mac(Session::get_session('mac'))) {
return Redirect::to('login.clientes_recorrentes');
}
return Redirect::to('login.pagina_primeira_publicidade');
}
# Mostra a página da primeira publicidade
public function pagina_primeira_publicidade()
{
$this->view->layout('layout_primeira_publicidade');
# Chama o método que busca a publicidade que será apresentada
$publicidades = $this->primeira_publicidade();
return $this->view->make('publicidade.apresentar_primeira_publicidade', compact('publicidades'));
}
# Mostra a página de Login do Wifiaqui
public function pagina_login()
{
$this->view->layout('layout_login_wifiaqui');
# Chama o método para apresentar a logomarca e passa para View
$logomarca = $this->logomarca->imagem_logomarca();
# Passa o background para a view
$style = $this->hotspot->obter_background();
$array_campos = $this->login_form->get_array();
return $this->view->make('inicio_hotspot.login_wifiaqui', compact('logomarca', 'style', 'array_campos'));
}
public function cadastrar_visitante()
{
# Retorna um array contendo os dados dos csmpos editáveis
$array_campos = $this->login_form->get_array();
# Recebe os campos editáveis via ppost
$data_campos['sobre_nome'] = trim(Input::in_post('sobre_nome'));
$data_campos['sexo'] = trim(Input::in_post('sexo'));
$data_campos['ano_nascimento'] = trim(Input::in_post('ano_nascimento'));
$data_campos['telefone'] = trim(Input::in_post('telefone'));
$data_campos['celular'] = trim(Input::in_post('celular'));
$data_campos['estado_natal'] = trim(Input::in_post('estado_natal'));
$data_campos['cidade_natal'] = trim(Input::in_post('cidade_natal'));
# Persiste os dados na view depois da validação
Helper::remember_data($data_campos);
# Chama o método de validação dos campos editaveis
//$this->validacao_campos_editaveis($data_campos, $array_campos);
/*-------------------------------------------------------------*/
# Dados vindos da tela de Login
$visitante_nome = trim(Input::in_post('nome'));
$visitante_username = trim(Input::in_post('username'));
# Passa nome e email para um array, para ser alocado no (Remember Data)
$data_campos_nome_email['visitante_nome'] = $visitante_nome;
$data_campos_nome_email['visitante_username'] = $visitante_username;
# Persiste os dados na view depois da validação
Helper::remember_data($data_campos_nome_email);
if (empty($visitante_nome) or empty($visitante_username)) {
Session::flash('error', "Por favor, digite seu Nome e um Email Valido.");
return Redirect::back();
} elseif (filter_var($visitante_nome, FILTER_VALIDATE_EMAIL)) {
Session::flash('error', "Não digite Email no Campo Nome.");
return Redirect::back();
} elseif ( ! filter_var($visitante_username, FILTER_VALIDATE_EMAIL)) {
Session::flash('error', "Por favor, digite um Email Valido");
return Redirect::back();
} elseif ( ! $this->verifica_email_dns($visitante_username)) {
Session::flash('error', "Por favor, digite um Email Valido. Esse email não existe.");
return Redirect::back();
} elseif (strlen($visitante_nome) < 3) {
Session::flash("Digite um Nome Valido.");
return Redirect::back();
}
# Cadastra o Cliente na tabela (radcheck)
$cadastro_radcheck = $this->radcheck->cadastrar_radcheck($visitante_username);
# Pega o id do ultimo radcheck cadastrado
$id_ultimo_radcheck_cadastrado = $this->radcheck->get_last_id();
# Verifica se o Cliente foi cadastrado na tabela (radcheck)
if ($cadastro_radcheck) {
# Dados para cadastrar o Cliente na tabela (visitante)
$data_visitante['id_radcheck'] = $id_ultimo_radcheck_cadastrado;
$data_visitante['nome'] = $visitante_nome;
$data_visitante['email'] = $visitante_username;
$data_visitante['mac'] = Session::get_session('mac');
$data_visitante['sobre_nome'] = $data_campos['sobre_nome'];
$data_visitante['sexo'] = $data_campos['sexo'];
$data_visitante['ano_nascimento'] = $data_campos['ano_nascimento'];
$data_visitante['telefone'] = $data_campos['telefone'];
$data_visitante['celular'] = $data_campos['celular'];
$data_visitante['estado_natal'] = $data_campos['estado_natal'];
$data_visitante['cidade_natal'] = $data_campos['cidade_natal'];
# Realiza o cadastro do Cliente
if ($this->visitante->cadastrar_visitante($data_visitante)) {
# Pega o id do ultimo Cliente cadastrado
$id_ultimo_visitante_cadastrado = $this->visitante->get_last_id();
# Dados para cadastrar o Dispositivo na tabela (dispositivo)
$data_dispositivo['id_visitante'] = $id_ultimo_visitante_cadastrado;
$data_dispositivo['so'] = $this->device->get_OS();
$data_dispositivo['browser'] = $this->browser->get_browser('name', false);
$data_dispositivo['browser_version'] = $this->browser->get_browser(false, 'version');
$data_dispositivo['mac'] = Session::get_session('mac');
$data_dispositivo['data_cadastro'] = Date::date_time();
# Busca o cliente na tabela (visitante) por via do mac
$buscar_dados_visitante = $this->visitante->find_by('mac', Session::get_session('mac'));
# Busca o cliente na tabela (radcheck) por via do (id_radcheck) databela (radcheck)
$buscar_dados_visitante_radcheck = $this->radcheck->find($buscar_dados_visitante['id_radcheck']);
# Realiza o cadastro do Dispositivo
if ($this->dispositivo->cadastrar_dispositivo($data_dispositivo)) {
# Carrega os dados no formulário para enviar um Submit para o Mikrotik
return $this->view->make('acesso.liberar_acesso', compact('buscar_dados_visitante_radcheck'));
}
}
}
}
# Responsavel por trazer a (PRIMEIRA) publicidade que será apresentada
# Antes do cliente está logado
public function primeira_publicidade()
{
$publicidades = $this->publicidade->apresentar_publicidade_rand();
# Verifica se existem publicidades cadastradas
if (count($publicidades) > 0) {
# Verifica se retorna (true), ou seja, se existem publicidades em periodo de apresentação
if ($publicidades) {
# Conta a quantidade de visualizações
$data_banner['visualizacoes'] = $publicidades->visualizacoes + 1;
# Grava a quantidade de visualizações incrementadas
$this->publicidade->editar_banner($data_banner, $publicidades->id);
# Cadastra a data da visualização da publicidade
$data_visualizacao['id_publicidade'] = $publicidades->id;
$this->visualizacao->cadastrar($data_visualizacao);
}
}
return $publicidades;
}
# Responsavel por trazer a (SEGUNDA) publicidade que será apresentada
# Depois do cliente está logado
public function segunda_publicidade()
{
$this->view->layout('layout_publicidade');
$publicidades = $this->publicidade->apresentar_publicidade_rand();
# Verifica se existem publicidades cadastradas
if (count($publicidades) > 0) {
# Verifica se retorna (true), ou seja, se existem publicidade em periodo de apresentação
if ($publicidades) {
# Conta a quantidade de visualizações
$data_banner['visualizacoes'] = $publicidades->visualizacoes + 1;
# Grava a quantidade de visualizações incrementadas
$this->publicidade->editar_banner($data_banner, $publicidades->id);
# Busca um link de leia mais pelo id da publicidade
$leia_mais = $this->leia_mais->find_by('id_publicidade', $publicidades->id);
# Cadastra a data da visualização da publicidade
$data_visualizacao['id_publicidade'] = $publicidades->id;
$this->visualizacao->cadastrar($data_visualizacao);
}
}
return $this->view->make('publicidade.apresentar_segunda_publicidade', compact('publicidades', 'leia_mais'));
}
# Realiza toda a logica de negocio referente aos clientes recorrententes
public function clientes_recorrentes()
{
# Busca um Cliente na tabela via MAC
$cliente = $this->visitante->find_by('mac', Session::get_session('mac'));
# Calcula quantas vezes o Cliente retornou
$cliente_recorrente['vezes_recorrente'] = $cliente['vezes_recorrente'] + 1;
# Cadastra as vezes que o Cliente Voltou
$this->visitante->update($cliente_recorrente, $cliente['id']);
# Pega a data do atual acesso
$data_recorrente['data_ultimo_acesso'] = Date::date_time();
# Cadastra a data do atual acesso
$this->visitante->update($data_recorrente, $cliente['id']);
$this->view->layout('layout_bem_vindo_de_volta');
# Passa a publicidade para a view
$publicidades = $this->primeira_publicidade();
$style = $this->bem_vindo->obter_estilo_template();
# Chama o método para apresentar a logomarca e passa para View
$logomarca = $this->logomarca->imagem_logomarca();
return $this->view->make('boas_vindas.bem_vindo_novamente', compact('publicidades', 'cliente', 'style', 'logomarca'));
}
public function conectar_recorrente()
{
# Recupera os dados da tabela visitante via mac
$cliente_visitante = $this->visitante->find_by('mac', Session::get_session('mac'));
# Busca o cliente na tabela (visitante) por via do mac
$buscar_dados_visitante = $this->visitante->find_by('mac', Session::get_session('mac'));
# Busca o cliente na tabela (radcheck) por via do (id_radcheck) databela (radcheck)
$buscar_dados_visitante_radcheck = $this->radcheck->find($buscar_dados_visitante['id_radcheck']);
# Carrega os dados no formulário para enviar um Submit para o Mikrotik
return $this->view->make('acesso.liberar_acesso', compact('buscar_dados_visitante', 'buscar_dados_visitante_radcheck'));
}
public function verifica_email_dns($email)
{
$email = explode('@', $email);
$record = 'MX';
return checkdnsrr($email[1], $record);
}
public function validacao_campos_editaveis($data_campos, $array_campos)
{
if ($array_campos['sobre_nome'] == 1) {
if ($data_campos['cidade_natal'] == '') {
Session::flash('error', "Todos os Campos são Obrigatórios.");
return Redirect::back();
}
}
if ($array_campos['sexo'] == 1) {
if ($data_campos['sexo'] == '') {
Session::flash('error', "Todos os Campos são Obrigatórios.");
return Redirect::back();
}
}
if ($array_campos['ano_nascimento'] == 1) {
if ($data_campos['ano_nascimento'] == '') {
Session::flash('error', "Todos os Campos são Obrigatórios.");
return Redirect::back();
}
}
if ($array_campos['telefone'] == 1) {
if ($data_campos['telefone'] == '') {
Session::flash('error', "Todos os Campos são Obrigatórios.");
return Redirect::back();
}
}
if ($array_campos['celular'] == 1) {
if ($data_campos['celular'] == '') {
Session::flash('error', "Todos os Campos são Obrigatórios.");
return Redirect::back();
}
}
if ($array_campos['estado_natal'] == 1) {
if ($data_campos['estado_natal'] == '') {
Session::flash('error', "Todos os Campos são Obrigatórios.");
return Redirect::back();
}
}
if ($array_campos['cidade_natal'] == 1) {
if ($data_campos['cidade_natal'] == '') {
Session::flash('error', "Todos os Campos são Obrigatórios.");
return Redirect::back();
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment