{"id":2887,"date":"2025-12-27T07:08:33","date_gmt":"2025-12-27T07:08:33","guid":{"rendered":"https:\/\/www.cconnectgh.org\/?page_id=2887"},"modified":"2025-12-27T19:05:27","modified_gmt":"2025-12-27T19:05:27","slug":"forgot-password","status":"publish","type":"page","link":"https:\/\/www.cconnectgh.org\/?page_id=2887","title":{"rendered":"Forgot Password"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2887\" class=\"elementor elementor-2887\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c05aa8c e-grid e-con-boxed e-con e-parent\" data-id=\"c05aa8c\" 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-e2029b8 elementor-widget elementor-widget-google_maps\" data-id=\"e2029b8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"google_maps.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-custom-embed\">\n\t\t\t<iframe loading=\"lazy\"\n\t\t\t\t\tsrc=\"https:\/\/maps.google.com\/maps?q=accra%2C%20ghana&#038;t=m&#038;z=14&#038;output=embed&#038;iwloc=near\"\n\t\t\t\t\ttitle=\"accra, ghana\"\n\t\t\t\t\taria-label=\"accra, ghana\"\n\t\t\t><\/iframe>\n\t\t<\/div>\n\t\t\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-ccdedcf e-grid e-con-boxed e-con e-parent\" data-id=\"ccdedcf\" 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-56487bb elementor-widget elementor-widget-shortcode\" data-id=\"56487bb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\r\n        <style>\r\n            .cc-ui-wrap{max-width:620px;margin:18px auto;padding:0 14px 22px;color:#fff;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;}\r\n            .cc-ui-surface{background:#0b0b0b;border-radius:14px;border:4px solid #1f1f1f;overflow:hidden;box-shadow:0 10px 24px rgba(0,0,0,.35);}\r\n            .cc-ui-head{padding:14px 14px 10px;border-bottom:1px solid #1b1b1b;background:#0e0e0e;}\r\n            .cc-ui-title{margin:0;font-size:24px;font-weight:900;letter-spacing:.2px;}\r\n            .cc-ui-sub{margin:6px 0 0;font-size:18px;color:rgba(255,255,255,.7);line-height:1.45;}\r\n            .cc-ui-body{padding:14px;}\r\n            .cc-msg{margin:0 0 12px;padding:10px 12px;border-radius:12px;font-size:14px;border:1px solid transparent;}\r\n            .cc-msg-success{background:rgba(34,197,94,.12);border-color:rgba(34,197,94,.25);color:#d1fae5;}\r\n            .cc-msg-error{background:rgba(220,38,38,.12);border-color:rgba(220,38,38,.25);color:#fecaca;}\r\n            .cc-field{margin-bottom:12px;}\r\n            .cc-label{display:block;font-size:13px;font-weight:800;margin-bottom:6px;color:rgba(255,255,255,.92);}\r\n            .cc-input{width:100%;padding:12px 12px;border-radius:12px;border:1px solid #2a2a2a;background:#111;color:#fff;font-size:15px;outline:none;}\r\n            .cc-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.15);}\r\n            .cc-btn{width:100%;padding:12px 14px;border-radius:14px;border:none;background:#2563eb;color:#fff;font-weight:900;font-size:15px;cursor:pointer;}\r\n            .cc-btn:hover{background:#1d4ed8;}\r\n            .cc-btn-secondary{background:#121212;border:1px solid #2a2a2a;}\r\n            .cc-btn-secondary:hover{background:#171717;}\r\n            .cc-rowlink{display:flex;gap:10px;align-items:center;justify-content:center;margin-top:10px;font-size:13px;color:rgba(255,255,255,.75);}\r\n            .cc-rowlink a{color:#93c5fd;text-decoration:none;font-weight:800;}\r\n            .cc-rowlink a:hover{text-decoration:underline;}\r\n            .cc-help{font-size:12px;color:rgba(255,255,255,.62);margin-top:8px;line-height:1.45;}\r\n            .cc-split{height:1px;background:#1f1f1f;margin:14px 0;}\r\n        <\/style>        <div class=\"cc-ui-wrap\">\r\n            <div class=\"cc-ui-surface\">\r\n                <div class=\"cc-ui-head\">\r\n                    <h3 class=\"cc-ui-title\">Forgot password<\/h3>\r\n                    <p class=\"cc-ui-sub\">Enter your email and we\u2019ll send you a reset token.<\/p>\r\n                <\/div>\r\n\r\n                <div class=\"cc-ui-body\">\r\n                    <div id=\"cc-forgot-msg\"><\/div>\r\n\r\n                    <form id=\"cc-forgot-form\">\r\n                        <div class=\"cc-field\">\r\n                            <label class=\"cc-label\">Email *<\/label>\r\n                            <input class=\"cc-input\" type=\"email\" name=\"email\" required autocomplete=\"email\">\r\n                        <\/div>\r\n\r\n                        <button class=\"cc-btn\" type=\"submit\">Send Reset Token<\/button>\r\n\r\n                        <div class=\"cc-rowlink\">\r\n                            <span>Already have a token?<\/span>\r\n                            <a href=\"https:\/\/www.cconnectgh.org\/?page_id=2892\">Reset Password<\/a>\r\n                        <\/div>\r\n\r\n                        <p class=\"cc-help\">\r\n                            Check your inbox and spam folder. The email contains a token you\u2019ll use on the reset page.\r\n                        <\/p>\r\n                    <\/form>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <script>\r\n        (function(){\r\n            const apiBase = \"https:\/\/api.cconnectgh.org\/\";\r\n            const resetUrl = \"https:\/\/www.cconnectgh.org\/?page_id=2892\";\r\n        \r\n            function setMsg(text, isError){\r\n                const box = document.getElementById('cc-forgot-msg');\r\n                if(!box) return;\r\n                if(!text){ box.innerHTML=''; box.className=''; return; }\r\n                box.className = 'cc-msg ' + (isError ? 'cc-msg-error' : 'cc-msg-success');\r\n                box.textContent = text;\r\n            }\r\n        \r\n            document.addEventListener('DOMContentLoaded', function(){\r\n                console.log('[CconnectGH] Forgot password shortcode loaded. API base:', apiBase);\r\n        \r\n                const form = document.getElementById('cc-forgot-form');\r\n                if(!form){\r\n                    console.warn('[CconnectGH] Forgot form not found in DOM.');\r\n                    return;\r\n                }\r\n        \r\n                \/\/ Pre-fill email if available\r\n                const storedEmail = window.localStorage.getItem('cconnect_user_email') || '';\r\n                if(storedEmail) form.email.value = storedEmail;\r\n        \r\n                form.addEventListener('submit', async function(e){\r\n                    e.preventDefault();\r\n        \r\n                    const email = form.email.value.trim();\r\n                    if(!email){\r\n                        setMsg('Please enter your email.', true);\r\n                        return;\r\n                    }\r\n        \r\n                    try{\r\n                        setMsg('Sending reset token...', false);\r\n        \r\n                        const resp = await fetch(apiBase + 'auth\/forgot-password', {\r\n                            method: 'POST',\r\n                            headers: { 'Content-Type': 'application\/json' },\r\n                            body: JSON.stringify({ email })\r\n                        });\r\n        \r\n                        const rawText = await resp.text();\r\n                        let data = {};\r\n                        try { data = rawText ? JSON.parse(rawText) : {}; } catch(_) {}\r\n        \r\n                        if(!resp.ok){\r\n                            const detail =\r\n                                data.detail || data.message || ('Failed to send token. HTTP ' + resp.status);\r\n                            setMsg(detail, true);\r\n                            console.error('[CconnectGH] Forgot-password failed:', resp.status, rawText);\r\n                            return;\r\n                        }\r\n        \r\n                        setMsg(\r\n                            'If your email exists, a reset token has been sent. Redirecting to Password Reset\u2026',\r\n                            false\r\n                        );\r\n        \r\n                        console.log('[CconnectGH] Forgot-password success:', data);\r\n        \r\n                        \/\/ \u2705 redirect\r\n                        setTimeout(function(){\r\n                            window.location.href = resetUrl;\r\n                        }, 1200);\r\n        \r\n                    }catch(err){\r\n                        console.error('[CconnectGH] Forgot-password error:', err);\r\n                        setMsg('Unexpected error. Try again.', true);\r\n                    }\r\n                });\r\n            });\r\n        })();\r\n        <\/script>\r\n       <\/div>\n\t\t\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-1be2534 e-grid e-con-boxed e-con e-parent\" data-id=\"1be2534\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2887","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/pages\/2887","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2887"}],"version-history":[{"count":7,"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/pages\/2887\/revisions"}],"predecessor-version":[{"id":2997,"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/pages\/2887\/revisions\/2997"}],"wp:attachment":[{"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}