Нужно проверить, существует ли существующая сессия yii2 - PullRequest
0 голосов
/ 24 октября 2019

Я создаю сеансы с ключом $ и IP. Я сомневаюсь, как проверить, существует ли сессия и как ее обновить.

Это функция, которую я использую для проверки доступа пользователя.

public function access(int $userId, Token $token, string $ip, string $userAgent): void
    {
        if ($this->sessions->hasForUserByIp($userId, $token->token, $ip)) {
            return;
        }

        $conn = $this->sessions->countForUser($userId, $token->token);

        if ($conn >= $token->max_conn) {
            throw new \DomainException('Sessions limit is reached.');
        }

        $session = Session::create(
            $userId,
            $token->token,
            $ip,
            $userAgent
        );
        $this->sessions->save($session);
    }

Извините за длинное объяснение,Я учусь и у меня мало опыта.

1 Ответ

0 голосов
/ 24 октября 2019

Это работает, если кому-то это нужно

if ($this->sessions->hasForUserByIp($userId, $token->token, $ip)) {
            ($this->sessions->update($userId, $token->token, $ip));
            return;
        }

В хранилище

public function update(int $userId, string $key, string $ip): bool
    {
        return Session::updateAll([
            'user_id' => $userId,
            'key' => $key,
            'ip' => $ip,
        ]);
    }
...