Refactor IP History

This commit is contained in:
xiaomlove
2025-10-14 14:54:44 +07:00
parent 0f172a94be
commit ba8715a3f9
34 changed files with 494 additions and 131 deletions

View File

@@ -1,30 +0,0 @@
<?php
namespace App\Http\Middleware;
use App\Models\User;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Validation\UnauthorizedException;
class Admin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
/** @var CheckUserStatus $user */
$user = $request->user();
if (!$user || !$user->canAccessAdmin()) {
do_log("denied!");
throw new UnauthorizedException('Unauthorized!');
}
do_log("allow!");
return $next($request);
}
}

View File

@@ -2,6 +2,7 @@
namespace App\Http\Middleware;
use App\Repositories\IpLogRepository;
use Closure;
use Illuminate\Http\Request;
use Nexus\Nexus;

View File

@@ -0,0 +1,26 @@
<?php
namespace App\Http\Middleware;
use App\Repositories\IpLogRepository;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class LogUserIp
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
$response = $next($request);
$user = $request->user();
if ($user) {
IpLogRepository::saveToCache($user->id);
}
return $response;
}
}

View File

@@ -1,30 +0,0 @@
<?php
namespace App\Http\Middleware;
use App\Models\User;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Validation\UnauthorizedException;
class Permission
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
/** @var CheckUserStatus $user */
$user = $request->user();
if (!$user || (nexus()->isPlatformAdmin() && !$user->canAccessAdmin())) {
do_log("denied!");
throw new UnauthorizedException('Unauthorized!');
}
do_log("allow!");
return $next($request);
}
}

View File

@@ -1,29 +0,0 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Validation\UnauthorizedException;
class Platform
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
$platform = nexus()->getPlatform();
if (empty($platform)) {
throw new \InvalidArgumentException("Require platform header.");
}
if (!nexus()->isPlatformValid()) {
throw new \InvalidArgumentException("Invalid platform: " . $platform);
}
return $next($request);
}
}