diff --git a/app/Http/Controllers/Application/UserController.php b/app/Http/Controllers/Application/UserController.php new file mode 100644 index 0000000..858db13 --- /dev/null +++ b/app/Http/Controllers/Application/UserController.php @@ -0,0 +1,70 @@ +validate([ + 'traffic' => 'required|numeric|min:1' + ]); + + $traffic = $request->input('traffic'); + + Cache::lock('user_traffic_' . $user->id)->get(function () use ($user, $traffic) { + $user->update([ + 'traffic' => $user->traffic + $traffic + ]); + }); + + return response()->json([ + 'message' => 'success', + ]); + } +} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 923a83d..7d16dd9 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -3,6 +3,7 @@ namespace App\Http; use App\Http\Middleware\Admin; +use App\Http\Middleware\ApiToken; use App\Http\Middleware\Authenticate; use App\Http\Middleware\EncryptCookies; use App\Http\Middleware\PreventRequestsDuringMaintenance; @@ -87,6 +88,6 @@ class Kernel extends HttpKernel 'signed' => ValidateSignature::class, 'throttle' => ThrottleRequests::class, 'verified' => EnsureEmailIsVerified::class, - 'admin' => Admin::class, + 'api_token' => ApiToken::class, ]; } diff --git a/routes/api.php b/routes/api.php index a2f6b91..97802d1 100644 --- a/routes/api.php +++ b/routes/api.php @@ -6,7 +6,7 @@ use App\Http\Controllers\Api\ServerController; use App\Http\Controllers\Api\TunnelController; use App\Http\Controllers\Api\PortManagerController; - +use App\Http\Controllers\Application\UserController as ApplicationUserController; Route::prefix('tunnel')->name('api.tunnel.')->group(function () { Route::post('/handler/{key}', [PortManagerController::class, 'handler'])->name('handler'); @@ -19,3 +19,8 @@ Route::post('tunnels/{tunnel}/close', [TunnelController::class, 'close']); Route::apiResource('servers', ServerController::class); }); + +Route::prefix('application')->name('application.')->middleware('api_token')->group(function () { + Route::post('users/{user}/traffic', [ApplicationUserController::class, 'addTraffic']); +}); +