Skip to content

Commit fecca41

Browse files
committed
feat(delegation): allow for framework specific middlewares
Added Authorization validator class.
1 parent dd93739 commit fecca41

File tree

5 files changed

+68
-2
lines changed

5 files changed

+68
-2
lines changed

vendor/Haku/Delegation/Middlewares/.gitkeep

Whitespace-only changes.

app/middlewares/Cors.php renamed to vendor/Haku/Delegation/Middlewares/Cors.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22
declare(strict_types=1);
33

4-
namespace App\Middlewares;
4+
namespace Haku\Delegation\Middlewares;
55

66
/* @note Deny direct file access */
77
if (defined('HAKU_ROOT_PATH') === false) exit;

app/middlewares/Jwt.php renamed to vendor/Haku/Delegation/Middlewares/Jwt.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22
declare(strict_types=1);
33

4-
namespace App\Middlewares;
4+
namespace Haku\Delegation\Middlewares;
55

66
/* @note Deny direct file access */
77
if (defined('HAKU_ROOT_PATH') === false) exit;

vendor/Haku/Delegation/bootstrap.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,11 +282,17 @@ function parseRouteAttributes(
282282

283283
/**
284284
* Converts middlewares from "foo" to "App\Middlewares\Foo"
285+
* And @foo to "Haku\Delegation\Middlewares\Foo"
285286
*/
286287
function normalizeMiddlewarePathName(string $unresolved): string
287288
{
288289
$namespace = ['App', 'Middlewares'];
289290

291+
if (\str_starts_with(needle: '@', haystack: $unresolved))
292+
{
293+
$namespace = ['Haku', 'Delegation', 'Middlewares'];
294+
}
295+
290296
$parts = explode('/', $unresolved);
291297
$parts = array_map(fn($part) => ucfirst(camelCaseFromSnakeCase($part)), $parts);
292298

vendor/Haku/Jwt/Authorization.php

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Haku\Jwt;
5+
6+
/* @note Deny direct file access */
7+
if (defined('HAKU_ROOT_PATH') === false) exit;
8+
9+
class Authorization
10+
{
11+
12+
public static function make(int $identifier, string $scope): string
13+
{
14+
return encodeToken([
15+
'identifier' => $identifier,
16+
'scope' => $scope,
17+
]);
18+
}
19+
20+
public static function verifyIdentifier(int $identifier): bool
21+
{
22+
$token = currentToken();
23+
24+
if (!$token)
25+
{
26+
return false;
27+
}
28+
29+
$payload = $token->getPayload();
30+
31+
if ($payload['identifier'] === $identifier)
32+
{
33+
return true;
34+
}
35+
36+
return false;
37+
}
38+
39+
public static function verifyScope(array $allowedScopes): bool
40+
{
41+
$token = currentToken();
42+
43+
if (!$token)
44+
{
45+
return false;
46+
}
47+
48+
$payload = $token->getPayload();
49+
50+
if (
51+
count($allowedScopes) > 0 &&
52+
in_array($payload['scope'], $allowedScopes)
53+
) {
54+
return true;
55+
}
56+
57+
return false;
58+
}
59+
60+
}

0 commit comments

Comments
 (0)