use Illuminate\Http\Request; use Kreait\Firebase\Auth as FirebaseAuth; use App\Models\User; class AuthController extends Controller { protected $auth; public function __construct(FirebaseAuth $auth) { $this->auth = $auth; } public function verifyOtp(Request $request) { $request->validate([ 'id_token' => 'required' ]); try { $verifiedIdToken = $this->auth->verifyIdToken($request->id_token); $uid = $verifiedIdToken->claims()->get('sub'); $firebaseUser = $this->auth->getUser($uid); $phone = $firebaseUser->phoneNumber; // 👉 Create / Login user $user = User::firstOrCreate( ['phone' => $phone], ['name' => 'User'] ); auth()->login($user); return response()->json([ 'success' => true, 'user' => $user ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'Invalid OTP' ], 401); } } } Route::post('/verify-otp', [AuthController::class, 'verifyOtp']);