Две авторизации в advanced
Добавлено: 2019.07.11, 16:34
Добрый день, господа!
Столкнулся с проблемой, что авторизация backend перезатирает авторизацию frontend.
Т.е я авторизуюсь на сайте, для того что бы оставить отзыв. Берется клиент из таблицы clients.
Потом я авторизуюсь в админке(backend). Берется пользователь из таблицы accounts.
Захожу на сайт, оставляю отзыв, тянется клиент из таблице clients, но с айдишником, который был в таблице accounts.
Дальше не много конфигов и кода.
Для авторизации в админке использую компонент user, config его находится в backend/config/main.php
В backend происходит авторизация так:
Есть еще одна авторизация во frontend, для того что бы покупатели могли оставлять отзывы товарам.
Конфиг лежит в frontend/config/main.php
Для авторизации фронта использую authClients facebook и vk.
Сама авторизация происходит вот так
Пользователя на странице отзывов беру вот так
Столкнулся с проблемой, что авторизация backend перезатирает авторизацию frontend.
Т.е я авторизуюсь на сайте, для того что бы оставить отзыв. Берется клиент из таблицы clients.
Потом я авторизуюсь в админке(backend). Берется пользователь из таблицы accounts.
Захожу на сайт, оставляю отзыв, тянется клиент из таблице clients, но с айдишником, который был в таблице accounts.
Дальше не много конфигов и кода.
Для авторизации в админке использую компонент user, config его находится в backend/config/main.php
Код: Выделить всё
'user' => [
'class' => 'yii\web\User',
'identityClass' => 'common\models\Accounts',
'loginUrl' => '/manage/auth/login',
'enableAutoLogin' => true,
'authTimeout' => 31536000,
'identityCookie' => [
'name' => '_identityBack',
'httpOnly' => true,
'path' => '/',
'domain' => '.' . $params['domainName'],
],
],
Код: Выделить всё
Yii::$app->user->login($this->getAccount(), (($this->rememberMe) ? 31536000 : 0)); //31536000 - 1 год
private function getAccount()
{
return Accounts::findOne(['account' => $this->account]);
}
Конфиг лежит в frontend/config/main.php
Код: Выделить всё
'reviewUser' => [
'class' => 'yii\web\User',
'identityClass' => 'common\models\Clients',
'loginUrl' => 'auth/index',
'enableAutoLogin' => true,
'identityCookie' => [
'name' => '_identityFrontReview',
'httpOnly' => true,
'domain' => isset(Yii::$app->request->serverName)
? Yii::$app->request->serverName
: '.'.$params['domainName'],
],
]
Сама авторизация происходит вот так
Код: Выделить всё
$auth = Auth::findOne([
'source' => $this->authClient->getId(),
'source_id' => $this->userAttr['id'],
]);
if (Yii::$app->reviewUser->isGuest) {
if (!isset($auth)) {
$client = $this->singUp($client_id);// Добавляет клиента в таблицу clients на основе полученных данных из соц.сетей
} else {
$client = $auth->client;
}
Yii::$app->reviewUser->login($client, 36000);
}
Код: Выделить всё
$user = Yii::$app->reviewUser->identity;