using MapoDb; using SteamWare; using System; using System.Web; using System.Web.UI; namespace MoonProTablet.WebUserControls { public partial class mod_title : BaseUserControl { #region Protected Fields /// /// IP corrente /// protected string postazione_IP = ""; /// /// user agent corrente /// protected string userAgent = ""; #endregion Protected Fields #region Protected Properties /// /// Versione corrente sw /// protected Version currVersion { get { return System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; } } /// /// URL stringa di UPDATE... /// protected string updateUrl { get { return string.Format("https://nexus.steamware.net/repository/SWS/TAB/{0}/manifest.xml", memLayer.ML.CRS("appVers")); } } #endregion Protected Properties #region Public Properties /// /// Cognome Nome utente /// public string CognomeNome { get { string swData = ""; string cognomeNome = ""; try { cognomeNome = user_std.UtSn.CognomeNome; } catch (Exception exc) { logger.lg.scriviLog($"Eccezione in {titolo} recupero CognomeNome: {Environment.NewLine}{exc}", tipoLog.EXCEPTION); } if (DataLayerObj.MatrOpr > 0) { swData = DataLayerObj.CognomeNomeOpr; } else if (cognomeNome != "") { swData = cognomeNome; } else { swData = "MoonProTablet"; } return swData; } } /// /// Cognome Nome utente /// public string MatrOpr { get { return DataLayerObj.MatrOpr.ToString(); } } #endregion Public Properties #region Private Methods /// /// verifica al presenza di un cookie VALIDO per autorizzare il device /// private void checkAuthCookieMoonProTablet() { Page page = this.Page; Uri MyUrl = Request.Url; string delimStr = "/"; char[] delimiter = delimStr.ToCharArray(); string[] finalUrl = MyUrl.LocalPath.ToString().Split(delimiter); int n = finalUrl.Length; string _paginaCorrente = finalUrl[n - 1].ToString().Replace(".aspx", ""); try { string cookieName = memLayer.ML.CRS("cookieName"); HttpCookie cookie = Request.Cookies[cookieName]; if (cookie == null || string.IsNullOrEmpty(cookie.Value)) { // rimando pagina x registrazione devices logger.lg.scriviLog($"Cookie non valido / non trovato | {cookieName}", tipoLog.STARTUP); // solo se NON sono alla pagina di registrazione o altre SAFE pages...... if (memLayer.ML.CRS("safePages").ToLower().IndexOf(_paginaCorrente.ToLower()) < 0) { Response.Redirect("~/regNewDevice", false); HttpContext.Current.ApplicationInstance.CompleteRequest(); page.Visible = false; } } else { // ricavo utente da cookie... string devSecret = cookie.Value; DS_devices.AnagDevicesRow device = null; // cerco il device...ogni dipendente può averne + di 1 registrato a suo nome... string UsrName = ""; string Dominio = ""; try { logger.lg.scriviLog($"Cookie trovato con devSecret {devSecret}", tipoLog.STARTUP); device = DataWrap.DW.taAnagDev.getByDeviceSecret(devSecret)[0]; UsrName = device.User_Name; Dominio = device.Dominio; DataLayerObj.MatrOpr = device.MatrOpr; // salvo MatrOpr! } catch (Exception exc) { logger.lg.scriviLog($"Errore recupero dati da cookie:{Environment.NewLine}{exc}", tipoLog.EXCEPTION); } if (!string.IsNullOrEmpty(UsrName) && !string.IsNullOrEmpty(Dominio)) { logger.lg.scriviLog($"Dati utente da cookie: dominio {Dominio}, user:{UsrName}", tipoLog.STARTUP); // aggiorno descrizione (user agent) ed IP... userAgent = Request.UserAgent; postazione_IP = Request.UserHostName; // controllo IP e DeviceDescription x eventuale update if ((device.lastIPv4 != postazione_IP) || (device.Description != userAgent)) { // salvo ultimo "contatto" del device aggiornando descrizione ed IP DataWrap.DW.taAnagDev.updateIP(device.IdxDevice, DateTime.Now, postazione_IP, userAgent); } // avvio utente... user_std.UtSn.startUpUtente(Dominio, UsrName); } else { // svuoto cookie... memLayer.ML.emptyCookieVal(memLayer.ML.CRS("cookieName")); // rimando pagina x registrazione devices logger.lg.scriviLog($"Dominio / UsrName non validi / non trovati:{Environment.NewLine}devSec:{devSecret}{Environment.NewLine}UsrName{UsrName}{Environment.NewLine}Dominio{Dominio}", tipoLog.STARTUP); Response.Redirect("~/regNewDevice.aspx", false); HttpContext.Current.ApplicationInstance.CompleteRequest(); page.Visible = false; } } } catch (Exception exc) { logger.lg.scriviLog($"Errore in checkAuthCookie:{Environment.NewLine}{exc}", tipoLog.EXCEPTION); } } #endregion Private Methods #region Protected Methods /// /// caricamento pagina /// /// /// protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { // prima apertura registro NO popup = refresh enabled memLayer.ML.setSessionVal("refreshEnabled", true); } // se ho user/dominio e matricola in sessione NON controllo coockie if (user_std.UtSn.utente == "" || user_std.UtSn.dominio == "" || DataLayerObj.MatrOpr == 0) { // altrimenti controllo se c'è utente in sessione.. checkAuthCookieMoonProTablet(); } } #endregion Protected Methods #region Public Methods /// /// Verifica se la pagina corrente sia URL indicato --> mostra ACTIVE /// /// /// public string checkPage(object navUrl) { string answ = ""; if (navUrl.ToString().Replace(".aspx", "").Replace("~/", "") == titolo.Replace(".aspx", "")) { answ = "active btn-primary"; } return answ; } public string isActive(object pageName) { string answ = ""; if (true) { answ = "active"; } return answ; } #endregion Public Methods } }