blessing-skin-server/app/Http/Middleware/CheckPlayerExist.php

50 lines
1.4 KiB
PHP
Raw Normal View History

2016-07-21 22:01:57 +08:00
<?php
2016-08-28 10:05:21 +08:00
namespace App\Http\Middleware;
2016-07-21 22:01:57 +08:00
2019-12-14 11:10:37 +08:00
use App\Events\CheckPlayerExists;
2016-10-16 18:16:15 +08:00
use App\Models\Player;
2019-12-14 11:10:37 +08:00
use Event;
2019-04-24 13:10:03 +08:00
use Illuminate\Support\Arr;
2016-07-21 22:01:57 +08:00
2016-12-17 22:45:08 +08:00
class CheckPlayerExist
2016-07-21 22:01:57 +08:00
{
2016-08-28 10:05:21 +08:00
public function handle($request, \Closure $next)
2016-07-21 22:01:57 +08:00
{
2019-04-24 13:10:03 +08:00
$pid = Arr::get($request->route()->parameters, 'pid') ?? $request->input('pid');
2019-12-14 11:10:37 +08:00
if (!$request->isMethod('get') && !is_null($pid)) {
2019-04-24 13:10:03 +08:00
if (is_null(Player::find($pid))) {
2019-04-23 19:14:41 +08:00
return json(trans('general.unexistent-player'), 1);
} else {
return $next($request);
}
}
2019-12-30 11:09:01 +08:00
preg_match('/\/([^\/]*)\.json/', $request->getUri(), $matches);
$player_name = urldecode($matches[1]);
$responses = event(new CheckPlayerExists($player_name));
2019-05-01 10:38:50 +08:00
if (is_array($responses)) {
2019-04-06 23:16:14 +08:00
// @codeCoverageIgnoreStart
2019-05-01 10:38:50 +08:00
foreach ($responses as $r) {
if ($r) {
return $next($request);
}
2019-04-06 23:16:14 +08:00
}
// @codeCoverageIgnoreEnd
2016-07-21 22:01:57 +08:00
}
2019-12-14 11:10:37 +08:00
if (!Player::where('name', $player_name)->get()->isEmpty()) {
return $next($request);
}
if (option('return_204_when_notfound')) {
return response('', 204, [
'Cache-Control' => 'public, max-age='.option('cache_expire_time'),
]);
} else {
return abort(404, trans('general.unexistent-player'));
}
2016-07-21 22:01:57 +08:00
}
}