|
@@ -1325,6 +1325,20 @@ class Responder
|
1325
|
1325
|
return new Response(Response::OK, $result);
|
1326
|
1326
|
}
|
1327
|
1327
|
|
|
1328
|
+ public function redirect(String $url): Response
|
|
1329
|
+ {
|
|
1330
|
+ $response = new Response(Response::FOUND, '');
|
|
1331
|
+ $response->addHeader('Location', $url);
|
|
1332
|
+ return $response;
|
|
1333
|
+ }
|
|
1334
|
+
|
|
1335
|
+ public function html(String $url): Response
|
|
1336
|
+ {
|
|
1337
|
+ $response = new Response(Response::FOUND, '');
|
|
1338
|
+ $response->addHeader('Location', $url);
|
|
1339
|
+ return $response;
|
|
1340
|
+ }
|
|
1341
|
+
|
1328
|
1342
|
}
|
1329
|
1343
|
|
1330
|
1344
|
// file: src/Tqdev/PhpCrudApi/Database/ColumnConverter.php
|
|
@@ -2885,6 +2899,59 @@ class SimpleRouter implements Router
|
2885
|
2899
|
|
2886
|
2900
|
}
|
2887
|
2901
|
|
|
2902
|
+// file: src/Tqdev/PhpCrudApi/Middleware/Auth0Middleware.php
|
|
2903
|
+
|
|
2904
|
+class Auth0Middleware extends Middleware
|
|
2905
|
+{
|
|
2906
|
+
|
|
2907
|
+ private function getFullUrl(String $path)
|
|
2908
|
+ {
|
|
2909
|
+ list($scheme, $default) = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? array('https', 443) : array('http', 80);
|
|
2910
|
+ $port = ($_SERVER['SERVER_PORT'] == $default) ? '' : (':' . $_SERVER['SERVER_PORT']);
|
|
2911
|
+ return $scheme . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'] . $path;
|
|
2912
|
+ }
|
|
2913
|
+
|
|
2914
|
+ private function login(Request $request): Response
|
|
2915
|
+ {
|
|
2916
|
+ $domain = $this->getProperty('domain', '');
|
|
2917
|
+ $clientId = $this->getProperty('clientId', '');
|
|
2918
|
+ $redirectUri = $this->getFullUrl('/callback');
|
|
2919
|
+ $url = "https://$domain/authorize?response_type=token&client_id=$clientId&redirect_uri=$redirectUri";
|
|
2920
|
+ return $this->responder->redirect($url);
|
|
2921
|
+ }
|
|
2922
|
+
|
|
2923
|
+ private function callback(Request $request): Response
|
|
2924
|
+ {
|
|
2925
|
+ $response = $this->responder->success('<h1>test</h1>');
|
|
2926
|
+ $response->addHeader('Content-Type', 'text/html');
|
|
2927
|
+ return $response;
|
|
2928
|
+ }
|
|
2929
|
+
|
|
2930
|
+ private function logout(Request $request): Response
|
|
2931
|
+ {
|
|
2932
|
+ session_destroy();
|
|
2933
|
+ $url = $this->getFullUrl('/login');
|
|
2934
|
+ return $this->responder->redirect($url);
|
|
2935
|
+ }
|
|
2936
|
+
|
|
2937
|
+ public function handle(Request $request): Response
|
|
2938
|
+ {
|
|
2939
|
+ if (session_status() == PHP_SESSION_NONE) {
|
|
2940
|
+ session_start();
|
|
2941
|
+ }
|
|
2942
|
+ $path = $request->getPathSegment(1);
|
|
2943
|
+ switch ($path) {
|
|
2944
|
+ case 'login':
|
|
2945
|
+ return $this->login($request);
|
|
2946
|
+ case 'callback':
|
|
2947
|
+ return $this->callback($request);
|
|
2948
|
+ case 'logout':
|
|
2949
|
+ return $this->logout($request);
|
|
2950
|
+ }
|
|
2951
|
+ return $this->next->handle($request);
|
|
2952
|
+ }
|
|
2953
|
+}
|
|
2954
|
+
|
2888
|
2955
|
// file: src/Tqdev/PhpCrudApi/Middleware/AuthorizationMiddleware.php
|
2889
|
2956
|
|
2890
|
2957
|
class AuthorizationMiddleware extends Middleware
|
|
@@ -4944,6 +5011,9 @@ class Api
|
4944
|
5011
|
case 'authorization':
|
4945
|
5012
|
new AuthorizationMiddleware($router, $responder, $properties, $reflection);
|
4946
|
5013
|
break;
|
|
5014
|
+ case 'auth0':
|
|
5015
|
+ new Auth0Middleware($router, $responder, $properties, $reflection);
|
|
5016
|
+ break;
|
4947
|
5017
|
case 'customization':
|
4948
|
5018
|
new CustomizationMiddleware($router, $responder, $properties, $reflection);
|
4949
|
5019
|
break;
|
|
@@ -5345,6 +5415,8 @@ class Request
|
5345
|
5415
|
class Response
|
5346
|
5416
|
{
|
5347
|
5417
|
const OK = 200;
|
|
5418
|
+ const MOVED_PERMANENTLY = 301;
|
|
5419
|
+ const FOUND = 302;
|
5348
|
5420
|
const UNAUTHORIZED = 401;
|
5349
|
5421
|
const FORBIDDEN = 403;
|
5350
|
5422
|
const NOT_FOUND = 404;
|
|
@@ -5432,7 +5504,6 @@ $config = new Config([
|
5432
|
5504
|
'username' => 'php-crud-api',
|
5433
|
5505
|
'password' => 'php-crud-api',
|
5434
|
5506
|
'database' => 'php-crud-api',
|
5435
|
|
- 'middlewares' => 'basicAuth',
|
5436
|
5507
|
]);
|
5437
|
5508
|
$request = new Request();
|
5438
|
5509
|
$api = new Api($config);
|