/**
  * Ação responsável pela renderização da view ou auteração ou envio
  * de email para auteração da senha da conta de um determinado usuário.
  *
  * @return View /vistior/help/password_forgot ou / após o envio do e-mail.
  */
 public function visitor_password_forgot()
 {
     if ($this->request->is('post')) {
         $this->User->validate = array('email' => array('rule' => 'email', 'message' => 'Este e-mail não é válido.'));
         $this->User->set($this->request->data);
         if ($this->User->validates()) {
             // Buscando por um usuário correspondente ao e-mail informado.
             $hasUser = $this->User->find('first', array('fields' => 'id, enable', 'conditions' => array('email' => $this->request->data['User']['email'])));
             // E-mail informado pertençe realmente à um usuário ?
             if (!empty($hasUser)) {
                 // Caso o mesmo tenha criado o usuário, porém não tenha confirmado;
                 if (empty($hasUser['User']['enable'])) {
                     $this->Session->setFlash('Seu usuário ainda não foi confirmado.', 'flash/mini/warning');
                     $this->redirect('/');
                 }
                 $this->loadModel('_Hash');
                 $hash = SupportComponent::hash();
                 // Buscando e deletando solicitações que já estão
                 // insipiradas OU solicitações que tenham sido feitas
                 // recentemente pelo usuário requisitante.
                 $this->_Hash->deleteInvalids(array("entity_id = {$hasUser['User']['id']}"));
                 // Criando registro indicativo da ação do
                 // usuário, armazenando (seu código de alteração).
                 $this->_Hash->create();
                 $this->_Hash->save(array('hash' => $hash, 'entity_id' => $hasUser['User']['id'], 'context' => 'password_forgot'));
                 // Enviando e-mail com a url para alteração da senha.
                 $this->sendEmail(array('to' => $this->request->data['User']['email'], 'template' => 'user/password_forgot', 'viewVars' => array('hash' => $hash)));
             } else {
                 // Enviando e-mail informativo. E-mail não pertence a nenhum usuário.
                 $this->sendEmail(array('to' => $this->request->data['User']['email'], 'template' => 'user/not_found'));
             }
             $this->Session->setFlash('Em alguns instantes você receberá um e-mail com as informações necessárias para alterar sua senha.', 'flash/mini/success');
             $this->redirect('/visitor');
         }
     }
     $this->render('visitor/help/password_forgot');
 }
Exemplo n.º 2
0
 /**
  * Captura uma URL para a página anterior caso a mesma esteja configurada.
  * Arquivo de configuração: {YourApp}/Config/menu_back.php
  *
  * @return string url
  */
 public function back()
 {
     require_once APP . 'Config' . DS . 'menu_back.php';
     return @$back[SupportComponent::routeBase()] ?: null;
     //        return @$back[$this->name][$this->request->action] ? : null;
 }
Exemplo n.º 3
0
 /**
  * Efetuar log da ação no banco de dados.
  *
  * @param type $event qual ação que esta sendo executada.
  */
 public function listenerLog($event)
 {
     $this->logListernetData['user_id'] = SupportComponent::userId();
     $this->log(SupportComponent::toS($this->logListernetData), 'table_listener_' . $this->useTable);
 }
 /**
  * Efetuando log de acessos dos usuários.
  *
  * @return void
  */
 private function logAccess()
 {
     $data = array('user_id' => SupportComponent::userId(), 'locate' => $this->name . '#' . $this->request->action, 'get' => $this->request->params, 'post' => $this->request->data);
     $this->log(SupportComponent::toS($data), 'access');
 }