Skip to content

Commit ef5a82f

Browse files
committed
Testing complete
1 parent cc05aed commit ef5a82f

File tree

2 files changed

+296
-243
lines changed

2 files changed

+296
-243
lines changed

src/OpenTok/OpenTok.php

+36-8
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,19 @@
22

33
namespace OpenTok;
44

5+
use DateTimeImmutable;
6+
use Firebase\JWT\Key;
7+
use Lcobucci\JWT\Configuration;
8+
use Lcobucci\JWT\Encoding\ChainedFormatter;
9+
use Lcobucci\JWT\Encoding\JoseEncoder;
10+
use Lcobucci\JWT\Signer\Key\InMemory;
11+
use Lcobucci\JWT\Signer\Rsa\Sha256;
12+
use Lcobucci\JWT\Token\Builder;
513
use OpenTok\Util\Client;
614
use OpenTok\Util\Validators;
715
use OpenTok\Exception\InvalidArgumentException;
816
use OpenTok\Exception\UnexpectedValueException;
17+
use Ramsey\Uuid\Uuid;
918
use Vonage\JWT\TokenGenerator;
1019

1120
/**
@@ -109,28 +118,47 @@ public function __construct($apiKey, $apiSecret, $options = array())
109118
*
110119
* @return string The token string.
111120
*/
112-
public function generateToken($sessionId, $options = array(), $legacy = false)
121+
public function generateToken(string $sessionId, array $options = array(), bool $legacy = false): string
113122
{
114123
if ($legacy) {
115124
return $this->returnLegacyToken($sessionId, $options);
116125
}
117126

127+
$issuedAt = new \DateTimeImmutable('@' . time());
128+
118129
$defaults = [
119-
'sessionId' => $sessionId,
130+
'session_id' => $sessionId,
120131
'role' => Role::PUBLISHER,
121-
'exp' => null,
122-
'data' => null,
123-
'initialLayoutClassList' => [''],
132+
'expireTime' => null,
133+
'initial_layout_list' => [''],
134+
'ist' => 'project',
135+
'nonce' => mt_rand(),
136+
'scope' => 'session.connect'
124137
];
125138

126139
$options = array_merge($defaults, array_intersect_key($options, $defaults));
127140

128-
$generator = new TokenGenerator($this->apiKey, $this->apiSecret);
141+
$builder = new Builder(new JoseEncoder(), ChainedFormatter::default());
142+
$builder = $builder->issuedBy($this->apiKey);
143+
144+
if ($options['expireTime']) {
145+
$expiry = new \DateTimeImmutable('@' . $options['expireTime']);
146+
$builder = $builder->expiresAt($expiry);
147+
}
148+
149+
unset($options['expireTime']);
150+
151+
$builder = $builder->issuedAt($issuedAt);
152+
$builder = $builder->canOnlyBeUsedAfter($issuedAt);
153+
$builder = $builder->identifiedBy(bin2hex(random_bytes(16)));
154+
129155
foreach ($options as $key => $value) {
130-
$generator->addClaim($key, $value);
156+
$builder = $builder->withClaim($key, $value);
131157
}
132158

133-
return $generator->generate();
159+
$token = $builder->getToken(new \Lcobucci\JWT\Signer\Hmac\Sha256(), InMemory::plainText($this->apiSecret));
160+
161+
return $token->toString();
134162
}
135163

136164
private function returnLegacyToken(string $sessionId, array $options = []): string

0 commit comments

Comments
 (0)