{"id":123,"date":"2025-12-19T11:51:13","date_gmt":"2025-12-19T11:51:13","guid":{"rendered":"http:\/\/envautomation.com\/?page_id=123"},"modified":"2026-05-08T08:55:22","modified_gmt":"2026-05-08T08:55:22","slug":"login","status":"publish","type":"page","link":"https:\/\/envautomation.com\/?page_id=123","title":{"rendered":"LOGIN"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"123\" class=\"elementor elementor-123\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8e1aa9f e-con-full e-flex e-con e-parent\" data-id=\"8e1aa9f\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d4c562b elementor-widget elementor-widget-html\" data-id=\"d4c562b\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ENV \u2013 FULL IMAGE BACKGROUND LOGIN BOX -->\r\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@300;400;500;600;700;800&display=swap\"\/>\r\n\r\n<style>\r\n:root{\r\n  --accent1:#7c4dff;\r\n  --accent2:#a158ff;\r\n  --accent3:#5b45ff;\r\n  --text:#ffffff;\r\n  --muted:rgba(255,255,255,.78);\r\n  --line:rgba(255,255,255,.18);\r\n  --glass:rgba(10,14,30,.26);\r\n  --glass-2:rgba(255,255,255,.08);\r\n}\r\n\r\n.env-login-box-wrap{\r\n  display:flex;\r\n  justify-content:center;\r\n  align-items:center;\r\n  padding:20px;\r\n  font-family:Poppins,Arial,sans-serif;\r\n}\r\n\r\n.env-login-box{\r\n  width:100%;\r\n  max-width:380px;\r\n  min-height:640px;\r\n  border-radius:30px;\r\n  position:relative;\r\n  overflow:hidden;\r\n  box-shadow:0 28px 70px rgba(15,23,42,.28);\r\n  background:\r\n    linear-gradient(180deg, rgba(7,10,24,.18), rgba(7,10,24,.45)),\r\n    url('https:\/\/api.envautomation.com\/env_image\/envlogin.png') center center \/ cover no-repeat;\r\n}\r\n\r\n.env-login-box::before{\r\n  content:\"\";\r\n  position:absolute;\r\n  inset:0;\r\n  background:\r\n    linear-gradient(180deg, rgba(6,10,24,.12) 0%, rgba(6,10,24,.22) 28%, rgba(6,10,24,.56) 58%, rgba(6,10,24,.74) 100%);\r\n  pointer-events:none;\r\n}\r\n\r\n.env-login-badge{\r\n  position:absolute;\r\n  top:18px;\r\n  left:18px;\r\n  z-index:2;\r\n  display:inline-flex;\r\n  align-items:center;\r\n  gap:8px;\r\n  padding:8px 14px;\r\n  border-radius:999px;\r\n  background:rgba(255,255,255,.16);\r\n  border:1px solid rgba(255,255,255,.12);\r\n  color:#fff;\r\n  font-size:10px;\r\n  font-weight:700;\r\n  letter-spacing:.4px;\r\n  backdrop-filter:blur(10px);\r\n  -webkit-backdrop-filter:blur(10px);\r\n}\r\n.env-login-badge span{\r\n  width:7px;\r\n  height:7px;\r\n  border-radius:50%;\r\n  background:#22c55e;\r\n  box-shadow:0 0 10px rgba(34,197,94,.7);\r\n}\r\n\r\n.env-login-content{\r\n  position:absolute;\r\n  left:0;\r\n  right:0;\r\n  bottom:0;\r\n  z-index:2;\r\n  padding:24px 22px 20px;\r\n  background:linear-gradient(180deg, rgba(8,12,28,0) 0%, rgba(8,12,28,.26) 12%, rgba(8,12,28,.48) 28%, rgba(8,12,28,.68) 100%);\r\n}\r\n\r\n.env-login-avatar{\r\n  width:62px;\r\n  height:62px;\r\n  margin:0 auto 14px;\r\n  border-radius:20px;\r\n  background:linear-gradient(135deg,var(--accent1),var(--accent2));\r\n  display:flex;\r\n  align-items:center;\r\n  justify-content:center;\r\n  color:#fff;\r\n  font-size:25px;\r\n  border:3px solid rgba(255,255,255,.18);\r\n  box-shadow:0 16px 35px rgba(124,77,255,.35);\r\n}\r\n\r\n.env-login-title{\r\n  text-align:center;\r\n  font-size:19px;\r\n  font-weight:700;\r\n  color:var(--text);\r\n  margin:0;\r\n}\r\n.env-login-sub{\r\n  text-align:center;\r\n  font-size:11px;\r\n  color:var(--muted);\r\n  margin:6px 0 18px;\r\n}\r\n\r\n.env-login-form{\r\n  text-align:left;\r\n}\r\n.env-login-label{\r\n  display:block;\r\n  font-size:11px;\r\n  color:rgba(255,255,255,.84);\r\n  margin:0 0 6px 2px;\r\n  font-weight:500;\r\n}\r\n.env-login-input{\r\n  width:100%;\r\n  padding:13px 14px;\r\n  border-radius:14px;\r\n  border:1px solid var(--line);\r\n  background:rgba(255,255,255,.10);\r\n  color:#fff;\r\n  font-size:13px;\r\n  margin-bottom:13px;\r\n  backdrop-filter:blur(8px);\r\n  -webkit-backdrop-filter:blur(8px);\r\n  box-sizing:border-box;\r\n}\r\n.env-login-input::placeholder{\r\n  color:rgba(255,255,255,.56);\r\n}\r\n.env-login-input:focus{\r\n  outline:none;\r\n  border-color:rgba(161,88,255,.9);\r\n  background:rgba(255,255,255,.14);\r\n  box-shadow:0 0 0 3px rgba(161,88,255,.14);\r\n}\r\n\r\n.env-login-btn{\r\n  width:100%;\r\n  border:none;\r\n  border-radius:16px;\r\n  padding:13px 16px;\r\n  margin-top:2px;\r\n  background:linear-gradient(135deg,var(--accent1),var(--accent2),var(--accent3));\r\n  color:#fff;\r\n  font-size:14px;\r\n  font-weight:700;\r\n  cursor:pointer;\r\n  box-shadow:0 14px 30px rgba(124,77,255,.34);\r\n}\r\n.env-login-btn:disabled{\r\n  opacity:.78;\r\n  cursor:not-allowed;\r\n}\r\n\r\n.env-login-error{\r\n  margin-top:10px;\r\n  font-size:11px;\r\n  color:#ffd1d1;\r\n  display:none;\r\n  text-align:center;\r\n  background:rgba(217,48,37,.14);\r\n  border:1px solid rgba(255,255,255,.08);\r\n  border-radius:12px;\r\n  padding:8px 10px;\r\n}\r\n\r\n.env-login-footer{\r\n  margin-top:12px;\r\n  font-size:10px;\r\n  color:rgba(255,255,255,.55);\r\n  text-align:center;\r\n}\r\n\r\n@media (max-width:480px){\r\n  .env-login-box-wrap{ padding:10px; }\r\n  .env-login-box{\r\n    max-width:360px;\r\n    min-height:620px;\r\n    border-radius:26px;\r\n  }\r\n}\r\n<\/style>\r\n\r\n<div class=\"env-login-box-wrap\">\r\n  <div class=\"env-login-box\">\r\n    <div class=\"env-login-badge\"><span><\/span>SECURE ACCESS<\/div>\r\n\r\n    <div class=\"env-login-content\">\r\n      <div class=\"env-login-avatar\">\ud83d\udd12<\/div>\r\n      <div class=\"env-login-title\">Sign in to ENV Portal<\/div>\r\n      <div class=\"env-login-sub\">Secure project dashboard access<\/div>\r\n\r\n      <form id=\"env-login-form\" class=\"env-login-form\">\r\n        <label class=\"env-login-label\">Username<\/label>\r\n        <input id=\"env-username\" class=\"env-login-input\" type=\"text\" placeholder=\"Enter username\" required>\r\n\r\n        <label class=\"env-login-label\">Password<\/label>\r\n        <input id=\"env-password\" class=\"env-login-input\" type=\"password\" placeholder=\"Enter password\" required>\r\n\r\n        <button id=\"env-login-btn\" class=\"env-login-btn\" type=\"submit\">Login<\/button>\r\n        <div id=\"env-login-error\" class=\"env-login-error\"><\/div>\r\n        <div class=\"env-login-footer\">\u00a9 2026 ENV Automation Pte Ltd<\/div>\r\n      <\/form>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function(){\r\n  const API_URLS = [\r\n    \"https:\/\/api.envautomation.com\/env_login.php\",\r\n    \"https:\/\/cctv.envautomation.com\/env_login.php\"\r\n  ];\r\n\r\n  const STORAGE_KEY = \"ENV_AUTH\";\r\n\r\n  const form = document.getElementById(\"env-login-form\");\r\n  const btn = document.getElementById(\"env-login-btn\");\r\n  const err = document.getElementById(\"env-login-error\");\r\n\r\n  async function tryLogin(apiUrl, username, password){\r\n    const res = await fetch(apiUrl, {\r\n      method: \"POST\",\r\n      headers: { \"Content-Type\": \"application\/x-www-form-urlencoded\" },\r\n      body: `username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`\r\n    });\r\n\r\n    if(!res.ok){\r\n      throw new Error(\"HTTP \" + res.status);\r\n    }\r\n\r\n    return await res.json();\r\n  }\r\n\r\n  form.addEventListener(\"submit\", async function(e){\r\n    e.preventDefault();\r\n\r\n    const username = document.getElementById(\"env-username\").value.trim();\r\n    const password = document.getElementById(\"env-password\").value;\r\n\r\n    if(!username || !password){\r\n      err.textContent = \"Please enter username and password.\";\r\n      err.style.display = \"block\";\r\n      return;\r\n    }\r\n\r\n    err.style.display = \"none\";\r\n    btn.disabled = true;\r\n    btn.textContent = \"Signing in...\";\r\n\r\n    let finalMessage = \"Invalid username or password.\";\r\n    let successData = null;\r\n    let successServer = \"\";\r\n\r\n    for(const apiUrl of API_URLS){\r\n      try{\r\n        const data = await tryLogin(apiUrl, username, password);\r\n\r\n        if(data && data.success){\r\n          successData = data;\r\n          successServer = apiUrl;\r\n          break;\r\n        }else{\r\n          finalMessage = (data && data.message) ? data.message : finalMessage;\r\n        }\r\n      }catch(ex){\r\n        finalMessage = \"Login server error. Please try again.\";\r\n      }\r\n    }\r\n\r\n    if(successData){\r\n      localStorage.setItem(STORAGE_KEY, JSON.stringify({\r\n        username: successData.username || username,\r\n        display_name: successData.display_name || username,\r\n        redirect: successData.redirect_url,\r\n        login_server: successServer,\r\n        time: Date.now()\r\n      }));\r\n\r\n      localStorage.setItem(\"env_username\", successData.username || username);\r\n      localStorage.setItem(\"env_display_name\", successData.display_name || username);\r\n\r\n      window.location.replace(successData.redirect_url);\r\n    }else{\r\n      err.textContent = finalMessage;\r\n      err.style.display = \"block\";\r\n      btn.disabled = false;\r\n      btn.textContent = \"Login\";\r\n    }\r\n  });\r\n})();\r\n<\/script>\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>SECURE ACCESS \ud83d\udd12 Sign in to ENV Portal Secure project dashboard access Username Password Login \u00a9 2026 ENV Automation Pte [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-123","page","type-page","status-publish","hentry"],"brizy_media":[],"_links":{"self":[{"href":"https:\/\/envautomation.com\/index.php?rest_route=\/wp\/v2\/pages\/123","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/envautomation.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/envautomation.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/envautomation.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/envautomation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=123"}],"version-history":[{"count":5,"href":"https:\/\/envautomation.com\/index.php?rest_route=\/wp\/v2\/pages\/123\/revisions"}],"predecessor-version":[{"id":1732,"href":"https:\/\/envautomation.com\/index.php?rest_route=\/wp\/v2\/pages\/123\/revisions\/1732"}],"wp:attachment":[{"href":"https:\/\/envautomation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}