Skip to content
This repository was archived by the owner on Feb 18, 2023. It is now read-only.

Commit ba97f65

Browse files
committed
Missing oAuth exceptions
1 parent 5caaf3e commit ba97f65

File tree

7 files changed

+165
-17
lines changed

7 files changed

+165
-17
lines changed

app/Auth/EloquentUserResolver.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
/**
99
* Class EloquentUserResolver
10+
*
1011
* @package App\Auth
1112
*/
1213
class EloquentUserResolver implements UserResolverInterface
@@ -19,6 +20,7 @@ class EloquentUserResolver implements UserResolverInterface
1920

2021
/**
2122
* EloquentUserResolver constructor.
23+
*
2224
* @param User $user
2325
*/
2426
public function __construct(User $user)
@@ -28,7 +30,8 @@ public function __construct(User $user)
2830

2931
/**
3032
* Resolve user with eloquent
31-
* @param $id
33+
*
34+
* @param $id
3235
* @return mixed
3336
*/
3437
public function resolveById($id)

app/Contracts/UserResolverInterface.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@
44

55
/**
66
* Interface UserResolverInterface
7+
*
78
* @package App\Auth
89
*/
910
interface UserResolverInterface
1011
{
1112

1213
/**
1314
* Resolve a user from ID
14-
* @param $id
15+
*
16+
* @param $id
1517
* @return mixed
1618
*/
1719
public function resolveById($id);

app/Entities/Users/Permission.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
/**
99
* Class Permission
10+
*
1011
* @package App\Entities\Users
1112
*/
1213
class Permission extends EntrustPermission

app/Entities/Users/Role.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
/**
99
* Class Role
10+
*
1011
* @package App\Entities\Users
1112
*/
1213
class Role extends EntrustRole

app/Entities/Users/User.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
/**
1414
* Class User
15+
*
1516
* @package App\Entities\Users
1617
*/
1718
class User extends Model implements AuthenticatableContract, CanResetPasswordContract

app/Exceptions/OAuthExceptionHandler.php

Lines changed: 135 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Response;
66
use League\OAuth2\Server\Exception\OAuthException;
7+
use League\OAuth2\Server\Exception\AccessDeniedException;
78
use League\OAuth2\Server\Exception\InvalidRefreshException;
89
use League\OAuth2\Server\Exception\InvalidRequestException;
910

@@ -89,7 +90,7 @@ protected function invalidCredentials(OAuthException $e)
8990
* @param $e
9091
* @return mixed
9192
*/
92-
protected function invalidClient($e)
93+
protected function invalidClient(OAuthException $e)
9394
{
9495
return Response::make(
9596
[
@@ -103,4 +104,137 @@ protected function invalidClient($e)
103104
401
104105
);
105106
}
107+
108+
/**
109+
* @param OAuthException $e
110+
* @return mixed
111+
*/
112+
protected function accessDenied(OAuthException $e)
113+
{
114+
return Response::make(
115+
[
116+
'errors' => [
117+
'status' => '401',
118+
'code' => 'AccessDenied',
119+
'title' => 'Access Denied',
120+
'detail' => "The resource owner or authorization server denied the request."
121+
]
122+
],
123+
401
124+
);
125+
}
126+
127+
/**
128+
* @param OAuthException $e
129+
* @return mixed
130+
*/
131+
protected function invalidGrant(OAuthException $e)
132+
{
133+
return Response::make(
134+
[
135+
'errors' => [
136+
'status' => '400',
137+
'code' => 'InvalidGrant',
138+
'title' => 'Invalid Grant',
139+
'detail' => $e->getMessage()
140+
]
141+
],
142+
400
143+
);
144+
}
145+
146+
/**
147+
* @param OAuthException $e
148+
* @return mixed
149+
*/
150+
protected function invalidScope(OAuthException $e)
151+
{
152+
return Response::make(
153+
[
154+
'errors' => [
155+
'status' => '400',
156+
'code' => 'InvalidScope',
157+
'title' => 'Invalid Scope',
158+
'detail' => $e->getMessage()
159+
]
160+
],
161+
400
162+
);
163+
}
164+
165+
/**
166+
* @param OAuthException $e
167+
* @return mixed
168+
*/
169+
protected function serverError(OAuthException $e)
170+
{
171+
return Response::make(
172+
[
173+
'errors' => [
174+
'status' => '500',
175+
'code' => 'ServerError',
176+
'title' => 'Server Error',
177+
'detail' => $e->getMessage()
178+
]
179+
],
180+
500
181+
);
182+
}
183+
184+
/**
185+
* @param OAuthException $e
186+
* @return mixed
187+
*/
188+
protected function unauthorizedClient(OAuthException $e)
189+
{
190+
return Response::make(
191+
[
192+
'errors' => [
193+
'status' => '400',
194+
'code' => 'UnauthorizedClient',
195+
'title' => 'Unauthorized Client',
196+
'detail' => $e->getMessage()
197+
]
198+
],
199+
400
200+
);
201+
}
202+
203+
/**
204+
* @param OAuthException $e
205+
* @return mixed
206+
*/
207+
protected function unsupportedGrantType(OAuthException $e)
208+
{
209+
return Response::make(
210+
[
211+
'errors' => [
212+
'status' => '400',
213+
'code' => 'UnsupportedGrantType',
214+
'title' => 'Unsupported Grant Type',
215+
'detail' => $e->getMessage()
216+
]
217+
],
218+
400
219+
);
220+
}
221+
222+
/**
223+
* @param OAuthException $e
224+
* @return mixed
225+
*/
226+
protected function unsupportedResponseType(OAuthException $e)
227+
{
228+
return Response::make(
229+
[
230+
'errors' => [
231+
'status' => '400',
232+
'code' => 'UnsupportedResponseType',
233+
'title' => 'Unsupported Response Type',
234+
'detail' => $e->getMessage()
235+
]
236+
],
237+
400
238+
);
239+
}
106240
}

app/Providers/AuthServiceProvider.php

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
/**
1111
* Class AuthServiceProvider
12+
*
1213
* @package App\Providers
1314
*/
1415
class AuthServiceProvider extends ServiceProvider
@@ -39,19 +40,24 @@ public function boot(GateContract $gate)
3940
*/
4041
public function registerOAuthProvider()
4142
{
42-
app('Dingo\Api\Auth\Auth')->extend('oauth', function ($app) {
43-
$provider = new OAuth2($app['oauth2-server.authorizer']->getChecker());
44-
45-
$provider->setUserResolver(function ($id) {
46-
$resolver = app(UserResolverInterface::class);
47-
return $resolver->resolveById($id);
48-
});
49-
50-
$provider->setClientResolver(function ($id) {
51-
52-
});
53-
54-
return $provider;
55-
});
43+
app('Dingo\Api\Auth\Auth')->extend(
44+
'oauth', function ($app) {
45+
$provider = new OAuth2($app['oauth2-server.authorizer']->getChecker());
46+
47+
$provider->setUserResolver(
48+
function ($id) {
49+
$resolver = app(UserResolverInterface::class);
50+
return $resolver->resolveById($id);
51+
}
52+
);
53+
54+
$provider->setClientResolver(
55+
function ($id) {
56+
}
57+
);
58+
59+
return $provider;
60+
}
61+
);
5662
}
5763
}

0 commit comments

Comments
 (0)