From 944c524cfb4bef0feb8b5b0f64c2265ec1479aa4 Mon Sep 17 00:00:00 2001 From: Dave Mc Nicoll Date: Fri, 3 Nov 2023 08:26:48 -0400 Subject: [PATCH] - WIP on header-based authentication --- src/Authorize/AuthorizeMethodInterface.php | 11 +++++++ src/Authorize/BasicAuthentication.php | 34 ++++++++++++++++++++++ src/Common/AuthorizeEnum.php | 16 ++++++++++ src/Entity/UserInterface.php | 8 +++++ src/Lib/Authenticate.php | 2 +- src/Lib/Authorize.php | 18 ++++++++++++ src/Middleware/AuthenticateMiddleware.php | 29 ++++++++++++++++++ src/Middleware/AuthorizeMiddleware.php | 26 +++++++++++++++++ 8 files changed, 143 insertions(+), 1 deletion(-) create mode 100644 src/Authorize/AuthorizeMethodInterface.php create mode 100644 src/Authorize/BasicAuthentication.php create mode 100644 src/Common/AuthorizeEnum.php create mode 100644 src/Entity/UserInterface.php create mode 100644 src/Lib/Authorize.php create mode 100644 src/Middleware/AuthenticateMiddleware.php create mode 100644 src/Middleware/AuthorizeMiddleware.php diff --git a/src/Authorize/AuthorizeMethodInterface.php b/src/Authorize/AuthorizeMethodInterface.php new file mode 100644 index 0000000..36a43db --- /dev/null +++ b/src/Authorize/AuthorizeMethodInterface.php @@ -0,0 +1,11 @@ +getHeader('Authorization') ) { + list($method, $userPass) = explode(' ', $auth, 2) + [ null, null ]; + + if (! $method ) { + throw new \InvalidArgumentException("An authentication method must be provided"); + } + elseif (! $userPass ) { + throw new \InvalidArgumentException("A base64-encoded 'user:password' value must be provided"); + } + + + return false; + } + + return false; + } + + protected function basicMethod(string $header) : UserInterface|false + { + + } + +} \ No newline at end of file diff --git a/src/Common/AuthorizeEnum.php b/src/Common/AuthorizeEnum.php new file mode 100644 index 0000000..9839acd --- /dev/null +++ b/src/Common/AuthorizeEnum.php @@ -0,0 +1,16 @@ +loadFromPk($id) ) ) { - throw new \Exception("User not found."); + throw new \InvalidArgumentException(sprintf("User having id '%s' was not found.", $id)); } $user->logged = true; diff --git a/src/Lib/Authorize.php b/src/Lib/Authorize.php new file mode 100644 index 0000000..8825c8b --- /dev/null +++ b/src/Lib/Authorize.php @@ -0,0 +1,18 @@ +loginFailed; + } + + return $handler->handle($request); + } +} diff --git a/src/Middleware/AuthorizeMiddleware.php b/src/Middleware/AuthorizeMiddleware.php new file mode 100644 index 0000000..7b8bd13 --- /dev/null +++ b/src/Middleware/AuthorizeMiddleware.php @@ -0,0 +1,26 @@ +loginFailed; + } + + return $handler->handle($request); + } +}