Skip to content

Instantly share code, notes, and snippets.

@eminetto
Created December 9, 2011 00:51
Show Gist options
  • Save eminetto/1449550 to your computer and use it in GitHub Desktop.
Save eminetto/1449550 to your computer and use it in GitHub Desktop.
AuthController
<?php
class AuthController extends Blog_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{
//adiciona o formulario
$form = new Application_Form_Login();
//verifica se tem dados enviados
if ($this->_request->isPost()) {
$formData = $this->_request->getPost();
//se o formulário está válido
if ($form->isValid($formData)) {
//pega uma instancia e cria caso não exista
$auth = Zend_Auth::getInstance();
//conexao com a base de dados
$db = Zend_Registry::get('db');
$authAdapter = new Zend_Auth_Adapter_DbTable(
$db,//conexao com o banco
'users', //nome da tabela
'username', //campo com o login
'password', //campo com a senha
'MD5(?)' //tratamento a ser dado a senha antes de comparar
);
//configura o usuário/senha
$authAdapter->setIdentity($formData['username'])->setCredential($formData['password']);
//tenta fazer a autenticação
$result = $auth->authenticate($authAdapter);
//verifica o resultado
$session = Zend_Registry::get('session');
switch ($result->getCode()) {
case Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND:
$session->erro = 'Usuário inválido';
$form->populate($formData);
break;
case Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID:
$session->erro = 'Senha inválida';
$form->populate($formData);
break;
case Zend_Auth_Result::SUCCESS:
$data = $authAdapter->getResultRowObject();
$session->role = $data->role; //guarda a role do usuário
$this->_redirect('/post/retrieve');
break;
default:
/** em caso de outro tipo de falhas **/
break;
}
}
else { // Mostra os erros e popula o form com os dados
$form->populate($formData);
}
}
$this->view->form = $form;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment