{"id":635,"date":"2025-06-22T12:12:12","date_gmt":"2025-06-22T12:12:12","guid":{"rendered":"https:\/\/expressbus.eg\/expressbus-login\/"},"modified":"2025-09-09T12:47:47","modified_gmt":"2025-09-09T12:47:47","slug":"expressbus-login","status":"publish","type":"page","link":"https:\/\/expressbus.eg\/ar\/expressbus-login\/","title":{"rendered":"\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"635\" class=\"elementor elementor-635\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-42c527e e-grid e-con-full e-con e-parent\" data-id=\"42c527e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-e85227a e-flex e-con-boxed e-con e-child\" data-id=\"e85227a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-02a4115 elementor-widget elementor-widget-image\" data-id=\"02a4115\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"722\" height=\"630\" src=\"https:\/\/expressbus.eg\/wp-content\/uploads\/2025\/05\/User-Register.jpg\" class=\"attachment-large size-large wp-image-88\" alt=\"\" srcset=\"https:\/\/expressbus.eg\/wp-content\/uploads\/2025\/05\/User-Register.jpg 722w, https:\/\/expressbus.eg\/wp-content\/uploads\/2025\/05\/User-Register-300x262.jpg 300w\" sizes=\"(max-width: 722px) 100vw, 722px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-57ab817 e-flex e-con-boxed e-con e-child\" data-id=\"57ab817\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4cfc223 elementor-widget elementor-widget-heading\" data-id=\"4cfc223\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">Login<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4d640ca e-flex e-con-boxed e-con e-child\" data-id=\"4d640ca\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-999c853 elementor-widget elementor-widget-html\" data-id=\"999c853\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"expressbus-wrapper\">\n<div class=\"expressbus-login-form-container\">\n    <div class=\"expressbus-form-wrapper\">\n                    <h2 class=\"expressbus-form-title\">Login to Your Account<\/h2>\n                \n        <div id=\"expressbus-login-messages\" class=\"expressbus-messages\"><\/div>\n        \n        <form id=\"expressbus-login-form\" class=\"expressbus-form\" method=\"post\">\n            <div class=\"expressbus-form-group\">\n                <input type=\"tel\" id=\"expressbus-phone\" name=\"phone\" class=\"expressbus-form-control\" placeholder=\"\u0631\u0642\u0645 \u0627\u0644\u0647\u0627\u062a\u0641\" required>\n            <\/div>\n            \n            <div class=\"expressbus-form-group\">\n                <input type=\"password\" id=\"expressbus-password\" name=\"password\" class=\"expressbus-form-control\" placeholder=\"\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631\" required>\n            <\/div>\n            \n            <div class=\"expressbus-form-group\">\n                <label class=\"expressbus-checkbox-label\">\n                    <input type=\"checkbox\" id=\"expressbus-remember\" name=\"remember\" value=\"1\">\n                    \u062a\u0630\u0643\u0631\u0646\u064a                <\/label>\n            <\/div>\n            \n            <div class=\"expressbus-form-group\">\n                <button type=\"submit\" class=\"expressbus-btn expressbus-btn-primary\">\n                    Login                <\/button>\n            <\/div>\n            \n            <input type=\"hidden\" id=\"expressbus_login_nonce\" name=\"expressbus_login_nonce\" value=\"c2c84db635\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/ar\/wp-json\/wp\/v2\/pages\/635\" \/>        <\/form>\n        \n        <div class=\"expressbus-form-links\">\n            <a href=\"#\" id=\"expressbus-forgot-password-link\" class=\"expressbus-link\">\n                Forgot your password?            <\/a>\n                                            <a href=\"https:\/\/expressbus.eg\/ar\/expressbus-register\/\" class=\"expressbus-link\">\n                    \u0644\u064a\u0633 \u0644\u062f\u064a\u0643 \u062d\u0633\u0627\u0628\u061f \u0633\u062c\u0644 \u0647\u0646\u0627                <\/a>\n                    <\/div>\n        <!-- Forgot password (SMS OTP) -->\n        <div id=\"expressbus-forgot-password\" class=\"expressbus-forgot-password\" style=\"display:none; margin-top:20px;\">\n            <h3 class=\"expressbus-form-title\">Reset your password<\/h3>\n            <div id=\"expressbus-forgot-messages\" class=\"expressbus-messages\"><\/div>\n\n            <!-- Step 1: request code -->\n            <div id=\"expressbus-forgot-step-phone\">\n                <div class=\"expressbus-form-group\">\n                    <input type=\"tel\" id=\"expressbus-forgot-phone\" class=\"expressbus-form-control\" placeholder=\"\u0631\u0642\u0645 \u0627\u0644\u0647\u0627\u062a\u0641\">\n                <\/div>\n                <div class=\"expressbus-form-group\">\n                    <button type=\"button\" id=\"expressbus-send-otp-btn\" class=\"expressbus-btn expressbus-btn-primary\">\n                        Send verification code                    <\/button>\n                <\/div>\n            <\/div>\n\n            <!-- Step 2: enter code + new password -->\n            <div id=\"expressbus-forgot-step-reset\" style=\"display:none;\">\n                <div class=\"expressbus-form-group\">\n                    <input type=\"text\" inputmode=\"numeric\" id=\"expressbus-forgot-otp\" class=\"expressbus-form-control\" placeholder=\"Verification code\">\n                <\/div>\n                <div class=\"expressbus-form-group\">\n                    <input type=\"password\" id=\"expressbus-forgot-new-password\" class=\"expressbus-form-control\" placeholder=\"New password\">\n                <\/div>\n                <div class=\"expressbus-form-group\">\n                    <input type=\"password\" id=\"expressbus-forgot-confirm-password\" class=\"expressbus-form-control\" placeholder=\"Confirm new password\">\n                <\/div>\n                <div class=\"expressbus-form-group\">\n                    <button type=\"button\" id=\"expressbus-reset-password-btn\" class=\"expressbus-btn expressbus-btn-primary\">\n                        Change password                    <\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<script type=\"text\/javascript\">\njQuery(document).ready(function($) {\n    var expressbusOtpNonce = '6dbae0156c';\n    var expressbusAjaxUrl = 'https:\/\/expressbus.eg\/wp-admin\/admin-ajax.php';\n\n    \/\/ Toggle the forgot-password panel.\n    $('#expressbus-forgot-password-link').on('click', function(e) {\n        e.preventDefault();\n        $('#expressbus-forgot-password').slideToggle();\n    });\n\n    function ebForgotMsg(type, text) {\n        $('#expressbus-forgot-messages').html('<div class=\"expressbus-' + type + '\">' + text + '<\/div>');\n    }\n\n    \/\/ Step 1: send the OTP.\n    $('#expressbus-send-otp-btn').on('click', function() {\n        var $btn = $(this);\n        var phone = $('#expressbus-forgot-phone').val();\n        if (!phone) {\n            ebForgotMsg('error', 'Please provide your phone number.');\n            return;\n        }\n        $btn.prop('disabled', true);\n        $('#expressbus-forgot-messages').empty();\n        $.ajax({\n            url: expressbusAjaxUrl,\n            type: 'POST',\n            data: { action: 'expressbus_request_password_otp', nonce: expressbusOtpNonce, phone: phone },\n            success: function(response) {\n                if (response.success) {\n                    ebForgotMsg('success', response.data.message);\n                    $('#expressbus-forgot-step-reset').slideDown();\n                } else {\n                    ebForgotMsg('error', response.data.message);\n                }\n            },\n            error: function() {\n                ebForgotMsg('error', '\u062d\u062f\u062b \u062e\u0637\u0623. \u064a\u0631\u062c\u0649 \u0627\u0644\u0645\u062d\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649.');\n            },\n            complete: function() { $btn.prop('disabled', false); }\n        });\n    });\n\n    \/\/ Step 2: verify code + set new password.\n    $('#expressbus-reset-password-btn').on('click', function() {\n        var $btn = $(this);\n        var phone = $('#expressbus-forgot-phone').val();\n        var otp = $('#expressbus-forgot-otp').val();\n        var password = $('#expressbus-forgot-new-password').val();\n        var confirm = $('#expressbus-forgot-confirm-password').val();\n\n        if (!otp || !password) {\n            ebForgotMsg('error', 'Please fill in all fields.');\n            return;\n        }\n        if (password !== confirm) {\n            ebForgotMsg('error', '\u0643\u0644\u0645\u0627\u062a \u0627\u0644\u0645\u0631\u0648\u0631 \u063a\u064a\u0631 \u0645\u062a\u0637\u0627\u0628\u0642\u0629.');\n            return;\n        }\n        $btn.prop('disabled', true);\n        $('#expressbus-forgot-messages').empty();\n        $.ajax({\n            url: expressbusAjaxUrl,\n            type: 'POST',\n            data: {\n                action: 'expressbus_reset_password_with_otp',\n                nonce: expressbusOtpNonce,\n                phone: phone,\n                otp: otp,\n                password: password,\n                password_confirmation: confirm\n            },\n            success: function(response) {\n                if (response.success) {\n                    ebForgotMsg('success', response.data.message);\n                    $('#expressbus-forgot-step-phone, #expressbus-forgot-step-reset').slideUp();\n                } else {\n                    ebForgotMsg('error', response.data.message);\n                }\n            },\n            error: function() {\n                ebForgotMsg('error', '\u062d\u062f\u062b \u062e\u0637\u0623. \u064a\u0631\u062c\u0649 \u0627\u0644\u0645\u062d\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649.');\n            },\n            complete: function() { $btn.prop('disabled', false); }\n        });\n    });\n\n    $('#expressbus-login-form').on('submit', function(e) {\n        e.preventDefault();\n        \n        var $form = $(this);\n        var $messages = $('#expressbus-login-messages');\n        var $submitBtn = $form.find('button[type=\"submit\"]');\n        \n        \/\/ Clear previous messages\n        $messages.empty();\n        \n        \/\/ Disable submit button\n        $submitBtn.prop('disabled', true).text('\u062c\u0627\u0631\u064a \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644...');\n        \n        \/\/ Get redirect_to from URL parameter\n        var urlParams = new URLSearchParams(window.location.search);\n        var redirectTo = urlParams.get('redirect_to') || '';\n        \n        \/\/ Get form data\n        var formData = {\n            action: 'expressbus_login',\n            phone: $('#expressbus-phone').val(),\n            password: $('#expressbus-password').val(),\n            remember: $('#expressbus-remember').is(':checked') ? 1 : 0,\n            nonce: $('input[name=\"expressbus_login_nonce\"]').val(),\n            redirect_to: redirectTo\n        };\n        \n        \/\/ Make AJAX request\n        $.ajax({\n            url: 'https:\/\/expressbus.eg\/wp-admin\/admin-ajax.php',\n            type: 'POST',\n            data: formData,\n            success: function(response) {\n                if (response.success) {\n                    $messages.html('<div class=\"expressbus-success\">' + response.data.message + '<\/div>');\n                    \n                    \/\/ Redirect after successful login\n                    if (response.data.redirect_url) {\n                        window.location.href = response.data.redirect_url;\n                    } else {\n                        window.location.reload();\n                    }\n                } else {\n                    $messages.html('<div class=\"expressbus-error\">' + response.data.message + '<\/div>');\n                }\n            },\n            error: function() {\n                $messages.html('<div class=\"expressbus-error\">\u062d\u062f\u062b \u062e\u0637\u0623. \u064a\u0631\u062c\u0649 \u0627\u0644\u0645\u062d\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649.<\/div>');\n            },\n            complete: function() {\n                \/\/ Re-enable submit button\n                $submitBtn.prop('disabled', false).text('Login');\n            }\n        });\n    });\n});\n<\/script><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-635","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/expressbus.eg\/ar\/wp-json\/wp\/v2\/pages\/635","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/expressbus.eg\/ar\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/expressbus.eg\/ar\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/expressbus.eg\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/expressbus.eg\/ar\/wp-json\/wp\/v2\/comments?post=635"}],"version-history":[{"count":45,"href":"https:\/\/expressbus.eg\/ar\/wp-json\/wp\/v2\/pages\/635\/revisions"}],"predecessor-version":[{"id":1097,"href":"https:\/\/expressbus.eg\/ar\/wp-json\/wp\/v2\/pages\/635\/revisions\/1097"}],"wp:attachment":[{"href":"https:\/\/expressbus.eg\/ar\/wp-json\/wp\/v2\/media?parent=635"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}