/** * 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'); }
/** * 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; }
/** * 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'); }