Files
WebSCR/WebSCR/WebUserControls/mod_header.ascx.cs
T
2015-09-18 10:35:56 +02:00

289 lines
10 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WebSCR_data;
using SteamWare;
namespace WebSCR.WebUserControls
{
public partial class mod_header : SteamWare.UserControl
{
/// <summary>
/// Data selezionata
/// </summary>
public string DataSel
{
get
{
string answ = "-";
if (memLayer.ML.getCookieVal("Data") != "")
{
answ = memLayer.ML.getCookieVal("Data");
}
return answ;
}
}
/// <summary>
/// codice Cliente selezionato (dall'impegno)
/// </summary>
public string ClienteSel
{
get
{
string answ = "-";
if (memLayer.ML.isInSessionObject("Cliente"))
{
answ = memLayer.ML.StringSessionObj("Cliente");
}
return answ;
}
}
/// <summary>
/// Squadra selezionata (da cookie)
/// </summary>
public string SquadraSel
{
get
{
string answ = "-";
if (memLayer.ML.getCookieVal("SquadraCurr")!="")
{
answ = memLayer.ML.getCookieVal("SquadraCurr");
}
return answ;
}
}
/// <summary>
/// Squadra selezionata (da cookie)
/// </summary>
public string colorSquadraCurr
{
get
{
string answ = "-";
if (memLayer.ML.hasCookieVal("colorSquadraCurr"))
{
answ = memLayer.ML.getCookieVal("colorSquadraCurr");
}
return answ;
}
}
/// <summary>
/// caricamento pagina
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!memLayer.ML.isInSessionObject("USER_NAME"))
{
divHeaderMenu.Visible = false;
}
// altri controlli
if (!Page.IsPostBack)
{
Timer1.Interval = memLayer.ML.confReadInt("intUpdatePagina_ms");
Page.Title = Request.Url.ToString();
// se ho cambiato pagina registro...)
if (devicesAuthProxy.pagPrecedente != titolo)
{
devicesAuthProxy.pagPrecedente = devicesAuthProxy.pagCorrente;
}
// salvo apgina corrente
devicesAuthProxy.pagCorrente = titolo; // devicesAuthProxy.getCurrPage(Request.Url);
// update valori
lblVers.Text = string.Format("v.{0}.{1}", System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.Major, System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.Minor);
lblVers.ToolTip = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.MinorRevision.ToString();
}
// SOLO se la pagina NON E' "safe"...
if (memLayer.ML.confReadString("PageNoIndex").IndexOf(titolo) < 0)
{
bool userOk = checkUser();
bool pageOk = checkPageIsAuth();
// controllo se c'è utente in sessione..
if ((userOk))
{
// ora controllo pagina...
if (!pageOk)
{
if (devicesAuthProxy.stObj.isPageEnabled(devicesAuthProxy.pagPrecedente))
{
Response.Redirect(devicesAuthProxy.pagPrecedente);
}
else
{
Response.Redirect("Pianificazione");
}
}
}
else
{
// rimando pagina x registrazione devices
Response.Redirect("UserAdmin");
}
}
// in base alla pagina corrente decido cosa mostrare in header...
if (devicesAuthProxy.pagCorrente == "Cronologico" || devicesAuthProxy.pagCorrente == "ElencoInt")
{
ulStd.Visible = false;
ulSquadra.Visible = false;
ulMagazzino.Visible = true;
}
else if(devicesAuthProxy.pagCorrente == "Squadra" || devicesAuthProxy.pagCorrente == "Menu")
{
ulStd.Visible = false;
ulSquadra.Visible = true;
ulMagazzino.Visible = false;
}
else
{
ulStd.Visible = true;
ulSquadra.Visible = false;
ulMagazzino.Visible = false;
}
}
/// <summary>
/// verifica che la pagina sia tra quelle autorizzate x l'utente
/// </summary>
/// <returns></returns>
private bool checkPageIsAuth()
{
bool allOk = false;
bool pageSafe = (memLayer.ML.confReadString("PageNoIndex").IndexOf(titolo) >= 0);
bool pageAuth = devicesAuthProxy.stObj.isPageEnabled(titolo);
allOk = (pageSafe || pageAuth);
return allOk;
}
/// <summary>
/// verifica presenza utente autorizzato in sessione
/// </summary>
private bool checkUser()
{
bool allOk = devicesAuthProxy.stObj.isAuth;
if (!devicesAuthProxy.stObj.isAuth)
{
// controllo cookie device...
allOk = checkAuthCookieWebSCR();
if (!allOk)
{
ResetUser();
}
}
return allOk;
}
/// <summary>
/// Restituisce cognome/nome da sessione...
/// </summary>
public string CognomeNome
{
get
{
string answ = "-";
try
{
answ = SteamWare.devicesAuthProxy.stObj.CognomeNome;
}
catch
{ }
return answ;
}
}
/// <summary>
/// verifica la presenza di un cookie VALIDO per autorizzare il device ed avvia utente...
/// </summary>
private bool checkAuthCookieWebSCR()
{
bool answ = false;
try
{
HttpCookie cookie = Request.Cookies[memLayer.ML.confReadString("AuthCookieName")];
if (!(cookie == null || cookie.Value == ""))
{
// ricavo utente da cookie...
string userAgent = "";
string postazione_IP = "";
string devSecret = cookie.Value;
DS_Auth.AnagDevicesRow device = null;
// cerco il device...ogni dipendente può averne + di 1 registrato a suo nome...
string email = "";
try
{
device = devicesAuthProxy.stObj.taAnagDev.getByDeviceSecret(devSecret)[0];
email = device.USER_NAME;
}
catch (Exception exc)
{
logger.lg.scriviLog(string.Format("Errore in auth cookie: {0}", exc), tipoLog.EXCEPTION);
}
if (email != "")
{
// aggiorno descrizione (user agent) ed IP...
userAgent = Request.UserAgent;
postazione_IP = Request.UserHostAddress;
// controllo IP e DeviceDescription x eventuale update
if ((device.lastIPv4 != postazione_IP) || (device.Description != userAgent))
{
// salvo ultimo "contatto" del device aggiornando descrizione ed IP
devicesAuthProxy.stObj.taAnagDev.updateIP(device.IdxDevice, DateTime.Now, postazione_IP, userAgent);
}
// salvo in sessione utente
memLayer.ML.setSessionVal("email", email);
// avvio utente...
devicesAuthProxy.stObj.startUpUtente(email);
// salvo gruppo...
if (devicesAuthProxy.stObj.isAuth)
{
// se tutto ok
memLayer.ML.setSessionVal("Gruppo", devicesAuthProxy.stObj.rigaUtente.CodGruppo);
answ = true;
}
}
}
}
catch (Exception exc)
{
logger.lg.scriviLog(string.Format("Errore in checkAuthCookie:{0}{1}", Environment.NewLine, exc), tipoLog.EXCEPTION);
}
return answ;
}
private void ResetUser()
{
devicesAuthProxy.stObj.clearAllUserData();
// svuoto cookie...
memLayer.ML.setCookieVal(memLayer.ML.confReadString("AuthCookieName"), "");
memLayer.ML.emptyCookieVal(memLayer.ML.confReadString("AuthCookieName"));
}
/// <summary>
/// restituisce stato active se pagina corrente...
/// </summary>
/// <param name="nomeElem"></param>
/// <returns></returns>
public string liClass(object nomeElem)
{
string answ = "";
string nome = nomeElem.ToString();
if (Request.Url.ToString().ToLower().Contains(nome.ToLower())) answ = "ui-btn-active";
// !!!FARE!!! controllo visibilità da permessi (x squadre in particolare)
#if false
// se E' Dettaglio e non c'è cod Impegno metto disabled...
if (nome.Contains("Dettaglio"))
{
if (!memLayer.ML.isInSessionObject("Impegno"))
{
answ += " ui-state-disabled";
}
}
#endif
return answ;
}
}
}