{"id":2892,"date":"2025-12-27T07:20:10","date_gmt":"2025-12-27T07:20:10","guid":{"rendered":"https:\/\/www.cconnectgh.org\/?page_id=2892"},"modified":"2025-12-27T19:06:18","modified_gmt":"2025-12-27T19:06:18","slug":"password-reset","status":"publish","type":"page","link":"https:\/\/www.cconnectgh.org\/?page_id=2892","title":{"rendered":"Password Reset"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2892\" class=\"elementor elementor-2892\">\n\t\t\t\t<div class=\"elementor-element elementor-element-21f7209 e-grid e-con-boxed e-con e-parent\" data-id=\"21f7209\" 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-d86f0d7 elementor-widget elementor-widget-google_maps\" data-id=\"d86f0d7\" 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=kumasi%2C%20ghana&#038;t=m&#038;z=17&#038;output=embed&#038;iwloc=near\"\n\t\t\t\t\ttitle=\"kumasi, ghana\"\n\t\t\t\t\taria-label=\"kumasi, 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-d49ee29 e-grid e-con-boxed e-con e-parent\" data-id=\"d49ee29\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2b62b9e elementor-widget elementor-widget-shortcode\" data-id=\"2b62b9e\" 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\">Reset password<\/h3>\r\n                    <p class=\"cc-ui-sub\">Enter your email, reset token, and your new password.<\/p>\r\n                <\/div>\r\n\r\n                <div class=\"cc-ui-body\">\r\n                    <div id=\"cc-reset-msg\"><\/div>\r\n\r\n                    <form id=\"cc-reset-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                        <div class=\"cc-field\">\r\n                            <label class=\"cc-label\">Reset token *<\/label>\r\n                            <input class=\"cc-input\" type=\"text\" name=\"token\" required placeholder=\"Paste token from email\">\r\n                        <\/div>\r\n\r\n                        <div class=\"cc-field\">\r\n                            <label class=\"cc-label\">New password *<\/label>\r\n                            <input class=\"cc-input\" type=\"password\" name=\"new_password\" required autocomplete=\"new-password\" placeholder=\"At least 6 characters\">\r\n                        <\/div>\r\n\r\n                        <div class=\"cc-field\">\r\n                            <label class=\"cc-label\">Confirm new password *<\/label>\r\n                            <input class=\"cc-input\" type=\"password\" name=\"confirm_password\" required autocomplete=\"new-password\">\r\n                        <\/div>\r\n\r\n                        <button class=\"cc-btn\" type=\"submit\">Set new password<\/button>\r\n\r\n                        <div class=\"cc-rowlink\">\r\n                            <a href=\"https:\/\/www.cconnectgh.org\/?page_id=2897\">Back to Login<\/a>\r\n                        <\/div>\r\n\r\n                        <p class=\"cc-help\">\r\n                            After resetting, you can login with your new password.\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 loginUrl = \"https:\/\/www.cconnectgh.org\/?page_id=2897\";\r\n\r\n            function setMsg(text, isError){\r\n                const box = document.getElementById('cc-reset-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                const form = document.getElementById('cc-reset-form');\r\n                if(!form) return;\r\n\r\n                \/\/ Pre-fill email from storage 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                    const token = form.token.value.trim();\r\n                    const pw1 = form.new_password.value;\r\n                    const pw2 = form.confirm_password.value;\r\n\r\n                    if(!email || !token || !pw1 || !pw2){\r\n                        setMsg('Please fill all required fields.', true);\r\n                        return;\r\n                    }\r\n                    if(pw1 !== pw2){\r\n                        setMsg('Passwords do not match.', true);\r\n                        return;\r\n                    }\r\n                    if(pw1.length < 6){\r\n                        setMsg('Password should be at least 6 characters.', true);\r\n                        return;\r\n                    }\r\n\r\n                    try{\r\n                        setMsg('Resetting password...', false);\r\n\r\n                        \/\/ \u2705 Change endpoint\/payload if your backend differs\r\n                        const payload = { email: email, token: token, new_password: pw1 };\r\n\r\n                        const resp = await fetch(apiBase + 'auth\/reset-password', {\r\n                            method: 'POST',\r\n                            headers: { 'Content-Type': 'application\/json' },\r\n                            body: JSON.stringify(payload)\r\n                        });\r\n\r\n                        const data = await resp.json().catch(()=>({}));\r\n\r\n                        if(!resp.ok){\r\n                            setMsg((data && data.detail) ? data.detail : 'Failed to reset password.', true);\r\n                            return;\r\n                        }\r\n\r\n                        setMsg('Password updated successfully. Redirecting to login...', false);\r\n                        setTimeout(function(){ window.location.href = loginUrl; }, 1200);\r\n\r\n                    }catch(err){\r\n                        console.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\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-2892","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/pages\/2892","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=2892"}],"version-history":[{"count":7,"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/pages\/2892\/revisions"}],"predecessor-version":[{"id":3001,"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=\/wp\/v2\/pages\/2892\/revisions\/3001"}],"wp:attachment":[{"href":"https:\/\/www.cconnectgh.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2892"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}