Skip to content

Instantly share code, notes, and snippets.

@eminetto
Created December 6, 2011 21:10
Show Gist options
  • Save eminetto/1440025 to your computer and use it in GitHub Desktop.
Save eminetto/1440025 to your computer and use it in GitHub Desktop.
public function indexAction() {
//adiciona o formulario
$form = new Application_Form_LoginForm();
//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 = $this->getFrontController()->getParam('bootstrap')->getPluginResource('db');
$authAdapter = new Zend_Auth_Adapter_DbTable(
$db->getDbAdapter(),//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
$messages = new Zend_Session_Namespace('Messages');
switch ($result->getCode()) {
case Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND:
$messages->erro = 'Usuário inválido';
$form->populate($formData);
break;
case Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID:
$messages->erro = 'Senha inválida';
$form->populate($formData);
break;
case Zend_Auth_Result::SUCCESS:
$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