Как обновить последний вход в систему с помощью authcomp в cakephp 2.x

В настоящее время я использую компонент авторизации для входа в систему. Я хочу обновить поле last_login в моей таблице пользователей всякий раз, когда пользователь входит на мой сайт.

Моя функция входа в пользовательский контроллер

public function login() {
 $this->layout = 'main';
 if ($this->request->is('post')) {
 if($this->Auth->login()) {
   $this->redirect(array('controller'=>'pages','action'=>'dashboard'));  // after login , redirect on dahsboard
  }
  $this->Session->setFlash(__('Your username or password was incorrect.'));
  }
   $this->redirect(Router::url('/', true));  // there is no login.ctp file so it always redirect on home
}

В контроллере приложения у меня есть

class AppController extends Controller {

public $components = array(
    'Auth',
    'Session',
);

function beforeFilter() {
    $this->Auth->loginAction = array(
        'controller' => 'users',
        'action' => 'login'
    );
    $this->Auth->logoutRedirect = array( 
       'controller' => 'pages',
      'action' => 'display','home'
     );
  }

1 ответ

Я предлагаю вам выполнить один простой запрос на обновление после успешного входа, добавив

$user = $this->Session->read("Auth.User");
$this->User->id = $user['id'];
$this->User->saveField('last_login', date('Y-m-d H:i:s'));

Есть несколько других способов обновить поле last_login: 1.

$data['User']['last_login']=date('Y-m-d H:i:s');
$this->User->save($data);

2.

$this->User->updateAll(array('User.last_login'=>date('Y-m-d H:i:s')),array('User.id'=>$user['id']));

После этого ваш код будет выглядеть так,

public function login() {
 $this->layout = 'main';
 if ($this->request->is('post')) {
 if($this->Auth->login()) {
       $user = $this->Session->read("Auth.User");
       $this->User->id = $user['id'];
       $this->User->saveField('last_login', date('Y-m-d H:i:s'));

   $this->redirect(array('controller'=>'pages','action'=>'dashboard'));  // after login , redirect on dahsboard
  }
  $this->Session->setFlash(__('Your username or password was incorrect.'));
  }
   $this->redirect(Router::url('/', true));  
// there is no login.ctp file so it always redirect on home
}
Другие вопросы по тегам