{"id":19,"date":"2026-05-14T11:13:53","date_gmt":"2026-05-14T16:13:53","guid":{"rendered":"https:\/\/ocdany.com\/portal\/?page_id=19"},"modified":"2026-05-18T14:36:44","modified_gmt":"2026-05-18T19:36:44","slug":"oc-leo-portal","status":"publish","type":"page","link":"https:\/\/ocdany.com\/portal\/?page_id=19","title":{"rendered":"OC LEO Portal"},"content":{"rendered":"\n        <main class=\"portal-login-shell unified-login\">\n            \n        <div class=\"portal-rollout-notice\" id=\"portalRolloutNotice\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"portalRolloutNoticeTitle\">\n            <div class=\"portal-rollout-card\">\r\n                <button type=\"button\" class=\"portal-rollout-close\" id=\"portalRolloutClose\" aria-label=\"Close notice\">&times;<\/button>\r\n                <p class=\"portal-rollout-kicker\">Portal Notice<\/p>\r\n                <h2 id=\"portalRolloutNoticeTitle\">More Ways to Verify Your Login<\/h2>\n                <p>You can now verify your portal login by text message as an alternative to your authenticator app. After entering your username and password, select &ldquo;Try another way&rdquo; and choose &ldquo;Text message&rdquo; to verify your mobile number. You can make text messages your primary verification method for future logins. Your verified number will also receive account and request notifications.<\/p>\n                <button type=\"button\" class=\"portal-rollout-action\" id=\"portalRolloutAction\">Continue to Login<\/button>\r\n            <\/div>\r\n        <\/div>\n    \r\n            <section class=\"portal-login-panel\">\r\n                <div class=\"portal-login-brand\">\r\n                    <img decoding=\"async\" src=\"https:\/\/ocdany.com\/portal\/wp-admin\/admin-ajax.php?action=oc_leo_portal_seal&amp;v=1789073514\" alt=\"Orange County District Attorney seal\" onerror=\"this.style.display='none'\">\n                    <div>\r\n                        <p>Orange County District Attorney<\/p>\r\n                        <h1>Law Enforcement Portal<\/h1>\r\n                    <\/div>\r\n                <\/div>\r\n                <div class=\"portal-login-copy\">\r\n                    <h2>Portal Login<\/h2>\r\n                    <p>Use your agency email address or DA username and password.<\/p>\r\n                <\/div>\r\n                \r\n                <form class=\"portal-login-form\" method=\"post\" action=\"https:\/\/ocdany.com\/portal\/index.php?rest_route=wpv2pages19\" autocomplete=\"off\">\r\n                    <input type=\"hidden\" id=\"oc_leo_portal_login_nonce\" name=\"oc_leo_portal_login_nonce\" value=\"fe7d332791\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/portal\/index.php?rest_route=%2Fwp%2Fv2%2Fpages%2F19\" \/>\r\n                    <input type=\"hidden\" name=\"oc_leo_portal_login\" value=\"1\">\r\n                    <input type=\"hidden\" name=\"oc_leo_login_type\" value=\"auto\">\r\n                    <p class=\"login-username\">\r\n                        <label for=\"oc-leo-login-email\">Agency email or DA username<\/label>\r\n                        <input id=\"oc-leo-login-email\" type=\"text\" name=\"log\" autocomplete=\"username\" spellcheck=\"false\" required>\r\n                    <\/p>\r\n                    <p class=\"login-password\">\r\n                        <label for=\"oc-leo-login-password\">Password<\/label>\r\n                        <span class=\"portal-login-password-row\">\r\n                            <input id=\"oc-leo-login-password\" type=\"password\" name=\"pwd\" autocomplete=\"current-password\" required>\r\n                            <button type=\"button\" id=\"oc-leo-login-password-toggle\">Show<\/button>\r\n                        <\/span>\r\n                    <\/p>\r\n                    <p class=\"login-remember\">\r\n                        <label><input type=\"checkbox\" name=\"rememberme\" value=\"forever\"> Keep me signed in on this device<\/label>\r\n                    <\/p>\r\n                    <p class=\"login-submit\">\r\n                        <input type=\"submit\" value=\"Enter Portal\">\r\n                    <\/p>\r\n                <\/form>\n                <p class=\"portal-login-note\">The portal automatically recognizes regular users and authorized DA Members from the request system.<\/p>\n                <p class=\"portal-login-switch\"><a href=\"https:\/\/ocdany.com\/portal\/index.php?rest_route=wpv2pages19&#038;portal_register=1\">Create new user<\/a><span aria-hidden=\"true\">|<\/span><a href=\"https:\/\/ocdany.com\/portal\/index.php?rest_route=wpv2pages19&#038;portal_recovery=password\">Forgot password<\/a><span aria-hidden=\"true\">|<\/span><a href=\"https:\/\/ocdany.com\/portal\/index.php?rest_route=wpv2pages19&#038;portal_recovery=mfa\">Reset MFA<\/a><span aria-hidden=\"true\">|<\/span><button type=\"button\" id=\"portalLoginFeedbackOpen\">Report issue \/ suggestion<\/button><\/p>\n            <\/section>\n            <section class=\"portal-feedback-dialog\" id=\"portalLoginFeedbackDialog\" hidden>\n                <div class=\"portal-feedback-card\">\n                    <button class=\"portal-feedback-close\" type=\"button\" id=\"portalLoginFeedbackClose\" aria-label=\"Close\">&times;<\/button>\n                    <p class=\"portal-feedback-kicker\">Portal feedback<\/p>\n                    <h2>Report an issue or suggestion<\/h2>\n                    <form id=\"portalLoginFeedbackForm\">\n                        <input type=\"hidden\" name=\"nonce\" value=\"039aab54d4\">\n                        <label><span>Name<\/span><input type=\"text\" name=\"name\" id=\"portalLoginFeedbackName\" required><\/label>\n                        <label><span>Email<\/span><input type=\"email\" name=\"email\" id=\"portalLoginFeedbackEmail\" required><\/label>\n                        <div class=\"portal-feedback-type\">\n                            <label><input type=\"radio\" name=\"type\" value=\"issue\" checked> <span>Issue<\/span><\/label>\n                            <label><input type=\"radio\" name=\"type\" value=\"suggestion\"> <span>Suggestion<\/span><\/label>\n                        <\/div>\n                        <label><span>Details<\/span><textarea name=\"message\" rows=\"4\" required><\/textarea><\/label>\n                        <button class=\"portal-feedback-submit\" type=\"submit\">Submit<\/button>\n                    <\/form>\n                    <p class=\"portal-feedback-result\" id=\"portalLoginFeedbackResult\" aria-live=\"polite\"><\/p>\n                <\/div>\n            <\/section>\n            <script>\n                (function() {\n                    var notice = document.getElementById(\"portalRolloutNotice\");\r\n                    var closeNotice = document.getElementById(\"portalRolloutClose\");\r\n                    var continueNotice = document.getElementById(\"portalRolloutAction\");\r\n                    var noticeStorageKey = \"ocLeoPortalLoginMethodsNoticeV1\";\n                    var noticeExpiresAt = new Date(\"2026-09-30T23:59:59-04:00\").getTime();\n                    var now = Date.now();\r\n                    var dismissed = false;\r\n                    try {\r\n                        dismissed = window.localStorage && localStorage.getItem(noticeStorageKey) === \"1\";\r\n                    } catch (error) {}\r\n                    function dismissNotice() {\r\n                        if (notice) {\r\n                            notice.hidden = true;\r\n                        }\r\n                        try {\r\n                            if (window.localStorage) {\r\n                                localStorage.setItem(noticeStorageKey, \"1\");\r\n                            }\r\n                        } catch (error) {}\r\n                    }\r\n                    if (notice && (now > noticeExpiresAt || dismissed)) {\r\n                        notice.hidden = true;\r\n                    }\r\n                    if (closeNotice) {\r\n                        closeNotice.addEventListener(\"click\", dismissNotice);\r\n                    }\r\n                    if (continueNotice) {\r\n                        continueNotice.addEventListener(\"click\", dismissNotice);\r\n                    }\r\n                    var password = document.getElementById(\"oc-leo-login-password\");\r\n                    var toggle = document.getElementById(\"oc-leo-login-password-toggle\");\r\n                    if (!password || !toggle) return;\r\n                    toggle.addEventListener(\"click\", function() {\n                        var showing = password.type === \"text\";\n                        password.type = showing ? \"password\" : \"text\";\n                        toggle.textContent = showing ? \"Show\" : \"Hide\";\n                    });\n\n                    var feedbackOpen = document.getElementById(\"portalLoginFeedbackOpen\");\n                    var feedbackDialog = document.getElementById(\"portalLoginFeedbackDialog\");\n                    var feedbackClose = document.getElementById(\"portalLoginFeedbackClose\");\n                    var feedbackForm = document.getElementById(\"portalLoginFeedbackForm\");\n                    var feedbackResult = document.getElementById(\"portalLoginFeedbackResult\");\n                    var feedbackEndpoint = \"https:\/\/ocdany.com\/portal\/index.php?rest_route=\/oc-intel-portal\/v1\/feedback\";\n                    function closeFeedback() {\n                        if (feedbackDialog) feedbackDialog.hidden = true;\n                    }\n                    if (feedbackOpen && feedbackDialog) {\n                        feedbackOpen.addEventListener(\"click\", function() {\n                            var emailField = document.getElementById(\"oc-leo-login-email\");\n                            var feedbackEmail = document.getElementById(\"portalLoginFeedbackEmail\");\n                            if (emailField && feedbackEmail && emailField.value) feedbackEmail.value = emailField.value;\n                            feedbackDialog.hidden = false;\n                        });\n                    }\n                    if (feedbackClose) feedbackClose.addEventListener(\"click\", closeFeedback);\n                    if (feedbackDialog) {\n                        feedbackDialog.addEventListener(\"click\", function(event) {\n                            if (event.target === feedbackDialog) closeFeedback();\n                        });\n                    }\n                    if (feedbackForm) {\n                        feedbackForm.addEventListener(\"submit\", function(event) {\n                            event.preventDefault();\n                            if (feedbackResult) feedbackResult.textContent = \"Submitting...\";\n                            var formData = new FormData(feedbackForm);\n                            var payload = {};\n                            formData.forEach(function(value, key) { payload[key] = value; });\n                            fetch(feedbackEndpoint, {\n                                method: \"POST\",\n                                headers: { \"Content-Type\": \"application\/json\" },\n                                body: JSON.stringify(payload)\n                            }).then(function(response) {\n                                return response.text().then(function(text) {\n                                    var data = {};\n                                    try {\n                                        data = text ? JSON.parse(text) : {};\n                                    } catch (parseError) {\n                                        throw new Error(text || \"Submission returned an invalid response\");\n                                    }\n                                    if (!response.ok) throw new Error(data && data.message ? data.message : \"Submission failed\");\n                                    return data;\n                                });\n                            }).then(function(data) {\n                                if (feedbackResult) feedbackResult.textContent = data.message || \"Submitted.\";\n                                feedbackForm.reset();\n                            }).catch(function(error) {\n                                if (feedbackResult) feedbackResult.textContent = error.message || \"Could not submit feedback.\";\n                            });\n                        });\n                    }\n                })();\n            <\/script>\n        <\/main>\n    \n","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-19","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ocdany.com\/portal\/index.php?rest_route=\/wp\/v2\/pages\/19","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ocdany.com\/portal\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ocdany.com\/portal\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ocdany.com\/portal\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ocdany.com\/portal\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=19"}],"version-history":[{"count":1,"href":"https:\/\/ocdany.com\/portal\/index.php?rest_route=\/wp\/v2\/pages\/19\/revisions"}],"predecessor-version":[{"id":24,"href":"https:\/\/ocdany.com\/portal\/index.php?rest_route=\/wp\/v2\/pages\/19\/revisions\/24"}],"wp:attachment":[{"href":"https:\/\/ocdany.com\/portal\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=19"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}