validate([ 'bridge_api_key' => ['required', 'string'], 'wp_user_id' => ['required', 'integer'], 'wp_user_email' => ['required', 'email'], 'wp_user_name' => ['nullable', 'string', 'max:255'], 'token_name' => ['nullable', 'string', 'max:100'], ]); // ۱. بررسی API Key $expectedKey = config('ifnex.bridge_api_key'); if (empty($expectedKey) || $expectedKey === 'change-this-secret-key') { return response()->json([ 'success' => false, 'message' => 'Bridge API Key تنظیم نشده است.', ], 500); } if (!hash_equals($expectedKey, $validated['bridge_api_key'])) { return response()->json([ 'success' => false, 'message' => 'Bridge API Key نامعتبر است.', ], 401); } // ۲. پیدا کردن کاربر در لاراول (با ایمیل) $user = User::where('email', $validated['wp_user_email'])->first(); if (!$user) { return response()->json([ 'success' => false, 'message' => 'کاربر در سیستم یافت نشد. لطفاً با مدیر سیستم تماس بگیرید.', 'debug' => 'email_not_found: ' . $validated['wp_user_email'], ], 404); } // ۳. بررسی فعال بودن کاربر if (isset($user->is_active) && !$user->is_active) { return response()->json([ 'success' => false, 'message' => 'حساب کاربری شما غیرفعال است.', ], 403); } // ۴. ذخیره wp_user_id در metadata کاربر (اختیاری، برای ردیابی) $metadata = $user->metadata ?? []; if (!is_array($metadata)) $metadata = []; $metadata['wp_user_id'] = $validated['wp_user_id']; $metadata['wp_synced_at'] = now()->toIso8601String(); // اگر فیلد metadata در User هست، ذخیره کن if (in_array('metadata', \Schema::getColumnListing('users'))) { $user->update(['metadata' => $metadata]); } // ۵. ایجاد توکن Sanctum $tokenName = $validated['token_name'] ?? 'wordpress-bridge'; $token = $user->createToken($tokenName)->plainTextToken; return response()->json([ 'success' => true, 'token' => $token, 'user' => [ 'id' => $user->id, 'name' => $user->name, 'email' => $user->email, 'wp_user_id' => $validated['wp_user_id'], ], ]); } }