mirror of
https://github.com/lkddi/nexusphp.git
synced 2026-04-14 20:40:49 +08:00
nastools approve
This commit is contained in:
@@ -95,8 +95,7 @@ class Test extends Command
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$r = unserialize('{"command":"O:31:\"App\\Jobs\\CalculateUserSeedBonus\":3:{s:41:\"\u0000App\\Jobs\\CalculateUserSeedBonus\u0000beginUid\";i:32000;s:39:\"\u0000App\\Jobs\\CalculateUserSeedBonus\u0000endUid\";i:34000;s:42:\"\u0000App\\Jobs\\CalculateUserSeedBonus\u0000requestId\";s:32:\"2f6563f399f26f57b02882463199a49d\";}');
|
||||
dd($r);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -131,6 +131,15 @@ class EditSetting extends Page implements Forms\Contracts\HasForms
|
||||
->integer()
|
||||
->label(__('label.setting.system.maximum_number_of_medals_can_be_worn'))
|
||||
,
|
||||
Forms\Components\TextInput::make('system.cookie_valid_days')
|
||||
->integer()
|
||||
->label(__('label.setting.system.cookie_valid_days'))
|
||||
,
|
||||
Forms\Components\TextInput::make('system.maximum_upload_speed')
|
||||
->integer()
|
||||
->label(__('label.setting.system.maximum_upload_speed'))
|
||||
->helperText(__('label.setting.system.maximum_upload_speed_help'))
|
||||
,
|
||||
])->columns(2);
|
||||
|
||||
$tabs = apply_filter('nexus_setting_tabs', $tabs);
|
||||
|
||||
@@ -58,7 +58,7 @@ class AuthenticateController extends Controller
|
||||
// $passhash = md5($user->passhash . $ip);
|
||||
$passhash = md5($user->passhash);
|
||||
do_log(sprintf('passhash: %s, ip: %s, md5: %s', $user->passhash, $ip, $passhash));
|
||||
logincookie($user->id, $passhash,false, 0x7fffffff, true, true, true);
|
||||
logincookie($user->id, $passhash,false, get_setting('system.cookie_valid_days', 365) * 86400, true, true, true);
|
||||
$user->last_login = now();
|
||||
$user->save();
|
||||
}
|
||||
@@ -66,5 +66,15 @@ class AuthenticateController extends Controller
|
||||
return redirect('index.php');
|
||||
}
|
||||
|
||||
public function nasToolsApprove(Request $request)
|
||||
{
|
||||
$request->validate([
|
||||
'data' => 'required|string'
|
||||
]);
|
||||
$user = $this->repository->nasToolsApprove($request->data);
|
||||
$resource = new UserResource($user);
|
||||
return $this->success($resource);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ class Kernel extends HttpKernel
|
||||
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
|
||||
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
|
||||
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
|
||||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
||||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequestsWithRedis::class,
|
||||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
|
||||
'permission' => \App\Http\Middleware\Permission::class,
|
||||
'admin' => \App\Http\Middleware\Admin::class,
|
||||
|
||||
@@ -16,7 +16,6 @@ class UserResource extends JsonResource
|
||||
{
|
||||
$out = [
|
||||
'id' => $this->id,
|
||||
'email' => $this->email,
|
||||
'username' => $this->username,
|
||||
'status' => $this->status,
|
||||
'enabled' => $this->enabled,
|
||||
@@ -32,7 +31,7 @@ class UserResource extends JsonResource
|
||||
'downloaded' => $this->downloaded,
|
||||
'downloaded_text' => mksize($this->downloaded),
|
||||
'bonus' => number_format($this->seedbonus, 1),
|
||||
'seed_points' => floatval($this->seed_points),
|
||||
'seed_points' => number_format($this->seed_points, 1),
|
||||
'seedtime' => $this->seedtime,
|
||||
'seedtime_text' => mkprettytime($this->seedtime),
|
||||
'leechtime' => $this->leechtime,
|
||||
@@ -41,6 +40,7 @@ class UserResource extends JsonResource
|
||||
'valid_medals' => MedalResource::collection($this->whenLoaded('valid_medals')),
|
||||
];
|
||||
if ($request->routeIs('user.me')) {
|
||||
$out['email'] = $this->email;
|
||||
$out['downloaded_human'] = mksize($this->downloaded);
|
||||
$out['uploaded_human'] = mksize($this->uploaded);
|
||||
$out['seed_time'] = mkprettytime($this->seedtime);
|
||||
|
||||
@@ -50,6 +50,11 @@ class RouteServiceProvider extends ServiceProvider
|
||||
Route::prefix('api')
|
||||
->namespace($this->namespace)
|
||||
->group(base_path('routes/tracker.php'));
|
||||
|
||||
Route::prefix('api')
|
||||
->namespace($this->namespace)
|
||||
->middleware('throttle:third-party')
|
||||
->group(base_path('routes/third-party.php'));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -63,5 +68,9 @@ class RouteServiceProvider extends ServiceProvider
|
||||
RateLimiter::for('api', function (Request $request) {
|
||||
return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());
|
||||
});
|
||||
|
||||
RateLimiter::for('third-party', function (Request $request) {
|
||||
return Limit::perMinute(10)->by(getip());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace App\Repositories;
|
||||
use App\Http\Resources\UserResource;
|
||||
use App\Models\User;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Encryption\Encrypter;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Validation\UnauthorizedException;
|
||||
|
||||
@@ -38,4 +39,25 @@ class AuthenticateRepository extends BaseRepository
|
||||
$result = $user->tokens()->delete();
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function nasToolsApprove(string $json)
|
||||
{
|
||||
$key = env('NAS_TOOLS_KEY');
|
||||
$encrypter = new Encrypter($key);
|
||||
$decrypted = $encrypter->decryptString($json);
|
||||
$data = json_decode($decrypted, true);
|
||||
if (!is_array($data) || !isset($data['uid'], $data['passkey'])) {
|
||||
throw new \InvalidArgumentException("Invalid data format.");
|
||||
}
|
||||
$user = User::query()
|
||||
->where('id', $data['uid'])
|
||||
->where('passkey', $data['passkey'])
|
||||
->first()
|
||||
;
|
||||
if (!$user) {
|
||||
throw new \InvalidArgumentException("Invalid uid or passkey.");
|
||||
}
|
||||
$user->checkIsNormal();
|
||||
return $user;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user