Compare commits
9
Commits
attributes
...
c6fc5d020b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c6fc5d020b | ||
|
|
944c524cfb | ||
|
|
fbf9bc871c | ||
|
|
ad802fc35d | ||
|
|
4664a8779a | ||
|
|
cef536caa5 | ||
|
|
10ad77d607 | ||
|
|
015f0c70b1 | ||
|
|
267fe5cadd |
No files matched your search
+7
-1
@@ -10,8 +10,14 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"mcnd/notes": "master-dev"
|
||||
"mcnd/ulmus": "dev-master"
|
||||
},
|
||||
"repositories": [
|
||||
{
|
||||
"type": "vcs",
|
||||
"url": "https://git.mcnd.ca/mcNdave/ulmus.git"
|
||||
}
|
||||
],
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Ulmus\\User\\": "src/"
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace Ulmus\User\Authorize;
|
||||
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Ulmus\User\Entity\UserInterface;
|
||||
|
||||
interface AuthorizeMethodInterface
|
||||
{
|
||||
public function connect(ServerRequestInterface $request) : UserInterface|false;
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace Ulmus\User\Authorize;
|
||||
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Ulmus\User\Entity\UserInterface;
|
||||
|
||||
class BasicAuthentication implements AuthorizeMethodInterface
|
||||
{
|
||||
public function connect(ServerRequestInterface $request): UserInterface|false
|
||||
{
|
||||
if ( null === $auth = $request->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
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace Ulmus\User\Common;
|
||||
|
||||
enum AuthorizeEnum : string
|
||||
{
|
||||
case Basic = "basic";
|
||||
case Token = "token";
|
||||
|
||||
# case Bearer = "bearer";
|
||||
# case Custom = "custom";
|
||||
# case Digest = "digest";
|
||||
# case Key = "key";
|
||||
# case Ntlm = "ntlm";
|
||||
# case Negotiate = "negotiate";
|
||||
}
|
||||
+4
-4
@@ -57,7 +57,7 @@ class User {
|
||||
|
||||
public function __toString() : string
|
||||
{
|
||||
return $this->fullname();
|
||||
return "{$this->firstName} {$this->lastName}";
|
||||
}
|
||||
|
||||
public function setPassword($password) : self
|
||||
@@ -67,16 +67,16 @@ class User {
|
||||
return $this->hashPassword();
|
||||
}
|
||||
|
||||
public function hashPassword() : self
|
||||
public function hashPassword(? string $password = null) : self
|
||||
{
|
||||
$this->password = password_hash($this->password, PASSWORD_DEFAULT);
|
||||
$this->password = password_hash($password ?: $this->password, PASSWORD_DEFAULT);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function verifyPassword(string $password) : bool
|
||||
{
|
||||
return password_verify($password, $this->password );
|
||||
return password_verify($password, $this->password);
|
||||
}
|
||||
|
||||
public function fullname() : string
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
namespace Ulmus\User\Entity;
|
||||
|
||||
interface UserInterface
|
||||
{
|
||||
public function __toString() : string;
|
||||
}
|
||||
@@ -35,9 +35,9 @@ class Authenticate {
|
||||
|
||||
public function rememberMe(\Ulmus\Repository $repository) : ? User
|
||||
{
|
||||
$logUser = function(int $id) use ($repository) {
|
||||
if ( null === ( $user = $repository->loadFromPk($id) ) ) {
|
||||
throw new \Exception("User not found.");
|
||||
$logUser = function(? int $id) use ($repository) {
|
||||
if ( $id === null || null === ( $user = $repository->loadFromPk($id) ) ) {
|
||||
throw new \InvalidArgumentException(sprintf("User having id '%s' was not found.", $id));
|
||||
}
|
||||
|
||||
$user->logged = true;
|
||||
@@ -123,7 +123,9 @@ class Authenticate {
|
||||
$this->cookie->delete('user.id');
|
||||
}
|
||||
|
||||
$this->user->logged = false;
|
||||
if (isset($this->user)) {
|
||||
$this->user->logged = false;
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace Ulmus\User\Lib;
|
||||
|
||||
use Ulmus\User\Entity\User;
|
||||
|
||||
class Authorize extends Authenticate
|
||||
{
|
||||
public function rememberMe(\Ulmus\Repository $repository) : ? User
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public function authorize(\Ulmus\Repository $repository, array $userLogin, string $password) : User
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace Ulmus\User\Middleware;
|
||||
|
||||
use Psr\Http\{
|
||||
Message\ResponseInterface,
|
||||
Message\ServerRequestInterface,
|
||||
Server\MiddlewareInterface,
|
||||
Server\RequestHandlerInterface
|
||||
};
|
||||
use Ulmus\User\Authorize\AuthorizeMethodInterface;
|
||||
use Ulmus\User\Common\AuthorizeEnum;
|
||||
|
||||
class AuthorizeMiddleware implements MiddlewareInterface
|
||||
{
|
||||
public function __construct(
|
||||
protected AuthorizeMethodInterface $method,
|
||||
protected ResponseInterface $loginFailed,
|
||||
) { }
|
||||
|
||||
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
|
||||
{
|
||||
if ( false ) {
|
||||
return $this->loginFailed;
|
||||
}
|
||||
|
||||
return $handler->handle($request);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace Ulmus\User\Middleware;
|
||||
|
||||
use Psr\Http\{
|
||||
Message\ResponseInterface,
|
||||
Message\ServerRequestInterface,
|
||||
Server\MiddlewareInterface,
|
||||
Server\RequestHandlerInterface
|
||||
};
|
||||
|
||||
class AuthorizeMiddleware implements MiddlewareInterface
|
||||
{
|
||||
public function __construct(
|
||||
protected ResponseInterface $loginFailed
|
||||
) { }
|
||||
|
||||
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
|
||||
{
|
||||
if ( false ) {
|
||||
return $this->loginFailed;
|
||||
}
|
||||
|
||||
return $handler->handle($request);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user