{"id":8921,"date":"2025-10-06T17:13:22","date_gmt":"2025-10-06T20:13:22","guid":{"rendered":"https:\/\/agricultura.sp.gov.br\/iea\/?page_id=8921"},"modified":"2025-10-06T17:24:08","modified_gmt":"2025-10-06T20:24:08","slug":"entrar-no-sistema","status":"publish","type":"page","link":"https:\/\/agricultura.sp.gov.br\/iea\/entrar-no-sistema\/","title":{"rendered":"Entrar no Sistema"},"content":{"rendered":"    <style>\n    \/* Estilos modernos para o formul\u00e1rio de login *\/\n    .user-login {\n        max-width: 480px;\n        margin: 30px auto;\n        padding: 0;\n        background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);\n        border-radius: 16px;\n        box-shadow: 0 4px 20px rgba(0,0,0,0.08);\n        font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;\n        overflow: hidden;\n    }\n    \n    .user-login .login-header {\n        background: white;\n        padding: 20px 30px;\n        border-bottom: 1px solid #e5e7eb;\n    }\n    \n    .user-login .login-header h2 {\n        margin: 0;\n        font-size: 18px;\n        font-weight: 600;\n        color: #1e3a5f;\n    }\n    \n    .user-login .login-header p {\n        margin: 4px 0 0;\n        font-size: 13px;\n        color: #6b7280;\n    }\n    \n    .user-login .login-content {\n        padding: 25px 30px;\n    }\n    \n    .user-login .section-card {\n        background: white;\n        border-radius: 12px;\n        padding: 20px;\n        box-shadow: 0 2px 8px rgba(0,0,0,0.04);\n        border: 1px solid #e5e7eb;\n    }\n\n    .user-login .form-group {\n        margin-bottom: 16px;\n    }\n    \n    .user-login .form-group:last-of-type {\n        margin-bottom: 0;\n    }\n\n    .user-login label {\n        display: block;\n        margin-bottom: 6px;\n        font-weight: 600;\n        color: #374151;\n        font-size: 12px;\n        text-transform: uppercase;\n        letter-spacing: 0.3px;\n    }\n    \n    .user-login .form-control {\n        width: 100%;\n        padding: 12px 14px;\n        border: 1px solid #d1d5db;\n        border-radius: 8px;\n        font-size: 14px;\n        box-sizing: border-box;\n        transition: all 0.2s ease;\n        background: #f9fafb;\n        color: #1f2937;\n    }\n\n    .user-login .form-control:focus {\n        outline: none;\n        border-color: #2d5a87;\n        box-shadow: 0 0 0 3px rgba(45,90,135,0.15);\n        background: white;\n    }\n    \n    .user-login .input-group {\n        display: flex;\n    }\n    \n    .user-login .input-group .form-control {\n        border-top-right-radius: 0;\n        border-bottom-right-radius: 0;\n    }\n    \n    .user-login .input-group-append {\n        display: flex;\n    }\n    \n    .user-login .input-group-append .btn {\n        border-top-left-radius: 0;\n        border-bottom-left-radius: 0;\n        border-left: 0;\n        padding: 12px 14px;\n        background: #f3f4f6;\n        border: 1px solid #d1d5db;\n        color: #374151;\n        cursor: pointer;\n        transition: background 0.2s;\n    }\n    \n    .user-login .input-group-append .btn:hover {\n        background: #e5e7eb;\n    }\n    \n    .user-login .login-actions {\n        display: flex;\n        gap: 10px;\n        flex-wrap: wrap;\n        padding: 20px 30px;\n        background: white;\n        border-top: 1px solid #e5e7eb;\n    }\n    \n    .user-login .btn {\n        padding: 12px 20px;\n        border: none;\n        border-radius: 8px;\n        cursor: pointer;\n        font-size: 14px;\n        font-weight: 600;\n        transition: all 0.2s ease;\n        text-decoration: none;\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        gap: 6px;\n    }\n    \n    .user-login .btn-light {\n        background: #f3f4f6;\n        color: #374151;\n        border: 1px solid #d1d5db;\n    }\n    \n    .user-login .btn-light:hover {\n        background: #e5e7eb;\n    }\n    \n    .user-login .btn-link {\n        background: transparent;\n        color: #2d5a87;\n        padding: 12px 10px;\n    }\n    \n    .user-login .btn-link:hover {\n        text-decoration: underline;\n    }\n    \n    .user-login .btn-primary {\n        background: linear-gradient(135deg, #1e3a5f 0%, #2d5a87 100%);\n        color: white;\n        flex: 1;\n    }\n    \n    .user-login .btn-primary:hover {\n        box-shadow: 0 4px 12px rgba(30,58,95,0.3);\n        transform: translateY(-1px);\n    }\n    \n    .user-login .btn-primary:disabled {\n        opacity: 0.5;\n        cursor: not-allowed;\n        transform: none !important;\n    }\n\n    .user-login .alert {\n        padding: 12px 16px;\n        border-radius: 8px;\n        margin: 16px 30px 0;\n        font-size: 13px;\n    }\n\n    .user-login .alert-danger {\n        background: #fef2f2;\n        color: #dc2626;\n        border: 1px solid #fecaca;\n    }\n\n    .user-login .alert-success {\n        background: #f0fdf4;\n        color: #16a34a;\n        border: 1px solid #bbf7d0;\n    }\n    \n    .user-login .mr-auto {\n        margin-right: auto;\n    }\n    \n    @media (max-width: 768px) {\n        .user-login {\n            margin: 15px;\n            border-radius: 12px;\n        }\n        \n        .user-login .login-header,\n        .user-login .login-content {\n            padding: 16px 20px;\n        }\n        \n        .user-login .login-actions {\n            flex-direction: column;\n            padding: 16px 20px;\n        }\n        \n        .user-login .btn {\n            width: 100%;\n        }\n        \n        .user-login .mr-auto {\n            margin-right: 0;\n        }\n    }\n    <\/style>\n    <div class=\"user-login\" id=\"cdp-login-root\">\n      <div class=\"login-header\">\n        <h2>Entrar no Sistema<\/h2>\n        <p>Informe suas credenciais para acessar o sistema<\/p>\n      <\/div>\n\n      <div class=\"login-content\">\n        <div class=\"section-card\">\n\t\t<div class=\"form-group\">\n            <label for=\"email\">E-mail<\/label>\n            <input type=\"email\" id=\"email\" class=\"form-control\" placeholder=\"seu@email.com\" required>\n\t\t<\/div>\n\n\t\t<div class=\"form-group\">\n            <label for=\"password\">Senha<\/label>\n\t\t\t<div class=\"input-group\">\n              <input type=\"password\" class=\"form-control\" id=\"password\" placeholder=\"Digite sua senha\" required>\n\t\t\t\t<div class=\"input-group-append\">\n                <button type=\"button\" class=\"btn\" id=\"pwd-visibility-button\" title=\"Mostrar\/Ocultar senha\">\ud83d\udc41<\/button>\n              <\/div>\n            <\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n      <div class=\"login-actions\">\n        <a href=\"#\" id=\"forgot-password-link\" class=\"btn btn-link mr-auto\">Esqueci minha senha<\/a>\n\t\t<button type=\"button\" class=\"btn btn-primary\" id=\"login-button\">Entrar<\/button>\n\t\t<\/div>\n\n\t\t<div class=\"alert alert-danger\" id=\"error-message\" style=\"display: none;\"><\/div>\n\t\t<div class=\"alert alert-success\" id=\"success-message\" style=\"display: none;\"><\/div>\n\t<\/div>\n\t\n\t<script>\n\t\/\/ JavaScript para o formul\u00e1rio de login (custo_user_login)\n\tdocument.addEventListener('DOMContentLoaded', function() {\n\t\tconst loginButton = document.getElementById('login-button');\n\t\tconst emailInput = document.getElementById('email');\n\t\tconst passwordInput = document.getElementById('password');\n\t\tconst forgotLink = document.getElementById('forgot-password-link');\n\t\tconst pwdVisibilityButton = document.getElementById('pwd-visibility-button');\n\t\tconst errorMessage = document.getElementById('error-message');\n\t\tconst successMessage = document.getElementById('success-message');\n\t\t\n\t\t\/\/ Fun\u00e7\u00e3o para fazer login\n\t\tasync function performLogin() {\n\t\t\tconst email = emailInput.value.trim();\n\t\t\tconst password = passwordInput.value.trim();\n\t\t\t\n\t\t\tif (!email || !password) {\n\t\t\t\tshowError('Por favor, preencha todos os campos.');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t\/\/ Desabilitar bot\u00e3o durante login\n\t\t\tloginButton.disabled = true;\n\t\t\tloginButton.textContent = 'Entrando...';\n\t\t\t\n\t\t\ttry {\n\t\t\t\t\/\/ Fazer requisi\u00e7\u00e3o para API de login\n\t\t\t\tconst response = await fetch('https:\/\/ieacusto.agricultura.sp.gov.br\/auth-layer\/auth\/login', {\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Content-Type': 'application\/json',\n\t\t\t\t\t},\n\t\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\t\temail: email,\n\t\t\t\t\t\tpassword: password\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tconst data = await response.json();\n\t\t\t\t\n\t\t\t\tif (response.ok && data.access_token) {\n\t\t\t\t\/\/ Salvar token\n\t\t\t\tsessionStorage.setItem('access_token', data.access_token);\n\t\t\t\t\n\t\t\t\tshowSuccess('Login realizado com sucesso!');\n\t\t\t\t\n\t\t\t\t\/\/ Buscar dados do perfil do usu\u00e1rio\n\t\t\t\tfetch('https:\/\/ieacusto.agricultura.sp.gov.br\/auth-layer\/user\/profile', {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Authorization': 'Bearer ' + data.access_token,\n\t\t\t\t\t\t'Content-Type': 'application\/json'\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then(profileResponse => profileResponse.json())\n\t\t\t\t.then(profileData => {\n\t\t\t\t\tsessionStorage.setItem('user_Profile', JSON.stringify(profileData));\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Redirecionar ap\u00f3s carregar o perfil\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\twindow.location.href = 'https:\/\/agricultura.sp.gov.br\/iea\/resumo-do-cadastro\/';\n\t\t\t\t\t}, 500);\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\t\/\/ Redirecionar mesmo com erro\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\twindow.location.href = 'https:\/\/agricultura.sp.gov.br\/iea\/resumo-do-cadastro\/';\n\t\t\t\t\t}, 1000);\n\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tshowError(data.message || 'Erro ao fazer login. Verifique suas credenciais.');\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tshowError('Erro de conex\u00e3o. Tente novamente.');\n\t\t\t} finally {\n\t\t\t\t\/\/ Reabilitar bot\u00e3o\n\t\t\t\tloginButton.disabled = false;\n\t\t\t\tloginButton.textContent = 'Entrar';\n\t\t\t}\n\t\t}\n\t\t\n\t\t\/\/ Fun\u00e7\u00e3o para mostrar erro\n\t\tfunction showError(message) {\n\t\t\terrorMessage.textContent = message;\n\t\t\terrorMessage.style.display = 'block';\n\t\t\tsuccessMessage.style.display = 'none';\n\t\t}\n\t\t\n\t\t\/\/ Fun\u00e7\u00e3o para mostrar sucesso\n\t\tfunction showSuccess(message) {\n\t\t\tsuccessMessage.textContent = message;\n\t\t\tsuccessMessage.style.display = 'block';\n\t\t\terrorMessage.style.display = 'none';\n\t\t}\n\t\t\n\t\t\/\/ Event listener para o bot\u00e3o de login (CLIQUE)\n\t\tif (loginButton) {\n\t\t\tloginButton.addEventListener('click', function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tperformLogin();\n\t\t\t});\n\t\t}\n\t\t\n\t\t\/\/ Event listener para Enter nos campos\n\t\tfunction handleEnterKey(e) {\n\t\t\tif (e.key === 'Enter') {\n\t\t\t\te.preventDefault();\n\t\t\t\tperformLogin();\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (emailInput) {\n\t\t\temailInput.addEventListener('keypress', handleEnterKey);\n\t\t}\n\t\t\n\t\tif (passwordInput) {\n\t\t\tpasswordInput.addEventListener('keypress', handleEnterKey);\n\t\t}\n\t\t\n\t\t\/\/ Event listener para esqueci minha senha\n\t\tif (forgotLink) {\n\t\t\tforgotLink.addEventListener('click', function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\twindow.location.href = 'https:\/\/agricultura.sp.gov.br\/iea\/esqueci-minha-senha\/';\n\t\t\t});\n\t\t}\n\t\t\n\t\t\/\/ Event listener para mostrar\/ocultar senha\n\t\tif (pwdVisibilityButton) {\n\t\t\tvar isPasswordVisible = false;\n\t\t\t\n\t\t\tpwdVisibilityButton.addEventListener('click', function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\n\t\t\t\tvar passwordField = document.getElementById('password');\n\t\t\t\tif (!passwordField) return;\n\t\t\t\t\n\t\t\t\tisPasswordVisible = !isPasswordVisible;\n\t\t\t\t\n\t\t\t\t\/\/ Usar setTimeout para garantir que a mudan\u00e7a persista\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tif (isPasswordVisible) {\n\t\t\t\t\t\tpasswordField.type = 'text';\n\t\t\t\t\t\tpwdVisibilityButton.innerHTML = '\ud83d\udd12';\n\t\t\t\t\t\tpwdVisibilityButton.title = 'Ocultar senha';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpasswordField.type = 'password';\n\t\t\t\t\t\tpwdVisibilityButton.innerHTML = '\ud83d\udc41';\n\t\t\t\t\t\tpwdVisibilityButton.title = 'Mostrar senha';\n\t\t\t\t\t}\n\t\t\t\t}, 10);\n\t\t\t\t\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\t});\n\t<\/script>\n\t\n\t\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":14,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-8921","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/agricultura.sp.gov.br\/iea\/wp-json\/wp\/v2\/pages\/8921","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/agricultura.sp.gov.br\/iea\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/agricultura.sp.gov.br\/iea\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/agricultura.sp.gov.br\/iea\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/agricultura.sp.gov.br\/iea\/wp-json\/wp\/v2\/comments?post=8921"}],"version-history":[{"count":4,"href":"https:\/\/agricultura.sp.gov.br\/iea\/wp-json\/wp\/v2\/pages\/8921\/revisions"}],"predecessor-version":[{"id":8925,"href":"https:\/\/agricultura.sp.gov.br\/iea\/wp-json\/wp\/v2\/pages\/8921\/revisions\/8925"}],"wp:attachment":[{"href":"https:\/\/agricultura.sp.gov.br\/iea\/wp-json\/wp\/v2\/media?parent=8921"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}