define('SSO_SHARED_SECRET', 'e9c84a1f0b56f74c8f5c57dfd4d59af4'); add_action('init', function () { if (strpos($_SERVER['REQUEST_URI'], '/sso-consume') !== false && isset($_GET['data'], $_GET['token'])) { $payload = $_GET['data']; $token = $_GET['token']; $expected = hash_hmac('sha256', $payload, SSO_SHARED_SECRET); if (!hash_equals($expected, $token)) { wp_die('Μη έγκυρο token'); } $data = json_decode(base64_decode($payload), true); if (!$data || !isset($data['email'])) { wp_die('Άκυρα ή ελλιπή δεδομένα'); } $user = get_user_by('email', $data['email']); if (!$user) { $user_id = wp_create_user($data['user'], wp_generate_password(), $data['email']); } else { $user_id = $user->ID; } foreach ($data as $key => $value) { update_user_meta($user_id, 'sso_' . $key, sanitize_text_field($value)); } wp_set_auth_cookie($user_id); wp_set_current_user($user_id); setcookie('sso_user_data', base64_encode(json_encode($data)), time() + 3600, '/'); $target = $_GET['target'] ?? '/'; wp_redirect(home_url($target)); exit; } });
Κύλιση στην κορυφή