@@ -3306,7 +3306,7 @@ public function fromGlobals(): ServerRequestInterface
3306
3306
/**
3307
3307
* {@inheritdoc}
3308
3308
*/
3309
- public function fromArrays (array $ server , array $ headers = [], array $ cookie = [], array $ get = [], ?array $ post = null , array $ files = [], $ body = null ): ServerRequestInterface
3309
+ public function fromArrays (array $ server , array $ headers = [], array $ cookie = [], array $ get = [], /* ?array*/ $ post = null , array $ files = [], $ body = null ): ServerRequestInterface
3310
3310
{
3311
3311
$ method = $ this ->getMethodFromEnv ($ server );
3312
3312
$ uri = $ this ->getUriFromEnvWithHTTP ($ server );
@@ -3575,8 +3575,7 @@ public function fromArrays(
3575
3575
array $ server ,
3576
3576
array $ headers = [],
3577
3577
array $ cookie = [],
3578
- array $ get = [],
3579
- ?array $ post = null ,
3578
+ array $ get = [], /*?array*/ $ post = null ,
3580
3579
array $ files = [],
3581
3580
$ body = null
3582
3581
): ServerRequestInterface ;
@@ -9949,6 +9948,73 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface
9949
9948
}
9950
9949
}
9951
9950
9951
+ // file: src/Tqdev/PhpCrudApi/Middleware/WpAuthMiddleware.php
9952
+ namespace Tqdev \PhpCrudApi \Middleware {
9953
+
9954
+ use Psr \Http \Message \ResponseInterface ;
9955
+ use Psr \Http \Message \ServerRequestInterface ;
9956
+ use Psr \Http \Server \RequestHandlerInterface ;
9957
+ use Tqdev \PhpCrudApi \Config \Config ;
9958
+ use Tqdev \PhpCrudApi \Controller \Responder ;
9959
+ use Tqdev \PhpCrudApi \Middleware \Base \Middleware ;
9960
+ use Tqdev \PhpCrudApi \Middleware \Router \Router ;
9961
+ use Tqdev \PhpCrudApi \Record \ErrorCode ;
9962
+ use Tqdev \PhpCrudApi \RequestUtils ;
9963
+
9964
+ class WpAuthMiddleware extends Middleware
9965
+ {
9966
+ public function __construct (Router $ router , Responder $ responder , Config $ config , string $ middleware )
9967
+ {
9968
+ parent ::__construct ($ router , $ responder , $ config , $ middleware );
9969
+ }
9970
+
9971
+ public function process (ServerRequestInterface $ request , RequestHandlerInterface $ next ): ResponseInterface
9972
+ {
9973
+ define ('WP_USE_THEMES ' , false ); // Don't load theme support functionality
9974
+ $ wpDirectory = $ this ->getProperty ('wpDirectory ' , '. ' );
9975
+ require_once ("$ wpDirectory/wp-load.php " );
9976
+ $ path = RequestUtils::getPathSegment ($ request , 1 );
9977
+ $ method = $ request ->getMethod ();
9978
+ if ($ method == 'POST ' && $ path == 'login ' ) {
9979
+ $ body = $ request ->getParsedBody ();
9980
+ $ usernameFormFieldName = $ this ->getProperty ('usernameFormField ' , 'username ' );
9981
+ $ passwordFormFieldName = $ this ->getProperty ('passwordFormField ' , 'password ' );
9982
+ $ username = isset ($ body ->$ usernameFormFieldName ) ? $ body ->$ usernameFormFieldName : '' ;
9983
+ $ password = isset ($ body ->$ passwordFormFieldName ) ? $ body ->$ passwordFormFieldName : '' ;
9984
+ $ user = wp_signon ([
9985
+ 'user_login ' => $ username ,
9986
+ 'user_password ' => $ password ,
9987
+ 'remember ' => false ,
9988
+ ]);
9989
+ if ($ user ->ID ) {
9990
+ return $ this ->responder ->success ($ user );
9991
+ }
9992
+ return $ this ->responder ->error (ErrorCode::AUTHENTICATION_FAILED , $ username );
9993
+ }
9994
+ if ($ method == 'POST ' && $ path == 'logout ' ) {
9995
+ if (is_user_logged_in ()) {
9996
+ wp_logout ();
9997
+ return $ this ->responder ->success ($ user );
9998
+ }
9999
+ return $ this ->responder ->error (ErrorCode::AUTHENTICATION_REQUIRED , '' );
10000
+ }
10001
+ if ($ method == 'GET ' && $ path == 'me ' ) {
10002
+ if (is_user_logged_in ()) {
10003
+ return $ this ->responder ->success (wp_get_current_user ());
10004
+ }
10005
+ return $ this ->responder ->error (ErrorCode::AUTHENTICATION_REQUIRED , '' );
10006
+ }
10007
+ if (!is_user_logged_in ()) {
10008
+ $ authenticationMode = $ this ->getProperty ('mode ' , 'required ' );
10009
+ if ($ authenticationMode == 'required ' ) {
10010
+ return $ this ->responder ->error (ErrorCode::AUTHENTICATION_REQUIRED , '' );
10011
+ }
10012
+ }
10013
+ return $ next ->handle ($ request );
10014
+ }
10015
+ }
10016
+ }
10017
+
9952
10018
// file: src/Tqdev/PhpCrudApi/Middleware/XmlMiddleware.php
9953
10019
namespace Tqdev \PhpCrudApi \Middleware {
9954
10020
@@ -12184,6 +12250,7 @@ private function setHabtmValues(ReflectedTable $t1, ReflectedTable $t2, array &$
12184
12250
use Tqdev \PhpCrudApi \Middleware \SslRedirectMiddleware ;
12185
12251
use Tqdev \PhpCrudApi \Middleware \TextSearchMiddleware ;
12186
12252
use Tqdev \PhpCrudApi \Middleware \ValidationMiddleware ;
12253
+ use Tqdev \PhpCrudApi \Middleware \WpAuthMiddleware ;
12187
12254
use Tqdev \PhpCrudApi \Middleware \XmlMiddleware ;
12188
12255
use Tqdev \PhpCrudApi \Middleware \XsrfMiddleware ;
12189
12256
use Tqdev \PhpCrudApi \OpenApi \OpenApiService ;
@@ -12240,6 +12307,9 @@ public function __construct(Config $config)
12240
12307
case 'dbAuth ' :
12241
12308
new DbAuthMiddleware ($ router , $ responder , $ config , $ middleware , $ reflection , $ db );
12242
12309
break ;
12310
+ case 'wpAuth ' :
12311
+ new WpAuthMiddleware ($ router , $ responder , $ config , $ middleware );
12312
+ break ;
12243
12313
case 'reconnect ' :
12244
12314
new ReconnectMiddleware ($ router , $ responder , $ config , $ middleware , $ reflection , $ db );
12245
12315
break ;
0 commit comments