1<!doctype html> 2<html lang="it"> 3<head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6
6<script> 7(function(){ 8 try { 9 var V = "1.20", KEY = 'ssnapp_rel'; 10 var prev = localStorage.getItem(KEY); 11 localStorage.setItem(KEY, V); 12 if (prev && prev !== V) { 13 var reload = function(){ location.reload(); }; 14 if (window.caches && caches.keys) { 15 caches.keys() 16 .then(function(ks){ return Promise.all(ks.map(function(k){ return caches.delete(k); })); }) 17 .then(reload, reload); 18 } else { 19 reload(); 20 } 21 } 22 } catch(e){} 23})(); 24</script>
24 <title>Accedi â Dashboard Aziende SSN App</title> 25 <link rel="icon" type="image/png" href="/assets/images/logo.jpg"> 26 <link rel="stylesheet" href="/assets/css/variables.css?v=1.20.1783699004"> 27 <link rel="stylesheet" href="/assets/css/base.css?v=1.20.1783699004"> 28 <link rel="stylesheet" href="/assets/css/components.css?v=1.20.1783699004"> 29 <meta name="csrf" content="1946e9ba5029f02986e31eba129aa023fe806c9d01f0b61e3cc626d3cbdf8eea"> 30 <!-- iubenda Privacy Controls and Cookie Solution --> 31
31<script type="text/javascript" src="https://embeds.iubenda.com/widgets/8c78957f-9ced-4eda-8c70-160c5d644b9e.js"></script>
31 32 33 <style> 34 .login-page { 35 min-height: 100vh; 36 background: linear-gradient(135deg, var(--section-bg), #eef2ff); 37 padding: 40px 16px; 38 display: flex; 39 align-items: center; 40 justify-content: center; 41 } 42 .login-card { 43 width: 100%; 44 max-width: 460px; 45 background: #fff; 46 border-radius: var(--radius-lg); 47 box-shadow: var(--shadow); 48 padding: 34px 32px; 49 } 50 .login-logo { 51 text-align: center; 52 margin-bottom: 18px; 53 } 54 .login-logo img { width: 78px; margin: 0 auto 8px; display:block; } 55 .login-logo h1 { 56 font-size: 22px; 57 font-weight: 700; 58 letter-spacing: .02em; 59 text-transform: uppercase; 60 margin: 0; 61 } 62 .login-logo p { color: var(--muted); font-size: 13px; margin: 4px 0 0; } 63 64 .back-home { 65 display: block; 66 text-align: center; 67 color: var(--muted); 68 margin-top: 18px; 69 font-size: 13px; 70 } 71 </style> 72</head> 73<body> 74 75<div class="login-page"> 76 <div class="login-card"> 77 <div class="login-logo"> 78 <img src="/assets/images/logo.png" alt="SSN App" onerror="this.style.display='none'"> 79 <h1>Dashboard Aziende</h1> 80 <p>Accedi o registrati per pubblicare annunci e trovare personale sanitario</p> 81 </div> 82 83 <div class="tabs"> 84 <button type="button" class="tab is-active" data-tab="login" onclick="showTab('login')">Accedi</button> 85 <button type="button" class="tab" data-tab="reg" onclick="showTab('reg')">Registrati</button> 86 </div> 87 88 <!-- LOGIN --> 89 <div id="tab-login"> 90 <form id="formLogin" autocomplete="on" onsubmit="return doLogin(event)"> 91 <div class="form__group"> 92 <label class="form__label">Numero Cellulare</label> 93 <input class="form__input" type="tel" name="telefono" 94 inputmode="numeric" autocomplete="username" 95 required> 96 </div> 97 <div class="form__group"> 98 <label class="form__label">Password</label> 99 <div class="pw-wrap"> 100 <input class="form__input" id="pwLogin" type="password" 101 name="password" autocomplete="current-password" required 102 style="padding-right:42px;"> 103 <span class="pw-toggle" onclick="togglePw('pwLogin', this)">👁</span> 104 </div> 105 </div> 106 <button type="submit" class="btn btn--primary btn--block btn--lg">Entra</button> 107 </form> 108 </div> 109 110 <!-- REGISTRAZIONE --> 111 <div id="tab-reg" class="hidden"> 112 <form id="formReg" autocomplete="off" onsubmit="return doRegister(event)"> 113 <div class="form__float"> 114 <label>Nome Azienda</label> 115 <input type="text" name="nome_azienda" required maxlength="100" placeholder=" "> 116 </div> 117 <div class="form__float"> 118 <label>Riferimento ( Nome e Cognome )</label> 119 <input type="text" name="persona_riferimento" required maxlength="100" placeholder=" "> 120 </div> 121 <div class="form__float"> 122 <label>Numero Cellulare</label> 123 <input type="tel" name="telefono" required inputmode="numeric" 124 pattern="[0-9+ ]{6,20}" placeholder=" "> 125 </div> 126 <div class="form__float"> 127 <label>Email Contatto</label> 128 <input type="email" name="email" required maxlength="200" placeholder=" "> 129 </div> 130 <div class="form__float"> 131 <label>Password</label> 132 <input id="pwReg" type="password" name="password" required minlength="6" 133 placeholder=" " style="padding-right:34px;">
134 <span class="pw-toggle" onclick="togglePw('pwReg', this)">👁</span> 135 </div> 136 <div class="form__float"> 137 <label>Conferma Password</label> 138 <input id="pwRegConf" type="password" name="password_conferma" required minlength="6" 139 placeholder=" " style="padding-right:34px;"> 140 <span class="pw-toggle" onclick="togglePw('pwRegConf', this)">👁</span> 141 </div> 142 <button type="submit" class="btn btn--primary btn--block btn--lg btn--pill mt-md">Salva</button> 143 </form> 144 </div> 145 146 <a class="back-home" href="/">â Torna al sito</a> 147 </div> 148</div> 149 150<footer class="site-footer" style="background:#0f172a;color:#cbd5e1;padding:20px 16px;text-align:center;font-size:13px;"> 151 <div style="display:flex;gap:12px;justify-content:center;flex-wrap:wrap;"> 152 <a href="https://www.iubenda.com/privacy-policy/42675838" 153 class="iubenda-white iubenda-noiframe iubenda-embed" 154 title="Privacy Policy ">Privacy Policy</a> 155 <a href="https://www.iubenda.com/privacy-policy/42675838/cookie-policy"
156 class="iubenda-white iubenda-noiframe iubenda-embed" 157 title="Cookie Policy ">Cookie Policy</a> 158 </div> 159
159<script type="text/javascript">(function (w,d) {var loader = function () {var s = d.createElement("script"), tag = d.getElementsByTagName("script")[0]; s.src="https://cdn.iubenda.com/iubenda.js"; tag.parentNode.insertBefore(s,tag);}; if(w.addEventListener){w.addEventListener("load", loader, false);}else if(w.attachEvent){w.attachEvent("onload", loader);}else{w.onload = loader;}})(window, document);</script>
159 160</footer> 161 162<!-- Modal info post-registrazione --> 163<div class="modal" id="modalInfoReg"> 164 <div class="modal__overlay"></div> 165 <div class="modal__content" style="max-width:520px;"> 166 <div class="modal__header"> 167 <h3 class="modal__title">Informazioni</h3> 168 <button class="modal__close" type="button" onclick="Modal.close('modalInfoReg')">×</button> 169 </div> 170 <div class="modal__body" style="line-height:1.6;"> 171 <p><strong>Gentile Azienda,</strong></p> 172 <p>La informiamo che, una volta compilati i dati richiesti, il nostro staff procederà con l'attivazione del Suo account.</p> 173 <p>Dopo aver ricevuto l'email di conferma, potrà effettuare il login e iniziare a eseguire le ricerche.</p> 174 <p>L'attivazione del Suo account avverrà in pochi minuti.</p> 175 <p><strong>Per ogni professionista ricercato, avrà la possibilità di:</strong></p> 176 <ul style="padding-left:18px; color:var(--muted);"> 177 <li>Visualizzare e/o scaricare il curriculum vitae</li> 178 <li>Visionare la video presentazione, se disponibile</li> 179 <li>Contattare direttamente il professionista via WhatsApp o telefonicamente</li> 180 </ul> 181 <p>Restiamo a Sua disposizione per qualsiasi informazione. Può contattarci via email all'indirizzo <strong>[email protected]</strong></p> 182 <p>Cordialmente,<br>Lo staff di SSN App</p> 183 </div> 184 <div class="modal__footer"> 185 <button type="button" class="btn btn--primary" onclick="Modal.close('modalInfoReg'); showTab('login')">OK</button> 186 </div> 187 </div> 188</div> 189
190<script src="/assets/js/api.js?v=1.20.1776955658"></script>
vendor: 1 bytes, line 190
190
191<script src="/assets/js/app.js?v=1.20.1777025217"></script>
vendor: 1 bytes, line 191
191
192<script> 193function showTab(key){ 194 document.querySelectorAll('.tab').forEach(el => { 195 el.classList.toggle('is-active', el.getAttribute('data-tab') === key); 196 }); 197 document.getElementById('tab-login').classList.toggle('hidden', key !== 'login'); 198 document.getElementById('tab-reg').classList.toggle('hidden', key !== 'reg'); 199} 200 201function togglePw(inputId, el) { 202 const i = document.getElementById(inputId); 203 if (i.type === 'password') { i.type = 'text'; el.innerHTML = '🔒'; } 204 else { i.type = 'password'; el.innerHTML = '👁'; } 205} 206 207async function doLogin(ev){ 208 ev.preventDefault(); 209 const f = ev.target; 210 const fd = new FormData(f); 211 fd.append('action', 'login'); 212 try { 213 await API.post('/api/aziende/auth.php', fd); 214 window.location.href = '/dashboard-aziende.php'; 215 } catch(e) { 216 Toast.error(e.message); 217 } 218 return false; 219} 220 221async function doRegister(ev){ 222 ev.preventDefault(); 223 const f = ev.target; 224 const fd = new FormData(f); 225 if (fd.get('password') !== fd.get('password_conferma')) { 226 Toast.error('Le password inserite sono differenti. Verificare.'); 227 return false; 228 } 229 fd.append('action', 'register'); 230 try { 231 await API.post('/api/aziende/auth.php', fd); 232 f.reset(); 233 Modal.open('modalInfoReg'); 234 } catch(e) { 235 Toast.error(e.message); 236 } 237 return false; 238} 239</script>
239 240 241</body> 242</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.