Какой лучший способ, по вашему мнению, для проверки прав пользователя пользователя на определенные действия при использовании веб-сокетов?
Я нашел для себя такой способ, но как по-мне, он ужасен (в конкретном примере используется yii2 и Ratchet в качестве веб-сокет сервера.):
/**
* Open session and db connections. Returns connected user.
*
* @throws \Exception
* @param ConnectionInterface $conn
* @return UserAccounts
*/
private function onUser($conn)
{
Yii::$app->session->close();
session_id($conn->WebSocket->request->getCookie(ini_get('session.name')));
Yii::$app->session->open();
Yii::$app->db->open();
if (!($user = UserAccounts::findOne(Yii::$app->session['__id']))) {
throw new Exception('Пользователь не существует.');
}
Yii::$app->set('request', new Request());
if (!Yii::$app->user->login($user)) {
throw new Exception('Пользователь не существует.');
}
return $user;
}
/**
* Close session and db connections. User logs out.
*/
private function offUser()
{
Yii::$app->user->logout();
Yii::$app->session->close();
Yii::$app->db->close();
}
Как по-вашему получить "юзера" более правильно или хотя бы скажите как более правильно получить сессию текущего пользователя?