Yii2 сохранить время, когда пользователь выполнил logout
Hello World!
Я создал в базу данных last_activity чтобы узнать когда полбзователь выполнил login,как изменить этот значения чтобы было 0000-00-00 00:00:00 когда пользователь выполнит (выйти) logout.
public function actionLogout()
{
$event = $this->getUserEvent(\Yii::$app->user->identity);
/* $account = $this->finder->findAccount()->byClient($client)->one();
$account->user->updateAttributes(['last_activity' => '0000-00-00 00:00:00']);*/
$this->trigger(self::EVENT_BEFORE_LOGOUT, $event);
$logout = \Yii::$app->getUser()->logout();
/* if ($logout){
$module = \Yii::$app->getModule('user');
$module->updateAttributes(['last_activity'=>'0000-00-00 00:00:00']);
}*/
$this->trigger(self::EVENT_AFTER_LOGOUT, $event);
// \Yii::$app->user->updateAttributes(['last_activity' => 0]);
// User::deleteLast();
// \Yii::$app->user->updateAttributes(['last_activity' => '0000-00-00 00:00:00']);
// $this->updateAttributes(['last_activity' => '0000-00-00 00:00:00']);
// $this->user->updateAttributes(['last_activity' => null]);
// return Yii::$app->user->updateAttributes(['last_ip'=> 1]);
return $this->redirect(site/index);
}
View cabinet-panel.php
<?php
echo Menu::widget([
'items' => [
////
[
'label' => Yii::t('main', "Logout"),
'url' => null,
'options' => ['class' => 'li-logout'],
'template' => '<a id="link-logout">{label}</a>'
],
],
'options' => [
'class' => 'nav nav-pills nav-stacked'
],
'activeCssClass' => 'active',
'route' => Yii::$app->request->url,
'activateItems' => true,
]);
?>
common.js
здесь function,когда пользователь нажимает на
function logout() {
$(document).on('click', '#link-logout', function () {
$.post(getLang() + '/user/security/logout/');
});
/* $.ajax({
url: getLang() + 'user/security/logout',
type: 'POST',
data : {
'last_activity' : '000000000000000'
},
dataType: 'json',
success: function (data) {
data['user']['last_activity'] = 'last_activity'
}
}) */
}
logout();
Ответы (1 шт):
Автор решения: fedornabilkin
→ Ссылка
Ответ исходя из обсуждений в комментариях
В конфиге добавить вызов метода, а в методе обновлять необходимое поле для текущего юзера.
'components' => [
'response' => [
'class' => 'yii\web\Response',
'on beforeSend' => function ($event) {
UserHelper::setLastActivity();
}
},
],
Соответственно создать класс и метод. Можно метод создать в классе User, тогда проще получить текущего пользователя.