Example #1
0
 /**
  * Page with ability change password
  */
 public function chngp()
 {
     $usrSession = 'ddf398clal39';
     if (!empty($this->request->query['byhash'])) {
         $user = $this->Users->find('all', ['conditions' => ['hash' => $this->request->query['byhash']], 'contain' => []])->toArray();
         if (!empty($user[0])) {
             $this->request->session()->write($usrSession, $user[0]);
             $sess = $this->request->session()->read($usrSession);
             return $this->redirect($this->request->webroot);
         } else {
             $this->Flash->error(__('Ваш ключ восстновления не действительній'));
         }
     }
     if ($this->request->session()->check($usrSession) && empty($this->request->data)) {
         // Вывести поле для ввода нового пароля
         $password = User::getRandomPass(['use-numbers' => true, 'use-spec' => true]);
         $this->set(compact('password'));
     } elseif ($this->request->session()->check($usrSession) && !empty($this->request->data['password'])) {
         // Сохранить новый пароль
         $user = $this->request->session()->read($usrSession);
         $user = $this->Users->patchEntity($user, ['password' => trim($this->request->data['password']), 'hash' => '']);
         if ($this->Users->save($user)) {
             $this->request->session()->delete($usrSession);
             $this->Flash->success(__('Пароль успешно изменен!'));
             return $this->redirect(['action' => 'login']);
         } else {
             $this->Flash->error(__('Ошибка при сохранении изменений'));
         }
     }
     $this->viewBuilder()->layout('notauthorize');
 }