Skip to content

Commit b3c6148

Browse files
Shaun John CheethamShaun John Cheetham
Shaun John Cheetham
authored and
Shaun John Cheetham
committed
Upgrade to 8
1 parent a881926 commit b3c6148

File tree

5 files changed

+111
-14
lines changed

5 files changed

+111
-14
lines changed

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"designmynight"
1414
],
1515
"require": {
16+
"ext-mongodb": "*",
1617
"illuminate/support": "^5.5 || ^6.0",
1718
"jenssegers/mongodb": "3.3.* || 3.4.* || 3.5.* || 3.6.*",
1819
"laravel/passport": "4.0.* || 5.0.* || 6.0.* || 7.0.* || 7.4.* || 7.5.* || ^8.0"

src/MongodbPassportServiceProvider.php

Lines changed: 47 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace DesignMyNight\Mongodb;
44

5+
use DesignMyNight\Mongodb\Passport\Bridge\RefreshTokenRepository as BridgeRefreshTokenRepository;
6+
use DesignMyNight\Mongodb\Passport\RefreshTokenRepository;
57
use Illuminate\Support\ServiceProvider;
68
use DesignMyNight\Mongodb\Passport\AuthCode;
79
use DesignMyNight\Mongodb\Passport\Client;
@@ -10,22 +12,53 @@
1012

1113
class MongodbPassportServiceProvider extends ServiceProvider
1214
{
15+
/** @var string */
16+
private $method = 'alias';
17+
18+
/** @var array */
19+
private $aliases = [
20+
'Laravel\Passport\AuthCode' => AuthCode::class,
21+
'Laravel\Passport\Bridge\RefreshTokenRepository' => BridgeRefreshTokenRepository::class,
22+
'Laravel\Passport\Client' => Client::class,
23+
'Laravel\Passport\PersonalAccessClient' => PersonalAccessClient::class,
24+
'Laravel\Passport\RefreshTokenRepository' => RefreshTokenRepository::class,
25+
'Laravel\Passport\Token' => Token::class,
26+
];
27+
28+
/** @var Illuminate\Foundation\AliasLoader */
29+
private $loader;
30+
31+
/**
32+
* @return void
33+
*/
1334
public function register()
1435
{
15-
/*
16-
* Passport client extends Eloquent model by default, so we alias them.
17-
*/
18-
if (class_exists('Illuminate\Foundation\AliasLoader')) {
19-
$loader = \Illuminate\Foundation\AliasLoader::getInstance();
20-
$loader->alias('Laravel\Passport\AuthCode', AuthCode::class);
21-
$loader->alias('Laravel\Passport\Client', Client::class);
22-
$loader->alias('Laravel\Passport\PersonalAccessClient', PersonalAccessClient::class);
23-
$loader->alias('Laravel\Passport\Token', Token::class);
24-
} else {
25-
class_alias('Laravel\Passport\AuthCode', AuthCode::class);
26-
class_alias('Laravel\Passport\Client', Client::class);
27-
class_alias('Laravel\Passport\PersonalAccessClient', PersonalAccessClient::class);
28-
class_alias('Laravel\Passport\Token', Token::class);
36+
if (class_exists($loader = 'Illuminate\Foundation\AliasLoader')) {
37+
$this->loader = $loader::getInstance();
38+
$this->method = 'loadAlias';
2939
}
40+
41+
foreach ($this->aliases as $original => $alias) {
42+
$this->{$this->method}($original, $alias);
43+
}
44+
}
45+
46+
/**
47+
* @param string $original
48+
* @param string $alias
49+
*/
50+
private function alias(string $original, string $alias): void
51+
{
52+
class_alias($original, $alias);
53+
}
54+
55+
/**
56+
* @param string $original
57+
* @param string $alias
58+
*/
59+
private function loadAlias(string $original, string $alias): void
60+
{
61+
// Passport client extends Eloquent model by default, so we alias them.
62+
$this->loader->alias($original, $alias);
3063
}
3164
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace DesignMyNight\Mongodb\Passport\Bridge;
4+
5+
use Laravel\Passport\Bridge\RefreshTokenRepository as BaseRefreshTokenRepository;
6+
use Laravel\Passport\Events\RefreshTokenCreated;
7+
use League\OAuth2\Server\Entities\RefreshTokenEntityInterface;
8+
use MongoDB\BSON\UTCDateTime;
9+
10+
/**
11+
* Class RefreshTokenRepository
12+
* @package App\Passport\Bridge
13+
*/
14+
class RefreshTokenRepository extends BaseRefreshTokenRepository
15+
{
16+
/**
17+
* @inheritDoc
18+
*/
19+
public function persistNewRefreshToken(RefreshTokenEntityInterface $refreshTokenEntity)
20+
{
21+
$this->refreshTokenRepository->create([
22+
'id' => $id = $refreshTokenEntity->getIdentifier(),
23+
'access_token_id' => $accessTokenId = $refreshTokenEntity->getAccessToken()->getIdentifier(),
24+
'revoked' => false,
25+
'expires_at' => new UTCDateTime($refreshTokenEntity->getExpiryDateTime()->getTimestamp() * 1000),
26+
]);
27+
28+
$this->events->dispatch(new RefreshTokenCreated($id, $accessTokenId));
29+
}
30+
}

src/Passport/Client.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,14 @@ public function skipsAuthorization()
7979
{
8080
return false;
8181
}
82+
83+
/**
84+
* Determine if the client is a confidential client.
85+
*
86+
* @return bool
87+
*/
88+
public function confidential()
89+
{
90+
return ! empty($this->secret);
91+
}
8292
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
namespace DesignMyNight\Mongodb\Passport;
4+
5+
use Laravel\Passport\RefreshTokenRepository as BaseRefreshTokenRepository;
6+
7+
class RefreshTokenRepository extends BaseRefreshTokenRepository
8+
{
9+
/**
10+
* Checks if the refresh token has been revoked.
11+
*
12+
* @param string $id
13+
* @return bool
14+
*/
15+
public function isRefreshTokenRevoked($id)
16+
{
17+
if ($token = $this->find($id)) {
18+
return $token['revoked'];
19+
}
20+
21+
return true;
22+
}
23+
}

0 commit comments

Comments
 (0)