Skip to content

Commit

Permalink
build
Browse files Browse the repository at this point in the history
  • Loading branch information
mevdschee committed Aug 2, 2023
1 parent 3101729 commit ad4b9a5
Show file tree
Hide file tree
Showing 2 changed files with 146 additions and 6 deletions.
76 changes: 73 additions & 3 deletions api.include.php
Original file line number Diff line number Diff line change
Expand Up @@ -3306,7 +3306,7 @@ public function fromGlobals(): ServerRequestInterface
/**
* {@inheritdoc}
*/
public function fromArrays(array $server, array $headers = [], array $cookie = [], array $get = [], ?array $post = null, array $files = [], $body = null): ServerRequestInterface
public function fromArrays(array $server, array $headers = [], array $cookie = [], array $get = [], /*?array*/ $post = null, array $files = [], $body = null): ServerRequestInterface
{
$method = $this->getMethodFromEnv($server);
$uri = $this->getUriFromEnvWithHTTP($server);
Expand Down Expand Up @@ -3575,8 +3575,7 @@ public function fromArrays(
array $server,
array $headers = [],
array $cookie = [],
array $get = [],
?array $post = null,
array $get = [], /*?array*/ $post = null,
array $files = [],
$body = null
): ServerRequestInterface;
Expand Down Expand Up @@ -9949,6 +9948,73 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface
}
}

// file: src/Tqdev/PhpCrudApi/Middleware/WpAuthMiddleware.php
namespace Tqdev\PhpCrudApi\Middleware {

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Tqdev\PhpCrudApi\Config\Config;
use Tqdev\PhpCrudApi\Controller\Responder;
use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
use Tqdev\PhpCrudApi\Middleware\Router\Router;
use Tqdev\PhpCrudApi\Record\ErrorCode;
use Tqdev\PhpCrudApi\RequestUtils;

class WpAuthMiddleware extends Middleware
{
public function __construct(Router $router, Responder $responder, Config $config, string $middleware)
{
parent::__construct($router, $responder, $config, $middleware);
}

public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
{
define('WP_USE_THEMES', false); // Don't load theme support functionality
$wpDirectory = $this->getProperty('wpDirectory', '.');
require_once("$wpDirectory/wp-load.php");
$path = RequestUtils::getPathSegment($request, 1);
$method = $request->getMethod();
if ($method == 'POST' && $path == 'login') {
$body = $request->getParsedBody();
$usernameFormFieldName = $this->getProperty('usernameFormField', 'username');
$passwordFormFieldName = $this->getProperty('passwordFormField', 'password');
$username = isset($body->$usernameFormFieldName) ? $body->$usernameFormFieldName : '';
$password = isset($body->$passwordFormFieldName) ? $body->$passwordFormFieldName : '';
$user = wp_signon([
'user_login' => $username,
'user_password' => $password,
'remember' => false,
]);
if ($user->ID) {
return $this->responder->success($user);
}
return $this->responder->error(ErrorCode::AUTHENTICATION_FAILED, $username);
}
if ($method == 'POST' && $path == 'logout') {
if (is_user_logged_in()) {
wp_logout();
return $this->responder->success($user);
}
return $this->responder->error(ErrorCode::AUTHENTICATION_REQUIRED, '');
}
if ($method == 'GET' && $path == 'me') {
if (is_user_logged_in()) {
return $this->responder->success(wp_get_current_user());
}
return $this->responder->error(ErrorCode::AUTHENTICATION_REQUIRED, '');
}
if (!is_user_logged_in()) {
$authenticationMode = $this->getProperty('mode', 'required');
if ($authenticationMode == 'required') {
return $this->responder->error(ErrorCode::AUTHENTICATION_REQUIRED, '');
}
}
return $next->handle($request);
}
}
}

// file: src/Tqdev/PhpCrudApi/Middleware/XmlMiddleware.php
namespace Tqdev\PhpCrudApi\Middleware {

Expand Down Expand Up @@ -12184,6 +12250,7 @@ private function setHabtmValues(ReflectedTable $t1, ReflectedTable $t2, array &$
use Tqdev\PhpCrudApi\Middleware\SslRedirectMiddleware;
use Tqdev\PhpCrudApi\Middleware\TextSearchMiddleware;
use Tqdev\PhpCrudApi\Middleware\ValidationMiddleware;
use Tqdev\PhpCrudApi\Middleware\WpAuthMiddleware;
use Tqdev\PhpCrudApi\Middleware\XmlMiddleware;
use Tqdev\PhpCrudApi\Middleware\XsrfMiddleware;
use Tqdev\PhpCrudApi\OpenApi\OpenApiService;
Expand Down Expand Up @@ -12240,6 +12307,9 @@ public function __construct(Config $config)
case 'dbAuth':
new DbAuthMiddleware($router, $responder, $config, $middleware, $reflection, $db);
break;
case 'wpAuth':
new WpAuthMiddleware($router, $responder, $config, $middleware);
break;
case 'reconnect':
new ReconnectMiddleware($router, $responder, $config, $middleware, $reflection, $db);
break;
Expand Down
76 changes: 73 additions & 3 deletions api.php
Original file line number Diff line number Diff line change
Expand Up @@ -3306,7 +3306,7 @@ public function fromGlobals(): ServerRequestInterface
/**
* {@inheritdoc}
*/
public function fromArrays(array $server, array $headers = [], array $cookie = [], array $get = [], ?array $post = null, array $files = [], $body = null): ServerRequestInterface
public function fromArrays(array $server, array $headers = [], array $cookie = [], array $get = [], /*?array*/ $post = null, array $files = [], $body = null): ServerRequestInterface
{
$method = $this->getMethodFromEnv($server);
$uri = $this->getUriFromEnvWithHTTP($server);
Expand Down Expand Up @@ -3575,8 +3575,7 @@ public function fromArrays(
array $server,
array $headers = [],
array $cookie = [],
array $get = [],
?array $post = null,
array $get = [], /*?array*/ $post = null,
array $files = [],
$body = null
): ServerRequestInterface;
Expand Down Expand Up @@ -9949,6 +9948,73 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface
}
}

// file: src/Tqdev/PhpCrudApi/Middleware/WpAuthMiddleware.php
namespace Tqdev\PhpCrudApi\Middleware {

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Tqdev\PhpCrudApi\Config\Config;
use Tqdev\PhpCrudApi\Controller\Responder;
use Tqdev\PhpCrudApi\Middleware\Base\Middleware;
use Tqdev\PhpCrudApi\Middleware\Router\Router;
use Tqdev\PhpCrudApi\Record\ErrorCode;
use Tqdev\PhpCrudApi\RequestUtils;

class WpAuthMiddleware extends Middleware
{
public function __construct(Router $router, Responder $responder, Config $config, string $middleware)
{
parent::__construct($router, $responder, $config, $middleware);
}

public function process(ServerRequestInterface $request, RequestHandlerInterface $next): ResponseInterface
{
define('WP_USE_THEMES', false); // Don't load theme support functionality
$wpDirectory = $this->getProperty('wpDirectory', '.');
require_once("$wpDirectory/wp-load.php");
$path = RequestUtils::getPathSegment($request, 1);
$method = $request->getMethod();
if ($method == 'POST' && $path == 'login') {
$body = $request->getParsedBody();
$usernameFormFieldName = $this->getProperty('usernameFormField', 'username');
$passwordFormFieldName = $this->getProperty('passwordFormField', 'password');
$username = isset($body->$usernameFormFieldName) ? $body->$usernameFormFieldName : '';
$password = isset($body->$passwordFormFieldName) ? $body->$passwordFormFieldName : '';
$user = wp_signon([
'user_login' => $username,
'user_password' => $password,
'remember' => false,
]);
if ($user->ID) {
return $this->responder->success($user);
}
return $this->responder->error(ErrorCode::AUTHENTICATION_FAILED, $username);
}
if ($method == 'POST' && $path == 'logout') {
if (is_user_logged_in()) {
wp_logout();
return $this->responder->success($user);
}
return $this->responder->error(ErrorCode::AUTHENTICATION_REQUIRED, '');
}
if ($method == 'GET' && $path == 'me') {
if (is_user_logged_in()) {
return $this->responder->success(wp_get_current_user());
}
return $this->responder->error(ErrorCode::AUTHENTICATION_REQUIRED, '');
}
if (!is_user_logged_in()) {
$authenticationMode = $this->getProperty('mode', 'required');
if ($authenticationMode == 'required') {
return $this->responder->error(ErrorCode::AUTHENTICATION_REQUIRED, '');
}
}
return $next->handle($request);
}
}
}

// file: src/Tqdev/PhpCrudApi/Middleware/XmlMiddleware.php
namespace Tqdev\PhpCrudApi\Middleware {

Expand Down Expand Up @@ -12184,6 +12250,7 @@ private function setHabtmValues(ReflectedTable $t1, ReflectedTable $t2, array &$
use Tqdev\PhpCrudApi\Middleware\SslRedirectMiddleware;
use Tqdev\PhpCrudApi\Middleware\TextSearchMiddleware;
use Tqdev\PhpCrudApi\Middleware\ValidationMiddleware;
use Tqdev\PhpCrudApi\Middleware\WpAuthMiddleware;
use Tqdev\PhpCrudApi\Middleware\XmlMiddleware;
use Tqdev\PhpCrudApi\Middleware\XsrfMiddleware;
use Tqdev\PhpCrudApi\OpenApi\OpenApiService;
Expand Down Expand Up @@ -12240,6 +12307,9 @@ public function __construct(Config $config)
case 'dbAuth':
new DbAuthMiddleware($router, $responder, $config, $middleware, $reflection, $db);
break;
case 'wpAuth':
new WpAuthMiddleware($router, $responder, $config, $middleware);
break;
case 'reconnect':
new ReconnectMiddleware($router, $responder, $config, $middleware, $reflection, $db);
break;
Expand Down

0 comments on commit ad4b9a5

Please sign in to comment.