- WIP on securing PostRequestAuth and began adding some LAN auth also

This commit is contained in:
mcndave committed 2026-07-01 14:29:45 -04:00
1 parent d149e0a741
commit 45546fbcc0
4 files changed
+107 -5

No files matched your search

@@ -0,0 +1,55 @@
<?php
namespace Ulmus\User\Authorize;
use Psr\Http\Message\ServerRequestInterface;
use Ulmus\User\Entity\UserInterface;
use Ulmus\User\Lib\Authenticate;
class MacAddressAuthentication implements AuthorizeMethodInterface
{
public function __construct(
public Authenticate $authenticate,
protected string $fieldUser = "mac",
) {}
public function connect(ServerRequestInterface $request, UserInterface $user): bool
{
$server = $request->getServerParams();
# var_dump($server, $this->getArpMacAddress($server['REMOTE_ADDR']));die();
return false;
return $this->authenticate->authenticate([ $this->fieldUser => $post[$this->postFieldUser] ], $post[$this->postFieldPassword]);
}
public function catchRequest(ServerRequestInterface $request): bool
{
return true;
$post = $request->getParsedBody();
return strtoupper( $request->getMethod() ) === "POST" && isset($post[$this->postFieldUser], $post[$this->postFieldPassword]);
}
protected function getArpMacAddress(string $ip) : ?string
{
#run the external command, break output into lines
$arp = shell_exec(sprintf("arp -a %s", escapeshellarg($ip)));
$lines = explode("\n", $arp);
#look for the output line describing our IP address
foreach($lines as $line)
{
$cols = preg_split('/\s+/', trim($line));
if ($cols[0] === $ip)
{
return $cols[0];
}
}
return false;
}
}