diff --git a/app/Http/Controllers/Web/RealNameController.php b/app/Http/Controllers/Web/RealNameController.php index 25d079f..ed111ce 100644 --- a/app/Http/Controllers/Web/RealNameController.php +++ b/app/Http/Controllers/Web/RealNameController.php @@ -5,6 +5,7 @@ use App\Http\Controllers\Controller; use App\Support\RealNameSupport; use Illuminate\Http\Request; +use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Cache; class RealNameController extends Controller @@ -16,6 +17,18 @@ public function store(Request $request) 'id_card' => 'required|string|size:18|unique:users,id_card', ]); + $realNameSupport = new RealNameSupport(); + + + $birthday = $realNameSupport->getBirthday($request->input('id_card')); + // 检查年龄是否在区间内 settings.supports.real_name.min_age ~ settings.supports.real_name.max_age + if (Carbon::now()->diffInYears($birthday) < config('settings.supports.real_name.min_age') || Carbon::now()->diffInYears($birthday) > config('settings.supports.real_name.max_age')) { + $message = '至少需要 ' . config('settings.supports.real_name.min_age') . ' 岁,最大 ' . config('settings.supports.real_name.max_age') . ' 岁。'; + + return back()->with('error', $message); + } + + $user = $request->user(); if ($user->real_name_verified_at !== null) { @@ -26,7 +39,6 @@ public function store(Request $request) return back()->with('error', '您的余额不足。请保证余额大于 1 元。'); } - $realNameSupport = new RealNameSupport(); $output = $realNameSupport->create($user->id, $request->input('real_name'), $request->input('id_card')); // 标记用户正在实名,缓存 600s diff --git a/app/Models/User.php b/app/Models/User.php index 6b5e0bc..04df001 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -91,8 +91,6 @@ protected static function boot() $user->birthday_at = null; } } - - } }); diff --git a/app/Support/RealNameSupport.php b/app/Support/RealNameSupport.php index 5ad2266..10fed43 100644 --- a/app/Support/RealNameSupport.php +++ b/app/Support/RealNameSupport.php @@ -3,6 +3,7 @@ namespace App\Support; use Illuminate\Http\Client\PendingRequest; +use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Http; use Illuminate\Support\Str; @@ -139,4 +140,13 @@ private function verifyIfSuccess(string $request, string $sign): bool return $flag === 1; } + public function getBirthday(string $id_card): string + { + $year = substr($id_card, 6, 4); + $month = substr($id_card, 10, 2); + $day = substr($id_card, 12, 2); + + return $year . '-' . $month . '-' . $day; + } + } diff --git a/config/settings.php b/config/settings.php index 40fa01f..d027cac 100644 --- a/config/settings.php +++ b/config/settings.php @@ -25,7 +25,9 @@ ], 'supports' => [ 'real_name' => [ - 'code' => env('SUPPORT_REAL_NAME_APP_CODE') + 'code' => env('SUPPORT_REAL_NAME_APP_CODE'), + 'min_age' => env('SUPPORT_REAL_NAME_MIN_AGE', 13), + 'max_age' => env('SUPPORT_REAL_NAME_MAX_AGE', 60), ] ], 'forum' => [